@maas/payload-plugin-media-cloud 0.0.40 → 0.0.42

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.
@@ -1,10 +1,9 @@
1
1
  import { MediaCloudErrors } from "../types/errors.mjs";
2
2
  import { useErrorHandler } from "../hooks/useErrorHandler.mjs";
3
- import { buildThumbnailURL } from "../utils/buildThumbnailURL.mjs";
4
3
  import { s3Store } from "../plugin.mjs";
5
4
 
6
5
  //#region src/collectionHooks/afterChange.ts
7
- const afterChangeHook = async ({ collection, doc, previousDoc, req }) => {
6
+ const afterChangeHook = async ({ doc, previousDoc, req }) => {
8
7
  const { throwError } = useErrorHandler();
9
8
  if (req.context?._mediaCloudPluginInternal) return doc;
10
9
  if (doc.path !== previousDoc?.path) {
@@ -19,29 +18,6 @@ const afterChangeHook = async ({ collection, doc, previousDoc, req }) => {
19
18
  });
20
19
  }
21
20
  }
22
- if (!doc.thumbnail || previousDoc?.path !== doc.path) try {
23
- const thumbnail = buildThumbnailURL({
24
- storage: doc.storage,
25
- playbackId: doc.storage === "mux" ? doc.mux.playbackId : void 0,
26
- s3Key: doc.storage === "s3" ? doc.path ?? doc.filename : void 0,
27
- s3Store
28
- });
29
- req.context = { ...req.context };
30
- req.context._mediaCloudPluginInternal = true;
31
- const update = await req.payload.update({
32
- collection: collection.slug,
33
- id: doc.id,
34
- data: { thumbnail },
35
- req
36
- });
37
- delete req.context._mediaCloudPluginInternal;
38
- return update;
39
- } catch (error) {
40
- throwError({
41
- ...MediaCloudErrors.THUMBNAIL_GENERATION_ERROR,
42
- cause: error
43
- });
44
- }
45
21
  return doc;
46
22
  };
47
23
 
@@ -1 +1 @@
1
- {"version":3,"file":"afterChange.mjs","names":["afterChangeHook: CollectionAfterChangeHook"],"sources":["../../src/collectionHooks/afterChange.ts"],"sourcesContent":["import { buildThumbnailURL } from '../utils/buildThumbnailURL'\nimport { s3Store } from '../plugin'\nimport { MediaCloudErrors } from '../types/errors'\nimport { useErrorHandler } from '../hooks/useErrorHandler'\n\nimport type { CollectionAfterChangeHook } from 'payload'\n\nexport const afterChangeHook: CollectionAfterChangeHook = async ({\n collection,\n doc,\n previousDoc,\n req,\n}) => {\n const { throwError } = useErrorHandler()\n\n // Skip if this is an internal update to prevent infinite loop\n if (req.context?._mediaCloudPluginInternal) {\n return doc\n }\n\n // Move asset in S3 if path has changed\n if (doc.path !== previousDoc?.path) {\n if (doc.storage === 's3' && s3Store) {\n try {\n const oldKey = previousDoc?.path ?? previousDoc?.filename\n const newKey = doc.path\n\n await s3Store.copy(oldKey, newKey)\n } catch (error) {\n throwError({ ...MediaCloudErrors.S3_MOVE_ERROR, cause: error })\n }\n }\n }\n\n // Handle thumbnail\n if (!doc.thumbnail || previousDoc?.path !== doc.path) {\n try {\n const thumbnail = buildThumbnailURL({\n storage: doc.storage,\n playbackId: doc.storage === 'mux' ? doc.mux.playbackId : undefined,\n s3Key: doc.storage === 's3' ? (doc.path ?? doc.filename) : undefined,\n s3Store,\n })\n\n req.context = { ...req.context }\n req.context._mediaCloudPluginInternal = true\n\n const update = await req.payload.update({\n collection: collection.slug,\n id: doc.id,\n data: { thumbnail },\n req,\n })\n\n delete req.context._mediaCloudPluginInternal\n\n return update\n } catch (error) {\n throwError({\n ...MediaCloudErrors.THUMBNAIL_GENERATION_ERROR,\n cause: error,\n })\n }\n }\n\n return doc\n}\n"],"mappings":";;;;;;AAOA,MAAaA,kBAA6C,OAAO,EAC/D,YACA,KACA,aACA,UACI;CACJ,MAAM,EAAE,eAAe,iBAAiB;AAGxC,KAAI,IAAI,SAAS,0BACf,QAAO;AAIT,KAAI,IAAI,SAAS,aAAa,MAC5B;MAAI,IAAI,YAAY,QAAQ,QAC1B,KAAI;GACF,MAAM,SAAS,aAAa,QAAQ,aAAa;GACjD,MAAM,SAAS,IAAI;AAEnB,SAAM,QAAQ,KAAK,QAAQ,OAAO;WAC3B,OAAO;AACd,cAAW;IAAE,GAAG,iBAAiB;IAAe,OAAO;IAAO,CAAC;;;AAMrE,KAAI,CAAC,IAAI,aAAa,aAAa,SAAS,IAAI,KAC9C,KAAI;EACF,MAAM,YAAY,kBAAkB;GAClC,SAAS,IAAI;GACb,YAAY,IAAI,YAAY,QAAQ,IAAI,IAAI,aAAa;GACzD,OAAO,IAAI,YAAY,OAAQ,IAAI,QAAQ,IAAI,WAAY;GAC3D;GACD,CAAC;AAEF,MAAI,UAAU,EAAE,GAAG,IAAI,SAAS;AAChC,MAAI,QAAQ,4BAA4B;EAExC,MAAM,SAAS,MAAM,IAAI,QAAQ,OAAO;GACtC,YAAY,WAAW;GACvB,IAAI,IAAI;GACR,MAAM,EAAE,WAAW;GACnB;GACD,CAAC;AAEF,SAAO,IAAI,QAAQ;AAEnB,SAAO;UACA,OAAO;AACd,aAAW;GACT,GAAG,iBAAiB;GACpB,OAAO;GACR,CAAC;;AAIN,QAAO"}
1
+ {"version":3,"file":"afterChange.mjs","names":["afterChangeHook: CollectionAfterChangeHook"],"sources":["../../src/collectionHooks/afterChange.ts"],"sourcesContent":["import { buildThumbnailURL } from '../utils/buildThumbnailURL'\nimport { s3Store } from '../plugin'\nimport { MediaCloudErrors } from '../types/errors'\nimport { useErrorHandler } from '../hooks/useErrorHandler'\n\nimport type { CollectionAfterChangeHook } from 'payload'\n\nexport const afterChangeHook: CollectionAfterChangeHook = async ({\n doc,\n previousDoc,\n req,\n}) => {\n const { throwError } = useErrorHandler()\n\n // Skip if this is an internal update to prevent infinite loop\n if (req.context?._mediaCloudPluginInternal) {\n return doc\n }\n\n // Move asset in S3 if path has changed\n if (doc.path !== previousDoc?.path) {\n if (doc.storage === 's3' && s3Store) {\n try {\n const oldKey = previousDoc?.path ?? previousDoc?.filename\n const newKey = doc.path\n\n await s3Store.copy(oldKey, newKey)\n } catch (error) {\n throwError({ ...MediaCloudErrors.S3_MOVE_ERROR, cause: error })\n }\n }\n }\n\n return doc\n}\n"],"mappings":";;;;;AAOA,MAAaA,kBAA6C,OAAO,EAC/D,KACA,aACA,UACI;CACJ,MAAM,EAAE,eAAe,iBAAiB;AAGxC,KAAI,IAAI,SAAS,0BACf,QAAO;AAIT,KAAI,IAAI,SAAS,aAAa,MAC5B;MAAI,IAAI,YAAY,QAAQ,QAC1B,KAAI;GACF,MAAM,SAAS,aAAa,QAAQ,aAAa;GACjD,MAAM,SAAS,IAAI;AAEnB,SAAM,QAAQ,KAAK,QAAQ,OAAO;WAC3B,OAAO;AACd,cAAW;IAAE,GAAG,iBAAiB;IAAe,OAAO;IAAO,CAAC;;;AAKrE,QAAO"}
@@ -0,0 +1,7 @@
1
+ import { CollectionAfterChangeHook } from "payload";
2
+
3
+ //#region src/collectionHooks/thumbnail.d.ts
4
+ declare const thumbnailHook: CollectionAfterChangeHook;
5
+ //#endregion
6
+ export { thumbnailHook };
7
+ //# sourceMappingURL=thumbnail.d.mts.map
@@ -0,0 +1,38 @@
1
+ import { MediaCloudErrors } from "../types/errors.mjs";
2
+ import { useErrorHandler } from "../hooks/useErrorHandler.mjs";
3
+ import { buildThumbnailURL } from "../utils/buildThumbnailURL.mjs";
4
+ import { s3Store } from "../plugin.mjs";
5
+
6
+ //#region src/collectionHooks/thumbnail.ts
7
+ const thumbnailHook = async ({ collection, doc, previousDoc, req }) => {
8
+ const { throwError } = useErrorHandler();
9
+ if (req.context?._mediaCloudPluginInternal) return doc;
10
+ if (!doc.thumbnail || previousDoc?.path !== doc.path) try {
11
+ const thumbnail = buildThumbnailURL({
12
+ storage: doc.storage,
13
+ playbackId: doc.storage === "mux" ? doc.mux.playbackId : void 0,
14
+ s3Key: doc.storage === "s3" ? doc.path ?? doc.filename : void 0,
15
+ s3Store
16
+ });
17
+ req.context = { ...req.context };
18
+ req.context._mediaCloudPluginInternal = true;
19
+ const update = await req.payload.update({
20
+ collection: collection.slug,
21
+ id: doc.id,
22
+ data: { thumbnail },
23
+ req
24
+ });
25
+ delete req.context._mediaCloudPluginInternal;
26
+ return update;
27
+ } catch (error) {
28
+ throwError({
29
+ ...MediaCloudErrors.THUMBNAIL_GENERATION_ERROR,
30
+ cause: error
31
+ });
32
+ }
33
+ return doc;
34
+ };
35
+
36
+ //#endregion
37
+ export { thumbnailHook };
38
+ //# sourceMappingURL=thumbnail.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thumbnail.mjs","names":["thumbnailHook: CollectionAfterChangeHook"],"sources":["../../src/collectionHooks/thumbnail.ts"],"sourcesContent":["import { buildThumbnailURL } from '../utils/buildThumbnailURL'\nimport { s3Store } from '../plugin'\nimport { MediaCloudErrors } from '../types/errors'\nimport { useErrorHandler } from '../hooks/useErrorHandler'\n\nimport type { CollectionAfterChangeHook } from 'payload'\n\nexport const thumbnailHook: CollectionAfterChangeHook = async ({\n collection,\n doc,\n previousDoc,\n req,\n}) => {\n const { throwError } = useErrorHandler()\n\n // Skip if this is an internal update to prevent infinite loop\n if (req.context?._mediaCloudPluginInternal) {\n return doc\n }\n\n // Handle thumbnail\n if (!doc.thumbnail || previousDoc?.path !== doc.path) {\n try {\n const thumbnail = buildThumbnailURL({\n storage: doc.storage,\n playbackId: doc.storage === 'mux' ? doc.mux.playbackId : undefined,\n s3Key: doc.storage === 's3' ? (doc.path ?? doc.filename) : undefined,\n s3Store,\n })\n\n req.context = { ...req.context }\n req.context._mediaCloudPluginInternal = true\n\n const update = await req.payload.update({\n collection: collection.slug,\n id: doc.id,\n data: { thumbnail },\n req,\n })\n\n delete req.context._mediaCloudPluginInternal\n\n return update\n } catch (error) {\n throwError({\n ...MediaCloudErrors.THUMBNAIL_GENERATION_ERROR,\n cause: error,\n })\n }\n }\n\n return doc\n}\n"],"mappings":";;;;;;AAOA,MAAaA,gBAA2C,OAAO,EAC7D,YACA,KACA,aACA,UACI;CACJ,MAAM,EAAE,eAAe,iBAAiB;AAGxC,KAAI,IAAI,SAAS,0BACf,QAAO;AAIT,KAAI,CAAC,IAAI,aAAa,aAAa,SAAS,IAAI,KAC9C,KAAI;EACF,MAAM,YAAY,kBAAkB;GAClC,SAAS,IAAI;GACb,YAAY,IAAI,YAAY,QAAQ,IAAI,IAAI,aAAa;GACzD,OAAO,IAAI,YAAY,OAAQ,IAAI,QAAQ,IAAI,WAAY;GAC3D;GACD,CAAC;AAEF,MAAI,UAAU,EAAE,GAAG,IAAI,SAAS;AAChC,MAAI,QAAQ,4BAA4B;EAExC,MAAM,SAAS,MAAM,IAAI,QAAQ,OAAO;GACtC,YAAY,WAAW;GACvB,IAAI,IAAI;GACR,MAAM,EAAE,WAAW;GACnB;GACD,CAAC;AAEF,SAAO,IAAI,QAAQ;AAEnB,SAAO;UACA,OAAO;AACd,aAAW;GACT,GAAG,iBAAiB;GACpB,OAAO;GACR,CAAC;;AAIN,QAAO"}
@@ -8,6 +8,7 @@ import { storageField } from "../fields/storage.mjs";
8
8
  import { muxField } from "../fields/mux.mjs";
