@anvilkit/plugin-asset-manager 0.1.7 → 0.1.9
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 +4 -4
- 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/plugin.cjs +3 -1
- package/dist/plugin.d.cts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +3 -1
- package/dist/sources/composite-source.cjs +4 -3
- package/dist/sources/composite-source.d.cts.map +1 -1
- package/dist/sources/composite-source.d.ts.map +1 -1
- package/dist/sources/composite-source.js +4 -3
- package/dist/sources/federated-search.cjs +16 -6
- package/dist/sources/federated-search.d.cts.map +1 -1
- package/dist/sources/federated-search.d.ts.map +1 -1
- package/dist/sources/federated-search.js +16 -6
- package/dist/sources/unsplash/index.cjs +6 -4
- package/dist/sources/unsplash/index.d.cts.map +1 -1
- package/dist/sources/unsplash/index.d.ts.map +1 -1
- package/dist/sources/unsplash/index.js +6 -4
- package/dist/types/types.d.cts +7 -1
- package/dist/types/types.d.cts.map +1 -1
- package/dist/types/types.d.ts +7 -1
- package/dist/types/types.d.ts.map +1 -1
- package/dist/ui/AssetBrowser.cjs +175 -134
- package/dist/ui/AssetBrowser.d.cts.map +1 -1
- package/dist/ui/AssetBrowser.d.ts.map +1 -1
- package/dist/ui/AssetBrowser.js +175 -134
- 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 +23 -15
- package/dist/ui/AssetManagerUI.d.cts.map +1 -1
- package/dist/ui/AssetManagerUI.d.ts.map +1 -1
- package/dist/ui/AssetManagerUI.js +23 -15
- 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 +6 -4
- package/dist/ui/DeleteFolderDialog.d.cts.map +1 -1
- package/dist/ui/DeleteFolderDialog.d.ts.map +1 -1
- package/dist/ui/DeleteFolderDialog.js +6 -4
- package/dist/ui/EmptyFolderState.cjs +6 -3
- package/dist/ui/EmptyFolderState.d.cts +1 -1
- package/dist/ui/EmptyFolderState.d.cts.map +1 -1
- package/dist/ui/EmptyFolderState.d.ts +1 -1
- package/dist/ui/EmptyFolderState.d.ts.map +1 -1
- package/dist/ui/EmptyFolderState.js +6 -3
- package/dist/ui/FolderBreadcrumb.cjs +7 -4
- package/dist/ui/FolderBreadcrumb.d.cts.map +1 -1
- package/dist/ui/FolderBreadcrumb.d.ts.map +1 -1
- package/dist/ui/FolderBreadcrumb.js +7 -4
- package/dist/ui/FolderNameDialog.cjs +19 -12
- package/dist/ui/FolderNameDialog.d.cts.map +1 -1
- package/dist/ui/FolderNameDialog.d.ts.map +1 -1
- package/dist/ui/FolderNameDialog.js +19 -12
- package/dist/ui/FolderTree.cjs +4 -2
- package/dist/ui/FolderTree.d.cts.map +1 -1
- package/dist/ui/FolderTree.d.ts.map +1 -1
- package/dist/ui/FolderTree.js +4 -2
- package/dist/ui/MetadataPanel.cjs +16 -13
- package/dist/ui/MetadataPanel.d.cts.map +1 -1
- package/dist/ui/MetadataPanel.d.ts.map +1 -1
- package/dist/ui/MetadataPanel.js +16 -13
- package/dist/ui/MoveTargetPicker.cjs +7 -4
- package/dist/ui/MoveTargetPicker.d.cts.map +1 -1
- package/dist/ui/MoveTargetPicker.d.ts.map +1 -1
- package/dist/ui/MoveTargetPicker.js +7 -4
- package/dist/ui/ReplaceAssetDialog.cjs +19 -17
- package/dist/ui/ReplaceAssetDialog.d.cts.map +1 -1
- package/dist/ui/ReplaceAssetDialog.d.ts.map +1 -1
- package/dist/ui/ReplaceAssetDialog.js +19 -17
- package/dist/ui/UnsplashPanel.cjs +15 -12
- package/dist/ui/UnsplashPanel.d.cts.map +1 -1
- package/dist/ui/UnsplashPanel.d.ts.map +1 -1
- package/dist/ui/UnsplashPanel.js +15 -12
- package/dist/ui/UploadButton.cjs +11 -8
- package/dist/ui/UploadButton.d.cts.map +1 -1
- package/dist/ui/UploadButton.d.ts.map +1 -1
- package/dist/ui/UploadButton.js +11 -8
- package/dist/ui/index.cjs +4 -0
- package/dist/ui/index.d.cts +1 -0
- package/dist/ui/index.d.cts.map +1 -1
- package/dist/ui/index.d.ts +1 -0
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +1 -0
- package/dist/utils/data-source.cjs +18 -5
- package/dist/utils/data-source.d.cts.map +1 -1
- package/dist/utils/data-source.d.ts.map +1 -1
- package/dist/utils/data-source.js +19 -6
- package/dist/utils/folders.cjs +107 -33
- package/dist/utils/folders.d.cts +7 -2
- package/dist/utils/folders.d.cts.map +1 -1
- package/dist/utils/folders.d.ts +7 -2
- package/dist/utils/folders.d.ts.map +1 -1
- package/dist/utils/folders.js +107 -33
- 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 +23 -12
- package/dist/utils/registry.d.cts +16 -8
- package/dist/utils/registry.d.cts.map +1 -1
- package/dist/utils/registry.d.ts +16 -8
- package/dist/utils/registry.d.ts.map +1 -1
- package/dist/utils/registry.js +19 -8
- 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 +8 -2
- package/dist/utils/studio-asset-source.js +8 -2
- 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 +11 -10
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { useMsg } from "@anvilkit/core/i18n";
|
|
2
3
|
import { Button } from "@anvilkit/ui/button";
|
|
3
4
|
import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from "@anvilkit/ui/dialog";
|
|
4
5
|
import { Input } from "@anvilkit/ui/input";
|
|
5
6
|
import * as __rspack_external_react from "react";
|
|
6
|
-
function FolderNameDialog({ open, onOpenChange, onSubmit, title
|
|
7
|
+
function FolderNameDialog({ open, onOpenChange, onSubmit, title, submitLabel, initialName = "" }) {
|
|
8
|
+
const msg = useMsg();
|
|
9
|
+
const resolvedTitle = title ?? msg("assetManager.dialog.newFolderTitle");
|
|
10
|
+
const resolvedSubmit = submitLabel ?? msg("assetManager.button.create");
|
|
7
11
|
const [name, setName] = __rspack_external_react.useState(initialName);
|
|
8
12
|
const [busy, setBusy] = __rspack_external_react.useState(false);
|
|
9
13
|
const [error, setError] = __rspack_external_react.useState(null);
|
|
10
14
|
__rspack_external_react.useEffect(()=>{
|
|
11
|
-
if (open)
|
|
12
|
-
setName(initialName);
|
|
13
|
-
setError(null);
|
|
14
|
-
}
|
|
15
|
+
if (open) setName(initialName);
|
|
15
16
|
}, [
|
|
16
17
|
open,
|
|
17
18
|
initialName
|
|
18
19
|
]);
|
|
20
|
+
function requestClose() {
|
|
21
|
+
setError(null);
|
|
22
|
+
onOpenChange(false);
|
|
23
|
+
}
|
|
19
24
|
async function handleSubmit() {
|
|
20
25
|
const trimmed = name.trim();
|
|
21
26
|
if ("" === trimmed || busy) return;
|
|
@@ -25,7 +30,7 @@ function FolderNameDialog({ open, onOpenChange, onSubmit, title = "New folder",
|
|
|
25
30
|
await onSubmit(trimmed);
|
|
26
31
|
onOpenChange(false);
|
|
27
32
|
} catch (cause) {
|
|
28
|
-
setError(cause instanceof Error ? cause.message : "
|
|
33
|
+
setError(cause instanceof Error ? cause.message : msg("assetManager.dialog.folderSaveError"));
|
|
29
34
|
} finally{
|
|
30
35
|
setBusy(false);
|
|
31
36
|
}
|
|
@@ -33,11 +38,13 @@ function FolderNameDialog({ open, onOpenChange, onSubmit, title = "New folder",
|
|
|
33
38
|
return /*#__PURE__*/ __rspack_external_react.createElement(Dialog, {
|
|
34
39
|
open: open,
|
|
35
40
|
onOpenChange: (next)=>{
|
|
36
|
-
if (
|
|
41
|
+
if (busy) return;
|
|
42
|
+
if (next) onOpenChange(true);
|
|
43
|
+
else requestClose();
|
|
37
44
|
}
|
|
38
|
-
}, /*#__PURE__*/ __rspack_external_react.createElement(DialogContent, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogHeader, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogTitle, null,
|
|
45
|
+
}, /*#__PURE__*/ __rspack_external_react.createElement(DialogContent, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogHeader, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogTitle, null, resolvedTitle)), /*#__PURE__*/ __rspack_external_react.createElement(Input, {
|
|
39
46
|
value: name,
|
|
40
|
-
placeholder: "
|
|
47
|
+
placeholder: msg("assetManager.dialog.folderNamePlaceholder"),
|
|
41
48
|
"data-testid": "ak-folder-name-input",
|
|
42
49
|
onChange: (event)=>setName(event.currentTarget.value),
|
|
43
50
|
onKeyDown: (event)=>{
|
|
@@ -50,11 +57,11 @@ function FolderNameDialog({ open, onOpenChange, onSubmit, title = "New folder",
|
|
|
50
57
|
type: "button",
|
|
51
58
|
variant: "outline",
|
|
52
59
|
disabled: busy,
|
|
53
|
-
onClick:
|
|
54
|
-
}, "
|
|
60
|
+
onClick: requestClose
|
|
61
|
+
}, msg("assetManager.button.cancel")), /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
55
62
|
type: "button",
|
|
56
63
|
disabled: busy || "" === name.trim(),
|
|
57
64
|
onClick: ()=>void handleSubmit()
|
|
58
|
-
}, busy ? "
|
|
65
|
+
}, busy ? msg("assetManager.dialog.saveProgress") : resolvedSubmit))));
|
|
59
66
|
}
|
|
60
67
|
export { FolderNameDialog };
|
package/dist/ui/FolderTree.cjs
CHANGED
|
@@ -32,10 +32,12 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
32
32
|
ASSET_DRAG_MIME: ()=>ASSET_DRAG_MIME,
|
|
33
33
|
FolderTree: ()=>FolderTree
|
|
34
34
|
});
|
|
35
|
+
const i18n_namespaceObject = require("@anvilkit/core/i18n");
|
|
35
36
|
const button_namespaceObject = require("@anvilkit/ui/button");
|
|
36
37
|
const external_react_namespaceObject = require("react");
|
|
37
38
|
const ASSET_DRAG_MIME = "application/x-anvilkit-assets";
|
|
38
39
|
function FolderTree({ folders, currentFolderId, onNavigate, onDropAssets }) {
|
|
40
|
+
const msg = (0, i18n_namespaceObject.useMsg)();
|
|
39
41
|
const [dropTarget, setDropTarget] = external_react_namespaceObject.useState(null);
|
|
40
42
|
const handleDrop = (folderId)=>(event)=>{
|
|
41
43
|
event.preventDefault();
|
|
@@ -50,7 +52,7 @@ function FolderTree({ folders, currentFolderId, onNavigate, onDropAssets }) {
|
|
|
50
52
|
if (0 === folders.length) return null;
|
|
51
53
|
const droppable = void 0 !== onDropAssets;
|
|
52
54
|
return /*#__PURE__*/ external_react_namespaceObject.createElement("ul", {
|
|
53
|
-
"aria-label": "
|
|
55
|
+
"aria-label": msg("assetManager.tree.label"),
|
|
54
56
|
"data-testid": "ak-folder-tree",
|
|
55
57
|
className: "flex flex-col gap-1"
|
|
56
58
|
}, folders.map((folder)=>/*#__PURE__*/ external_react_namespaceObject.createElement("li", {
|
|
@@ -62,7 +64,7 @@ function FolderTree({ folders, currentFolderId, onNavigate, onDropAssets }) {
|
|
|
62
64
|
className: "w-full justify-start",
|
|
63
65
|
"data-folder-id": folder.id,
|
|
64
66
|
"data-drop-target": dropTarget === folder.id ? "" : void 0,
|
|
65
|
-
title: droppable ?
|
|
67
|
+
title: droppable ? msg("assetManager.tree.dropHint").replace("{name}", folder.name) : void 0,
|
|
66
68
|
onClick: ()=>onNavigate(folder.id),
|
|
67
69
|
onDragOver: onDropAssets ? (event)=>{
|
|
68
70
|
event.preventDefault();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FolderTree.d.cts","sourceRoot":"","sources":["../../src/ui/FolderTree.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FolderTree.d.cts","sourceRoot":"","sources":["../../src/ui/FolderTree.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,sFAAsF;AACtF,eAAO,MAAM,eAAe,kCAAkC,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC/B,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,sEAAsE;IACtE,QAAQ,CAAC,YAAY,CAAC,EAAE,CACvB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,KACnB,IAAI,CAAC;CACV;AAED,wBAAgB,UAAU,CAAC,EAC1B,OAAO,EACP,eAAe,EACf,UAAU,EACV,YAAY,GACZ,EAAE,eAAe,kDAwEjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FolderTree.d.ts","sourceRoot":"","sources":["../../src/ui/FolderTree.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FolderTree.d.ts","sourceRoot":"","sources":["../../src/ui/FolderTree.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,sFAAsF;AACtF,eAAO,MAAM,eAAe,kCAAkC,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC/B,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,sEAAsE;IACtE,QAAQ,CAAC,YAAY,CAAC,EAAE,CACvB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,KACnB,IAAI,CAAC;CACV;AAED,wBAAgB,UAAU,CAAC,EAC1B,OAAO,EACP,eAAe,EACf,UAAU,EACV,YAAY,GACZ,EAAE,eAAe,kDAwEjB"}
|
package/dist/ui/FolderTree.js
CHANGED
|
@@ -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 * as __rspack_external_react from "react";
|
|
4
5
|
const ASSET_DRAG_MIME = "application/x-anvilkit-assets";
|
|
5
6
|
function FolderTree({ folders, currentFolderId, onNavigate, onDropAssets }) {
|
|
7
|
+
const msg = useMsg();
|
|
6
8
|
const [dropTarget, setDropTarget] = __rspack_external_react.useState(null);
|
|
7
9
|
const handleDrop = (folderId)=>(event)=>{
|
|
8
10
|
event.preventDefault();
|
|
@@ -17,7 +19,7 @@ function FolderTree({ folders, currentFolderId, onNavigate, onDropAssets }) {
|
|
|
17
19
|
if (0 === folders.length) return null;
|
|
18
20
|
const droppable = void 0 !== onDropAssets;
|
|
19
21
|
return /*#__PURE__*/ __rspack_external_react.createElement("ul", {
|
|
20
|
-
"aria-label": "
|
|
22
|
+
"aria-label": msg("assetManager.tree.label"),
|
|
21
23
|
"data-testid": "ak-folder-tree",
|
|
22
24
|
className: "flex flex-col gap-1"
|
|
23
25
|
}, folders.map((folder)=>/*#__PURE__*/ __rspack_external_react.createElement("li", {
|
|
@@ -29,7 +31,7 @@ function FolderTree({ folders, currentFolderId, onNavigate, onDropAssets }) {
|
|
|
29
31
|
className: "w-full justify-start",
|
|
30
32
|
"data-folder-id": folder.id,
|
|
31
33
|
"data-drop-target": dropTarget === folder.id ? "" : void 0,
|
|
32
|
-
title: droppable ?
|
|
34
|
+
title: droppable ? msg("assetManager.tree.dropHint").replace("{name}", folder.name) : void 0,
|
|
33
35
|
onClick: ()=>onNavigate(folder.id),
|
|
34
36
|
onDragOver: onDropAssets ? (event)=>{
|
|
35
37
|
event.preventDefault();
|
|
@@ -31,12 +31,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
31
31
|
__webpack_require__.d(__webpack_exports__, {
|
|
32
32
|
MetadataPanel: ()=>MetadataPanel
|
|
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 input_namespaceObject = require("@anvilkit/ui/input");
|
|
37
38
|
const label_namespaceObject = require("@anvilkit/ui/label");
|
|
38
39
|
const external_react_namespaceObject = require("react");
|
|
39
40
|
function MetadataPanel({ asset, onCancel, onConfirm }) {
|
|
41
|
+
const msg = (0, i18n_namespaceObject.useMsg)();
|
|
40
42
|
const [name, setName] = external_react_namespaceObject.useState("");
|
|
41
43
|
const [tagInput, setTagInput] = external_react_namespaceObject.useState("");
|
|
42
44
|
const [tags, setTags] = external_react_namespaceObject.useState([]);
|
|
@@ -45,8 +47,6 @@ function MetadataPanel({ asset, onCancel, onConfirm }) {
|
|
|
45
47
|
if (null === asset) return;
|
|
46
48
|
setName(asset.name ?? "");
|
|
47
49
|
setTags(asset.tags ?? []);
|
|
48
|
-
setTagInput("");
|
|
49
|
-
setBusy(false);
|
|
50
50
|
}, [
|
|
51
51
|
asset
|
|
52
52
|
]);
|
|
@@ -87,19 +87,23 @@ function MetadataPanel({ asset, onCancel, onConfirm }) {
|
|
|
87
87
|
setBusy(false);
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
+
function handleCancel() {
|
|
91
|
+
setTagInput("");
|
|
92
|
+
onCancel();
|
|
93
|
+
}
|
|
90
94
|
function handleOpenChange(nextOpen) {
|
|
91
|
-
if (!nextOpen && !busy)
|
|
95
|
+
if (!nextOpen && !busy) handleCancel();
|
|
92
96
|
}
|
|
93
97
|
const open = null !== asset;
|
|
94
98
|
const mimeType = asset?.meta?.mimeType;
|
|
95
99
|
return /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.Dialog, {
|
|
96
100
|
open: open,
|
|
97
101
|
onOpenChange: handleOpenChange
|
|
98
|
-
}, /*#__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, "
|
|
102
|
+
}, /*#__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.editTitle")), /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogDescription, null, asset?.id, mimeType ? ` (${mimeType})` : "")), /*#__PURE__*/ external_react_namespaceObject.createElement("div", {
|
|
99
103
|
"data-asset-manager-metadata": true
|
|
100
104
|
}, /*#__PURE__*/ external_react_namespaceObject.createElement(label_namespaceObject.Label, {
|
|
101
105
|
htmlFor: "asset-metadata-name"
|
|
102
|
-
}, "
|
|
106
|
+
}, msg("assetManager.form.nameLabel")), /*#__PURE__*/ external_react_namespaceObject.createElement(input_namespaceObject.Input, {
|
|
103
107
|
id: "asset-metadata-name",
|
|
104
108
|
value: name,
|
|
105
109
|
onChange: (event)=>{
|
|
@@ -111,13 +115,12 @@ function MetadataPanel({ asset, onCancel, onConfirm }) {
|
|
|
111
115
|
"data-asset-manager-tag-editor": true
|
|
112
116
|
}, /*#__PURE__*/ external_react_namespaceObject.createElement(label_namespaceObject.Label, {
|
|
113
117
|
htmlFor: "asset-metadata-tag-input"
|
|
114
|
-
}, "
|
|
115
|
-
"aria-label": "
|
|
116
|
-
role: "list"
|
|
118
|
+
}, msg("assetManager.form.tagsLabel")), /*#__PURE__*/ external_react_namespaceObject.createElement("ul", {
|
|
119
|
+
"aria-label": msg("assetManager.form.tagsListLabel")
|
|
117
120
|
}, tags.map((tag)=>/*#__PURE__*/ external_react_namespaceObject.createElement("li", {
|
|
118
121
|
key: tag
|
|
119
122
|
}, /*#__PURE__*/ external_react_namespaceObject.createElement("span", null, tag), /*#__PURE__*/ external_react_namespaceObject.createElement(button_namespaceObject.Button, {
|
|
120
|
-
"aria-label":
|
|
123
|
+
"aria-label": msg("assetManager.form.removeTag").replace("{tag}", tag),
|
|
121
124
|
"data-asset-action": "remove-tag",
|
|
122
125
|
disabled: busy,
|
|
123
126
|
onClick: ()=>{
|
|
@@ -133,18 +136,18 @@ function MetadataPanel({ asset, onCancel, onConfirm }) {
|
|
|
133
136
|
setTagInput(event.target.value);
|
|
134
137
|
},
|
|
135
138
|
onKeyDown: handleTagKeyDown,
|
|
136
|
-
placeholder: "
|
|
139
|
+
placeholder: msg("assetManager.form.addTagPlaceholder"),
|
|
137
140
|
disabled: busy
|
|
138
141
|
}))), /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogFooter, null, /*#__PURE__*/ external_react_namespaceObject.createElement(button_namespaceObject.Button, {
|
|
139
142
|
disabled: busy,
|
|
140
|
-
onClick:
|
|
143
|
+
onClick: handleCancel,
|
|
141
144
|
type: "button",
|
|
142
145
|
variant: "outline"
|
|
143
|
-
}, "
|
|
146
|
+
}, msg("assetManager.button.cancel")), /*#__PURE__*/ external_react_namespaceObject.createElement(button_namespaceObject.Button, {
|
|
144
147
|
disabled: busy || null === asset,
|
|
145
148
|
onClick: handleConfirm,
|
|
146
149
|
type: "button"
|
|
147
|
-
}, busy ? "
|
|
150
|
+
}, busy ? msg("assetManager.dialog.saveProgress") : msg("assetManager.button.save")))));
|
|
148
151
|
}
|
|
149
152
|
exports.MetadataPanel = __webpack_exports__.MetadataPanel;
|
|
150
153
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataPanel.d.cts","sourceRoot":"","sources":["../../src/ui/MetadataPanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MetadataPanel.d.cts","sourceRoot":"","sources":["../../src/ui/MetadataPanel.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CACnB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,KAC7D,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,SAAS,GACT,EAAE,kBAAkB,2CA2JpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataPanel.d.ts","sourceRoot":"","sources":["../../src/ui/MetadataPanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MetadataPanel.d.ts","sourceRoot":"","sources":["../../src/ui/MetadataPanel.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CACnB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,KAC7D,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,SAAS,GACT,EAAE,kBAAkB,2CA2JpB"}
|
package/dist/ui/MetadataPanel.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
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 { Input } from "@anvilkit/ui/input";
|
|
5
6
|
import { Label } from "@anvilkit/ui/label";
|
|
6
7
|
import * as __rspack_external_react from "react";
|
|
7
8
|
function MetadataPanel({ asset, onCancel, onConfirm }) {
|
|
9
|
+
const msg = useMsg();
|
|
8
10
|
const [name, setName] = __rspack_external_react.useState("");
|
|
9
11
|
const [tagInput, setTagInput] = __rspack_external_react.useState("");
|
|
10
12
|
const [tags, setTags] = __rspack_external_react.useState([]);
|
|
@@ -13,8 +15,6 @@ function MetadataPanel({ asset, onCancel, onConfirm }) {
|
|
|
13
15
|
if (null === asset) return;
|
|
14
16
|
setName(asset.name ?? "");
|
|
15
17
|
setTags(asset.tags ?? []);
|
|
16
|
-
setTagInput("");
|
|
17
|
-
setBusy(false);
|
|
18
18
|
}, [
|
|
19
19
|
asset
|
|
20
20
|
]);
|
|
@@ -55,19 +55,23 @@ function MetadataPanel({ asset, onCancel, onConfirm }) {
|
|
|
55
55
|
setBusy(false);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
+
function handleCancel() {
|
|
59
|
+
setTagInput("");
|
|
60
|
+
onCancel();
|
|
61
|
+
}
|
|
58
62
|
function handleOpenChange(nextOpen) {
|
|
59
|
-
if (!nextOpen && !busy)
|
|
63
|
+
if (!nextOpen && !busy) handleCancel();
|
|
60
64
|
}
|
|
61
65
|
const open = null !== asset;
|
|
62
66
|
const mimeType = asset?.meta?.mimeType;
|
|
63
67
|
return /*#__PURE__*/ __rspack_external_react.createElement(Dialog, {
|
|
64
68
|
open: open,
|
|
65
69
|
onOpenChange: handleOpenChange
|
|
66
|
-
}, /*#__PURE__*/ __rspack_external_react.createElement(DialogContent, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogHeader, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogTitle, null, "
|
|
70
|
+
}, /*#__PURE__*/ __rspack_external_react.createElement(DialogContent, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogHeader, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogTitle, null, msg("assetManager.dialog.editTitle")), /*#__PURE__*/ __rspack_external_react.createElement(DialogDescription, null, asset?.id, mimeType ? ` (${mimeType})` : "")), /*#__PURE__*/ __rspack_external_react.createElement("div", {
|
|
67
71
|
"data-asset-manager-metadata": true
|
|
68
72
|
}, /*#__PURE__*/ __rspack_external_react.createElement(Label, {
|
|
69
73
|
htmlFor: "asset-metadata-name"
|
|
70
|
-
}, "
|
|
74
|
+
}, msg("assetManager.form.nameLabel")), /*#__PURE__*/ __rspack_external_react.createElement(Input, {
|
|
71
75
|
id: "asset-metadata-name",
|
|
72
76
|
value: name,
|
|
73
77
|
onChange: (event)=>{
|
|
@@ -79,13 +83,12 @@ function MetadataPanel({ asset, onCancel, onConfirm }) {
|
|
|
79
83
|
"data-asset-manager-tag-editor": true
|
|
80
84
|
}, /*#__PURE__*/ __rspack_external_react.createElement(Label, {
|
|
81
85
|
htmlFor: "asset-metadata-tag-input"
|
|
82
|
-
}, "
|
|
83
|
-
"aria-label": "
|
|
84
|
-
role: "list"
|
|
86
|
+
}, msg("assetManager.form.tagsLabel")), /*#__PURE__*/ __rspack_external_react.createElement("ul", {
|
|
87
|
+
"aria-label": msg("assetManager.form.tagsListLabel")
|
|
85
88
|
}, tags.map((tag)=>/*#__PURE__*/ __rspack_external_react.createElement("li", {
|
|
86
89
|
key: tag
|
|
87
90
|
}, /*#__PURE__*/ __rspack_external_react.createElement("span", null, tag), /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
88
|
-
"aria-label":
|
|
91
|
+
"aria-label": msg("assetManager.form.removeTag").replace("{tag}", tag),
|
|
89
92
|
"data-asset-action": "remove-tag",
|
|
90
93
|
disabled: busy,
|
|
91
94
|
onClick: ()=>{
|
|
@@ -101,17 +104,17 @@ function MetadataPanel({ asset, onCancel, onConfirm }) {
|
|
|
101
104
|
setTagInput(event.target.value);
|
|
102
105
|
},
|
|
103
106
|
onKeyDown: handleTagKeyDown,
|
|
104
|
-
placeholder: "
|
|
107
|
+
placeholder: msg("assetManager.form.addTagPlaceholder"),
|
|
105
108
|
disabled: busy
|
|
106
109
|
}))), /*#__PURE__*/ __rspack_external_react.createElement(DialogFooter, null, /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
107
110
|
disabled: busy,
|
|
108
|
-
onClick:
|
|
111
|
+
onClick: handleCancel,
|
|
109
112
|
type: "button",
|
|
110
113
|
variant: "outline"
|
|
111
|
-
}, "
|
|
114
|
+
}, msg("assetManager.button.cancel")), /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
112
115
|
disabled: busy || null === asset,
|
|
113
116
|
onClick: handleConfirm,
|
|
114
117
|
type: "button"
|
|
115
|
-
}, busy ? "
|
|
118
|
+
}, busy ? msg("assetManager.dialog.saveProgress") : msg("assetManager.button.save")))));
|
|
116
119
|
}
|
|
117
120
|
export { MetadataPanel };
|
|
@@ -31,10 +31,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
31
31
|
__webpack_require__.d(__webpack_exports__, {
|
|
32
32
|
MoveTargetPicker: ()=>MoveTargetPicker
|
|
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
|
-
function MoveTargetPicker({ open, onOpenChange, folders, onPick, rootLabel
|
|
38
|
+
function MoveTargetPicker({ open, onOpenChange, folders, onPick, rootLabel }) {
|
|
39
|
+
const msg = (0, i18n_namespaceObject.useMsg)();
|
|
40
|
+
const resolvedRootLabel = rootLabel ?? msg("assetManager.folder.root");
|
|
38
41
|
const [busy, setBusy] = external_react_namespaceObject.useState(false);
|
|
39
42
|
async function pick(folderId) {
|
|
40
43
|
if (busy) return;
|
|
@@ -51,8 +54,8 @@ function MoveTargetPicker({ open, onOpenChange, folders, onPick, rootLabel = "Al
|
|
|
51
54
|
onOpenChange: (next)=>{
|
|
52
55
|
if (!busy) onOpenChange(next);
|
|
53
56
|
}
|
|
54
|
-
}, /*#__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, "
|
|
55
|
-
"aria-label": "
|
|
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.moveTitle"))), /*#__PURE__*/ external_react_namespaceObject.createElement("ul", {
|
|
58
|
+
"aria-label": msg("assetManager.dialog.moveTitle"),
|
|
56
59
|
"data-testid": "ak-move-target-picker",
|
|
57
60
|
className: "flex max-h-72 flex-col gap-1 overflow-auto"
|
|
58
61
|
}, /*#__PURE__*/ external_react_namespaceObject.createElement("li", null, /*#__PURE__*/ external_react_namespaceObject.createElement(button_namespaceObject.Button, {
|
|
@@ -63,7 +66,7 @@ function MoveTargetPicker({ open, onOpenChange, folders, onPick, rootLabel = "Al
|
|
|
63
66
|
"data-move-target": "root",
|
|
64
67
|
disabled: busy,
|
|
65
68
|
onClick: ()=>void pick(null)
|
|
66
|
-
},
|
|
69
|
+
}, resolvedRootLabel)), folders.map((folder)=>/*#__PURE__*/ external_react_namespaceObject.createElement("li", {
|
|
67
70
|
key: folder.id
|
|
68
71
|
}, /*#__PURE__*/ external_react_namespaceObject.createElement(button_namespaceObject.Button, {
|
|
69
72
|
type: "button",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoveTargetPicker.d.cts","sourceRoot":"","sources":["../../src/ui/MoveTargetPicker.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MoveTargetPicker.d.cts","sourceRoot":"","sources":["../../src/ui/MoveTargetPicker.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,EAChC,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,MAAM,EACN,SAAS,GACT,EAAE,qBAAqB,2CAgEvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoveTargetPicker.d.ts","sourceRoot":"","sources":["../../src/ui/MoveTargetPicker.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MoveTargetPicker.d.ts","sourceRoot":"","sources":["../../src/ui/MoveTargetPicker.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,EAChC,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,MAAM,EACN,SAAS,GACT,EAAE,qBAAqB,2CAgEvB"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { useMsg } from "@anvilkit/core/i18n";
|
|
2
3
|
import { Button } from "@anvilkit/ui/button";
|
|
3
4
|
import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@anvilkit/ui/dialog";
|
|
4
5
|
import * as __rspack_external_react from "react";
|
|
5
|
-
function MoveTargetPicker({ open, onOpenChange, folders, onPick, rootLabel
|
|
6
|
+
function MoveTargetPicker({ open, onOpenChange, folders, onPick, rootLabel }) {
|
|
7
|
+
const msg = useMsg();
|
|
8
|
+
const resolvedRootLabel = rootLabel ?? msg("assetManager.folder.root");
|
|
6
9
|
const [busy, setBusy] = __rspack_external_react.useState(false);
|
|
7
10
|
async function pick(folderId) {
|
|
8
11
|
if (busy) return;
|
|
@@ -19,8 +22,8 @@ function MoveTargetPicker({ open, onOpenChange, folders, onPick, rootLabel = "Al
|
|
|
19
22
|
onOpenChange: (next)=>{
|
|
20
23
|
if (!busy) onOpenChange(next);
|
|
21
24
|
}
|
|
22
|
-
}, /*#__PURE__*/ __rspack_external_react.createElement(DialogContent, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogHeader, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogTitle, null, "
|
|
23
|
-
"aria-label": "
|
|
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.moveTitle"))), /*#__PURE__*/ __rspack_external_react.createElement("ul", {
|
|
26
|
+
"aria-label": msg("assetManager.dialog.moveTitle"),
|
|
24
27
|
"data-testid": "ak-move-target-picker",
|
|
25
28
|
className: "flex max-h-72 flex-col gap-1 overflow-auto"
|
|
26
29
|
}, /*#__PURE__*/ __rspack_external_react.createElement("li", null, /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
@@ -31,7 +34,7 @@ function MoveTargetPicker({ open, onOpenChange, folders, onPick, rootLabel = "Al
|
|
|
31
34
|
"data-move-target": "root",
|
|
32
35
|
disabled: busy,
|
|
33
36
|
onClick: ()=>void pick(null)
|
|
34
|
-
},
|
|
37
|
+
}, resolvedRootLabel)), folders.map((folder)=>/*#__PURE__*/ __rspack_external_react.createElement("li", {
|
|
35
38
|
key: folder.id
|
|
36
39
|
}, /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
37
40
|
type: "button",
|
|
@@ -31,11 +31,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
31
31
|
__webpack_require__.d(__webpack_exports__, {
|
|
32
32
|
ReplaceAssetDialog: ()=>ReplaceAssetDialog
|
|
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
|
const external_plugin_cjs_namespaceObject = require("../plugin.cjs");
|
|
38
39
|
function ReplaceAssetDialog({ acceptedMimeTypes, asset, maxFileSize, onCancel, onConfirm }) {
|
|
40
|
+
const msg = (0, i18n_namespaceObject.useMsg)();
|
|
39
41
|
const inputRef = external_react_namespaceObject.useRef(null);
|
|
40
42
|
const [selectedFile, setSelectedFile] = external_react_namespaceObject.useState(null);
|
|
41
43
|
const [error, setError] = external_react_namespaceObject.useState(null);
|
|
@@ -43,15 +45,10 @@ function ReplaceAssetDialog({ acceptedMimeTypes, asset, maxFileSize, onCancel, o
|
|
|
43
45
|
const acceptAttr = external_react_namespaceObject.useMemo(()=>acceptedMimeTypes?.join(","), [
|
|
44
46
|
acceptedMimeTypes
|
|
45
47
|
]);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
setBusy(false);
|
|
51
|
-
}
|
|
52
|
-
}, [
|
|
53
|
-
asset
|
|
54
|
-
]);
|
|
48
|
+
function resetPicker() {
|
|
49
|
+
setSelectedFile(null);
|
|
50
|
+
setError(null);
|
|
51
|
+
}
|
|
55
52
|
function handleFileChange(event) {
|
|
56
53
|
const file = event.target.files?.[0];
|
|
57
54
|
event.target.value = "";
|
|
@@ -73,22 +70,27 @@ function ReplaceAssetDialog({ acceptedMimeTypes, asset, maxFileSize, onCancel, o
|
|
|
73
70
|
setBusy(true);
|
|
74
71
|
try {
|
|
75
72
|
await onConfirm(asset, selectedFile);
|
|
73
|
+
resetPicker();
|
|
76
74
|
} catch (err) {
|
|
77
75
|
setError(err instanceof Error ? err.message : String(err));
|
|
78
76
|
} finally{
|
|
79
77
|
setBusy(false);
|
|
80
78
|
}
|
|
81
79
|
}
|
|
80
|
+
function handleCancel() {
|
|
81
|
+
resetPicker();
|
|
82
|
+
onCancel();
|
|
83
|
+
}
|
|
82
84
|
function handleOpenChange(nextOpen) {
|
|
83
|
-
if (!nextOpen && !busy)
|
|
85
|
+
if (!nextOpen && !busy) handleCancel();
|
|
84
86
|
}
|
|
85
87
|
const open = null !== asset;
|
|
86
88
|
const label = asset?.name ?? asset?.id ?? "";
|
|
87
89
|
return /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.Dialog, {
|
|
88
90
|
open: open,
|
|
89
91
|
onOpenChange: handleOpenChange
|
|
90
|
-
}, /*#__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, "
|
|
91
|
-
"aria-label": "
|
|
92
|
+
}, /*#__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.replaceTitle")), /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogDescription, null, label ? msg("assetManager.dialog.replaceDescription").replace("{label}", label) : msg("assetManager.dialog.replaceDescriptionGeneric"))), /*#__PURE__*/ external_react_namespaceObject.createElement("input", {
|
|
93
|
+
"aria-label": msg("assetManager.dialog.replaceFileLabel"),
|
|
92
94
|
"data-testid": "replace-asset-file-input",
|
|
93
95
|
hidden: true,
|
|
94
96
|
onChange: handleFileChange,
|
|
@@ -104,22 +106,22 @@ function ReplaceAssetDialog({ acceptedMimeTypes, asset, maxFileSize, onCancel, o
|
|
|
104
106
|
variant: "outline",
|
|
105
107
|
onClick: ()=>inputRef.current?.click(),
|
|
106
108
|
disabled: busy
|
|
107
|
-
}, selectedFile ? "
|
|
109
|
+
}, selectedFile ? msg("assetManager.dialog.chooseFileDifferent") : msg("assetManager.dialog.chooseFile")), /*#__PURE__*/ external_react_namespaceObject.createElement("p", {
|
|
108
110
|
"aria-live": "polite",
|
|
109
111
|
role: "status"
|
|
110
|
-
}, selectedFile ?
|
|
112
|
+
}, selectedFile ? msg("assetManager.dialog.fileSelected").replace("{name}", selectedFile.name) : msg("assetManager.dialog.noFileSelected")), error ? /*#__PURE__*/ external_react_namespaceObject.createElement("p", {
|
|
111
113
|
"data-asset-manager-replace-error": true,
|
|
112
114
|
role: "alert"
|
|
113
115
|
}, error) : null), /*#__PURE__*/ external_react_namespaceObject.createElement(dialog_namespaceObject.DialogFooter, null, /*#__PURE__*/ external_react_namespaceObject.createElement(button_namespaceObject.Button, {
|
|
114
116
|
type: "button",
|
|
115
117
|
variant: "outline",
|
|
116
|
-
onClick:
|
|
118
|
+
onClick: handleCancel,
|
|
117
119
|
disabled: busy
|
|
118
|
-
}, "
|
|
120
|
+
}, msg("assetManager.button.cancel")), /*#__PURE__*/ external_react_namespaceObject.createElement(button_namespaceObject.Button, {
|
|
119
121
|
type: "button",
|
|
120
122
|
onClick: handleConfirm,
|
|
121
123
|
disabled: busy || null === asset || null === selectedFile
|
|
122
|
-
}, busy ? "
|
|
124
|
+
}, busy ? msg("assetManager.dialog.replaceProgress") : msg("assetManager.button.replace")))));
|
|
123
125
|
}
|
|
124
126
|
exports.ReplaceAssetDialog = __webpack_exports__.ReplaceAssetDialog;
|
|
125
127
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReplaceAssetDialog.d.cts","sourceRoot":"","sources":["../../src/ui/ReplaceAssetDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReplaceAssetDialog.d.cts","sourceRoot":"","sources":["../../src/ui/ReplaceAssetDialog.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,uBAChB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,aAAa,CAAC;IACtE,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,CAAC,EAClC,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,GACT,EAAE,uBAAuB,2CAuIzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReplaceAssetDialog.d.ts","sourceRoot":"","sources":["../../src/ui/ReplaceAssetDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReplaceAssetDialog.d.ts","sourceRoot":"","sources":["../../src/ui/ReplaceAssetDialog.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,uBAChB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,aAAa,CAAC;IACtE,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,CAAC,EAClC,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,GACT,EAAE,uBAAuB,2CAuIzB"}
|
|
@@ -1,9 +1,11 @@
|
|
|
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 { validateSelectedFile } from "../plugin.js";
|
|
5
6
|
import * as __rspack_external_react from "react";
|
|
6
7
|
function ReplaceAssetDialog({ acceptedMimeTypes, asset, maxFileSize, onCancel, onConfirm }) {
|
|
8
|
+
const msg = useMsg();
|
|
7
9
|
const inputRef = __rspack_external_react.useRef(null);
|
|
8
10
|
const [selectedFile, setSelectedFile] = __rspack_external_react.useState(null);
|
|
9
11
|
const [error, setError] = __rspack_external_react.useState(null);
|
|
@@ -11,15 +13,10 @@ function ReplaceAssetDialog({ acceptedMimeTypes, asset, maxFileSize, onCancel, o
|
|
|
11
13
|
const acceptAttr = __rspack_external_react.useMemo(()=>acceptedMimeTypes?.join(","), [
|
|
12
14
|
acceptedMimeTypes
|
|
13
15
|
]);
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
setBusy(false);
|
|
19
|
-
}
|
|
20
|
-
}, [
|
|
21
|
-
asset
|
|
22
|
-
]);
|
|
16
|
+
function resetPicker() {
|
|
17
|
+
setSelectedFile(null);
|
|
18
|
+
setError(null);
|
|
19
|
+
}
|
|
23
20
|
function handleFileChange(event) {
|
|
24
21
|
const file = event.target.files?.[0];
|
|
25
22
|
event.target.value = "";
|
|
@@ -41,22 +38,27 @@ function ReplaceAssetDialog({ acceptedMimeTypes, asset, maxFileSize, onCancel, o
|
|
|
41
38
|
setBusy(true);
|
|
42
39
|
try {
|
|
43
40
|
await onConfirm(asset, selectedFile);
|
|
41
|
+
resetPicker();
|
|
44
42
|
} catch (err) {
|
|
45
43
|
setError(err instanceof Error ? err.message : String(err));
|
|
46
44
|
} finally{
|
|
47
45
|
setBusy(false);
|
|
48
46
|
}
|
|
49
47
|
}
|
|
48
|
+
function handleCancel() {
|
|
49
|
+
resetPicker();
|
|
50
|
+
onCancel();
|
|
51
|
+
}
|
|
50
52
|
function handleOpenChange(nextOpen) {
|
|
51
|
-
if (!nextOpen && !busy)
|
|
53
|
+
if (!nextOpen && !busy) handleCancel();
|
|
52
54
|
}
|
|
53
55
|
const open = null !== asset;
|
|
54
56
|
const label = asset?.name ?? asset?.id ?? "";
|
|
55
57
|
return /*#__PURE__*/ __rspack_external_react.createElement(Dialog, {
|
|
56
58
|
open: open,
|
|
57
59
|
onOpenChange: handleOpenChange
|
|
58
|
-
}, /*#__PURE__*/ __rspack_external_react.createElement(DialogContent, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogHeader, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogTitle, null, "
|
|
59
|
-
"aria-label": "
|
|
60
|
+
}, /*#__PURE__*/ __rspack_external_react.createElement(DialogContent, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogHeader, null, /*#__PURE__*/ __rspack_external_react.createElement(DialogTitle, null, msg("assetManager.dialog.replaceTitle")), /*#__PURE__*/ __rspack_external_react.createElement(DialogDescription, null, label ? msg("assetManager.dialog.replaceDescription").replace("{label}", label) : msg("assetManager.dialog.replaceDescriptionGeneric"))), /*#__PURE__*/ __rspack_external_react.createElement("input", {
|
|
61
|
+
"aria-label": msg("assetManager.dialog.replaceFileLabel"),
|
|
60
62
|
"data-testid": "replace-asset-file-input",
|
|
61
63
|
hidden: true,
|
|
62
64
|
onChange: handleFileChange,
|
|
@@ -72,21 +74,21 @@ function ReplaceAssetDialog({ acceptedMimeTypes, asset, maxFileSize, onCancel, o
|
|
|
72
74
|
variant: "outline",
|
|
73
75
|
onClick: ()=>inputRef.current?.click(),
|
|
74
76
|
disabled: busy
|
|
75
|
-
}, selectedFile ? "
|
|
77
|
+
}, selectedFile ? msg("assetManager.dialog.chooseFileDifferent") : msg("assetManager.dialog.chooseFile")), /*#__PURE__*/ __rspack_external_react.createElement("p", {
|
|
76
78
|
"aria-live": "polite",
|
|
77
79
|
role: "status"
|
|
78
|
-
}, selectedFile ?
|
|
80
|
+
}, selectedFile ? msg("assetManager.dialog.fileSelected").replace("{name}", selectedFile.name) : msg("assetManager.dialog.noFileSelected")), error ? /*#__PURE__*/ __rspack_external_react.createElement("p", {
|
|
79
81
|
"data-asset-manager-replace-error": true,
|
|
80
82
|
role: "alert"
|
|
81
83
|
}, error) : null), /*#__PURE__*/ __rspack_external_react.createElement(DialogFooter, null, /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
82
84
|
type: "button",
|
|
83
85
|
variant: "outline",
|
|
84
|
-
onClick:
|
|
86
|
+
onClick: handleCancel,
|
|
85
87
|
disabled: busy
|
|
86
|
-
}, "
|
|
88
|
+
}, msg("assetManager.button.cancel")), /*#__PURE__*/ __rspack_external_react.createElement(Button, {
|
|
87
89
|
type: "button",
|
|
88
90
|
onClick: handleConfirm,
|
|
89
91
|
disabled: busy || null === asset || null === selectedFile
|
|
90
|
-
}, busy ? "
|
|
92
|
+
}, busy ? msg("assetManager.dialog.replaceProgress") : msg("assetManager.button.replace")))));
|
|
91
93
|
}
|
|
92
94
|
export { ReplaceAssetDialog };
|