@mano8/astro-media-m8 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +54 -11
  2. package/dist/src/integration.d.ts.map +1 -1
  3. package/dist/src/integration.js +1 -0
  4. package/dist/src/integration.js.map +1 -1
  5. package/dist/src/runtime/api/categories.d.ts +14 -8
  6. package/dist/src/runtime/api/categories.d.ts.map +1 -1
  7. package/dist/src/runtime/api/categories.js +21 -8
  8. package/dist/src/runtime/api/categories.js.map +1 -1
  9. package/dist/src/runtime/api/index.d.ts +8 -0
  10. package/dist/src/runtime/api/index.d.ts.map +1 -1
  11. package/dist/src/runtime/api/index.js +8 -0
  12. package/dist/src/runtime/api/index.js.map +1 -1
  13. package/dist/src/runtime/api/transfer.d.ts +19 -0
  14. package/dist/src/runtime/api/transfer.d.ts.map +1 -0
  15. package/dist/src/runtime/api/transfer.js +48 -0
  16. package/dist/src/runtime/api/transfer.js.map +1 -0
  17. package/dist/src/runtime/client.d.ts.map +1 -1
  18. package/dist/src/runtime/client.js +7 -1
  19. package/dist/src/runtime/client.js.map +1 -1
  20. package/dist/src/runtime/compatibility.d.ts +6 -6
  21. package/dist/src/runtime/compatibility.d.ts.map +1 -1
  22. package/dist/src/runtime/compatibility.js +59 -7
  23. package/dist/src/runtime/compatibility.js.map +1 -1
  24. package/dist/src/runtime/errors.d.ts +20 -2
  25. package/dist/src/runtime/errors.d.ts.map +1 -1
  26. package/dist/src/runtime/errors.js +53 -2
  27. package/dist/src/runtime/errors.js.map +1 -1
  28. package/dist/src/runtime/hooks/index.d.ts +2 -0
  29. package/dist/src/runtime/hooks/index.d.ts.map +1 -1
  30. package/dist/src/runtime/hooks/index.js +2 -0
  31. package/dist/src/runtime/hooks/index.js.map +1 -1
  32. package/dist/src/runtime/hooks/useMediaCategories.d.ts +30 -0
  33. package/dist/src/runtime/hooks/useMediaCategories.d.ts.map +1 -0
  34. package/dist/src/runtime/hooks/useMediaCategories.js +56 -0
  35. package/dist/src/runtime/hooks/useMediaCategories.js.map +1 -0
  36. package/dist/src/runtime/hooks/useMediaObjects.d.ts.map +1 -1
  37. package/dist/src/runtime/hooks/useMediaObjects.js +14 -2
  38. package/dist/src/runtime/hooks/useMediaObjects.js.map +1 -1
  39. package/dist/src/runtime/hooks/useMediaTransfer.d.ts +42 -0
  40. package/dist/src/runtime/hooks/useMediaTransfer.d.ts.map +1 -0
  41. package/dist/src/runtime/hooks/useMediaTransfer.js +106 -0
  42. package/dist/src/runtime/hooks/useMediaTransfer.js.map +1 -0
  43. package/dist/src/runtime/queryKeys.d.ts +2 -0
  44. package/dist/src/runtime/queryKeys.d.ts.map +1 -1
  45. package/dist/src/runtime/queryKeys.js +2 -0
  46. package/dist/src/runtime/queryKeys.js.map +1 -1
  47. package/dist/src/runtime/react/CategoryManager.d.ts +10 -0
  48. package/dist/src/runtime/react/CategoryManager.d.ts.map +1 -0
  49. package/dist/src/runtime/react/CategoryManager.js +194 -0
  50. package/dist/src/runtime/react/CategoryManager.js.map +1 -0
  51. package/dist/src/runtime/react/CategoryMultiSelect.d.ts +73 -0
  52. package/dist/src/runtime/react/CategoryMultiSelect.d.ts.map +1 -0
  53. package/dist/src/runtime/react/CategoryMultiSelect.js +179 -0
  54. package/dist/src/runtime/react/CategoryMultiSelect.js.map +1 -0
  55. package/dist/src/runtime/react/MediaCategoryTreePane.d.ts +22 -0
  56. package/dist/src/runtime/react/MediaCategoryTreePane.d.ts.map +1 -0
  57. package/dist/src/runtime/react/MediaCategoryTreePane.js +244 -0
  58. package/dist/src/runtime/react/MediaCategoryTreePane.js.map +1 -0
  59. package/dist/src/runtime/react/MediaErrorBoundary.d.ts +53 -0
  60. package/dist/src/runtime/react/MediaErrorBoundary.d.ts.map +1 -0
  61. package/dist/src/runtime/react/MediaErrorBoundary.js +58 -0
  62. package/dist/src/runtime/react/MediaErrorBoundary.js.map +1 -0
  63. package/dist/src/runtime/react/MediaLibrary.d.ts +16 -1
  64. package/dist/src/runtime/react/MediaLibrary.d.ts.map +1 -1
  65. package/dist/src/runtime/react/MediaLibrary.js +75 -110
  66. package/dist/src/runtime/react/MediaLibrary.js.map +1 -1
  67. package/dist/src/runtime/react/MediaObjectViews.d.ts +47 -0
  68. package/dist/src/runtime/react/MediaObjectViews.d.ts.map +1 -0
  69. package/dist/src/runtime/react/MediaObjectViews.js +131 -0
  70. package/dist/src/runtime/react/MediaObjectViews.js.map +1 -0
  71. package/dist/src/runtime/react/MediaTransferPanel.d.ts +17 -0
  72. package/dist/src/runtime/react/MediaTransferPanel.d.ts.map +1 -0
  73. package/dist/src/runtime/react/MediaTransferPanel.js +93 -0
  74. package/dist/src/runtime/react/MediaTransferPanel.js.map +1 -0
  75. package/dist/src/runtime/react/MediaUploadDropzone.d.ts +36 -1
  76. package/dist/src/runtime/react/MediaUploadDropzone.d.ts.map +1 -1
  77. package/dist/src/runtime/react/MediaUploadDropzone.js +63 -3
  78. package/dist/src/runtime/react/MediaUploadDropzone.js.map +1 -1
  79. package/dist/src/runtime/react/ObjectDetail.d.ts.map +1 -1
  80. package/dist/src/runtime/react/ObjectDetail.js +51 -1
  81. package/dist/src/runtime/react/ObjectDetail.js.map +1 -1
  82. package/dist/src/runtime/react/categoryBranch.d.ts +38 -0
  83. package/dist/src/runtime/react/categoryBranch.d.ts.map +1 -0
  84. package/dist/src/runtime/react/categoryBranch.js +37 -0
  85. package/dist/src/runtime/react/categoryBranch.js.map +1 -0
  86. package/dist/src/runtime/react/default-ui/index.d.ts +6 -2
  87. package/dist/src/runtime/react/default-ui/index.d.ts.map +1 -1
  88. package/dist/src/runtime/react/default-ui/index.js +14 -9
  89. package/dist/src/runtime/react/default-ui/index.js.map +1 -1
  90. package/dist/src/runtime/react/index.d.ts +5 -2
  91. package/dist/src/runtime/react/index.d.ts.map +1 -1
  92. package/dist/src/runtime/react/index.js +3 -0
  93. package/dist/src/runtime/react/index.js.map +1 -1
  94. package/dist/src/runtime/react/mediaLibraryLabels.d.ts +93 -0
  95. package/dist/src/runtime/react/mediaLibraryLabels.d.ts.map +1 -0
  96. package/dist/src/runtime/react/mediaLibraryLabels.js +100 -0
  97. package/dist/src/runtime/react/mediaLibraryLabels.js.map +1 -0
  98. package/dist/src/runtime/react/mediaLibraryStyles.d.ts +44 -0
  99. package/dist/src/runtime/react/mediaLibraryStyles.d.ts.map +1 -0
  100. package/dist/src/runtime/react/mediaLibraryStyles.js +82 -0
  101. package/dist/src/runtime/react/mediaLibraryStyles.js.map +1 -0
  102. package/dist/src/runtime/routes.d.ts +2 -0
  103. package/dist/src/runtime/routes.d.ts.map +1 -1
  104. package/dist/src/runtime/routes.js +2 -0
  105. package/dist/src/runtime/routes.js.map +1 -1
  106. package/dist/src/runtime/schemas.d.ts +265 -0
  107. package/dist/src/runtime/schemas.d.ts.map +1 -1
  108. package/dist/src/runtime/schemas.js +173 -6
  109. package/dist/src/runtime/schemas.js.map +1 -1
  110. package/dist/src/runtime/upload/uploadController.d.ts +7 -0
  111. package/dist/src/runtime/upload/uploadController.d.ts.map +1 -1
  112. package/dist/src/runtime/upload/uploadController.js +10 -5
  113. package/dist/src/runtime/upload/uploadController.js.map +1 -1
  114. package/package.json +37 -30
  115. package/registry/r/media-category-tree.json +21 -0
  116. package/registry/r/media-dashboard-overview.json +1 -1
  117. package/registry/r/media-library-tree.json +25 -0
  118. package/registry/r/media-maintenance-panel.json +3 -2
  119. package/registry/r/media-transfer-dialog.json +26 -0
  120. package/registry/r/registry.json +18 -0
  121. package/registry.json +61 -1
  122. package/src/routes/categories.astro +12 -0
  123. package/src/scaffold/styles/media.css +395 -5
