@xleddyl/nuxt-cms 0.1.60 → 0.1.61
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/dist/module.json +1 -1
- package/dist/module.mjs +20 -0
- package/dist/runtime/app/components/cms/MediaDetail.d.vue.ts +16 -0
- package/dist/runtime/app/components/cms/MediaDetail.vue +169 -0
- package/dist/runtime/app/components/cms/MediaDetail.vue.d.ts +16 -0
- package/dist/runtime/app/components/cms/MediaField.vue +9 -2
- package/dist/runtime/app/components/cms/MediaFolderPicker.d.vue.ts +2 -2
- package/dist/runtime/app/components/cms/MediaFolderPicker.vue +55 -54
- package/dist/runtime/app/components/cms/MediaFolderPicker.vue.d.ts +2 -2
- package/dist/runtime/app/components/cms/MediaGallery.d.vue.ts +8 -2
- package/dist/runtime/app/components/cms/MediaGallery.vue +913 -336
- package/dist/runtime/app/components/cms/MediaGallery.vue.d.ts +8 -2
- package/dist/runtime/app/components/cms/MediaUpload.vue +10 -103
- package/dist/runtime/app/composables/cms-media-library.d.ts +75 -0
- package/dist/runtime/app/composables/cms-media-library.js +151 -0
- package/dist/runtime/app/composables/cms-media-uploader.d.ts +12 -0
- package/dist/runtime/app/composables/cms-media-uploader.js +117 -0
- package/dist/runtime/app/pages/admin-media.vue +14 -2
- package/dist/runtime/assets/main.css +1 -1
- package/dist/runtime/server/api/media-delete.post.d.ts +4 -0
- package/dist/runtime/server/api/media-delete.post.js +23 -0
- package/dist/runtime/server/api/media-folder.delete.js +6 -16
- package/dist/runtime/server/api/media-folder.patch.d.ts +5 -0
- package/dist/runtime/server/api/media-folder.patch.js +68 -0
- package/dist/runtime/server/api/media-folder.post.js +3 -15
- package/dist/runtime/server/api/media-move.post.d.ts +5 -0
- package/dist/runtime/server/api/media-move.post.js +28 -0
- package/dist/runtime/server/api/media-usage.post.d.ts +5 -0
- package/dist/runtime/server/api/media-usage.post.js +15 -0
- package/dist/runtime/server/utils/media-folders.d.ts +86 -0
- package/dist/runtime/server/utils/media-folders.js +37 -0
- package/dist/runtime/server/utils/media-references.d.ts +7 -1
- package/dist/runtime/server/utils/media-references.js +40 -0
- package/dist/runtime/server/utils/media-usage.d.ts +2 -0
- package/dist/runtime/server/utils/media-usage.js +18 -0
- package/dist/runtime/shared/index.d.ts +16 -0
- package/dist/runtime/shared/index.js +34 -2
- package/package.json +1 -1
|
@@ -23,7 +23,15 @@ export declare const MEDIA_FOLDER_MAX_DEPTH = 4;
|
|
|
23
23
|
export declare const MEDIA_FOLDER_MARKER = ".keep";
|
|
24
24
|
export declare function mediaFolderMarkerKey(folder: string): string;
|
|
25
25
|
export declare function isMediaFolderMarker(key: string): boolean;
|
|
26
|
+
export declare function mediaFolderSegments(value: string | null | undefined): string[];
|
|
26
27
|
export declare function normalizeMediaFolder(value: string | null | undefined): string | null;
|
|
28
|
+
export declare function mediaFolderDepth(folder: string | null | undefined): number;
|
|
29
|
+
export declare function mediaFolderParent(folder: string): string | null;
|
|
30
|
+
export declare function mediaFolderName(folder: string): string;
|
|
31
|
+
export declare function mediaFolderAncestors(folder: string): string[];
|
|
32
|
+
export declare function isWithinMediaFolder(folder: string | null | undefined, parent: string | null): boolean;
|
|
33
|
+
export declare function rebaseMediaFolder(folder: string, from: string, to: string): string;
|
|
34
|
+
export declare function expandMediaFolders(folders: Iterable<string | null | undefined>): string[];
|
|
27
35
|
export interface MediaItem {
|
|
28
36
|
id?: number;
|
|
29
37
|
key: string;
|
|
@@ -43,6 +51,14 @@ export interface MediaSourceInfo {
|
|
|
43
51
|
root: string;
|
|
44
52
|
builtAt: string | null;
|
|
45
53
|
}
|
|
54
|
+
export interface MediaUsage {
|
|
55
|
+
collection: string;
|
|
56
|
+
label: string;
|
|
57
|
+
kind: CmsEntryKind;
|
|
58
|
+
id: string | null;
|
|
59
|
+
title: string | null;
|
|
60
|
+
field: string;
|
|
61
|
+
}
|
|
46
62
|
export interface BlockConfig {
|
|
47
63
|
label: string;
|
|
48
64
|
fields: Record<string, FieldConfig>;
|
|
@@ -73,11 +73,43 @@ export function mediaFolderMarkerKey(folder) {
|
|
|
73
73
|
export function isMediaFolderMarker(key) {
|
|
74
74
|
return key.endsWith(`/${MEDIA_FOLDER_MARKER}`);
|
|
75
75
|
}
|
|
76
|
+
export function mediaFolderSegments(value) {
|
|
77
|
+
return value ? value.split("/").map(slugify).filter(Boolean) : [];
|
|
78
|
+
}
|
|
76
79
|
export function normalizeMediaFolder(value) {
|
|
77
|
-
|
|
78
|
-
const segments = value.split("/").map(slugify).filter(Boolean).slice(0, MEDIA_FOLDER_MAX_DEPTH);
|
|
80
|
+
const segments = mediaFolderSegments(value).slice(0, MEDIA_FOLDER_MAX_DEPTH);
|
|
79
81
|
return segments.length ? segments.join("/") : null;
|
|
80
82
|
}
|
|
83
|
+
export function mediaFolderDepth(folder) {
|
|
84
|
+
return folder ? folder.split("/").length : 0;
|
|
85
|
+
}
|
|
86
|
+
export function mediaFolderParent(folder) {
|
|
87
|
+
const index = folder.lastIndexOf("/");
|
|
88
|
+
return index === -1 ? null : folder.slice(0, index);
|
|
89
|
+
}
|
|
90
|
+
export function mediaFolderName(folder) {
|
|
91
|
+
return folder.slice(folder.lastIndexOf("/") + 1);
|
|
92
|
+
}
|
|
93
|
+
export function mediaFolderAncestors(folder) {
|
|
94
|
+
const segments = folder.split("/");
|
|
95
|
+
return segments.map((_, index) => segments.slice(0, index + 1).join("/"));
|
|
96
|
+
}
|
|
97
|
+
export function isWithinMediaFolder(folder, parent) {
|
|
98
|
+
if (!parent) return true;
|
|
99
|
+
return !!folder && (folder === parent || folder.startsWith(`${parent}/`));
|
|
100
|
+
}
|
|
101
|
+
export function rebaseMediaFolder(folder, from, to) {
|
|
102
|
+
if (folder === from) return to;
|
|
103
|
+
return folder.startsWith(`${from}/`) ? `${to}${folder.slice(from.length)}` : folder;
|
|
104
|
+
}
|
|
105
|
+
export function expandMediaFolders(folders) {
|
|
106
|
+
const expanded = /* @__PURE__ */ new Set();
|
|
107
|
+
for (const folder of folders) {
|
|
108
|
+
if (!folder) continue;
|
|
109
|
+
for (const ancestor of mediaFolderAncestors(folder)) expanded.add(ancestor);
|
|
110
|
+
}
|
|
111
|
+
return [...expanded].sort();
|
|
112
|
+
}
|
|
81
113
|
export function isPrivateField(field) {
|
|
82
114
|
return !!field.private;
|
|
83
115
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xleddyl/nuxt-cms",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.61",
|
|
4
4
|
"description": "Lightweight CMS that ships with your Nuxt app: runs on the Nitro server, content types defined in code, /cms admin panel, GraphQL API, SQLite or Postgres. No external CMS needed!",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Edoardo Alberti (https://github.com/xleddyl)",
|