9
9
  import { beforeChangeHook } from "../collectionHooks/beforeChange.mjs";
10
10
  import { afterChangeHook } from "../collectionHooks/afterChange.mjs";
11
+ import { thumbnailHook } from "../collectionHooks/thumbnail.mjs";
11
12
 
12
13
  //#region src/collections/mediaCollection.ts
13
14
  /**
@@ -17,6 +18,14 @@ import { afterChangeHook } from "../collectionHooks/afterChange.mjs";
17
18
  */
18
19
  function getMediaCollection(args) {
19
20
  const { baseCollection, view, folders } = args;
21
+ const hooks = {
22
+ beforeChange: [],
23
+ afterChange: [thumbnailHook]
24
+ };
25
+ if (folders) {
26
+ hooks.beforeChange = [beforeChangeHook, ...hooks.beforeChange ?? []];
27
+ hooks.afterChange = [afterChangeHook, ...hooks.afterChange ?? []];
28
+ }
20
29
  const config = {
21
30
  slug: "media",
22
31
  access: {
@@ -47,10 +56,7 @@ function getMediaCollection(args) {
47
56
  storageField,
48
57
  muxField
49
58
  ],
50
- hooks: {
51
- beforeChange: [beforeChangeHook],
52
- afterChange: [afterChangeHook]
53
- }
59
+ hooks
54
60
  };
55
61
  if (!baseCollection) return config;
56
62
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"mediaCollection.mjs","names":["config: CollectionConfig"],"sources":["../../src/collections/mediaCollection.ts"],"sourcesContent":["import { thumbnailField } from '../fields/thumbnail'\nimport { pathField } from '../fields/path'\nimport { filenameField } from '../fields/filename'\nimport { altField } from '../fields/alt'\nimport { widthField } from '../fields/width'\nimport { heightField } from '../fields/height'\nimport { storageField } from '../fields/storage'\nimport { muxField } from '../fields/mux'\n\nimport { beforeChangeHook } from '../collectionHooks/beforeChange'\nimport { afterChangeHook } from '../collectionHooks/afterChange'\n\nimport type { CollectionConfig } from 'payload'\nimport type { Document } from 'payload'\nimport type { MediaCloudPluginOptions } from '../types/index'\n\ninterface GetMediaCollectionArgs {\n view: MediaCloudPluginOptions['view']\n folders: MediaCloudPluginOptions['folders']\n baseCollection?: CollectionConfig\n}\n\n/**\n * Creates a media collection configuration for Payload CMS\n * @param args - Arguments including the S3Store instance\n * @returns A configured Payload collection for media files\n */\nexport function getMediaCollection(\n args: GetMediaCollectionArgs\n): CollectionConfig {\n const { baseCollection, view, folders } = args\n\n // Override list view to use grid view if specified\n const components =\n view === 'grid'\n ? {\n views: {\n list: {\n Component: '@maas/payload-plugin-media-cloud/components#GridView',\n },\n },\n }\n : undefined\n\n const config: CollectionConfig = {\n slug: 'media',\n access: {\n read: () => true,\n delete: () => true,\n },\n admin: {\n components,\n group: 'Media Cloud',\n pagination: {\n defaultLimit: 50,\n },\n },\n upload: {\n crop: false,\n displayPreview: true,\n hideRemoveFile: true,\n adminThumbnail({ doc }: { doc: Document }) {\n return doc.thumbnail ?? null\n },\n },\n fields: [\n thumbnailField,\n pathField,\n altField,\n {\n type: 'row',\n fields: [widthField, heightField],\n },\n storageField,\n muxField,\n ],\n hooks: {\n beforeChange: [beforeChangeHook],\n afterChange: [afterChangeHook],\n },\n }\n\n if (!baseCollection) {\n return config\n }\n\n return {\n ...baseCollection,\n slug: baseCollection.slug ?? config.slug,\n admin: {\n ...(config.admin ?? {}),\n ...(baseCollection.admin ?? {}),\n },\n access: {\n ...(config.access ?? {}),\n ...(baseCollection.access ?? {}),\n },\n upload: config.upload,\n fields: [...(baseCollection.fields ?? []), ...config.fields, filenameField],\n hooks: {\n ...baseCollection.hooks,\n beforeChange: [\n ...(baseCollection.hooks?.beforeChange ?? []),\n ...(config.hooks?.beforeChange ?? []),\n ],\n afterChange: [\n ...(baseCollection.hooks?.afterChange ?? []),\n ...(config.hooks?.afterChange ?? []),\n ],\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA2BA,SAAgB,mBACd,MACkB;CAClB,MAAM,EAAE,gBAAgB,MAAM,YAAY;CAc1C,MAAMA,SAA2B;EAC/B,MAAM;EACN,QAAQ;GACN,YAAY;GACZ,cAAc;GACf;EACD,OAAO;GACL,YAjBF,SAAS,SACL,EACE,OAAO,EACL,MAAM,EACJ,WAAW,wDACZ,EACF,EACF,GACD;GAUF,OAAO;GACP,YAAY,EACV,cAAc,IACf;GACF;EACD,QAAQ;GACN,MAAM;GACN,gBAAgB;GAChB,gBAAgB;GAChB,eAAe,EAAE,OAA0B;AACzC,WAAO,IAAI,aAAa;;GAE3B;EACD,QAAQ;GACN;GACA;GACA;GACA;IACE,MAAM;IACN,QAAQ,CAAC,YAAY,YAAY;IAClC;GACD;GACA;GACD;EACD,OAAO;GACL,cAAc,CAAC,iBAAiB;GAChC,aAAa,CAAC,gBAAgB;GAC/B;EACF;AAED,KAAI,CAAC,eACH,QAAO;AAGT,QAAO;EACL,GAAG;EACH,MAAM,eAAe,QAAQ,OAAO;EACpC,OAAO;GACL,GAAI,OAAO,SAAS,EAAE;GACtB,GAAI,eAAe,SAAS,EAAE;GAC/B;EACD,QAAQ;GACN,GAAI,OAAO,UAAU,EAAE;GACvB,GAAI,eAAe,UAAU,EAAE;GAChC;EACD,QAAQ,OAAO;EACf,QAAQ;GAAC,GAAI,eAAe,UAAU,EAAE;GAAG,GAAG,OAAO;GAAQ;GAAc;EAC3E,OAAO;GACL,GAAG,eAAe;GAClB,cAAc,CACZ,GAAI,eAAe,OAAO,gBAAgB,EAAE,EAC5C,GAAI,OAAO,OAAO,gBAAgB,EAAE,CACrC;GACD,aAAa,CACX,GAAI,eAAe,OAAO,eAAe,EAAE,EAC3C,GAAI,OAAO,OAAO,eAAe,EAAE,CACpC;GACF;EACF"}
1
+ {"version":3,"file":"mediaCollection.mjs","names":["hooks: CollectionConfig['hooks']","config: CollectionConfig"],"sources":["../../src/collections/mediaCollection.ts"],"sourcesContent":["import { thumbnailField } from '../fields/thumbnail'\nimport { pathField } from '../fields/path'\nimport { filenameField } from '../fields/filename'\nimport { altField } from '../fields/alt'\nimport { widthField } from '../fields/width'\nimport { heightField } from '../fields/height'\nimport { storageField } from '../fields/storage'\nimport { muxField } from '../fields/mux'\n\nimport { beforeChangeHook } from '../collectionHooks/beforeChange'\nimport { afterChangeHook } from '../collectionHooks/afterChange'\n\nimport type { CollectionConfig } from 'payload'\nimport type { Document } from 'payload'\nimport type { MediaCloudPluginOptions } from '../types/index'\nimport { before } from 'node:test'\nimport { thumbnailHook } from '../collectionHooks/thumbnail'\n\ninterface GetMediaCollectionArgs {\n view: MediaCloudPluginOptions['view']\n folders: MediaCloudPluginOptions['folders']\n baseCollection?: CollectionConfig\n}\n\n/**\n * Creates a media collection configuration for Payload CMS\n * @param args - Arguments including the S3Store instance\n * @returns A configured Payload collection for media files\n */\nexport function getMediaCollection(\n args: GetMediaCollectionArgs\n): CollectionConfig {\n const { baseCollection, view, folders } = args\n\n const hooks: CollectionConfig['hooks'] = {\n beforeChange: [],\n afterChange: [thumbnailHook],\n }\n\n // Add hooks for folder support if enabled\n if (folders) {\n hooks.beforeChange = [beforeChangeHook, ...(hooks.beforeChange ?? [])]\n hooks.afterChange = [afterChangeHook, ...(hooks.afterChange ?? [])]\n }\n\n // Override list view to use grid view if specified\n const components =\n view === 'grid'\n ? {\n views: {\n list: {\n Component: '@maas/payload-plugin-media-cloud/components#GridView',\n },\n },\n }\n : undefined\n\n const config: CollectionConfig = {\n slug: 'media',\n access: {\n read: () => true,\n delete: () => true,\n },\n admin: {\n components,\n group: 'Media Cloud',\n pagination: {\n defaultLimit: 50,\n },\n },\n upload: {\n crop: false,\n displayPreview: true,\n hideRemoveFile: true,\n adminThumbnail({ doc }: { doc: Document }) {\n return doc.thumbnail ?? null\n },\n },\n fields: [\n thumbnailField,\n pathField,\n altField,\n {\n type: 'row',\n fields: [widthField, heightField],\n },\n storageField,\n muxField,\n ],\n hooks: hooks,\n }\n\n if (!baseCollection) {\n return config\n }\n\n return {\n ...baseCollection,\n slug: baseCollection.slug ?? config.slug,\n admin: {\n ...(config.admin ?? {}),\n ...(baseCollection.admin ?? {}),\n },\n access: {\n ...(config.access ?? {}),\n ...(baseCollection.access ?? {}),\n },\n upload: config.upload,\n fields: [...(baseCollection.fields ?? []), ...config.fields, filenameField],\n hooks: {\n ...baseCollection.hooks,\n beforeChange: [\n ...(baseCollection.hooks?.beforeChange ?? []),\n ...(config.hooks?.beforeChange ?? []),\n ],\n afterChange: [\n ...(baseCollection.hooks?.afterChange ?? []),\n ...(config.hooks?.afterChange ?? []),\n ],\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA6BA,SAAgB,mBACd,MACkB;CAClB,MAAM,EAAE,gBAAgB,MAAM,YAAY;CAE1C,MAAMA,QAAmC;EACvC,cAAc,EAAE;EAChB,aAAa,CAAC,cAAc;EAC7B;AAGD,KAAI,SAAS;AACX,QAAM,eAAe,CAAC,kBAAkB,GAAI,MAAM,gBAAgB,EAAE,CAAE;AACtE,QAAM,cAAc,CAAC,iBAAiB,GAAI,MAAM,eAAe,EAAE,CAAE;;CAerE,MAAMC,SAA2B;EAC/B,MAAM;EACN,QAAQ;GACN,YAAY;GACZ,cAAc;GACf;EACD,OAAO;GACL,YAjBF,SAAS,SACL,EACE,OAAO,EACL,MAAM,EACJ,WAAW,wDACZ,EACF,EACF,GACD;GAUF,OAAO;GACP,YAAY,EACV,cAAc,IACf;GACF;EACD,QAAQ;GACN,MAAM;GACN,gBAAgB;GAChB,gBAAgB;GAChB,eAAe,EAAE,OAA0B;AACzC,WAAO,IAAI,aAAa;;GAE3B;EACD,QAAQ;GACN;GACA;GACA;GACA;IACE,MAAM;IACN,QAAQ,CAAC,YAAY,YAAY;IAClC;GACD;GACA;GACD;EACM;EACR;AAED,KAAI,CAAC,eACH,QAAO;AAGT,QAAO;EACL,GAAG;EACH,MAAM,eAAe,QAAQ,OAAO;EACpC,OAAO;GACL,GAAI,OAAO,SAAS,EAAE;GACtB,GAAI,eAAe,SAAS,EAAE;GAC/B;EACD,QAAQ;GACN,GAAI,OAAO,UAAU,EAAE;GACvB,GAAI,eAAe,UAAU,EAAE;GAChC;EACD,QAAQ,OAAO;EACf,QAAQ;GAAC,GAAI,eAAe,UAAU,EAAE;GAAG,GAAG,OAAO;GAAQ;GAAc;EAC3E,OAAO;GACL,GAAG,eAAe;GAClB,cAAc,CACZ,GAAI,eAAe,OAAO,gBAAgB,EAAE,EAC5C,GAAI,OAAO,OAAO,gBAAgB,EAAE,CACrC;GACD,aAAa,CACX,GAAI,eAAe,OAAO,eAAe,EAAE,EAC3C,GAAI,OAAO,OAAO,eAAe,EAAE,CACpC;GACF;EACF"}
@@ -6,7 +6,7 @@ import { jsx } from "react/jsx-runtime";
6
6
 
7
7
  //#region src/components/folderFileCard/folderFileCard.tsx
8
8
  function ContextFolderFileCard(props) {
9
- const $ = c(23);
9
+ const $ = c(21);
10
10
  const { className, index, item } = props;
11
11
  const { focusedItemIndex, onItemClick, onItemKeyPress } = useGrid();
12
12
  const { selectedIDs } = useSelection();
@@ -19,67 +19,60 @@ function ContextFolderFileCard(props) {
19
19
  } else t0 = $[2];
20
20
  const isSelected = t0;
21
21
  const isFocused = focusedItemIndex === index;
22
- const t1 = item.id;
23
- let t2;
24
- if ($[3] !== item.id) {
25
- t2 = item.id.toString();
26
- $[3] = item.id;
27
- $[4] = t2;
28
- } else t2 = $[4];
29
- let t3;
30
- if ($[5] !== index || $[6] !== item || $[7] !== onItemClick) {
31
- t3 = (event) => {
22
+ let t1;
23
+ if ($[3] !== index || $[4] !== item || $[5] !== onItemClick) {
24
+ t1 = (event) => {
32
25
  onItemClick({
33
26
  event,
34
27
  index,
35
28
  item
36
29
  });
37
30
  };
38
- $[5] = index;
39
- $[6] = item;
40
- $[7] = onItemClick;
41
- $[8] = t3;
42
- } else t3 = $[8];
43
- let t4;
44
- if ($[9] !== index || $[10] !== item || $[11] !== onItemKeyPress) {
45
- t4 = (event_0) => {
31
+ $[3] = index;
32
+ $[4] = item;
33
+ $[5] = onItemClick;
34
+ $[6] = t1;
35
+ } else t1 = $[6];
36
+ let t2;
37
+ if ($[7] !== index || $[8] !== item || $[9] !== onItemKeyPress) {
38
+ t2 = (event_0) => {
46
39
  onItemKeyPress({
47
40
  event: event_0,
48
41
  index,
49
42
  item
50
43
  });
51
44
  };
52
- $[9] = index;
53
- $[10] = item;
54
- $[11] = onItemKeyPress;
55
- $[12] = t4;
56
- } else t4 = $[12];
57
- let t5;
58
- if ($[13] !== className || $[14] !== isFocused || $[15] !== isSelected || $[16] !== item.id || $[17] !== item.thumbnailURL || $[18] !== item.title || $[19] !== t2 || $[20] !== t3 || $[21] !== t4) {
59
- t5 = /* @__PURE__ */ jsx(FolderFileCard, {
45
+ $[7] = index;
46
+ $[8] = item;
47
+ $[9] = onItemKeyPress;
48
+ $[10] = t2;
49
+ } else t2 = $[10];
50
+ let t3;
51
+ if ($[11] !== className || $[12] !== isFocused || $[13] !== isSelected || $[14] !== item.id || $[15] !== item.itemKey || $[16] !== item.thumbnailURL || $[17] !== item.title || $[18] !== t1 || $[19] !== t2) {
52
+ t3 = /* @__PURE__ */ jsx(FolderFileCard, {
60
53
  className,
61
- id: t1,
54
+ id: item.id,
62
55
  isFocused,
63
56
  isSelected,
64
- itemKey: t2,
57
+ itemKey: item.itemKey,
65
58
  previewUrl: item.thumbnailURL,
66
59
  title: item.title,
67
60
  type: "file",
68
- onClick: t3,
69
- onKeyDown: t4
61
+ onClick: t1,
62
+ onKeyDown: t2
70
63
  });
71
- $[13] = className;
72
- $[14] = isFocused;
73
- $[15] = isSelected;
74
- $[16] = item.id;
75
- $[17] = item.thumbnailURL;
76
- $[18] = item.title;
64
+ $[11] = className;
65
+ $[12] = isFocused;
66
+ $[13] = isSelected;
67
+ $[14] = item.id;
68
+ $[15] = item.itemKey;
69
+ $[16] = item.thumbnailURL;
70
+ $[17] = item.title;
71
+ $[18] = t1;
77
72
  $[19] = t2;
78
73
  $[20] = t3;
79
- $[21] = t4;
80
- $[22] = t5;
81
- } else t5 = $[22];
82
- return t5;
74
+ } else t3 = $[20];
75
+ return t3;
83
76
  }
84
77
 
85
78
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"folderFileCard.mjs","names":["useMemo","FolderFileCard","useSelection","useGrid","jsx","_jsx","ContextFolderFileCard","props","$","_c","className","index","item","focusedItemIndex","onItemClick","onItemKeyPress","selectedIDs","t0","id","includes","isSelected","isFocused","t1","t2","toString","t3","event","t4","event_0","t5","thumbnailURL","title","itemKey","previewUrl","type","onClick","onKeyDown"],"sources":["../../../src/components/folderFileCard/folderFileCard.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { FolderFileCard } from '@payloadcms/ui/elements/FolderView/FolderFileCard'\nimport { useSelection } from '@payloadcms/ui'\nimport { useGrid } from '../gridContext/gridContext'\n\nimport type { MappedDocument } from '../gridView/gridView'\n\ntype ContextCardProps = {\n readonly className?: string\n readonly index: number\n readonly item: MappedDocument\n}\n\nexport function ContextFolderFileCard(props: ContextCardProps) {\n const { className, index, item } = props\n\n const { focusedItemIndex, onItemClick, onItemKeyPress } = useGrid()\n const { selectedIDs } = useSelection()\n\n const isSelected = useMemo(\n () => selectedIDs.includes(item.id),\n [selectedIDs, item.id]\n )\n\n const isFocused = useMemo(\n () => focusedItemIndex === index,\n [focusedItemIndex, index]\n )\n\n return (\n <FolderFileCard\n className={className}\n id={item.id}\n isFocused={isFocused}\n isSelected={isSelected}\n itemKey={item.id.toString()}\n previewUrl={item.thumbnailURL}\n title={item.title}\n type={'file'}\n onClick={(event) => {\n void onItemClick({ event, index, item })\n }}\n onKeyDown={(event) => {\n void onItemKeyPress({ event, index, item })\n }}\n />\n )\n}\n"],"mappings":";;;;;;;AAaA,SAAOM,sBAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CACL,MAAA,EAAAC,WAAAC,OAAAC,SAAmCL;CAEnC,MAAA,EAAAM,kBAAAC,aAAAC,mBAA0DZ,SAAS;CACnE,MAAA,EAAAa,gBAAwBd,cAAc;CAAA,IAAAe;AAAA,KAAAT,EAAA,OAAAI,KAAAM,MAAAV,EAAA,OAAAQ,aAAA;AAG9BC,OAAAD,YAAWG,SAAUP,KAAIM,GAAI;AAAAV,IAAA,KAAAI,KAAAM;AAAAV,IAAA,KAAAQ;AAAAR,IAAA,KAAAS;OAAAA,MAAAT,EAAA;CADrC,MAAAY,aACQH;CAIR,MAAAI,YACQR,qBAAqBF;CAOrB,MAAAW,KAAAV,KAAIM;CAAG,IAAAK;AAAA,KAAAf,EAAA,OAAAI,KAAAM,IAAA;AAGFK,OAAAX,KAAIM,GAAGM,UAAW;AAAAhB,IAAA,KAAAI,KAAAM;AAAAV,IAAA,KAAAe;OAAAA,MAAAf,EAAA;CAAA,IAAAiB;AAAA,KAAAjB,EAAA,OAAAG,SAAAH,EAAA,OAAAI,QAAAJ,EAAA,OAAAM,aAAA;AAIlBW,QAAAC,UAAA;AACFZ,eAAY;IAAAY;IAAAf;IAAAC;IAAsB,CAAC;;AACzCJ,IAAA,KAAAG;AAAAH,IAAA,KAAAI;AAAAJ,IAAA,KAAAM;AAAAN,IAAA,KAAAiB;OAAAA,MAAAjB,EAAA;CAAA,IAAAmB;AAAA,KAAAnB,EAAA,OAAAG,SAAAH,EAAA,QAAAI,QAAAJ,EAAA,QAAAO,gBAAA;AACUY,QAAAC,YAAA;AACJb,kBAAe;IAAAW,OAAEA;IAAKf;IAAAC;IAAe,CAAC;;AAC5CJ,IAAA,KAAAG;AAAAH,IAAA,MAAAI;AAAAJ,IAAA,MAAAO;AAAAP,IAAA,MAAAmB;OAAAA,MAAAnB,EAAA;CAAA,IAAAqB;AAAA,KAAArB,EAAA,QAAAE,aAAAF,EAAA,QAAAa,aAAAb,EAAA,QAAAY,cAAAZ,EAAA,QAAAI,KAAAM,MAAAV,EAAA,QAAAI,KAAAkB,gBAAAtB,EAAA,QAAAI,KAAAmB,SAAAvB,EAAA,QAAAe,MAAAf,EAAA,QAAAiB,MAAAjB,EAAA,QAAAmB,IAAA;AAdHE,OAAAxB,oBAACJ,gBAAc;GACFS;GACPQ,IAAAI;GACOD;GACCD;GACHY,SAAAT;GACGU,YAAArB,KAAIkB;GACTC,OAAAnB,KAAImB;GACLG,MAAA;GACGC,SAAAV;GAGEW,WAAAT;GAGZ,CAAC;AAAAnB,IAAA,MAAAE;AAAAF,IAAA,MAAAa;AAAAb,IAAA,MAAAY;AAAAZ,IAAA,MAAAI,KAAAM;AAAAV,IAAA,MAAAI,KAAAkB;AAAAtB,IAAA,MAAAI,KAAAmB;AAAAvB,IAAA,MAAAe;AAAAf,IAAA,MAAAiB;AAAAjB,IAAA,MAAAmB;AAAAnB,IAAA,MAAAqB;OAAAA,MAAArB,EAAA;AAAA,QAfFqB"}
1
+ {"version":3,"file":"folderFileCard.mjs","names":["useMemo","FolderFileCard","useSelection","useGrid","jsx","_jsx","ContextFolderFileCard","props","$","_c","className","index","item","focusedItemIndex","onItemClick","onItemKeyPress","selectedIDs","t0","id","includes","isSelected","isFocused","t1","event","t2","event_0","t3","itemKey","thumbnailURL","title","previewUrl","type","onClick","onKeyDown"],"sources":["../../../src/components/folderFileCard/folderFileCard.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { FolderFileCard } from '@payloadcms/ui/elements/FolderView/FolderFileCard'\nimport { useSelection } from '@payloadcms/ui'\nimport { useGrid } from '../gridContext/gridContext'\n\nimport type { MappedDocument } from '../gridView/gridView'\n\ntype ContextCardProps = {\n readonly className?: string\n readonly index: number\n readonly item: MappedDocument\n}\n\nexport function ContextFolderFileCard(props: ContextCardProps) {\n const { className, index, item } = props\n\n const { focusedItemIndex, onItemClick, onItemKeyPress } = useGrid()\n const { selectedIDs } = useSelection()\n\n const isSelected = useMemo(\n () => selectedIDs.includes(item.id),\n [selectedIDs, item.id]\n )\n\n const isFocused = useMemo(\n () => focusedItemIndex === index,\n [focusedItemIndex, index]\n )\n\n return (\n // <span>{item.id}</span>\n <FolderFileCard\n className={className}\n id={item.id}\n isFocused={isFocused}\n isSelected={isSelected}\n itemKey={item.itemKey}\n previewUrl={item.thumbnailURL}\n title={item.title}\n type={'file'}\n onClick={(event) => {\n void onItemClick({ event, index, item })\n }}\n onKeyDown={(event) => {\n void onItemKeyPress({ event, index, item })\n }}\n />\n )\n}\n"],"mappings":";;;;;;;AAaA,SAAOM,sBAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CACL,MAAA,EAAAC,WAAAC,OAAAC,SAAmCL;CAEnC,MAAA,EAAAM,kBAAAC,aAAAC,mBAA0DZ,SAAS;CACnE,MAAA,EAAAa,gBAAwBd,cAAc;CAAA,IAAAe;AAAA,KAAAT,EAAA,OAAAI,KAAAM,MAAAV,EAAA,OAAAQ,aAAA;AAG9BC,OAAAD,YAAWG,SAAUP,KAAIM,GAAI;AAAAV,IAAA,KAAAI,KAAAM;AAAAV,IAAA,KAAAQ;AAAAR,IAAA,KAAAS;OAAAA,MAAAT,EAAA;CADrC,MAAAY,aACQH;CAIR,MAAAI,YACQR,qBAAqBF;CAE5B,IAAAW;AAAA,KAAAd,EAAA,OAAAG,SAAAH,EAAA,OAAAI,QAAAJ,EAAA,OAAAM,aAAA;AAaYQ,QAAAC,UAAA;AACFT,eAAY;IAAAS;IAAAZ;IAAAC;IAAsB,CAAC;;AACzCJ,IAAA,KAAAG;AAAAH,IAAA,KAAAI;AAAAJ,IAAA,KAAAM;AAAAN,IAAA,KAAAc;OAAAA,MAAAd,EAAA;CAAA,IAAAgB;AAAA,KAAAhB,EAAA,OAAAG,SAAAH,EAAA,OAAAI,QAAAJ,EAAA,OAAAO,gBAAA;AACUS,QAAAC,YAAA;AACJV,kBAAe;IAAAQ,OAAEA;IAAKZ;IAAAC;IAAe,CAAC;;AAC5CJ,IAAA,KAAAG;AAAAH,IAAA,KAAAI;AAAAJ,IAAA,KAAAO;AAAAP,IAAA,MAAAgB;OAAAA,MAAAhB,EAAA;CAAA,IAAAkB;AAAA,KAAAlB,EAAA,QAAAE,aAAAF,EAAA,QAAAa,aAAAb,EAAA,QAAAY,cAAAZ,EAAA,QAAAI,KAAAM,MAAAV,EAAA,QAAAI,KAAAe,WAAAnB,EAAA,QAAAI,KAAAgB,gBAAApB,EAAA,QAAAI,KAAAiB,SAAArB,EAAA,QAAAc,MAAAd,EAAA,QAAAgB,IAAA;AAdHE,OAAArB,oBAACJ,gBAAc;GACFS;GACPQ,IAAAN,KAAIM;GACGG;GACCD;GACHO,SAAAf,KAAIe;GACDG,YAAAlB,KAAIgB;GACTC,OAAAjB,KAAIiB;GACLE,MAAA;GACGC,SAAAV;GAGEW,WAAAT;GAGZ,CAAC;AAAAhB,IAAA,MAAAE;AAAAF,IAAA,MAAAa;AAAAb,IAAA,MAAAY;AAAAZ,IAAA,MAAAI,KAAAM;AAAAV,IAAA,MAAAI,KAAAe;AAAAnB,IAAA,MAAAI,KAAAgB;AAAApB,IAAA,MAAAI,KAAAiB;AAAArB,IAAA,MAAAc;AAAAd,IAAA,MAAAgB;AAAAhB,IAAA,MAAAkB;OAAAA,MAAAlB,EAAA;AAAA,QAfFkB"}
@@ -5,6 +5,7 @@ import "./gridView.css";
5
5
  //#region src/components/gridView/gridView.d.ts
6
6
  interface MappedDocument {
7
7
  id: string | number;
8
+ itemKey: string;
8
9
  storage: 'mux' | 's3';
9
10
  title: string;
10
11
  thumbnailURL?: string;
@@ -63,6 +63,7 @@ function GridView(props) {
63
63
  const title = doc_0.filename ?? doc_0.alt ?? String(doc_0.id);
64
64
  return {
65
65
  id: doc_0.id,
66
+ itemKey: doc_0.id.toString(),
66
67
  storage: doc_0.storage,
67
68
  title,
68
69
  thumbnailURL: getThumbnailURL(doc_0),
@@ -1 +1 @@
1
- {"version":3,"file":"gridView.mjs","names":["c","_c","React","Fragment","useMemo","useEffect","useRouter","getTranslation","Gutter","useListQuery","useConfig","SelectionProvider","useTranslation","useWindowInfo","useBulkUpload","useModal","useStepNav","ListSelection","ListControls","ListHeader","PageControls","useListDrawerContext","DefaultListViewTabs","formatAdminURL","ItemCardGrid","GridProvider","SelectMany","jsx","_jsx","jsxs","_jsxs","GridView","props","$","collectionSlug","AfterList","AfterListTable","BeforeList","BeforeListTable","Description","newDocumentURL","hasCreatePermission","hasDeletePermission","disableBulkDelete","disableBulkEdit","enableRowSelections","beforeActions","viewType","config","getEntityConfig","routes","t0","admin","adminRoute","router","data","t1","docs","t2","t3","undefined","i18n","setStepNav","openModal","drawerSlug","bulkUploadDrawerSlug","setCollectionSlug","setBulkUploadCollectionSlug","setOnSuccess","breakpoints","t4","s","smallBreak","t5","collectionConfig","labels","upload","isUploadCollection","Boolean","isBulkUploadEnabled","bulkUpload","isTrashEnabled","trash","onBulkSelect","isInDrawer","getThumbnailURL","_temp","t6","t7","doc_0","title","doc","filename","alt","String","id","storage","thumbnailURL","relationTo","map","mappedDocs","refresh","openBulkUpload","t8","plural","baseLabel","label","url","path","trashLabel","t","navItems","t9","t10","totalDocs","t11","t12","t13","t14","filter","t15","t16","Actions","onBulkUploadSuccess","t17","t18","enableColumns","t19","length","singular","className","children","type","onClick","push","t20","AfterPageControls","t21","t22","t23","t24","t25","mux","playbackId"],"sources":["../../../src/components/gridView/gridView.tsx"],"sourcesContent":["'use client'\n\nimport React, { Fragment, useMemo, useEffect } from 'react'\nimport { useRouter } from 'next/navigation'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Gutter,\n useListQuery,\n useConfig,\n SelectionProvider,\n useTranslation,\n useWindowInfo,\n useBulkUpload,\n useModal,\n useStepNav,\n ListSelection,\n ListControls,\n ListHeader,\n PageControls,\n useListDrawerContext,\n} from '@payloadcms/ui'\nimport { DefaultListViewTabs } from '@payloadcms/ui/elements/DefaultListViewTabs'\nimport { formatAdminURL } from 'payload/shared'\nimport { ItemCardGrid } from '../itemCardGrid/itemCardGrid'\nimport { GridProvider } from '../gridContext/gridContext'\nimport { SelectMany } from '../selectMany/selectMany'\n\nimport type { ListViewClientProps } from 'payload'\n\nimport './gridView.css'\n\n// Type for media document with common properties\ninterface MediaDocument {\n id: string | number\n storage: 'mux' | 's3'\n filename?: string\n alt?: string\n mimeType?: string\n url?: string\n thumbnailURL?: string\n mux?: {\n playbackId?: string\n }\n}\n\nexport interface MappedDocument {\n id: string | number\n storage: 'mux' | 's3'\n title: string\n thumbnailURL?: string\n relationTo: string\n}\n\nexport function GridView(props: ListViewClientProps): React.JSX.Element {\n const baseClass = 'grid-view'\n\n const {\n collectionSlug,\n AfterList,\n AfterListTable,\n BeforeList,\n BeforeListTable,\n Description,\n newDocumentURL,\n hasCreatePermission,\n hasDeletePermission,\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n beforeActions,\n viewType,\n } = props\n\n const { config, getEntityConfig } = useConfig()\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n const router = useRouter()\n\n const { data } = useListQuery() ?? {}\n const { docs = [] } = data ?? {}\n\n const { i18n } = useTranslation()\n const { setStepNav } = useStepNav()\n const { openModal } = useModal()\n\n const {\n drawerSlug: bulkUploadDrawerSlug,\n setCollectionSlug: setBulkUploadCollectionSlug,\n setOnSuccess,\n } = useBulkUpload()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const { labels, upload } = collectionConfig\n\n const isUploadCollection = Boolean(upload)\n\n const isBulkUploadEnabled =\n (isUploadCollection && collectionConfig.upload?.bulkUpload) ?? true\n\n const isTrashEnabled = Boolean(collectionConfig.trash)\n\n const { onBulkSelect, isInDrawer } = useListDrawerContext()\n\n const getThumbnailURL = (doc: MediaDocument): string | undefined => {\n if (doc?.thumbnailURL) {\n return doc.thumbnailURL\n }\n\n if (doc?.storage === 'mux' && doc?.mux?.playbackId) {\n return `https://image.mux.com/${doc.mux.playbackId}/thumbnail.jpg?width=400&height=400&fit_mode=pad`\n }\n\n return undefined\n }\n\n const mappedDocs: MappedDocument[] = useMemo(() => {\n return docs.map((doc: MediaDocument) => {\n const title = doc.filename ?? doc.alt ?? String(doc.id)\n return {\n id: doc.id,\n storage: doc.storage,\n title: title,\n thumbnailURL: getThumbnailURL(doc),\n relationTo: collectionSlug,\n }\n })\n }, [docs, collectionSlug])\n\n const openBulkUpload = React.useCallback(() => {\n setBulkUploadCollectionSlug(collectionSlug)\n openModal(bulkUploadDrawerSlug)\n setOnSuccess(() => router.refresh())\n }, [\n router,\n collectionSlug,\n bulkUploadDrawerSlug,\n openModal,\n setBulkUploadCollectionSlug,\n setOnSuccess,\n ])\n\n // Set breadcrumb navigation\n useEffect(() => {\n const baseLabel = {\n label: getTranslation(labels?.plural, i18n),\n url:\n isTrashEnabled && viewType === 'trash'\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n })\n : undefined,\n }\n const trashLabel = {\n label: i18n.t('general:trash'),\n }\n const navItems =\n isTrashEnabled && viewType === 'trash'\n ? [baseLabel, trashLabel]\n : [baseLabel]\n setStepNav(navItems)\n }, [\n adminRoute,\n setStepNav,\n labels,\n isTrashEnabled,\n viewType,\n i18n,\n collectionSlug,\n ])\n\n return (\n <SelectionProvider docs={docs} totalDocs={data?.totalDocs ?? 0}>\n <GridProvider allowMultiSelection={enableRowSelections} docs={mappedDocs}>\n <div className={`grid-view grid-view--${collectionSlug}`}>\n <Fragment>\n {BeforeList}\n <Gutter className={`${baseClass}__wrapper collection-list__wrap`}>\n <ListHeader\n Actions={[\n beforeActions,\n !smallBreak && (\n <ListSelection\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={\n collectionConfig.disableBulkEdit ?? disableBulkEdit\n }\n key=\"list-selection\"\n label={getTranslation(labels?.plural, i18n)}\n />\n ),\n <DefaultListViewTabs\n collectionConfig={collectionConfig}\n config={config}\n key=\"default-list-actions\"\n viewType=\"list\"\n />,\n ].filter(Boolean)}\n collectionConfig={collectionConfig}\n Description={Description}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n hasCreatePermission={hasCreatePermission}\n hasDeletePermission={hasDeletePermission}\n i18n={i18n}\n isBulkUploadEnabled={isBulkUploadEnabled}\n isTrashEnabled={isTrashEnabled}\n newDocumentURL={newDocumentURL}\n onBulkUploadSuccess={() => router.refresh()}\n openBulkUpload={openBulkUpload}\n smallBreak={smallBreak}\n viewType={viewType}\n />\n <ListControls\n beforeActions={\n isInDrawer && typeof onBulkSelect === 'function'\n ? [\n ...(beforeActions ?? []),\n <SelectMany key=\"select-many\" onClick={onBulkSelect} />,\n ]\n : beforeActions\n }\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n enableColumns={false}\n />\n {BeforeListTable}\n {docs.length === 0 ? (\n <div className={`${baseClass}__no-results`}>\n <p>\n {i18n.t(\n viewType === 'trash'\n ? 'general:noTrashResults'\n : 'general:noResults',\n {\n label: getTranslation(labels?.plural, i18n),\n }\n )}\n </p>\n {hasCreatePermission && newDocumentURL && (\n <div className={`${baseClass}__no-results__actions`}>\n <button\n type=\"button\"\n onClick={() => router.push(newDocumentURL)}\n className={`${baseClass}__create-link btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup`}\n >\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </button>\n </div>\n )}\n </div>\n ) : (\n <ItemCardGrid\n items={mappedDocs}\n adminRoute={adminRoute}\n collectionSlug={collectionSlug}\n />\n )}\n {docs?.length > 0 && (\n <PageControls\n AfterPageControls={\n smallBreak ? (\n <div className={`${baseClass}__list-selection`}>\n <ListSelection\n collectionConfig={collectionConfig}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n label={getTranslation(\n collectionConfig.labels.plural,\n i18n\n )}\n />\n <div className={`${baseClass}__list-selection-actions`}>\n {typeof onBulkSelect === 'function'\n ? [\n ...(beforeActions ?? []),\n <SelectMany\n key=\"select-many\"\n onClick={onBulkSelect}\n />,\n ]\n : beforeActions}\n </div>\n </div>\n ) : null\n }\n collectionConfig={collectionConfig}\n />\n )}\n {AfterListTable}\n </Gutter>\n {AfterList}\n </Fragment>\n </div>\n </GridProvider>\n </SelectionProvider>\n )\n}\n\nexport default GridView\n"],"mappings":"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"}
1
+ {"version":3,"file":"gridView.mjs","names":["c","_c","React","Fragment","useMemo","useEffect","useRouter","getTranslation","Gutter","useListQuery","useConfig","SelectionProvider","useTranslation","useWindowInfo","useBulkUpload","useModal","useStepNav","ListSelection","ListControls","ListHeader","PageControls","useListDrawerContext","DefaultListViewTabs","formatAdminURL","ItemCardGrid","GridProvider","SelectMany","jsx","_jsx","jsxs","_jsxs","GridView","props","$","collectionSlug","AfterList","AfterListTable","BeforeList","BeforeListTable","Description","newDocumentURL","hasCreatePermission","hasDeletePermission","disableBulkDelete","disableBulkEdit","enableRowSelections","beforeActions","viewType","config","getEntityConfig","routes","t0","admin","adminRoute","router","data","t1","docs","t2","t3","undefined","i18n","setStepNav","openModal","drawerSlug","bulkUploadDrawerSlug","setCollectionSlug","setBulkUploadCollectionSlug","setOnSuccess","breakpoints","t4","s","smallBreak","t5","collectionConfig","labels","upload","isUploadCollection","Boolean","isBulkUploadEnabled","bulkUpload","isTrashEnabled","trash","onBulkSelect","isInDrawer","getThumbnailURL","_temp","t6","t7","doc_0","title","doc","filename","alt","String","id","itemKey","toString","storage","thumbnailURL","relationTo","map","mappedDocs","refresh","openBulkUpload","t8","plural","baseLabel","label","url","path","trashLabel","t","navItems","t9","t10","totalDocs","t11","t12","t13","t14","filter","t15","t16","Actions","onBulkUploadSuccess","t17","t18","enableColumns","t19","length","singular","className","children","type","onClick","push","t20","AfterPageControls","t21","t22","t23","t24","t25","mux","playbackId"],"sources":["../../../src/components/gridView/gridView.tsx"],"sourcesContent":["'use client'\n\nimport React, { Fragment, useMemo, useEffect } from 'react'\nimport { useRouter } from 'next/navigation'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Gutter,\n useListQuery,\n useConfig,\n SelectionProvider,\n useTranslation,\n useWindowInfo,\n useBulkUpload,\n useModal,\n useStepNav,\n ListSelection,\n ListControls,\n ListHeader,\n PageControls,\n useListDrawerContext,\n} from '@payloadcms/ui'\nimport { DefaultListViewTabs } from '@payloadcms/ui/elements/DefaultListViewTabs'\nimport { formatAdminURL } from 'payload/shared'\nimport { ItemCardGrid } from '../itemCardGrid/itemCardGrid'\nimport { GridProvider } from '../gridContext/gridContext'\nimport { SelectMany } from '../selectMany/selectMany'\n\nimport type { ListViewClientProps } from 'payload'\n\nimport './gridView.css'\n\n// Type for media document with common properties\ninterface MediaDocument {\n id: string | number\n storage: 'mux' | 's3'\n filename?: string\n alt?: string\n mimeType?: string\n url?: string\n thumbnailURL?: string\n mux?: {\n playbackId?: string\n }\n}\n\nexport interface MappedDocument {\n id: string | number\n itemKey: string\n storage: 'mux' | 's3'\n title: string\n thumbnailURL?: string\n relationTo: string\n}\n\nexport function GridView(props: ListViewClientProps): React.JSX.Element {\n const baseClass = 'grid-view'\n\n const {\n collectionSlug,\n AfterList,\n AfterListTable,\n BeforeList,\n BeforeListTable,\n Description,\n newDocumentURL,\n hasCreatePermission,\n hasDeletePermission,\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n beforeActions,\n viewType,\n } = props\n\n const { config, getEntityConfig } = useConfig()\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n const router = useRouter()\n\n const { data } = useListQuery() ?? {}\n const { docs = [] } = data ?? {}\n\n const { i18n } = useTranslation()\n const { setStepNav } = useStepNav()\n const { openModal } = useModal()\n\n const {\n drawerSlug: bulkUploadDrawerSlug,\n setCollectionSlug: setBulkUploadCollectionSlug,\n setOnSuccess,\n } = useBulkUpload()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const { labels, upload } = collectionConfig\n\n const isUploadCollection = Boolean(upload)\n\n const isBulkUploadEnabled =\n (isUploadCollection && collectionConfig.upload?.bulkUpload) ?? true\n\n const isTrashEnabled = Boolean(collectionConfig.trash)\n\n const { onBulkSelect, isInDrawer } = useListDrawerContext()\n\n const getThumbnailURL = (doc: MediaDocument): string | undefined => {\n if (doc?.thumbnailURL) {\n return doc.thumbnailURL\n }\n\n if (doc?.storage === 'mux' && doc?.mux?.playbackId) {\n return `https://image.mux.com/${doc.mux.playbackId}/thumbnail.jpg?width=400&height=400&fit_mode=pad`\n }\n\n return undefined\n }\n\n const mappedDocs: MappedDocument[] = useMemo(() => {\n return docs.map((doc: MediaDocument) => {\n const title = doc.filename ?? doc.alt ?? String(doc.id)\n return {\n id: doc.id,\n itemKey: doc.id.toString(),\n storage: doc.storage,\n title: title,\n thumbnailURL: getThumbnailURL(doc),\n relationTo: collectionSlug,\n }\n })\n }, [docs, collectionSlug])\n\n const openBulkUpload = React.useCallback(() => {\n setBulkUploadCollectionSlug(collectionSlug)\n openModal(bulkUploadDrawerSlug)\n setOnSuccess(() => router.refresh())\n }, [\n router,\n collectionSlug,\n bulkUploadDrawerSlug,\n openModal,\n setBulkUploadCollectionSlug,\n setOnSuccess,\n ])\n\n // Set breadcrumb navigation\n useEffect(() => {\n const baseLabel = {\n label: getTranslation(labels?.plural, i18n),\n url:\n isTrashEnabled && viewType === 'trash'\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n })\n : undefined,\n }\n const trashLabel = {\n label: i18n.t('general:trash'),\n }\n const navItems =\n isTrashEnabled && viewType === 'trash'\n ? [baseLabel, trashLabel]\n : [baseLabel]\n setStepNav(navItems)\n }, [\n adminRoute,\n setStepNav,\n labels,\n isTrashEnabled,\n viewType,\n i18n,\n collectionSlug,\n ])\n\n return (\n <SelectionProvider docs={docs} totalDocs={data?.totalDocs ?? 0}>\n <GridProvider allowMultiSelection={enableRowSelections} docs={mappedDocs}>\n <div className={`grid-view grid-view--${collectionSlug}`}>\n <Fragment>\n {BeforeList}\n <Gutter className={`${baseClass}__wrapper collection-list__wrap`}>\n <ListHeader\n Actions={[\n beforeActions,\n !smallBreak && (\n <ListSelection\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={\n collectionConfig.disableBulkEdit ?? disableBulkEdit\n }\n key=\"list-selection\"\n label={getTranslation(labels?.plural, i18n)}\n />\n ),\n <DefaultListViewTabs\n collectionConfig={collectionConfig}\n config={config}\n key=\"default-list-actions\"\n viewType=\"list\"\n />,\n ].filter(Boolean)}\n collectionConfig={collectionConfig}\n Description={Description}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n hasCreatePermission={hasCreatePermission}\n hasDeletePermission={hasDeletePermission}\n i18n={i18n}\n isBulkUploadEnabled={isBulkUploadEnabled}\n isTrashEnabled={isTrashEnabled}\n newDocumentURL={newDocumentURL}\n onBulkUploadSuccess={() => router.refresh()}\n openBulkUpload={openBulkUpload}\n smallBreak={smallBreak}\n viewType={viewType}\n />\n <ListControls\n beforeActions={\n isInDrawer && typeof onBulkSelect === 'function'\n ? [\n ...(beforeActions ?? []),\n <SelectMany key=\"select-many\" onClick={onBulkSelect} />,\n ]\n : beforeActions\n }\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n enableColumns={false}\n />\n {BeforeListTable}\n {docs.length === 0 ? (\n <div className={`${baseClass}__no-results`}>\n <p>\n {i18n.t(\n viewType === 'trash'\n ? 'general:noTrashResults'\n : 'general:noResults',\n {\n label: getTranslation(labels?.plural, i18n),\n }\n )}\n </p>\n {hasCreatePermission && newDocumentURL && (\n <div className={`${baseClass}__no-results__actions`}>\n <button\n type=\"button\"\n onClick={() => router.push(newDocumentURL)}\n className={`${baseClass}__create-link btn btn--icon-style-without-border btn--size-small btn--withoutPopup btn--style-pill btn--withoutPopup`}\n >\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </button>\n </div>\n )}\n </div>\n ) : (\n <ItemCardGrid\n items={mappedDocs}\n adminRoute={adminRoute}\n collectionSlug={collectionSlug}\n />\n )}\n {docs?.length > 0 && (\n <PageControls\n AfterPageControls={\n smallBreak ? (\n <div className={`${baseClass}__list-selection`}>\n <ListSelection\n collectionConfig={collectionConfig}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n label={getTranslation(\n collectionConfig.labels.plural,\n i18n\n )}\n />\n <div className={`${baseClass}__list-selection-actions`}>\n {typeof onBulkSelect === 'function'\n ? [\n ...(beforeActions ?? []),\n <SelectMany\n key=\"select-many\"\n onClick={onBulkSelect}\n />,\n ]\n : beforeActions}\n </div>\n </div>\n ) : null\n }\n collectionConfig={collectionConfig}\n />\n )}\n {AfterListTable}\n </Gutter>\n {AfterList}\n </Fragment>\n </div>\n </GridProvider>\n </SelectionProvider>\n )\n}\n\nexport default GridView\n"],"mappings":"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"}
@@ -2,7 +2,8 @@
2
2
 
3
3
  import { ContextFolderFileCard } from "../folderFileCard/folderFileCard.mjs";
4
4
  import { c } from "react/compiler-runtime";
5
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
+ import { DndContext } from "@dnd-kit/core";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
6
7
  import "./itemCardGrid.css";
7
8
 
8
9
  //#region src/components/itemCardGrid/itemCardGrid.tsx
@@ -39,7 +40,7 @@ function ItemCardGrid(t0) {
39
40
  } else t3 = $[5];
40
41
  let t4;
41
42
  if ($[6] !== t1 || $[7] !== t3) {
42
- t4 = /* @__PURE__ */ jsxs(Fragment, { children: [t1, t3] });
43
+ t4 = /* @__PURE__ */ jsxs(DndContext, { children: [t1, t3] });
43
44
  $[6] = t1;
44
45
  $[7] = t3;
45
46
  $[8] = t4;
@@ -1 +1 @@
1
- {"version":3,"file":"itemCardGrid.mjs","names":["c","_c","React","ContextFolderFileCard","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ItemCardGrid","t0","$","items","title","t1","className","children","t2","length","map","item","index","indexOf","id","t3","baseClass","t4"],"sources":["../../../src/components/itemCardGrid/itemCardGrid.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\nimport { ContextFolderFileCard } from '../folderFileCard/folderFileCard'\n\nimport type { MappedDocument } from '../gridView/gridView'\n\nimport './itemCardGrid.css'\n\ntype ItemCardGridProps = {\n items: MappedDocument[]\n title?: string\n adminRoute: string\n collectionSlug: string\n}\n\nexport function ItemCardGrid({ items, title }: ItemCardGridProps) {\n const baseClass = 'item-card-grid'\n\n return (\n <>\n {title && <p className={`${baseClass}__title`}>{title}</p>}\n <div className={baseClass}>\n {!items || items?.length === 0\n ? null\n : items.map((item) => {\n return (\n <ContextFolderFileCard\n key={item.id}\n index={items.indexOf(item)}\n item={item}\n className={`${baseClass}__item`}\n />\n )\n })}\n </div>\n </>\n )\n}\n"],"mappings":";;;;;;;;AAgBA,SAAOU,aAAAC,IAAA;CAAA,MAAAC,IAAAX,EAAA,EAAA;CAAsB,MAAA,EAAAY,OAAAC,UAAAH;CAAmC,IAAAI;AAAA,KAAAH,EAAA,OAAAE,OAAA;AAKzDC,OAAAD,SAAAT,oBAAA,KAAA;GAAuBW,WAAA;GAAqBC,UAAGH;GAAS,CAAC;AAAAF,IAAA,KAAAE;AAAAF,IAAA,KAAAG;OAAAA,MAAAH,EAAA;CAAA,IAAAM;AAAA,KAAAN,EAAA,OAAAC,OAAA;AAEvDK,OAAA,CAACL,SAASA,OAAKM,WAAa,IAA5B,OAEGN,MAAKO,KAAKC,SAENhB,oBAACF,uBAAqB;GAEbmB,OAAAT,MAAKU,QAASF,KAAK;GACpBA;GACKL,WAAA;GAAoB,EAH1BK,KAAIG,GAMd,CAAC;AAAAZ,IAAA,KAAAC;AAAAD,IAAA,KAAAM;OAAAA,MAAAN,EAAA;CAAA,IAAAa;AAAA,KAAAb,EAAA,OAAAM,IAAA;AAZRO,OAAApB,oBAAA,OAAA;GAAgBqB,WALF;GAKWT,UACtBC;GAYE,CAAC;AAAAN,IAAA,KAAAM;AAAAN,IAAA,KAAAa;OAAAA,MAAAb,EAAA;CAAA,IAAAe;AAAA,KAAAf,EAAA,OAAAG,MAAAH,EAAA,OAAAa,IAAA;AAfRE,OAAAlB,qBAAAF,UAAA,EAAAU,UAAA,CACGF,IACDU,GAaM,EACN,CAAC;AAAAb,IAAA,KAAAG;AAAAH,IAAA,KAAAa;AAAAb,IAAA,KAAAe;OAAAA,MAAAf,EAAA;AAAA,QAhBHe"}
1
+ {"version":3,"file":"itemCardGrid.mjs","names":["c","_c","React","DndContext","ContextFolderFileCard","jsx","_jsx","jsxs","_jsxs","ItemCardGrid","t0","$","items","title","t1","className","children","t2","length","map","item","index","indexOf","id","t3","baseClass","t4"],"sources":["../../../src/components/itemCardGrid/itemCardGrid.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\nimport { DndContext } from '@dnd-kit/core'\nimport { ContextFolderFileCard } from '../folderFileCard/folderFileCard'\n\nimport type { MappedDocument } from '../gridView/gridView'\n\nimport './itemCardGrid.css'\n\ntype ItemCardGridProps = {\n items: MappedDocument[]\n title?: string\n adminRoute: string\n collectionSlug: string\n}\n\nexport function ItemCardGrid({ items, title }: ItemCardGridProps) {\n const baseClass = 'item-card-grid'\n\n return (\n <DndContext>\n {title && <p className={`${baseClass}__title`}>{title}</p>}\n <div className={baseClass}>\n {!items || items?.length === 0\n ? null\n : items.map((item) => {\n return (\n <ContextFolderFileCard\n key={item.id}\n index={items.indexOf(item)}\n item={item}\n className={`${baseClass}__item`}\n />\n )\n })}\n </div>\n </DndContext>\n )\n}\n"],"mappings":";;;;;;;;;AAiBA,SAAOS,aAAAC,IAAA;CAAA,MAAAC,IAAAV,EAAA,EAAA;CAAsB,MAAA,EAAAW,OAAAC,UAAAH;CAAmC,IAAAI;AAAA,KAAAH,EAAA,OAAAE,OAAA;AAKzDC,OAAAD,SAAAP,oBAAA,KAAA;GAAuBS,WAAA;GAAqBC,UAAGH;GAAS,CAAC;AAAAF,IAAA,KAAAE;AAAAF,IAAA,KAAAG;OAAAA,MAAAH,EAAA;CAAA,IAAAM;AAAA,KAAAN,EAAA,OAAAC,OAAA;AAEvDK,OAAA,CAACL,SAASA,OAAKM,WAAa,IAA5B,OAEGN,MAAKO,KAAKC,SAENd,oBAACF,uBAAqB;GAEbiB,OAAAT,MAAKU,QAASF,KAAK;GACpBA;GACKL,WAAA;GAAoB,EAH1BK,KAAIG,GAMd,CAAC;AAAAZ,IAAA,KAAAC;AAAAD,IAAA,KAAAM;OAAAA,MAAAN,EAAA;CAAA,IAAAa;AAAA,KAAAb,EAAA,OAAAM,IAAA;AAZRO,OAAAlB,oBAAA,OAAA;GAAgBmB,WALF;GAKWT,UACtBC;GAYE,CAAC;AAAAN,IAAA,KAAAM;AAAAN,IAAA,KAAAa;OAAAA,MAAAb,EAAA;CAAA,IAAAe;AAAA,KAAAf,EAAA,OAAAG,MAAAH,EAAA,OAAAa,IAAA;AAfRE,OAAAlB,qBAACL,YAAU,EAAAa,UAAA,CACRF,IACDU,GAaM,EACI,CAAC;AAAAb,IAAA,KAAAG;AAAAH,IAAA,KAAAa;AAAAb,IAAA,KAAAe;OAAAA,MAAAf,EAAA;AAAA,QAhBbe"}
@@ -3,7 +3,7 @@ const defaultOptions = {
3
3
  enabled: true,
4
4
  collection: "media",
5
5
  view: "grid",
6
- folders: true,
6
+ folders: false,
7
7
  storage: { "video/*": "mux" },
8
8
  limits: {
9
9
  mimeTypes: ["image/*", "video/*"],
@@ -1 +1 @@
1
- {"version":3,"file":"defaultOptions.mjs","names":["defaultOptions: MediaCloudDefaultPluginOptions"],"sources":["../../src/utils/defaultOptions.ts"],"sourcesContent":["import { MediaCloudDefaultPluginOptions } from '../types'\n\nexport const defaultOptions: MediaCloudDefaultPluginOptions = {\n enabled: true,\n collection: 'media',\n view: 'grid',\n folders: true,\n storage: {\n 'video/*': 'mux',\n },\n limits: {\n mimeTypes: ['image/*', 'video/*'],\n fileSize: Infinity,\n concurrency: 10,\n },\n}\n"],"mappings":";AAEA,MAAaA,iBAAiD;CAC5D,SAAS;CACT,YAAY;CACZ,MAAM;CACN,SAAS;CACT,SAAS,EACP,WAAW,OACZ;CACD,QAAQ;EACN,WAAW,CAAC,WAAW,UAAU;EACjC,UAAU;EACV,aAAa;EACd;CACF"}
1
+ {"version":3,"file":"defaultOptions.mjs","names":["defaultOptions: MediaCloudDefaultPluginOptions"],"sources":["../../src/utils/defaultOptions.ts"],"sourcesContent":["import { MediaCloudDefaultPluginOptions } from '../types'\n\nexport const defaultOptions: MediaCloudDefaultPluginOptions = {\n enabled: true,\n collection: 'media',\n view: 'grid',\n folders: false,\n storage: {\n 'video/*': 'mux',\n },\n limits: {\n mimeTypes: ['image/*', 'video/*'],\n fileSize: Infinity,\n concurrency: 10,\n },\n}\n"],"mappings":";AAEA,MAAaA,iBAAiD;CAC5D,SAAS;CACT,YAAY;CACZ,MAAM;CACN,SAAS;CACT,SAAS,EACP,WAAW,OACZ;CACD,QAAQ;EACN,WAAW,CAAC,WAAW,UAAU;EACjC,UAAU;EACV,aAAa;EACd;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { MediaCloudPluginOptions, MimeType } from "../types/index.mjs";
2
2
  import { S3Store } from "../tus/stores/s3/s3Store.mjs";
3
- import * as payload3 from "payload";
3
+ import * as payload0 from "payload";
4
4
 
5
5
  //#region src/utils/file.d.ts
6
6
 
@@ -35,7 +35,7 @@ interface CreateFileEndpointsArgs {
35
35
  pluginOptions: MediaCloudPluginOptions;
36
36
  }
37
37
  declare function createFileEndpoints(args: CreateFileEndpointsArgs): {
38
- handler: payload3.PayloadHandler;
38
+ handler: payload0.PayloadHandler;
39
39
  method: "get";
40
40
  path: string;
41
41
  }[];
@@ -1,5 +1,5 @@
1
1
  import { MediaCloudPluginOptions } from "../types/index.mjs";
2
- import * as payload0 from "payload";
2
+ import * as payload2 from "payload";
3
3
  import Mux from "@mux/mux-node";
4
4
 
5
5
  //#region src/utils/mux.d.ts
@@ -14,11 +14,11 @@ interface CreateMuxEndpointsArgs {
14
14
  pluginOptions: MediaCloudPluginOptions;
15
15
  }
16
16
  declare function createMuxEndpoints(args: CreateMuxEndpointsArgs): ({
17
- handler: payload0.PayloadHandler;
17
+ handler: payload2.PayloadHandler;
18
18
  method: "post";
19
19
  path: string;
20
20
  } | {
21
- handler: payload0.PayloadHandler;
21
+ handler: payload2.PayloadHandler;
22
22
  method: "get";
23
23
  path: string;
24
24
  })[];
@@ -1,6 +1,6 @@
1
1
  import { MediaCloudPluginOptions } from "../types/index.mjs";
2
2
  import { S3Store } from "../tus/stores/s3/s3Store.mjs";
3
- import * as payload1 from "payload";
3
+ import * as payload0 from "payload";
4
4
  import { PayloadRequest } from "payload";
5
5
  import { Server } from "@tus/server";
6
6
 
@@ -45,11 +45,11 @@ declare function createTusEndpoints(args: CreateTusEndpointsArgs): ({
45
45
  method: "delete";
46
46
  path: string;
47
47
  } | {
48
- handler: payload1.PayloadHandler;
48
+ handler: payload0.PayloadHandler;
49
49
  method: "get";
50
50
  path: string;
51
51
  } | {
52
- handler: payload1.PayloadHandler;
52
+ handler: payload0.PayloadHandler;
53
53
  method: "post";
54
54
  path: string;
55
55
  })[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maas/payload-plugin-media-cloud",
3
- "version": "0.0.40",
3
+ "version": "0.0.42",
4
4
  "type": "module",
5
5
  "contributors": [
6
6
  {
@@ -51,6 +51,7 @@
51
51
  "tus-js-client": "^4.3.1"
52
52
  },
53
53
  "peerDependencies": {
54
+ "@dnd-kit/core": "^6.0.0",
54
55
  "@mux/mux-player-react": "^3",
55
56
  "@payloadcms/plugin-cloud-storage": "^3.61",
56
57
  "@payloadcms/translations": "^3.61",