@@ -1,118 +1,77 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from "react";
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useRef, useState } from "react";
3
3
  import { deleteObject } from "../api/objects.js";
4
- import { useDownloadUrl } from "../hooks/useDownloadUrl.js";
5
4
  import { useMediaObjects } from "../hooks/useMediaObjects.js";
5
+ import { MediaUploadDropzone } from "./MediaUploadDropzone.js";
6
+ import { MediaCategoryTreePane } from "./MediaCategoryTreePane.js";
7
+ import { MediaObjectActions, MediaObjectMeta, MediaObjectName, MediaObjectPreview, MediaObjectTable } from "./MediaObjectViews.js";
8
+ import { MediaTransferPanel } from "./MediaTransferPanel.js";
9
+ import { branchListParams, exportBranchLabel, initialBranchSelection } from "./categoryBranch.js";
10
+ import { DEFAULT_LABELS } from "./mediaLibraryLabels.js";
11
+ import { activeViewButtonStyle, buttonClassName, cardBodyClassName, cardClassName, cardMetaClassName, cardTitleClassName, filterRowClassName, gridClassName, inputClassName, masonryClassName, titleRowClassName, toolbarActionsClassName, treeLayoutClassName, treeResultsClassName, viewButtonClassName, viewSwitcherClassName } from "./mediaLibraryStyles.js";
6
12
  const STATUS_OPTIONS = [
7
- { value: "pending_upload", label: "Pending" },
8
- { value: "uploaded", label: "Uploaded" },
9
- { value: "processing", label: "Processing" },
10
- { value: "ready", label: "Ready" },
11
- { value: "failed", label: "Failed" },
12
- { value: "deleted", label: "Deleted" },
13
- { value: "rejected", label: "Rejected" }
13
+ "pending_upload",
14
+ "uploaded",
15
+ "processing",
16
+ "ready",
17
+ "failed",
18
+ "deleted",
19
+ "rejected"
14
20
  ];
