@anvilkit/plugin-asset-manager 0.1.6 → 0.1.8
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/README.md +28 -20
- package/dist/adapters/data-url.d.cts +13 -0
- package/dist/adapters/data-url.d.cts.map +1 -1
- package/dist/adapters/data-url.d.ts +13 -0
- package/dist/adapters/data-url.d.ts.map +1 -1
- package/dist/adapters/in-memory.d.cts +8 -1
- package/dist/adapters/in-memory.d.cts.map +1 -1
- package/dist/adapters/in-memory.d.ts +8 -1
- package/dist/adapters/in-memory.d.ts.map +1 -1
- package/dist/i18n/entry.cjs +75 -0
- package/dist/i18n/entry.d.cts +15 -0
- package/dist/i18n/entry.d.cts.map +1 -0
- package/dist/i18n/entry.d.ts +15 -0
- package/dist/i18n/entry.d.ts.map +1 -0
- package/dist/i18n/entry.js +29 -0
- package/dist/i18n/provider.cjs +49 -0
- package/dist/i18n/provider.d.cts +20 -0
- package/dist/i18n/provider.d.cts.map +1 -0
- package/dist/i18n/provider.d.ts +20 -0
- package/dist/i18n/provider.d.ts.map +1 -0
- package/dist/i18n/provider.js +11 -0
- package/dist/index.cjs +7 -0
- package/dist/index.d.cts +11 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +11 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/plugin.cjs +70 -5
- package/dist/plugin.d.cts +3 -2
- package/dist/plugin.d.cts.map +1 -1
- package/dist/plugin.d.ts +3 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +70 -5
- package/dist/sources/composite-source.cjs +138 -0
- package/dist/sources/composite-source.d.cts +39 -0
- package/dist/sources/composite-source.d.cts.map +1 -0
- package/dist/sources/composite-source.d.ts +39 -0
- package/dist/sources/composite-source.d.ts.map +1 -0
- package/dist/sources/composite-source.js +100 -0
- package/dist/sources/federated-search.cjs +173 -0
- package/dist/sources/federated-search.d.cts +33 -0
- package/dist/sources/federated-search.d.cts.map +1 -0
- package/dist/sources/federated-search.d.ts +33 -0
- package/dist/sources/federated-search.d.ts.map +1 -0
- package/dist/sources/federated-search.js +123 -0
- package/dist/sources/provider.cjs +18 -0
- package/dist/sources/provider.d.cts +51 -0
- package/dist/sources/provider.d.cts.map +1 -0
- package/dist/sources/provider.d.ts +51 -0
- package/dist/sources/provider.d.ts.map +1 -0
- package/dist/sources/provider.js +1 -0
- package/dist/sources/unsplash/client.cjs +189 -0
- package/dist/sources/unsplash/client.d.cts +87 -0
- package/dist/sources/unsplash/client.d.cts.map +1 -0
- package/dist/sources/unsplash/client.d.ts +87 -0
- package/dist/sources/unsplash/client.d.ts.map +1 -0
- package/dist/sources/unsplash/client.js +151 -0
- package/dist/sources/unsplash/index.cjs +194 -0
- package/dist/sources/unsplash/index.d.cts +16 -0
- package/dist/sources/unsplash/index.d.cts.map +1 -0
- package/dist/sources/unsplash/index.d.ts +16 -0
- package/dist/sources/unsplash/index.d.ts.map +1 -0
- package/dist/sources/unsplash/index.js +150 -0
- package/dist/sources/unsplash/themes.cjs +141 -0
- package/dist/sources/unsplash/themes.d.cts +18 -0
- package/dist/sources/unsplash/themes.d.cts.map +1 -0
- package/dist/sources/unsplash/themes.d.ts +18 -0
- package/dist/sources/unsplash/themes.d.ts.map +1 -0
- package/dist/sources/unsplash/themes.js +93 -0
- package/dist/sources/unsplash/throttle-cache.cjs +86 -0
- package/dist/sources/unsplash/throttle-cache.d.cts +25 -0
- package/dist/sources/unsplash/throttle-cache.d.cts.map +1 -0
- package/dist/sources/unsplash/throttle-cache.d.ts +25 -0
- package/dist/sources/unsplash/throttle-cache.d.ts.map +1 -0
- package/dist/sources/unsplash/throttle-cache.js +45 -0
- package/dist/types/categories.cjs +18 -0
- package/dist/types/categories.d.cts +48 -0
- package/dist/types/categories.d.cts.map +1 -0
- package/dist/types/categories.d.ts +48 -0
- package/dist/types/categories.d.ts.map +1 -0
- package/dist/types/categories.js +1 -0
- package/dist/types/data-source.cjs +18 -0
- package/dist/types/data-source.d.cts +59 -0
- package/dist/types/data-source.d.cts.map +1 -0
- package/dist/types/data-source.d.ts +59 -0
- package/dist/types/data-source.d.ts.map +1 -0
- package/dist/types/data-source.js +1 -0
- package/dist/types/filter.cjs +18 -0
- package/dist/types/filter.d.cts +55 -0
- package/dist/types/filter.d.cts.map +1 -0
- package/dist/types/filter.d.ts +55 -0
- package/dist/types/filter.d.ts.map +1 -0
- package/dist/types/filter.js +1 -0
- package/dist/types/folders.cjs +42 -0
- package/dist/types/folders.d.cts +46 -0
- package/dist/types/folders.d.cts.map +1 -0
- package/dist/types/folders.d.ts +46 -0
- package/dist/types/folders.d.ts.map +1 -0
- package/dist/types/folders.js +4 -0
- package/dist/types/options.cjs +18 -0
- package/dist/types/options.d.cts +68 -0
- package/dist/types/options.d.cts.map +1 -0
- package/dist/types/options.d.ts +68 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/options.js +1 -0
- package/dist/types/types.d.cts +21 -27
- package/dist/types/types.d.cts.map +1 -1
- package/dist/types/types.d.ts +21 -27
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/unsplash.cjs +18 -0
- package/dist/types/unsplash.d.cts +60 -0
- package/dist/types/unsplash.d.cts.map +1 -0
- package/dist/types/unsplash.d.ts +60 -0
- package/dist/types/unsplash.d.ts.map +1 -0
- package/dist/types/unsplash.js +1 -0
- package/dist/ui/AssetBrowser.cjs +183 -121
- package/dist/ui/AssetBrowser.d.cts +12 -1
- package/dist/ui/AssetBrowser.d.cts.map +1 -1
- package/dist/ui/AssetBrowser.d.ts +12 -1
- package/dist/ui/AssetBrowser.d.ts.map +1 -1
- package/dist/ui/AssetBrowser.js +183 -121
- package/dist/ui/AssetCommandPalette.cjs +20 -18
- package/dist/ui/AssetCommandPalette.d.cts.map +1 -1
- package/dist/ui/AssetCommandPalette.d.ts.map +1 -1
- package/dist/ui/AssetCommandPalette.js +20 -18
- package/dist/ui/AssetManagerUI.cjs +31 -17
- package/dist/ui/AssetManagerUI.d.cts +19 -3
- package/dist/ui/AssetManagerUI.d.cts.map +1 -1
- package/dist/ui/AssetManagerUI.d.ts +19 -3
- package/dist/ui/AssetManagerUI.d.ts.map +1 -1
- package/dist/ui/AssetManagerUI.js +31 -17
- package/dist/ui/DeleteAssetDialog.cjs +5 -3
- package/dist/ui/DeleteAssetDialog.d.cts.map +1 -1
- package/dist/ui/DeleteAssetDialog.d.ts.map +1 -1
- package/dist/ui/DeleteAssetDialog.js +5 -3
- package/dist/ui/DeleteFolderDialog.cjs +80 -0
- package/dist/ui/DeleteFolderDialog.d.cts +11 -0
- package/dist/ui/DeleteFolderDialog.d.cts.map +1 -0
- package/dist/ui/DeleteFolderDialog.d.ts +11 -0
- package/dist/ui/DeleteFolderDialog.d.ts.map +1 -0
- package/dist/ui/DeleteFolderDialog.js +42 -0
- package/dist/ui/EmptyFolderState.cjs +56 -0
- package/dist/ui/EmptyFolderState.d.cts +6 -0
- package/dist/ui/EmptyFolderState.d.cts.map +1 -0
- package/dist/ui/EmptyFolderState.d.ts +6 -0
- package/dist/ui/EmptyFolderState.d.ts.map +1 -0
- package/dist/ui/EmptyFolderState.js +18 -0
- package/dist/ui/FolderBreadcrumb.cjs +76 -0
- package/dist/ui/FolderBreadcrumb.d.cts +9 -0
- package/dist/ui/FolderBreadcrumb.d.cts.map +1 -0
- package/dist/ui/FolderBreadcrumb.d.ts +9 -0
- package/dist/ui/FolderBreadcrumb.d.ts.map +1 -0
- package/dist/ui/FolderBreadcrumb.js +38 -0
- package/dist/ui/FolderNameDialog.cjs +105 -0
- package/dist/ui/FolderNameDialog.d.cts +14 -0
- package/dist/ui/FolderNameDialog.d.cts.map +1 -0
- package/dist/ui/FolderNameDialog.d.ts +14 -0
- package/dist/ui/FolderNameDialog.d.ts.map +1 -0
- package/dist/ui/FolderNameDialog.js +67 -0
- package/dist/ui/FolderTree.cjs +85 -0
- package/dist/ui/FolderTree.d.cts +13 -0
- package/dist/ui/FolderTree.d.cts.map +1 -0
- package/dist/ui/FolderTree.d.ts +13 -0
- package/dist/ui/FolderTree.d.ts.map +1 -0
- package/dist/ui/FolderTree.js +44 -0
- package/dist/ui/MetadataPanel.cjs +23 -17
- package/dist/ui/MetadataPanel.d.cts.map +1 -1
- package/dist/ui/MetadataPanel.d.ts.map +1 -1
- package/dist/ui/MetadataPanel.js +23 -17
- package/dist/ui/MoveTargetPicker.cjs +87 -0
- package/dist/ui/MoveTargetPicker.d.cts +16 -0
- package/dist/ui/MoveTargetPicker.d.cts.map +1 -0
- package/dist/ui/MoveTargetPicker.d.ts +16 -0
- package/dist/ui/MoveTargetPicker.d.ts.map +1 -0
- package/dist/ui/MoveTargetPicker.js +49 -0
- package/dist/ui/ReplaceAssetDialog.cjs +19 -17
- package/dist/ui/ReplaceAssetDialog.d.cts +2 -1
- package/dist/ui/ReplaceAssetDialog.d.cts.map +1 -1
- package/dist/ui/ReplaceAssetDialog.d.ts +2 -1
- package/dist/ui/ReplaceAssetDialog.d.ts.map +1 -1
- package/dist/ui/ReplaceAssetDialog.js +19 -17
- package/dist/ui/UnsplashPanel.cjs +137 -0
- package/dist/ui/UnsplashPanel.d.cts +28 -0
- package/dist/ui/UnsplashPanel.d.cts.map +1 -0
- package/dist/ui/UnsplashPanel.d.ts +28 -0
- package/dist/ui/UnsplashPanel.d.ts.map +1 -0
- package/dist/ui/UnsplashPanel.js +99 -0
- package/dist/ui/UploadButton.cjs +12 -13
- package/dist/ui/UploadButton.d.cts +9 -2
- package/dist/ui/UploadButton.d.cts.map +1 -1
- package/dist/ui/UploadButton.d.ts +9 -2
- package/dist/ui/UploadButton.d.ts.map +1 -1
- package/dist/ui/UploadButton.js +12 -13
- package/dist/ui/index.cjs +41 -0
- package/dist/ui/index.d.cts +15 -0
- package/dist/ui/index.d.cts.map +1 -1
- package/dist/ui/index.d.ts +15 -0
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +8 -0
- package/dist/utils/data-source.cjs +190 -0
- package/dist/utils/data-source.d.cts +63 -0
- package/dist/utils/data-source.d.cts.map +1 -0
- package/dist/utils/data-source.d.ts +63 -0
- package/dist/utils/data-source.d.ts.map +1 -0
- package/dist/utils/data-source.js +149 -0
- package/dist/utils/errors.cjs +18 -0
- package/dist/utils/errors.d.cts +27 -0
- package/dist/utils/errors.d.cts.map +1 -1
- package/dist/utils/errors.d.ts +27 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +16 -1
- package/dist/utils/folders.cjs +335 -0
- package/dist/utils/folders.d.cts +54 -0
- package/dist/utils/folders.d.cts.map +1 -0
- package/dist/utils/folders.d.ts +54 -0
- package/dist/utils/folders.d.ts.map +1 -0
- package/dist/utils/folders.js +297 -0
- package/dist/utils/header-action.cjs +1 -1
- package/dist/utils/header-action.d.cts.map +1 -1
- package/dist/utils/header-action.d.ts.map +1 -1
- package/dist/utils/header-action.js +1 -1
- package/dist/utils/registry.cjs +38 -12
- package/dist/utils/registry.d.cts +29 -1
- package/dist/utils/registry.d.cts.map +1 -1
- package/dist/utils/registry.d.ts +29 -1
- package/dist/utils/registry.d.ts.map +1 -1
- package/dist/utils/registry.js +31 -11
- package/dist/utils/resolver.cjs +5 -4
- package/dist/utils/resolver.d.cts.map +1 -1
- package/dist/utils/resolver.d.ts.map +1 -1
- package/dist/utils/resolver.js +5 -4
- package/dist/utils/studio-asset-source.cjs +13 -4
- package/dist/utils/studio-asset-source.d.cts +6 -1
- package/dist/utils/studio-asset-source.d.cts.map +1 -1
- package/dist/utils/studio-asset-source.d.ts +6 -1
- package/dist/utils/studio-asset-source.d.ts.map +1 -1
- package/dist/utils/studio-asset-source.js +9 -3
- package/dist/utils/validate-upload-result.d.cts +2 -1
- package/dist/utils/validate-upload-result.d.cts.map +1 -1
- package/dist/utils/validate-upload-result.d.ts +2 -1
- package/dist/utils/validate-upload-result.d.ts.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.d.cts +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/i18n/messages/en.json +99 -0
- package/i18n/messages/ja.json +99 -0
- package/i18n/messages/ko.json +99 -0
- package/i18n/messages/zh.json +99 -0
- package/meta/config.json +1 -1
- package/package.json +19 -8
|
@@ -31,6 +31,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
31
31
|
__webpack_require__.d(__webpack_exports__, {
|
|
32
32
|
AssetManagerUI: ()=>AssetManagerUI
|
|
33
33
|
});
|
|
34
|
+
const i18n_namespaceObject = require("@anvilkit/core/i18n");
|
|
34
35
|
const card_namespaceObject = require("@anvilkit/ui/card");
|
|
35
36
|
const progress_namespaceObject = require("@anvilkit/ui/progress");
|
|
36
37
|
const external_react_namespaceObject = require("react");
|
|
@@ -41,7 +42,8 @@ const external_DeleteAssetDialog_cjs_namespaceObject = require("./DeleteAssetDia
|
|
|
41
42
|
const external_MetadataPanel_cjs_namespaceObject = require("./MetadataPanel.cjs");
|
|
42
43
|
const external_ReplaceAssetDialog_cjs_namespaceObject = require("./ReplaceAssetDialog.cjs");
|
|
43
44
|
const external_UploadButton_cjs_namespaceObject = require("./UploadButton.cjs");
|
|
44
|
-
function AssetManagerUI({ acceptedMimeTypes, allowMixedScriptHostnames, dataUrlAllowlistOptIn, maxFileSize, onAssetInserted, registry, searchEnabled = true, uploader }) {
|
|
45
|
+
function AssetManagerUI({ acceptedMimeTypes, allowMixedScriptHostnames, aboveFilters, dataUrlAllowlistOptIn, draggableRows, maxFileSize, onAssetInserted, registry, searchEnabled = true, uploader }) {
|
|
46
|
+
const msg = (0, i18n_namespaceObject.useMsg)();
|
|
45
47
|
const [assets, setAssets] = external_react_namespaceObject.useState(()=>registry.list());
|
|
46
48
|
const [progress, setProgress] = external_react_namespaceObject.useState(null);
|
|
47
49
|
const [pendingDelete, setPendingDelete] = external_react_namespaceObject.useState(null);
|
|
@@ -103,9 +105,23 @@ function AssetManagerUI({ acceptedMimeTypes, allowMixedScriptHostnames, dataUrlA
|
|
|
103
105
|
registry.setTags(asset.id, next.tags);
|
|
104
106
|
setPendingEdit(null);
|
|
105
107
|
}
|
|
108
|
+
const handleBrowserDelete = external_react_namespaceObject.useCallback((asset)=>{
|
|
109
|
+
setPendingDelete(asset);
|
|
110
|
+
}, []);
|
|
111
|
+
const handleBrowserEdit = external_react_namespaceObject.useCallback((asset)=>{
|
|
112
|
+
setPendingEdit(asset);
|
|
113
|
+
}, []);
|
|
114
|
+
const handleBrowserInsert = external_react_namespaceObject.useCallback((asset)=>{
|
|
115
|
+
onAssetInserted?.(asset);
|
|
116
|
+
}, [
|
|
117
|
+
onAssetInserted
|
|
118
|
+
]);
|
|
119
|
+
const handleBrowserReplace = external_react_namespaceObject.useCallback((asset)=>{
|
|
120
|
+
setPendingReplace(asset);
|
|
121
|
+
}, []);
|
|
106
122
|
const showProgress = null !== progress && progress.total > 0;
|
|
107
123
|
const percent = showProgress ? Math.round(progress.completed / progress.total * 100) : 0;
|
|
108
|
-
return /*#__PURE__*/ external_react_namespaceObject.createElement(card_namespaceObject.Card, null, /*#__PURE__*/ external_react_namespaceObject.createElement(card_namespaceObject.CardHeader, null, /*#__PURE__*/ external_react_namespaceObject.createElement(card_namespaceObject.CardTitle, null, "
|
|
124
|
+
return /*#__PURE__*/ external_react_namespaceObject.createElement(card_namespaceObject.Card, null, /*#__PURE__*/ external_react_namespaceObject.createElement(card_namespaceObject.CardHeader, null, /*#__PURE__*/ external_react_namespaceObject.createElement(card_namespaceObject.CardTitle, null, msg("assetManager.ui.title")), /*#__PURE__*/ external_react_namespaceObject.createElement(card_namespaceObject.CardDescription, null, msg("assetManager.ui.subtitle"))), /*#__PURE__*/ external_react_namespaceObject.createElement(card_namespaceObject.CardContent, null, /*#__PURE__*/ external_react_namespaceObject.createElement(external_UploadButton_cjs_namespaceObject.UploadButton, {
|
|
109
125
|
acceptedMimeTypes: acceptedMimeTypes,
|
|
110
126
|
allowMixedScriptHostnames: allowMixedScriptHostnames,
|
|
111
127
|
dataUrlAllowlistOptIn: dataUrlAllowlistOptIn,
|
|
@@ -116,26 +132,24 @@ function AssetManagerUI({ acceptedMimeTypes, allowMixedScriptHostnames, dataUrlA
|
|
|
116
132
|
}), showProgress ? /*#__PURE__*/ external_react_namespaceObject.createElement("div", {
|
|
117
133
|
"data-asset-manager-progress": true
|
|
118
134
|
}, /*#__PURE__*/ external_react_namespaceObject.createElement(progress_namespaceObject.Progress, {
|
|
119
|
-
"aria-label": "
|
|
135
|
+
"aria-label": msg("assetManager.upload.progressLabel"),
|
|
120
136
|
value: percent
|
|
121
137
|
}), /*#__PURE__*/ external_react_namespaceObject.createElement("p", {
|
|
122
138
|
"aria-live": "polite",
|
|
123
139
|
role: "status"
|
|
124
|
-
}, "
|
|
140
|
+
}, msg("assetManager.upload.status").replace("{completed}", String(progress.completed)).replace("{total}", String(progress.total)))) : null, /*#__PURE__*/ external_react_namespaceObject.createElement(external_AssetBrowser_cjs_namespaceObject.AssetBrowser, {
|
|
125
141
|
assets: assets,
|
|
126
|
-
onDelete:
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
},
|
|
138
|
-
searchEnabled: searchEnabled
|
|
142
|
+
onDelete: handleBrowserDelete,
|
|
143
|
+
onEdit: handleBrowserEdit,
|
|
144
|
+
onInsert: handleBrowserInsert,
|
|
145
|
+
onReplace: handleBrowserReplace,
|
|
146
|
+
searchEnabled: searchEnabled,
|
|
147
|
+
...void 0 !== aboveFilters ? {
|
|
148
|
+
aboveFilters
|
|
149
|
+
} : {},
|
|
150
|
+
...void 0 !== draggableRows ? {
|
|
151
|
+
draggableRows
|
|
152
|
+
} : {}
|
|
139
153
|
}), /*#__PURE__*/ external_react_namespaceObject.createElement(external_DeleteAssetDialog_cjs_namespaceObject.DeleteAssetDialog, {
|
|
140
154
|
asset: pendingDelete,
|
|
141
155
|
onCancel: ()=>{
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { AssetManagerOptions } from "../types/options.js";
|
|
3
|
+
import type { AssetRegistry, UploadAdapter, UploadResult } from "../types/types.js";
|
|
4
|
+
export interface AssetManagerUIProps extends Pick<AssetManagerOptions, "acceptedMimeTypes" | "maxFileSize" | "dataUrlAllowlistOptIn" | "allowMixedScriptHostnames"> {
|
|
5
|
+
/**
|
|
6
|
+
* Binary uploader. Required at the UI boundary even though
|
|
7
|
+
* `AssetManagerOptions.uploader` is optional — the plugin passes the
|
|
8
|
+
* resolved (defaulted) uploader.
|
|
9
|
+
*/
|
|
10
|
+
readonly uploader: UploadAdapter;
|
|
3
11
|
readonly registry: AssetRegistry;
|
|
4
12
|
readonly onAssetInserted?: (asset: UploadResult) => void;
|
|
5
13
|
/**
|
|
@@ -10,6 +18,14 @@ export interface AssetManagerUIProps extends Pick<AssetManagerOptions, "accepted
|
|
|
10
18
|
* chrome can opt out.
|
|
11
19
|
*/
|
|
12
20
|
readonly searchEnabled?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Optional content rendered above the browser's filter row — e.g. a
|
|
23
|
+
* `FolderBreadcrumb` + `FolderTree` for folder navigation (PRD 0002 §7.4).
|
|
24
|
+
* The host wires these to the resolved data source / composite source.
|
|
25
|
+
*/
|
|
26
|
+
readonly aboveFilters?: React.ReactNode;
|
|
27
|
+
/** Make asset rows draggable so they can be dropped onto a `FolderTree`. */
|
|
28
|
+
readonly draggableRows?: boolean;
|
|
13
29
|
}
|
|
14
|
-
export declare function AssetManagerUI({ acceptedMimeTypes, allowMixedScriptHostnames, dataUrlAllowlistOptIn, maxFileSize, onAssetInserted, registry, searchEnabled, uploader, }: AssetManagerUIProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare function AssetManagerUI({ acceptedMimeTypes, allowMixedScriptHostnames, aboveFilters, dataUrlAllowlistOptIn, draggableRows, maxFileSize, onAssetInserted, registry, searchEnabled, uploader, }: AssetManagerUIProps): import("react/jsx-runtime").JSX.Element;
|
|
15
31
|
//# sourceMappingURL=AssetManagerUI.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetManagerUI.d.cts","sourceRoot":"","sources":["../../src/ui/AssetManagerUI.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AssetManagerUI.d.cts","sourceRoot":"","sources":["../../src/ui/AssetManagerUI.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,MAAM,mBAAmB,CAAC;AAS3B,MAAM,WAAW,mBAChB,SAAQ,IAAI,CACX,mBAAmB,EACjB,mBAAmB,GACnB,aAAa,GACb,uBAAuB,GACvB,2BAA2B,CAC7B;IACD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACzD;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxC,4EAA4E;IAC5E,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,EAC9B,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,eAAe,EACf,QAAQ,EACR,aAAoB,EACpB,QAAQ,GACR,EAAE,mBAAmB,2CAiLrB"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { AssetManagerOptions } from "../types/options.js";
|
|
3
|
+
import type { AssetRegistry, UploadAdapter, UploadResult } from "../types/types.js";
|
|
4
|
+
export interface AssetManagerUIProps extends Pick<AssetManagerOptions, "acceptedMimeTypes" | "maxFileSize" | "dataUrlAllowlistOptIn" | "allowMixedScriptHostnames"> {
|
|
5
|
+
/**
|
|
6
|
+
* Binary uploader. Required at the UI boundary even though
|
|
7
|
+
* `AssetManagerOptions.uploader` is optional — the plugin passes the
|
|
8
|
+
* resolved (defaulted) uploader.
|
|
9
|
+
*/
|
|
10
|
+
readonly uploader: UploadAdapter;
|
|
3
11
|
readonly registry: AssetRegistry;
|
|
4
12
|
readonly onAssetInserted?: (asset: UploadResult) => void;
|
|
5
13
|
/**
|
|
@@ -10,6 +18,14 @@ export interface AssetManagerUIProps extends Pick<AssetManagerOptions, "accepted
|
|
|
10
18
|
* chrome can opt out.
|
|
11
19
|
*/
|
|
12
20
|
readonly searchEnabled?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Optional content rendered above the browser's filter row — e.g. a
|
|
23
|
+
* `FolderBreadcrumb` + `FolderTree` for folder navigation (PRD 0002 §7.4).
|
|
24
|
+
* The host wires these to the resolved data source / composite source.
|
|
25
|
+
*/
|
|
26
|
+
readonly aboveFilters?: React.ReactNode;
|
|
27
|
+
/** Make asset rows draggable so they can be dropped onto a `FolderTree`. */
|
|
28
|
+
readonly draggableRows?: boolean;
|
|
13
29
|
}
|
|
14
|
-
export declare function AssetManagerUI({ acceptedMimeTypes, allowMixedScriptHostnames, dataUrlAllowlistOptIn, maxFileSize, onAssetInserted, registry, searchEnabled, uploader, }: AssetManagerUIProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare function AssetManagerUI({ acceptedMimeTypes, allowMixedScriptHostnames, aboveFilters, dataUrlAllowlistOptIn, draggableRows, maxFileSize, onAssetInserted, registry, searchEnabled, uploader, }: AssetManagerUIProps): import("react/jsx-runtime").JSX.Element;
|
|
15
31
|
//# sourceMappingURL=AssetManagerUI.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetManagerUI.d.ts","sourceRoot":"","sources":["../../src/ui/AssetManagerUI.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AssetManagerUI.d.ts","sourceRoot":"","sources":["../../src/ui/AssetManagerUI.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,MAAM,mBAAmB,CAAC;AAS3B,MAAM,WAAW,mBAChB,SAAQ,IAAI,CACX,mBAAmB,EACjB,mBAAmB,GACnB,aAAa,GACb,uBAAuB,GACvB,2BAA2B,CAC7B;IACD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACzD;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxC,4EAA4E;IAC5E,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,EAC9B,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,eAAe,EACf,QAAQ,EACR,aAAoB,EACpB,QAAQ,GACR,EAAE,mBAAmB,2CAiLrB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { useMsg } from "@anvilkit/core/i18n";
|
|
2
3
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@anvilkit/ui/card";
|
|
3
4
|
import { Progress } from "@anvilkit/ui/progress";
|
|
4
5
|
import { validateUploadResult } from "../utils/validate-upload-result.js";
|
|
@@ -9,7 +10,8 @@ import { MetadataPanel } from "./MetadataPanel.js";
|
|
|
9
10
|
import { ReplaceAssetDialog } from "./ReplaceAssetDialog.js";
|
|
10
11
|
import { UploadButton } from "./UploadButton.js";
|
|
11
12
|
import * as __rspack_external_react from "react";
|
|
12
|
-
function AssetManagerUI({ acceptedMimeTypes, allowMixedScriptHostnames, dataUrlAllowlistOptIn, maxFileSize, onAssetInserted, registry, searchEnabled = true, uploader }) {
|
|
13
|
+
function AssetManagerUI({ acceptedMimeTypes, allowMixedScriptHostnames, aboveFilters, dataUrlAllowlistOptIn, draggableRows, maxFileSize, onAssetInserted, registry, searchEnabled = true, uploader }) {
|
|
14
|
+
const msg = useMsg();
|
|
13
15
|
const [assets, setAssets] = __rspack_external_react.useState(()=>registry.list());
|
|
14
16
|
const [progress, setProgress] = __rspack_external_react.useState(null);
|
|
15
17
|
const [pendingDelete, setPendingDelete] = __rspack_external_react.useState(null);
|
|
@@ -71,9 +73,23 @@ function AssetManagerUI({ acceptedMimeTypes, allowMixedScriptHostnames, dataUrlA
|
|
|
71
73
|
registry.setTags(asset.id, next.tags);
|
|
72
74
|
setPendingEdit(null);
|
|
73
75
|
}
|
|
76
|
+
const handleBrowserDelete = __rspack_external_react.useCallback((asset)=>{
|
|
77
|
+
setPendingDelete(asset);
|
|
78
|
+
}, []);
|
|
79
|
+
const handleBrowserEdit = __rspack_external_react.useCallback((asset)=>{
|
|
80
|
+
setPendingEdit(asset);
|
|
81
|
+
}, []);
|
|
82
|
+
const handleBrowserInsert = __rspack_external_react.useCallback((asset)=>{
|
|
83
|
+
onAssetInserted?.(asset);
|
|
84
|
+
}, [
|
|
85
|
+
onAssetInserted
|
|
86
|
+
]);
|
|
87
|
+
const handleBrowserReplace = __rspack_external_react.useCallback((asset)=>{
|
|
88
|
+
setPendingReplace(asset);
|
|
89
|
+
}, []);
|
|
74
90
|
const showProgress = null !== progress && progress.total > 0;
|
|
75
91
|
const percent = showProgress ? Math.round(progress.completed / progress.total * 100) : 0;
|
|
76
|
-
return /*#__PURE__*/ __rspack_external_react.createElement(Card, null, /*#__PURE__*/ __rspack_external_react.createElement(CardHeader, null, /*#__PURE__*/ __rspack_external_react.createElement(CardTitle, null, "
|
|
92
|
+
return /*#__PURE__*/ __rspack_external_react.createElement(Card, null, /*#__PURE__*/ __rspack_external_react.createElement(CardHeader, null, /*#__PURE__*/ __rspack_external_react.createElement(CardTitle, null, msg("assetManager.ui.title")), /*#__PURE__*/ __rspack_external_react.createElement(CardDescription, null, msg("assetManager.ui.subtitle"))), /*#__PURE__*/ __rspack_external_react.createElement(CardContent, null, /*#__PURE__*/ __rspack_external_react.createElement(UploadButton, {
|
|
77
93
|
acceptedMimeTypes: acceptedMimeTypes,
|
|
78
94
|
allowMixedScriptHostnames: allowMixedScriptHostnames,
|
|
79
95
|
dataUrlAllowlistOptIn: dataUrlAllowlistOptIn,
|
|
@@ -84,26 +100,24 @@ function AssetManagerUI({ acceptedMimeTypes, allowMixedScriptHostnames, dataUrlA
|
|
|
84
100
|
}), showProgress ? /*#__PURE__*/ __rspack_external_react.createElement("div", {
|
|
85
101
|
"data-asset-manager-progress": true
|
|
86
102
|
}, /*#__PURE__*/ __rspack_external_react.createElement(Progress, {
|
|
87
|
-
"aria-label": "
|
|
103
|
+
"aria-label": msg("assetManager.upload.progressLabel"),
|
|
88
104
|
value: percent
|
|
89
105
|
}), /*#__PURE__*/ __rspack_external_react.createElement("p", {
|
|
90
106
|
"aria-live": "polite",
|
|
91
107
|
role: "status"
|
|
92
|
-
}, "
|
|
108
|
+
}, msg("assetManager.upload.status").replace("{completed}", String(progress.completed)).replace("{total}", String(progress.total)))) : null, /*#__PURE__*/ __rspack_external_react.createElement(AssetBrowser, {
|
|
93
109
|
assets: assets,
|
|
94
|
-
onDelete:
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
},
|
|
106
|
-
searchEnabled: searchEnabled
|
|
110
|
+
onDelete: handleBrowserDelete,
|
|
111
|
+
onEdit: handleBrowserEdit,
|
|
112
|
+
onInsert: handleBrowserInsert,
|
|
113
|
+
onReplace: handleBrowserReplace,
|
|
114
|
+
searchEnabled: searchEnabled,
|
|
115
|
+
...void 0 !== aboveFilters ? {
|
|
116
|
+
aboveFilters
|
|
117
|
+
} : {},
|
|
118
|
+
...void 0 !== draggableRows ? {
|
|
119
|
+
draggableRows
|
|
120
|
+
} : {}
|
|
107
121
|
}), /*#__PURE__*/ __rspack_external_react.createElement(DeleteAssetDialog, {
|
|
108
122
|
asset: pendingDelete,
|
|
109
123
|
onCancel: ()=>{
|
|
@@ -31,10 +31,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
31
31
|
__webpack_require__.d(__webpack_exports__, {
|
|
32
32
|
DeleteAssetDialog: ()=>DeleteAssetDialog
|
|
33
33
|
});
|
|
34
|
+
const i18n_namespaceObject = require("@anvilkit/core/i18n");
|
|
34
35
|
const button_namespaceObject = require("@anvilkit/ui/button");
|
|
35
36
|
const dialog_namespaceObject = require("@anvilkit/ui/dialog");
|
|
36
37
|
const external_react_namespaceObject = require("react");
|
|
37
38
|
function DeleteAssetDialog({ asset, onCancel, onConfirm, referenceCount }) {
|
|
39
|
+
const msg = (0, i18n_namespaceObject.useMsg)();
|
|
38
40
|
const [busy, setBusy] = external_react_namespaceObject.useState(false);
|
|
39
41
|
async function handleConfirm() {
|
|
40
42
|
if (null === asset || busy) return;
|
|
@@ -54,17 +56,17 @@ function DeleteAssetDialog({ asset, onCancel, onConfirm, referenceCount }) {
|
|
|
54
56
|
return /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.Dialog, {
|
|
55
57
|
open: open,
|
|
56
58
|
onOpenChange: handleOpenChange
|
|
57
|
-
}, /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogContent, null, /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogHeader, null, /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogTitle, null, "
|
|
59
|
+
}, /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogContent, null, /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogHeader, null, /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogTitle, null, msg("assetManager.dialog.deleteTitle")), /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogDescription, null, label, mimeType ? ` (${mimeType})` : "", " ", msg("assetManager.dialog.deleteDescription"), "number" == typeof referenceCount && referenceCount > 0 ? ` ${msg("assetManager.dialog.deleteReferenced").replace("{count}", String(referenceCount)).replace("{nodes}", 1 === referenceCount ? "node" : "nodes")}` : "")), /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogFooter, null, /*#__PURE__*/ external_react_namespaceObject.createElement(button_namespaceObject.Button, {
|
|
58
60
|
type: "button",
|
|
59
61
|
variant: "outline",
|
|
60
62
|
onClick: onCancel,
|
|
61
63
|
disabled: busy
|
|
62
|
-
}, "
|
|
64
|
+
}, msg("assetManager.button.cancel")), /*#__PURE__*/ external_react_namespaceObject.createElement(button_namespaceObject.Button, {
|
|
63
65
|
type: "button",
|
|
64
66
|
variant: "destructive",
|
|
65
67
|
onClick: handleConfirm,
|
|
66
68
|
disabled: busy || null === asset
|
|
67
|
-
}, busy ? "
|
|
69
|
+
}, busy ? msg("assetManager.dialog.deleteProgress") : msg("assetManager.button.delete")))));
|
|
68
70
|
}
|
|
69
71
|
exports.DeleteAssetDialog = __webpack_exports__.DeleteAssetDialog;
|
|
70
72
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteAssetDialog.d.cts","sourceRoot":"","sources":["../../src/ui/DeleteAssetDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DeleteAssetDialog.d.cts","sourceRoot":"","sources":["../../src/ui/DeleteAssetDialog.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACtC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,iBAAiB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,SAAS,EACT,cAAc,GACd,EAAE,sBAAsB,2CAiExB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteAssetDialog.d.ts","sourceRoot":"","sources":["../../src/ui/DeleteAssetDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DeleteAssetDialog.d.ts","sourceRoot":"","sources":["../../src/ui/DeleteAssetDialog.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACtC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,iBAAiB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,SAAS,EACT,cAAc,GACd,EAAE,sBAAsB,2CAiExB"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { useMsg } from "@anvilkit/core/i18n";
|
|
2
3
|
import { Button } from "@anvilkit/ui/button";
|
|
3
4
|
import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@anvilkit/ui/dialog";
|
|
4
5
|
import * as __rspack_external_react from "react";
|
|
5
6
|
function DeleteAssetDialog({ asset, onCancel, onConfirm, referenceCount }) {
|
|
7
|
+
const msg = useMsg();
|
|
6
8
|
const [busy, setBusy] = __rspack_external_react.useState(false);
|
|
7
9
|
async function handleConfirm() {
|
|
8
10
|
if (null === asset || busy) return;
|
|
@@ -22,16 +24,16 @@ function DeleteAssetDialog({ asset, onCancel, onConfirm, referenceCount }) {
|
|
|
22
24
|
return /*#__PURE__*/ __rspack_external_react.createElement(Dialog, {
|
|
23
25
|
open: open,
|
|
24
26
|
onOpenChange: handleOpenChange
|
|
25
|
-
}, /*#__PURE__*/ __rspack_external_react.createElement(DialogContent, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogHeader, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogTitle, null, "
|
|
27
|
+
}, /*#__PURE__*/ __rspack_external_react.createElement(DialogContent, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogHeader, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogTitle, null, msg("assetManager.dialog.deleteTitle")), /*#__PURE__*/ __rspack_external_react.createElement(DialogDescription, null, label, mimeType ? ` (${mimeType})` : "", " ", msg("assetManager.dialog.deleteDescription"), "number" == typeof referenceCount && referenceCount > 0 ? ` ${msg("assetManager.dialog.deleteReferenced").replace("{count}", String(referenceCount)).replace("{nodes}", 1 === referenceCount ? "node" : "nodes")}` : "")), /*#__PURE__*/ __rspack_external_react.createElement(DialogFooter, null, /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
26
28
|
type: "button",
|
|
27
29
|
variant: "outline",
|
|
28
30
|
onClick: onCancel,
|
|
29
31
|
disabled: busy
|
|
30
|
-
}, "
|
|
32
|
+
}, msg("assetManager.button.cancel")), /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
31
33
|
type: "button",
|
|
32
34
|
variant: "destructive",
|
|
33
35
|
onClick: handleConfirm,
|
|
34
36
|
disabled: busy || null === asset
|
|
35
|
-
}, busy ? "
|
|
37
|
+
}, busy ? msg("assetManager.dialog.deleteProgress") : msg("assetManager.button.delete")))));
|
|
36
38
|
}
|
|
37
39
|
export { DeleteAssetDialog };
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __webpack_require__ = {};
|
|
4
|
+
(()=>{
|
|
5
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
6
|
+
var define = (defs, kind)=>{
|
|
7
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
[kind]: defs[key]
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
define(getters, "get");
|
|
13
|
+
define(values, "value");
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
(()=>{
|
|
17
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
18
|
+
})();
|
|
19
|
+
(()=>{
|
|
20
|
+
__webpack_require__.r = (exports1)=>{
|
|
21
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
22
|
+
value: 'Module'
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
25
|
+
value: true
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
})();
|
|
29
|
+
var __webpack_exports__ = {};
|
|
30
|
+
__webpack_require__.r(__webpack_exports__);
|
|
31
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
32
|
+
DeleteFolderDialog: ()=>DeleteFolderDialog
|
|
33
|
+
});
|
|
34
|
+
const i18n_namespaceObject = require("@anvilkit/core/i18n");
|
|
35
|
+
const button_namespaceObject = require("@anvilkit/ui/button");
|
|
36
|
+
const dialog_namespaceObject = require("@anvilkit/ui/dialog");
|
|
37
|
+
const external_react_namespaceObject = require("react");
|
|
38
|
+
function DeleteFolderDialog({ folder, onConfirm, onCancel }) {
|
|
39
|
+
const msg = (0, i18n_namespaceObject.useMsg)();
|
|
40
|
+
const [busy, setBusy] = external_react_namespaceObject.useState(false);
|
|
41
|
+
async function confirm(cascade) {
|
|
42
|
+
if (null === folder || busy) return;
|
|
43
|
+
setBusy(true);
|
|
44
|
+
try {
|
|
45
|
+
await onConfirm(folder, cascade);
|
|
46
|
+
} finally{
|
|
47
|
+
setBusy(false);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const open = null !== folder;
|
|
51
|
+
const assetCount = folder?.counts.assets ?? 0;
|
|
52
|
+
return /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.Dialog, {
|
|
53
|
+
open: open,
|
|
54
|
+
onOpenChange: (next)=>{
|
|
55
|
+
if (!next && !busy) onCancel();
|
|
56
|
+
}
|
|
57
|
+
}, /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogContent, null, /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogHeader, null, /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogTitle, null, msg("assetManager.dialog.deleteFolderTitle")), /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogDescription, null, msg("assetManager.dialog.deleteFolderDescription").replace("{name}", folder?.name ?? "").replace("{count}", String(assetCount)).replace("{assets}", 1 === assetCount ? "asset" : "assets"))), /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogFooter, null, /*#__PURE__*/ external_react_namespaceObject.createElement(button_namespaceObject.Button, {
|
|
58
|
+
type: "button",
|
|
59
|
+
variant: "outline",
|
|
60
|
+
disabled: busy,
|
|
61
|
+
onClick: onCancel
|
|
62
|
+
}, msg("assetManager.button.cancel")), /*#__PURE__*/ external_react_namespaceObject.createElement(button_namespaceObject.Button, {
|
|
63
|
+
type: "button",
|
|
64
|
+
variant: "outline",
|
|
65
|
+
disabled: busy || null === folder,
|
|
66
|
+
onClick: ()=>void confirm(false)
|
|
67
|
+
}, busy ? msg("assetManager.dialog.removeProgress") : msg("assetManager.dialog.removeFolder")), /*#__PURE__*/ external_react_namespaceObject.createElement(button_namespaceObject.Button, {
|
|
68
|
+
type: "button",
|
|
69
|
+
variant: "destructive",
|
|
70
|
+
disabled: busy || null === folder,
|
|
71
|
+
onClick: ()=>void confirm(true)
|
|
72
|
+
}, msg("assetManager.button.deleteContents")))));
|
|
73
|
+
}
|
|
74
|
+
exports.DeleteFolderDialog = __webpack_exports__.DeleteFolderDialog;
|
|
75
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
76
|
+
"DeleteFolderDialog"
|
|
77
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
78
|
+
Object.defineProperty(exports, '__esModule', {
|
|
79
|
+
value: true
|
|
80
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AssetFolder } from "../types/folders.js";
|
|
2
|
+
export interface DeleteFolderDialogProps {
|
|
3
|
+
/** Folder to delete. `null` ⇒ closed. */
|
|
4
|
+
readonly folder: AssetFolder | null;
|
|
5
|
+
/** Confirm. `cascade=false` reparents children to the parent (default, safe);
|
|
6
|
+
* `cascade=true` also deletes the descendant assets. */
|
|
7
|
+
readonly onConfirm: (folder: AssetFolder, cascade: boolean) => void | Promise<void>;
|
|
8
|
+
readonly onCancel: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function DeleteFolderDialog({ folder, onConfirm, onCancel, }: DeleteFolderDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=DeleteFolderDialog.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeleteFolderDialog.d.cts","sourceRoot":"","sources":["../../src/ui/DeleteFolderDialog.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,uBAAuB;IACvC,yCAAyC;IACzC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACpC;6DACyD;IACzD,QAAQ,CAAC,SAAS,EAAE,CACnB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,OAAO,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,CAAC,EAClC,MAAM,EACN,SAAS,EACT,QAAQ,GACR,EAAE,uBAAuB,2CAmEzB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AssetFolder } from "../types/folders.js";
|
|
2
|
+
export interface DeleteFolderDialogProps {
|
|
3
|
+
/** Folder to delete. `null` ⇒ closed. */
|
|
4
|
+
readonly folder: AssetFolder | null;
|
|
5
|
+
/** Confirm. `cascade=false` reparents children to the parent (default, safe);
|
|
6
|
+
* `cascade=true` also deletes the descendant assets. */
|
|
7
|
+
readonly onConfirm: (folder: AssetFolder, cascade: boolean) => void | Promise<void>;
|
|
8
|
+
readonly onCancel: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function DeleteFolderDialog({ folder, onConfirm, onCancel, }: DeleteFolderDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=DeleteFolderDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeleteFolderDialog.d.ts","sourceRoot":"","sources":["../../src/ui/DeleteFolderDialog.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,uBAAuB;IACvC,yCAAyC;IACzC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACpC;6DACyD;IACzD,QAAQ,CAAC,SAAS,EAAE,CACnB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,OAAO,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,CAAC,EAClC,MAAM,EACN,SAAS,EACT,QAAQ,GACR,EAAE,uBAAuB,2CAmEzB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useMsg } from "@anvilkit/core/i18n";
|
|
3
|
+
import { Button } from "@anvilkit/ui/button";
|
|
4
|
+
import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@anvilkit/ui/dialog";
|
|
5
|
+
import * as __rspack_external_react from "react";
|
|
6
|
+
function DeleteFolderDialog({ folder, onConfirm, onCancel }) {
|
|
7
|
+
const msg = useMsg();
|
|
8
|
+
const [busy, setBusy] = __rspack_external_react.useState(false);
|
|
9
|
+
async function confirm(cascade) {
|
|
10
|
+
if (null === folder || busy) return;
|
|
11
|
+
setBusy(true);
|
|
12
|
+
try {
|
|
13
|
+
await onConfirm(folder, cascade);
|
|
14
|
+
} finally{
|
|
15
|
+
setBusy(false);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const open = null !== folder;
|
|
19
|
+
const assetCount = folder?.counts.assets ?? 0;
|
|
20
|
+
return /*#__PURE__*/ __rspack_external_react.createElement(Dialog, {
|
|
21
|
+
open: open,
|
|
22
|
+
onOpenChange: (next)=>{
|
|
23
|
+
if (!next && !busy) onCancel();
|
|
24
|
+
}
|
|
25
|
+
}, /*#__PURE__*/ __rspack_external_react.createElement(DialogContent, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogHeader, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogTitle, null, msg("assetManager.dialog.deleteFolderTitle")), /*#__PURE__*/ __rspack_external_react.createElement(DialogDescription, null, msg("assetManager.dialog.deleteFolderDescription").replace("{name}", folder?.name ?? "").replace("{count}", String(assetCount)).replace("{assets}", 1 === assetCount ? "asset" : "assets"))), /*#__PURE__*/ __rspack_external_react.createElement(DialogFooter, null, /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
26
|
+
type: "button",
|
|
27
|
+
variant: "outline",
|
|
28
|
+
disabled: busy,
|
|
29
|
+
onClick: onCancel
|
|
30
|
+
}, msg("assetManager.button.cancel")), /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
31
|
+
type: "button",
|
|
32
|
+
variant: "outline",
|
|
33
|
+
disabled: busy || null === folder,
|
|
34
|
+
onClick: ()=>void confirm(false)
|
|
35
|
+
}, busy ? msg("assetManager.dialog.removeProgress") : msg("assetManager.dialog.removeFolder")), /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
36
|
+
type: "button",
|
|
37
|
+
variant: "destructive",
|
|
38
|
+
disabled: busy || null === folder,
|
|
39
|
+
onClick: ()=>void confirm(true)
|
|
40
|
+
}, msg("assetManager.button.deleteContents")))));
|
|
41
|
+
}
|
|
42
|
+
export { DeleteFolderDialog };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __webpack_require__ = {};
|
|
4
|
+
(()=>{
|
|
5
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
6
|
+
var define = (defs, kind)=>{
|
|
7
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
[kind]: defs[key]
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
define(getters, "get");
|
|
13
|
+
define(values, "value");
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
(()=>{
|
|
17
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
18
|
+
})();
|
|
19
|
+
(()=>{
|
|
20
|
+
__webpack_require__.r = (exports1)=>{
|
|
21
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
22
|
+
value: 'Module'
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
25
|
+
value: true
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
})();
|
|
29
|
+
var __webpack_exports__ = {};
|
|
30
|
+
__webpack_require__.r(__webpack_exports__);
|
|
31
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
32
|
+
EmptyFolderState: ()=>EmptyFolderState
|
|
33
|
+
});
|
|
34
|
+
const i18n_namespaceObject = require("@anvilkit/core/i18n");
|
|
35
|
+
const button_namespaceObject = require("@anvilkit/ui/button");
|
|
36
|
+
const external_react_namespaceObject = require("react");
|
|
37
|
+
function EmptyFolderState({ onUpload, message }) {
|
|
38
|
+
const msg = (0, i18n_namespaceObject.useMsg)();
|
|
39
|
+
const resolvedMessage = message ?? msg("assetManager.folder.empty");
|
|
40
|
+
return /*#__PURE__*/ external_react_namespaceObject.createElement("div", {
|
|
41
|
+
"data-testid": "ak-empty-folder",
|
|
42
|
+
className: "flex flex-col items-center gap-2 p-6 text-center text-sm text-[var(--ak-studio-muted-fg)]"
|
|
43
|
+
}, /*#__PURE__*/ external_react_namespaceObject.createElement("p", null, resolvedMessage), onUpload ? /*#__PURE__*/ external_react_namespaceObject.createElement(button_namespaceObject.Button, {
|
|
44
|
+
type: "button",
|
|
45
|
+
variant: "outline",
|
|
46
|
+
size: "sm",
|
|
47
|
+
onClick: onUpload
|
|
48
|
+
}, msg("assetManager.upload.toFolder")) : null);
|
|
49
|
+
}
|
|
50
|
+
exports.EmptyFolderState = __webpack_exports__.EmptyFolderState;
|
|
51
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
52
|
+
"EmptyFolderState"
|
|
53
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
54
|
+
Object.defineProperty(exports, '__esModule', {
|
|
55
|
+
value: true
|
|
56
|
+
});
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export interface EmptyFolderStateProps {
|
|
2
|
+
readonly onUpload?: () => void;
|
|
3
|
+
readonly message?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function EmptyFolderState({ onUpload, message }: EmptyFolderStateProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=EmptyFolderState.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyFolderState.d.cts","sourceRoot":"","sources":["../../src/ui/EmptyFolderState.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,qBAAqB,2CAgB5E"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export interface EmptyFolderStateProps {
|
|
2
|
+
readonly onUpload?: () => void;
|
|
3
|
+
readonly message?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function EmptyFolderState({ onUpload, message }: EmptyFolderStateProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=EmptyFolderState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyFolderState.d.ts","sourceRoot":"","sources":["../../src/ui/EmptyFolderState.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,qBAAqB,2CAgB5E"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useMsg } from "@anvilkit/core/i18n";
|
|
3
|
+
import { Button } from "@anvilkit/ui/button";
|
|
4
|
+
import * as __rspack_external_react from "react";
|
|
5
|
+
function EmptyFolderState({ onUpload, message }) {
|
|
6
|
+
const msg = useMsg();
|
|
7
|
+
const resolvedMessage = message ?? msg("assetManager.folder.empty");
|
|
8
|
+
return /*#__PURE__*/ __rspack_external_react.createElement("div", {
|
|
9
|
+
"data-testid": "ak-empty-folder",
|
|
10
|
+
className: "flex flex-col items-center gap-2 p-6 text-center text-sm text-[var(--ak-studio-muted-fg)]"
|
|
11
|
+
}, /*#__PURE__*/ __rspack_external_react.createElement("p", null, resolvedMessage), onUpload ? /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
12
|
+
type: "button",
|
|
13
|
+
variant: "outline",
|
|
14
|
+
size: "sm",
|
|
15
|
+
onClick: onUpload
|
|
16
|
+
}, msg("assetManager.upload.toFolder")) : null);
|
|
17
|
+
}
|
|
18
|
+
export { EmptyFolderState };
|