15
- const inputClassName = "fa-media-control h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40";
16
- const VIEW_OPTIONS = [
17
- { value: "list", label: "List" },
18
- { value: "grid", label: "Grid" },
19
- { value: "masonry", label: "Masonry" }
20
- ];
21
- const titleRowClassName = "fa-media-title-row flex w-full flex-wrap items-center justify-between gap-3";
22
- const filterRowClassName = "fa-media-filter-row flex w-full flex-col gap-3 md:flex-row md:items-center";
23
- const viewSwitcherClassName = "fa-media-view-switcher inline-flex shrink-0 rounded-lg border border-input bg-transparent p-0.5";
24
- const viewButtonClassName = "fa-media-view-button min-h-7 rounded-md border-0 bg-transparent px-2.5 py-1 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground aria-pressed:bg-foreground aria-pressed:text-background";
25
- const previewClassName = "fa-media-preview block aspect-square h-14 w-14 rounded-md border border-border bg-muted object-cover text-xs font-medium text-muted-foreground";
26
- const previewPlaceholderClassName = `${previewClassName} grid place-items-center px-1 text-center`;
27
- const gridClassName = "fa-media-cards fa-media-cards--grid grid gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4";
28
- const masonryClassName = "fa-media-cards fa-media-cards--masonry columns-1 gap-4 sm:columns-2 lg:columns-3 xl:columns-4";
29
- const cardClassName = "fa-media-card mb-4 break-inside-avoid overflow-hidden rounded-lg border border-border bg-card text-card-foreground";
30
- const cardPreviewClassName = "h-auto w-full rounded-none border-0";
31
- const cardBodyClassName = "fa-media-card-body grid gap-2 p-3";
32
- const cardTitleClassName = "m-0 truncate text-sm font-medium leading-5";
33
- const cardMetaClassName = "fa-media-card-meta flex flex-wrap items-center gap-2 text-xs text-muted-foreground";
34
- const itemActionsClassName = "fa-media-item-actions flex flex-wrap items-center gap-2";
35
- const actionLinkClassName = "fa-media-action-link inline-flex min-h-8 items-center rounded-lg border px-3 py-1 text-sm font-medium";
36
- const listPreviewStyle = {
37
- aspectRatio: "1 / 1",
38
- borderRadius: "0.375rem",
39
- height: "clamp(4rem, 12vw, 8rem)",
40
- maxHeight: "8rem",
41
- maxWidth: "8rem",
42
- objectFit: "cover",
43
- width: "clamp(4rem, 12vw, 8rem)"
44
- };
45
- const activeViewButtonStyle = {
46
- background: "var(--fa-media-active-bg, var(--foreground, CanvasText))",
47
- borderColor: "var(--fa-media-active-bg, var(--foreground, CanvasText))",
48
- color: "var(--fa-media-active-fg, var(--background, Canvas))"
49
- };
50
- function isImage(object) {
51
- return object.mime_type.toLowerCase().startsWith("image/");
52
- }
53
- function previewLoadingFor(view, index) {
54
- if (view === "list")
55
- return { loading: "lazy", fetchPriority: "low" };
56
- if (view === "grid" && index < 6)
57
- return { loading: "eager", fetchPriority: "high" };
58
- if (view === "masonry" && index < 4)
59
- return { loading: "eager", fetchPriority: "high" };
60
- return { loading: "lazy", fetchPriority: "low" };
61
- }
62
- function objectLabel(object) {
63
- return object.original_filename ?? object.id;
64
- }
65
- function humanizeBytes(bytes) {
66
- if (!Number.isFinite(bytes) || bytes < 0)
67
- return "0 B";
68
- if (bytes < 1024)
69
- return `${bytes} B`;
70
- const units = ["KB", "MB", "GB", "TB"];
71
- let value = bytes / 1024;
72
- let unitIndex = 0;
73
- while (value >= 1024 && unitIndex < units.length - 1) {
74
- value /= 1024;
75
- unitIndex += 1;
76
- }
77
- return `${value.toFixed(value >= 10 ? 0 : 1)} ${units.at(unitIndex) ?? "TB"}`;
78
- }
79
- function statusLabel(status) {
80
- return STATUS_OPTIONS.find((option) => option.value === status)?.label ?? status;
81
- }
82
- function MediaObjectPreview({ object, view, index }) {
83
- const { data, loading, error, request } = useDownloadUrl(isImage(object) ? object.id : null);
84
- const loadingMode = previewLoadingFor(view, index);
85
- useEffect(() => {
86
- if (!isImage(object) || data || loading || error)
87
- return;
88
- void request();
89
- }, [data, error, loading, object, request]);
90
- if (!isImage(object)) {
91
- return (_jsx("span", { className: `${previewPlaceholderClassName} fa-media-preview--file`, style: view === "list" ? listPreviewStyle : undefined, "aria-hidden": "true", children: object.extension ?? "file" }));
92
- }
93
- if (!data) {
94
- return (_jsx("span", { className: `${previewPlaceholderClassName} fa-media-preview--loading`, style: view === "list" ? listPreviewStyle : undefined, "aria-label": `${objectLabel(object)} preview loading`, children: loading ? "Loading" : "Preview" }));
95
- }
96
- return (_jsx("img", { className: view === "list" ? previewClassName : `${previewClassName} ${cardPreviewClassName}`, src: data.url, alt: objectLabel(object), style: view === "list" ? listPreviewStyle : undefined, width: view === "list" ? 128 : undefined, height: view === "list" ? 128 : undefined, loading: loadingMode.loading, decoding: "async", fetchPriority: loadingMode.fetchPriority }));
97
- }
98
- function MediaObjectName({ object, objectHref }) {
99
- const label = objectLabel(object);
100
- return objectHref ? _jsx("a", { href: objectHref(object.id), children: label }) : label;
101
- }
102
- function MediaObjectMeta({ object }) {
103
- return (_jsxs(_Fragment, { children: [_jsx("span", { children: object.category }), _jsx("span", { className: `fa-media-badge fa-media-badge--${object.status}`, children: statusLabel(object.status) }), _jsx("span", { children: humanizeBytes(object.size_bytes) })] }));
104
- }
105
- function MediaObjectActions({ object, objectHref, deletingId, onDelete }) {
106
- const label = objectLabel(object);
107
- const href = objectHref?.(object.id);
108
- return (_jsxs("div", { className: itemActionsClassName, children: [href ? (_jsx("a", { className: actionLinkClassName, href: href, "aria-label": `View ${label}`, children: "View" })) : null, _jsx("button", { type: "button", className: "fa-media-danger", disabled: deletingId === object.id, onClick: () => void onDelete(object), children: "Delete" })] }));
109
- }
110
- export function MediaLibrary({ objectHref, initial = {} }) {
21
+ const VIEW_OPTIONS = ["list", "grid", "masonry", "tree"];
22
+ export function MediaLibrary({ objectHref, initial = {}, initialUploadOpen = false, labels: labelOverrides }) {
23
+ const labels = useMemo(() => ({
24
+ ...DEFAULT_LABELS,
25
+ ...labelOverrides,
26
+ views: { ...DEFAULT_LABELS.views, ...labelOverrides?.views },
27
+ categories: { ...DEFAULT_LABELS.categories, ...labelOverrides?.categories },
28
+ statuses: { ...DEFAULT_LABELS.statuses, ...labelOverrides?.statuses },
29
+ tree: { ...DEFAULT_LABELS.tree, ...labelOverrides?.tree },
30
+ transfer: { ...DEFAULT_LABELS.transfer, ...labelOverrides?.transfer },
31
+ upload: {
32
+ ...DEFAULT_LABELS.upload,
33
+ ...labelOverrides?.upload,
34
+ form: { ...DEFAULT_LABELS.upload.form, ...labelOverrides?.upload?.form }
35
+ }
36
+ }), [labelOverrides]);
111
37
  const [query, setQuery] = useState(initial);
112
38
  const [view, setView] = useState("list");
39
+ // Which branch the tree pane has selected. It is kept beside `query` rather
40
+ // than derived from it because "all" and an absent branch filter are the same
41
+ // params but not the same pane state.
42
+ const [branchSelection, setBranchSelection] = useState(() => initialBranchSelection(initial));
113
43
  const [deletingId, setDeletingId] = useState(null);
114
44
  const [actionError, setActionError] = useState(null);
45
+ const [transferOpen, setTransferOpen] = useState(false);
46
+ const [uploadOpen, setUploadOpen] = useState(initialUploadOpen);
47
+ const uploadCloseRef = useRef(null);
115
48
  const { items, count, loading, error, hasMore, refresh, loadMore } = useMediaObjects(query);
49
+ useEffect(() => {
50
+ if (!uploadOpen)
51
+ return;
52
+ const previousActive = document.activeElement instanceof HTMLElement ? document.activeElement : null;
53
+ uploadCloseRef.current?.focus();
54
+ const closeOnEscape = (event) => {
55
+ if (event.key !== "Escape")
56
+ return;
57
+ event.preventDefault();
58
+ setUploadOpen(false);
59
+ };
60
+ document.addEventListener("keydown", closeOnEscape);
61
+ return () => {
62
+ document.removeEventListener("keydown", closeOnEscape);
63
+ previousActive?.focus();
64
+ };
65
+ }, [uploadOpen]);
66
+ /**
67
+ * Patches the branch params onto `query` rather than replacing it, so the
68
+ * toolbar's search / enum category / status filters stay live and compose
69
+ * with the selected branch.
70
+ */
71
+ function handleBranchSelect(selection) {
72
+ setBranchSelection(selection);
73
+ setQuery((prev) => ({ ...prev, ...branchListParams(selection) }));
74
+ }
116
75
  async function handleDelete(object) {
117
76
  setActionError(null);
118
77
  setDeletingId(object.id);
@@ -121,21 +80,27 @@ export function MediaLibrary({ objectHref, initial = {} }) {
121
80
  await refresh();
122
81
  }
123
82
  catch {
124
- setActionError("Failed to delete media");
83
+ setActionError(labels.deleteError);
125
84
  }
126
85
  finally {
127
86
  setDeletingId(null);
128
87
  }
129
88
  }
130
- return (_jsxs("section", { className: "not-content fa-media-panel", children: [_jsxs("header", { className: "fa-media-toolbar", children: [_jsxs("div", { className: titleRowClassName, children: [_jsxs("h2", { children: ["Media library (", count, ")"] }), _jsx("div", { className: viewSwitcherClassName, "aria-label": "Media library view", children: VIEW_OPTIONS.map(({ value, label }) => (_jsx("button", { type: "button", "aria-pressed": view === value, className: viewButtonClassName, style: view === value ? activeViewButtonStyle : undefined, onClick: () => setView(value), children: label }, value))) })] }), _jsxs("div", { className: filterRowClassName, children: [_jsx("input", { className: inputClassName, type: "search", placeholder: "Search filename", onChange: (event) => {
89
+ return (_jsxs("section", { className: "not-content fa-media-panel", children: [_jsxs("header", { className: "fa-media-toolbar", children: [_jsxs("div", { className: titleRowClassName, children: [_jsxs("h2", { children: [labels.title, " (", count, ")"] }), _jsxs("div", { className: toolbarActionsClassName, children: [_jsx("div", { className: viewSwitcherClassName, "aria-label": labels.viewLabel, children: VIEW_OPTIONS.map((value) => (_jsx("button", { type: "button", "aria-pressed": view === value, className: viewButtonClassName, style: view === value ? activeViewButtonStyle : undefined, onClick: () => setView(value), children: labels.views[value] }, value))) }), _jsx("button", { type: "button", className: buttonClassName, "aria-pressed": transferOpen, "aria-expanded": transferOpen, "aria-controls": "fa-media-transfer-panel", onClick: () => setTransferOpen((open) => !open), children: labels.importExport }), _jsx("button", { type: "button", className: buttonClassName, onClick: () => setUploadOpen(true), children: labels.uploadMedia })] })] }), _jsxs("div", { className: filterRowClassName, children: [_jsx("input", { className: inputClassName, type: "search", "aria-label": labels.searchLabel, placeholder: labels.searchPlaceholder, onChange: (event) => {
131
90
  const q = event.currentTarget.value || undefined;
132
91
  setQuery((prev) => ({ ...prev, q }));
133
92
  } }), _jsxs("select", { className: inputClassName, onChange: (event) => {
134
93
  const category = (event.currentTarget.value || undefined);
135
94
  setQuery((prev) => ({ ...prev, category }));
136
- }, children: [_jsx("option", { value: "", children: "All categories" }), ["avatar", "document", "asset", "chat_attachment", "export", "receipt"].map((value) => (_jsx("option", { value: value, children: value }, value)))] }), _jsxs("select", { className: inputClassName, onChange: (event) => {
95
+ }, children: [_jsx("option", { value: "", children: labels.allCategories }), ["avatar", "document", "asset", "chat_attachment", "export", "receipt"].map((value) => (_jsx("option", { value: value, children: labels.categories[value] }, value)))] }), _jsxs("select", { className: inputClassName, onChange: (event) => {
137
96
  const status = (event.currentTarget.value || undefined);
138
97
  setQuery((prev) => ({ ...prev, status }));
139
- }, children: [_jsx("option", { value: "", children: "All statuses" }), STATUS_OPTIONS.map(({ value, label }) => (_jsx("option", { value: value, children: label }, value)))] })] })] }), error ? _jsx("p", { role: "alert", children: "Failed to load media" }) : null, actionError ? _jsx("p", { role: "alert", children: actionError }) : null, view === "list" ? (_jsxs("table", { className: "fa-media-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Preview" }), _jsx("th", { children: "Filename" }), _jsx("th", { children: "Actions" }), _jsx("th", { children: "Category" }), _jsx("th", { children: "Status" }), _jsx("th", { children: "Size" })] }) }), _jsx("tbody", { children: items.map((object, index) => (_jsxs("tr", { children: [_jsx("td", { children: _jsx(MediaObjectPreview, { object: object, view: view, index: index }) }), _jsx("td", { children: _jsx(MediaObjectName, { object: object, objectHref: objectHref }) }), _jsx("td", { children: _jsx(MediaObjectActions, { object: object, objectHref: objectHref, deletingId: deletingId, onDelete: handleDelete }) }), _jsx("td", { children: object.category }), _jsx("td", { children: _jsx("span", { className: `fa-media-badge fa-media-badge--${object.status}`, children: statusLabel(object.status) }) }), _jsx("td", { children: humanizeBytes(object.size_bytes) })] }, object.id))) })] })) : (_jsx("div", { className: view === "grid" ? gridClassName : masonryClassName, children: items.map((object, index) => (_jsxs("article", { className: cardClassName, children: [_jsx(MediaObjectPreview, { object: object, view: view, index: index }), _jsxs("div", { className: cardBodyClassName, children: [_jsx("h3", { className: cardTitleClassName, children: _jsx(MediaObjectName, { object: object, objectHref: objectHref }) }), _jsx("div", { className: cardMetaClassName, children: _jsx(MediaObjectMeta, { object: object }) }), _jsx(MediaObjectActions, { object: object, objectHref: objectHref, deletingId: deletingId, onDelete: handleDelete })] })] }, object.id))) })), loading ? _jsx("p", { children: "Loading..." }) : null, hasMore ? (_jsx("button", { type: "button", disabled: loading, onClick: () => void loadMore(), children: "Load more" })) : null] }));
98
+ }, children: [_jsx("option", { value: "", children: labels.allStatuses }), STATUS_OPTIONS.map((value) => (_jsx("option", { value: value, children: labels.statuses[value] }, value)))] })] })] }), transferOpen ? (_jsx("div", { id: "fa-media-transfer-panel", children: _jsx(MediaTransferPanel, { filters: query, exportScopeLabel: view === "tree" ? exportBranchLabel(branchSelection, labels.tree) : undefined, labels: labels.transfer }) })) : null, uploadOpen ? (_jsx("div", { className: "fa-media-dialog-backdrop", onMouseDown: (event) => {
99
+ if (event.target === event.currentTarget)
100
+ setUploadOpen(false);
101
+ }, children: _jsxs("div", { className: "fa-media-dialog", role: "dialog", "aria-modal": "true", "aria-labelledby": "fa-media-upload-dialog-title", children: [_jsxs("header", { className: "fa-media-dialog-header", children: [_jsx("h2", { id: "fa-media-upload-dialog-title", children: labels.upload.title }), _jsx("button", { ref: uploadCloseRef, type: "button", "aria-label": labels.upload.closeLabel, onClick: () => setUploadOpen(false), children: labels.upload.close })] }), _jsx(MediaUploadDropzone, { heading: false, labels: labels.upload.form, onUploaded: () => {
102
+ setUploadOpen(false);
103
+ void refresh();
104
+ } })] }) })) : null, error ? _jsx("p", { role: "alert", children: labels.loadError }) : null, actionError ? _jsx("p", { role: "alert", children: actionError }) : null, view === "tree" ? (_jsxs("div", { className: treeLayoutClassName, children: [_jsx(MediaCategoryTreePane, { selection: branchSelection, onSelect: handleBranchSelect, labels: labels.tree }), _jsx("div", { className: treeResultsClassName, children: _jsx(MediaObjectTable, { items: items, view: view, objectHref: objectHref, deletingId: deletingId, onDelete: handleDelete, labels: labels }) })] })) : view === "list" ? (_jsx(MediaObjectTable, { items: items, view: view, objectHref: objectHref, deletingId: deletingId, onDelete: handleDelete, labels: labels })) : (_jsx("div", { className: view === "grid" ? gridClassName : masonryClassName, children: items.map((object, index) => (_jsxs("article", { className: cardClassName, children: [_jsx(MediaObjectPreview, { object: object, view: view, index: index, labels: labels }), _jsxs("div", { className: cardBodyClassName, children: [_jsx("h3", { className: cardTitleClassName, children: _jsx(MediaObjectName, { object: object, objectHref: objectHref }) }), _jsx("div", { className: cardMetaClassName, children: _jsx(MediaObjectMeta, { object: object, labels: labels }) }), _jsx(MediaObjectActions, { object: object, objectHref: objectHref, deletingId: deletingId, onDelete: handleDelete, labels: labels })] })] }, object.id))) })), loading ? _jsx("p", { children: labels.loading }) : null, hasMore ? (_jsx("button", { type: "button", disabled: loading, onClick: () => void loadMore(), children: labels.loadMore })) : null] }));
140
105
  }
141
106
  //# sourceMappingURL=MediaLibrary.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MediaLibrary.js","sourceRoot":"","sources":["../../../../src/runtime/react/MediaLibrary.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MediaLibrary.js","sourceRoot":"","sources":["../../../../src/runtime/react/MediaLibrary.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type { MediaLibraryLabels, MediaLibraryView } from "./mediaLibraryLabels.js";
2
+ import type { MediaObjectPublic, MediaObjectStatus } from "../schemas.js";
3
+ /**
4
+ * `tree` renders the **same** table body as `list` in its right pane, so every
5
+ * "is this the list layout?" branch (preview sizing, `<img>` classes) has to
6
+ * answer yes for it too. Forking a second table — and a second set of preview
7
+ * rules — is exactly what this predicate exists to prevent.
8
+ */
9
+ export declare function isListLayout(view: MediaLibraryView): boolean;
10
+ export declare function objectLabel(object: MediaObjectPublic): string;
11
+ export declare function humanizeBytes(bytes: number): string;
12
+ export declare function statusLabel(status: MediaObjectStatus, labels: MediaLibraryLabels): string;
13
+ export declare function MediaObjectPreview({ object, view, index, labels }: {
14
+ object: MediaObjectPublic;
15
+ view: MediaLibraryView;
16
+ index: number;
17
+ labels: MediaLibraryLabels;
18
+ }): import("react").JSX.Element;
19
+ export declare function MediaObjectName({ object, objectHref }: {
20
+ object: MediaObjectPublic;
21
+ objectHref?: (id: string) => string;
22
+ }): string | import("react").JSX.Element;
23
+ export declare function MediaObjectMeta({ object, labels }: {
24
+ object: MediaObjectPublic;
25
+ labels: MediaLibraryLabels;
26
+ }): import("react").JSX.Element;
27
+ export declare function MediaObjectActions({ object, objectHref, deletingId, onDelete, labels }: {
28
+ object: MediaObjectPublic;
29
+ objectHref?: (id: string) => string;
30
+ deletingId: string | null;
31
+ onDelete: (object: MediaObjectPublic) => Promise<void>;
32
+ labels: MediaLibraryLabels;
33
+ }): import("react").JSX.Element;
34
+ /**
35
+ * The list body, extracted verbatim so `view === "tree"` can render **this**
36
+ * table in its right pane instead of forking a second one. `view` still rides
37
+ * along untouched because `MediaObjectPreview` keys its sizing off it.
38
+ */
39
+ export declare function MediaObjectTable({ items, view, objectHref, deletingId, onDelete, labels }: {
40
+ items: readonly MediaObjectPublic[];
41
+ view: MediaLibraryView;
42
+ objectHref?: (id: string) => string;
43
+ deletingId: string | null;
44
+ onDelete: (object: MediaObjectPublic) => Promise<void>;
45
+ labels: MediaLibraryLabels;
46
+ }): import("react").JSX.Element;
47
+ //# sourceMappingURL=MediaObjectViews.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaObjectViews.d.ts","sourceRoot":"","sources":["../../../../src/runtime/react/MediaObjectViews.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAY1E;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAE5D;AAeD,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAE7D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAcnD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAEzF;AAkED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACP,EAAE;IACD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,kBAAkB,CAAC;CAC5B,+BAuCA;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,wCAGzH;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,+BAS5G;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,MAAM,EACP,EAAE;IACD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,EAAE,kBAAkB,CAAC;CAC5B,+BAgBA;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,IAAI,EACJ,UAAU,EACV,UAAU,EACV,QAAQ,EACR,MAAM,EACP,EAAE;IACD,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpC,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,EAAE,kBAAkB,CAAC;CAC5B,+BA0CA"}
@@ -0,0 +1,131 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * How one media object is drawn: its preview, name, metadata, row actions, and
4
+ * the results table the list and tree views share.
5
+ *
6
+ * Split out of `MediaLibrary` so the library module is the view state, the
7
+ * filters and the toolbar — not also every cell of the table it renders.
8
+ */
9
+ import { useEffect } from "react";
10
+ import { useDownloadUrl } from "../hooks/useDownloadUrl.js";
11
+ import { actionLinkClassName, cardPreviewClassName, itemActionsClassName, listPreviewStyle, previewClassName, previewPlaceholderClassName } from "./mediaLibraryStyles.js";
12
+ function isImage(object) {
13
+ return object.mime_type.toLowerCase().startsWith("image/");
14
+ }
15
+ /**
16
+ * `tree` renders the **same** table body as `list` in its right pane, so every
17
+ * "is this the list layout?" branch (preview sizing, `<img>` classes) has to
18
+ * answer yes for it too. Forking a second table — and a second set of preview
19
+ * rules — is exactly what this predicate exists to prevent.
20
+ */
21
+ export function isListLayout(view) {
22
+ return view === "list" || view === "tree";
23
+ }
24
+ /**
25
+ * `tree`'s right pane renders the same table as `list` (`isListLayout`), so it
26
+ * gets the same lazy/low preview loading — spelled out explicitly rather than
27
+ * left to the trailing fallback, so a future view added to the fallthrough
28
+ * cannot silently inherit `tree`'s eager-loading exemption by accident.
29
+ */
30
+ function previewLoadingFor(view, index) {
31
+ if (view === "list" || view === "tree")
32
+ return { loading: "lazy", fetchPriority: "low" };
33
+ if (view === "grid" && index < 6)
34
+ return { loading: "eager", fetchPriority: "high" };
35
+ if (view === "masonry" && index < 4)
36
+ return { loading: "eager", fetchPriority: "high" };
37
+ return { loading: "lazy", fetchPriority: "low" };
38
+ }
39
+ export function objectLabel(object) {
40
+ return object.original_filename ?? object.id;
41
+ }
42
+ export function humanizeBytes(bytes) {
43
+ if (!Number.isFinite(bytes) || bytes < 0)
44
+ return "0 B";
45
+ if (bytes < 1024)
46
+ return `${bytes} B`;
47
+ const units = ["KB", "MB", "GB", "TB"];
48
+ let value = bytes / 1024;
49
+ let unitIndex = 0;
50
+ while (value >= 1024 && unitIndex < units.length - 1) {
51
+ value /= 1024;
52
+ unitIndex += 1;
53
+ }
54
+ return `${value.toFixed(value >= 10 ? 0 : 1)} ${units.at(unitIndex) ?? "TB"}`;
55
+ }
56
+ export function statusLabel(status, labels) {
57
+ return labels.statuses[status] ?? status;
58
+ }
59
+ const FAILED_SCAN_STATUSES = new Set(["infected", "quarantined"]);
60
+ /**
61
+ * `scan_status` is a field distinct from `status` (an object can be
62
+ * `status: "ready"` yet `scan_status: "infected"` before the guard catches
63
+ * up), so this is a second badge beside the existing status one, not an edit
64
+ * to `STATUS_OPTIONS`/`statusLabel`.
65
+ */
66
+ function ScanStatusBadge({ object, labels }) {
67
+ if (!FAILED_SCAN_STATUSES.has(object.scan_status))
68
+ return null;
69
+ return (_jsx("span", { className: "fa-media-badge fa-media-badge--scan-failed", title: labels.failedScanTitle(object.scan_status), children: labels.failedScan }));
70
+ }
71
+ /**
72
+ * The square that stands in for the object while (or instead of) an image:
73
+ * the extension for a non-image, the loading/placeholder copy for an image
74
+ * whose signed URL has not arrived.
75
+ */
76
+ function PreviewPlaceholder({ view, modifier, ariaLabel, children }) {
77
+ return (_jsx("span", { className: `${previewPlaceholderClassName} ${modifier}`, style: isListLayout(view) ? listPreviewStyle : undefined, "aria-hidden": ariaLabel === undefined ? true : undefined, "aria-label": ariaLabel, children: children }));
78
+ }
79
+ /**
80
+ * The object's signed download URL, requested once and only for an image. A
81
+ * non-image never asks for one: its preview is the extension, and a request
82
+ * per row would be a signature the UI throws away.
83
+ */
84
+ function usePreviewUrl(object, isImageObject) {
85
+ const { data, loading, error, request } = useDownloadUrl(isImageObject ? object.id : null);
86
+ useEffect(() => {
87
+ if (!isImageObject || data || loading || error)
88
+ return;
89
+ void request();
90
+ }, [data, error, isImageObject, loading, request]);
91
+ return { data, loading };
92
+ }
93
+ export function MediaObjectPreview({ object, view, index, labels }) {
94
+ const isImageObject = isImage(object);
95
+ const { data, loading } = usePreviewUrl(object, isImageObject);
96
+ const loadingMode = previewLoadingFor(view, index);
97
+ const listLayout = isListLayout(view);
98
+ if (!isImageObject) {
99
+ return (_jsx(PreviewPlaceholder, { view: view, modifier: "fa-media-preview--file", children: object.extension ?? "file" }));
100
+ }
101
+ if (!data) {
102
+ return (_jsx(PreviewPlaceholder, { view: view, modifier: "fa-media-preview--loading", ariaLabel: `${objectLabel(object)} ${labels.previewLoading}`, children: loading ? labels.previewLoading : labels.previewPlaceholder }));
103
+ }
104
+ return (_jsx("img", { className: listLayout ? previewClassName : `${previewClassName} ${cardPreviewClassName}`, src: data.url, alt: objectLabel(object), style: listLayout ? listPreviewStyle : undefined, width: listLayout ? 128 : undefined, height: listLayout ? 128 : undefined, loading: loadingMode.loading, decoding: "async", fetchPriority: loadingMode.fetchPriority }));
105
+ }
106
+ export function MediaObjectName({ object, objectHref }) {
107
+ const label = objectLabel(object);
108
+ return objectHref ? _jsx("a", { href: objectHref(object.id), children: label }) : label;
109
+ }
110
+ export function MediaObjectMeta({ object, labels }) {
111
+ return (_jsxs(_Fragment, { children: [_jsx("span", { children: labels.categories[object.category] }), _jsx("span", { className: `fa-media-badge fa-media-badge--${object.status}`, children: statusLabel(object.status, labels) }), _jsx(ScanStatusBadge, { object: object, labels: labels }), _jsx("span", { children: humanizeBytes(object.size_bytes) })] }));
112
+ }
113
+ export function MediaObjectActions({ object, objectHref, deletingId, onDelete, labels }) {
114
+ const label = objectLabel(object);
115
+ const href = objectHref?.(object.id);
116
+ return (_jsxs("div", { className: itemActionsClassName, children: [href ? (_jsx("a", { className: actionLinkClassName, href: href, "aria-label": `${labels.view} ${label}`, children: labels.view })) : null, _jsx("button", { type: "button", className: "fa-media-danger", disabled: deletingId === object.id, onClick: () => void onDelete(object), children: labels.delete })] }));
117
+ }
118
+ /**
119
+ * The list body, extracted verbatim so `view === "tree"` can render **this**
120
+ * table in its right pane instead of forking a second one. `view` still rides
121
+ * along untouched because `MediaObjectPreview` keys its sizing off it.
122
+ */
123
+ export function MediaObjectTable({ items, view, objectHref, deletingId, onDelete, labels }) {
124
+ return (
125
+ // A six-column table has no readable narrow form, so it scrolls inside its
126
+ // own box rather than squashing its cells or forcing the whole page
127
+ // sideways. `min-w-[34rem]` is what gives the bar something to reveal: the
128
+ // table is `width: 100%`, which on its own can never exceed the wrapper.
129
+ _jsx("div", { className: "fa-media-table-scroll w-full overflow-x-auto", children: _jsxs("table", { className: "fa-media-table min-w-[34rem]", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: labels.preview }), _jsx("th", { children: labels.filename }), _jsx("th", { children: labels.actions }), _jsx("th", { children: labels.category }), _jsx("th", { children: labels.status }), _jsx("th", { children: labels.size })] }) }), _jsx("tbody", { children: items.map((object, index) => (_jsxs("tr", { children: [_jsx("td", { children: _jsx(MediaObjectPreview, { object: object, view: view, index: index, labels: labels }) }), _jsx("td", { children: _jsx(MediaObjectName, { object: object, objectHref: objectHref }) }), _jsx("td", { children: _jsx(MediaObjectActions, { object: object, objectHref: objectHref, deletingId: deletingId, onDelete: onDelete, labels: labels }) }), _jsx("td", { children: labels.categories[object.category] }), _jsxs("td", { children: [_jsx("span", { className: `fa-media-badge fa-media-badge--${object.status}`, children: statusLabel(object.status, labels) }), _jsx(ScanStatusBadge, { object: object, labels: labels })] }), _jsx("td", { children: humanizeBytes(object.size_bytes) })] }, object.id))) })] }) }));
130
+ }
131
+ //# sourceMappingURL=MediaObjectViews.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaObjectViews.js","sourceRoot":"","sources":["../../../../src/runtime/react/MediaObjectViews.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { MediaLibraryLabels } from "./mediaLibraryLabels.js";
2
+ import type { ObjectListParams } from "../schemas.js";
3
+ /**
4
+ * Import/export control (`U10`). A single toggled panel rather than a modal
5
+ * dialog — this package hand-rolls Tailwind token classes in `src/runtime`
6
+ * rather than importing `astro-ui-m8` components here (`D11`; the
7
+ * `dialog-form`/`data-table` composition is a separate registry skin, not
8
+ * this runtime component). Export reuses the caller's live `filters`
9
+ * (`ObjectListParams`) so exporting the selected tree branch (`U10`'s branch
10
+ * bullet) falls out of passing the library's own `query` through unchanged.
11
+ */
12
+ export declare function MediaTransferPanel({ filters, exportScopeLabel, labels }: {
13
+ filters: ObjectListParams;
14
+ exportScopeLabel?: string;
15
+ labels: MediaLibraryLabels["transfer"];
16
+ }): import("react").JSX.Element;
17
+ //# sourceMappingURL=MediaTransferPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaTransferPanel.d.ts","sourceRoot":"","sources":["../../../../src/runtime/react/MediaTransferPanel.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAkD,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA8PtG;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,gBAAgB,EAChB,MAAM,EACP,EAAE;IACD,OAAO,EAAE,gBAAgB,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;CACxC,+BAcA"}