@mano8/astro-media-m8 1.1.1 → 2.1.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 +57 -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 +58 -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 +36 -28
  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 +1 @@
1
- {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../../src/runtime/compatibility.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG,kBAAkB,CAAC;AAC/D,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAK,CAAC;AACvD,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,4BAA4B,IAAI,iCAAiC,EAAW,CAAC;AACzH,MAAM,CAAC,MAAM,uCAAuC,GAAG,OAAO,CAAC;AAC/D,MAAM,CAAC,MAAM,oCAAoC,GAAG,OAAO,CAAC;AAC5D,MAAM,CAAC,MAAM,8CAA8C,GAAG,OAAO,CAAC;AACtE,MAAM,CAAC,MAAM,sCAAsC,GAAG,KAAK,oCAAoC,KAAK,8CAA8C,EAAE,CAAC;AA6BrJ,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED,uEAAuE;AACvE,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,WAAW,CAAE,KAA+B,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,GAAG,GAAG,IAAI,SAAS,GAAG,GAAG,CAAC,CAAC,EAC5G,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa;IAChD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IAClD,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC;IACrD,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC;IACzD,OAAO,SAAS,GAAG,UAAU,IAAI,SAAS,GAAG,UAAU,IAAI,SAAS,GAAG,UAAU,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,wCAAwC,CAAC,OAAe;IACtE,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,oCAAoC,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,8CAA8C,CAAC,CAAC;IACxF,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,WAA0C,EAAE;IAE5C,MAAM,eAAe,GACnB,WAAW,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAC5C,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACtC,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC/C,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;QACpC,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,cAAc,GAClB,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QAC9C,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;QACrC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEhC,IACE,eAAe;QACf,eAAe,KAAK,iCAAiC;QACrD,eAAe,KAAK,yBAAyB,EAC7C,CAAC;QACD,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,gBAAgB,EAAE,yBAAyB;YAC3C,2BAA2B,EAAE,sCAAsC;YACnE,eAAe;YACf,cAAc;YACd,MAAM,EAAE,YAAY,yBAAyB,cAAc,eAAe,EAAE;SAC7E,CAAC;IACJ,CAAC;IAED,IAAI,cAAc,IAAI,CAAC,wCAAwC,CAAC,cAAc,CAAC,EAAE,CAAC;QAChF,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,gBAAgB,EAAE,yBAAyB;YAC3C,2BAA2B,EAAE,sCAAsC;YACnE,eAAe;YACf,cAAc;YACd,MAAM,EAAE,6CAA6C,sCAAsC,cAAc,cAAc,EAAE;SAC1H,CAAC;IACJ,CAAC;IAED,IAAI,eAAe,IAAI,cAAc,EAAE,CAAC;QACtC,OAAO;YACL,MAAM,EAAE,YAAY;YACpB,gBAAgB,EAAE,yBAAyB;YAC3C,2BAA2B,EAAE,sCAAsC;YACnE,eAAe;YACf,cAAc;SACf,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,gBAAgB,EAAE,yBAAyB;QAC3C,2BAA2B,EAAE,sCAAsC;QACnE,MAAM,EAAE,uEAAuE;KAChF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,QAAuC,EACvC,YAAY,GAAG,IAAI;IAEnB,MAAM,aAAa,GAAG,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,aAAa,CAAC,MAAM,KAAK,cAAc,IAAI,CAAC,YAAY,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;QACpG,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../../src/runtime/compatibility.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,10 @@ export declare const ApiErrorBody: z.ZodObject<{
4
4
  }, z.core.$strip>;
5
5
  /**
6
6
  * Derive a human-readable message from a normalized FastAPI error detail.
7
- * Strings are surfaced as-is; validation arrays ({ msg }) are joined; anything
8
- * else yields `undefined` so callers fall back to a generic message.
7
+ * Strings are surfaced as-is; validation arrays ({ msg }) are joined; a flat
8
+ * object detail (`{ code, reason, message }`, e.g. `UploadRejectDetail` /
9
+ * `DownloadNotAvailableDetail` from media-service-m8) surfaces its `message`;
10
+ * anything else yields `undefined` so callers fall back to a generic message.
9
11
  */
10
12
  export declare function messageFromDetail(detail: unknown): string | undefined;
11
13
  export declare class ApiError extends Error {
@@ -20,4 +22,20 @@ export declare class ForbiddenError extends ApiError {
20
22
  constructor(message?: string);
21
23
  }
22
24
  export declare function normalizeFastApiError(payload: unknown): unknown;
25
+ /**
26
+ * Friendly copy for the stable machine tokens media-service-m8 raises on the
27
+ * upload-reject 422 (`UploadRejectDetail.reason`), the download-guard 409
28
+ * (`DownloadNotAvailableDetail.code`), and a per-row import result
29
+ * (`ImportObjectResult.reason`, `U9`/`U10`) — the first five import reasons
30
+ * are `U1`'s own upload-reject tokens, reused verbatim, so both surfaces
31
+ * resolve through this one map. Keyed by whichever of `reason`/`code` the
32
+ * detail carries.
33
+ */
34
+ export declare const UPLOAD_REJECT_REASON_MESSAGES: ReadonlyMap<string, string>;
35
+ /**
36
+ * Resolve friendly copy for a normalized FastAPI error `detail`: a known
37
+ * `reason`/`code` token maps to its friendly string; otherwise fall back to
38
+ * `messageFromDetail`, then to the caller-supplied generic `fallback`.
39
+ */
40
+ export declare function friendlyReasonMessage(detail: unknown, fallback: string): string;
23
41
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/runtime/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;iBAEvB,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAarE;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;gBAEb,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM;CAM9D;AAED,qBAAa,oBAAqB,SAAQ,QAAQ;gBACpC,OAAO,SAA4B;CAIhD;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,OAAO,SAAsD;CAI1E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAG/D"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/runtime/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;iBAEvB,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAkBrE;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;gBAEb,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM;CAM9D;AAED,qBAAa,oBAAqB,SAAQ,QAAQ;gBACpC,OAAO,SAA4B;CAIhD;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,OAAO,SAAsD;CAI1E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAG/D;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAcpE,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAa/E"}
@@ -4,8 +4,10 @@ export const ApiErrorBody = z.object({
4
4
  });
5
5
  /**
6
6
  * Derive a human-readable message from a normalized FastAPI error detail.
7
- * Strings are surfaced as-is; validation arrays ({ msg }) are joined; anything
8
- * else yields `undefined` so callers fall back to a generic message.
7
+ * Strings are surfaced as-is; validation arrays ({ msg }) are joined; a flat
8
+ * object detail (`{ code, reason, message }`, e.g. `UploadRejectDetail` /
9
+ * `DownloadNotAvailableDetail` from media-service-m8) surfaces its `message`;
10
+ * anything else yields `undefined` so callers fall back to a generic message.
9
11
  */
10
12
  export function messageFromDetail(detail) {
11
13
  if (typeof detail === "string" && detail.trim())
@@ -18,6 +20,12 @@ export function messageFromDetail(detail) {
18
20
  .filter((part) => part !== null);
19
21
  if (parts.length)
20
22
  return parts.join("; ");
23
+ return undefined;
24
+ }
25
+ if (detail && typeof detail === "object" && "message" in detail) {
26
+ const message = detail.message;
27
+ if (typeof message === "string" && message.trim())
28
+ return message;
21
29
  }
22
30
  return undefined;
23
31
  }
@@ -47,4 +55,47 @@ export function normalizeFastApiError(payload) {
47
55
  const parsed = ApiErrorBody.safeParse(payload);
48
56
  return parsed.success ? parsed.data.detail : payload;
49
57
  }
58
+ /**
59
+ * Friendly copy for the stable machine tokens media-service-m8 raises on the
60
+ * upload-reject 422 (`UploadRejectDetail.reason`), the download-guard 409
61
+ * (`DownloadNotAvailableDetail.code`), and a per-row import result
62
+ * (`ImportObjectResult.reason`, `U9`/`U10`) — the first five import reasons
63
+ * are `U1`'s own upload-reject tokens, reused verbatim, so both surfaces
64
+ * resolve through this one map. Keyed by whichever of `reason`/`code` the
65
+ * detail carries.
66
+ */
67
+ export const UPLOAD_REJECT_REASON_MESSAGES = new Map([
68
+ ["size_exceeded", "This file is larger than the allowed size limit."],
69
+ ["mime_mismatch", "This file type is not allowed for the selected category."],
70
+ ["sha256_mismatch", "The uploaded file did not match its expected checksum."],
71
+ ["quota_bytes_exceeded", "You have reached your storage quota."],
72
+ ["quota_objects_exceeded", "You have reached the maximum number of files allowed."],
73
+ ["scan_not_clean", "This file was rejected because it failed the virus scan."],
74
+ // Import-only outcomes (`ImportRowReason`).
75
+ ["missing_bytes", "This item has no bytes to import (manifest-only, no local copy)."],
76
+ ["already_exists", "This item already exists in your library."],
77
+ ["id_conflict", "This item conflicts with an existing record you do not own."],
78
+ ["unsupported_mime", "This file type is not supported for import."],
79
+ ["invalid_metadata", "This item's metadata could not be read."],
80
+ ["storage_error", "A storage error prevented this file from being imported."]
81
+ ]);
82
+ /**
83
+ * Resolve friendly copy for a normalized FastAPI error `detail`: a known
84
+ * `reason`/`code` token maps to its friendly string; otherwise fall back to
85
+ * `messageFromDetail`, then to the caller-supplied generic `fallback`.
86
+ */
87
+ export function friendlyReasonMessage(detail, fallback) {
88
+ if (detail && typeof detail === "object" && !Array.isArray(detail)) {
89
+ const record = detail;
90
+ const key = typeof record.reason === "string"
91
+ ? record.reason
92
+ : typeof record.code === "string"
93
+ ? record.code
94
+ : undefined;
95
+ const known = key ? UPLOAD_REJECT_REASON_MESSAGES.get(key) : undefined;
96
+ if (known)
97
+ return known;
98
+ }
99
+ return messageFromDetail(detail) ?? fallback;
100
+ }
50
101
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/runtime/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACpB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAe;IAC/C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM;aACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAK,IAAyB,CAAC,GAAG;YACjF,CAAC,CAAC,MAAM,CAAE,IAAyB,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,IAAI,CACT;aACA,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACnD,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,MAAM,CAAS;IACf,MAAM,CAAU;IAEzB,YAAY,MAAc,EAAE,MAAe,EAAE,OAAgB;QAC3D,KAAK,CAAC,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,0BAA0B,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,QAAQ;IAChD,YAAY,OAAO,GAAG,yBAAyB;QAC7C,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,OAAO,GAAG,mDAAmD;QACvE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/runtime/errors.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ export * from "./useMediaObject.js";
3
3
  export * from "./useMediaUpload.js";
4
4
  export * from "./useMediaVariants.js";
5
5
  export * from "./useMediaPresets.js";
6
+ export * from "./useMediaCategories.js";
6
7
  export * from "./useMediaAdmin.js";
7
8
  export * from "./useDownloadUrl.js";
9
+ export * from "./useMediaTransfer.js";
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC"}
@@ -3,6 +3,8 @@ export * from "./useMediaObject.js";
3
3
  export * from "./useMediaUpload.js";
4
4
  export * from "./useMediaVariants.js";
5
5
  export * from "./useMediaPresets.js";
6
+ export * from "./useMediaCategories.js";
6
7
  export * from "./useMediaAdmin.js";
7
8
  export * from "./useDownloadUrl.js";
9
+ export * from "./useMediaTransfer.js";
8
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/runtime/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/runtime/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { type UseMutationResult } from "@tanstack/react-query";
2
+ import type { CategoryCreate, CategoryNode, CategoryPublic, CategoryUpdate } from "../schemas.js";
3
+ type UpdateCategoryVariables = {
4
+ id: number;
5
+ body: CategoryUpdate;
6
+ };
7
+ type CreateCategoryMutation = UseMutationResult<CategoryPublic, unknown, CategoryCreate>;
8
+ type UpdateCategoryMutation = UseMutationResult<CategoryPublic, unknown, UpdateCategoryVariables>;
9
+ type RemoveCategoryMutation = UseMutationResult<void, unknown, number>;
10
+ export type UseCategoryTree = {
11
+ tree: CategoryNode[];
12
+ count: number;
13
+ loading: boolean;
14
+ error: unknown;
15
+ reload: () => Promise<void>;
16
+ create: (body: CategoryCreate) => Promise<CategoryPublic>;
17
+ update: (id: number, body: CategoryUpdate) => Promise<CategoryPublic>;
18
+ remove: (id: number) => Promise<void>;
19
+ createMutation: CreateCategoryMutation;
20
+ updateMutation: UpdateCategoryMutation;
21
+ removeMutation: RemoveCategoryMutation;
22
+ };
23
+ /**
24
+ * The caller's nested user category tree, plus create/update/delete
25
+ * mutations that invalidate it exactly. This is the data layer the tree view
26
+ * (`U7`) composes; it renders nothing itself.
27
+ */
28
+ export declare function useCategoryTree(): UseCategoryTree;
29
+ export {};
30
+ //# sourceMappingURL=useMediaCategories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMediaCategories.d.ts","sourceRoot":"","sources":["../../../../src/runtime/hooks/useMediaCategories.ts"],"names":[],"mappings":"AACA,OAAO,EAAyC,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAGtG,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAElG,KAAK,uBAAuB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;CACtB,CAAC;AACF,KAAK,sBAAsB,GAAG,iBAAiB,CAAC,cAAc,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;AACzF,KAAK,sBAAsB,GAAG,iBAAiB,CAAC,cAAc,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;AAClG,KAAK,sBAAsB,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAEvE,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1D,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACtE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,cAAc,EAAE,sBAAsB,CAAC;IACvC,cAAc,EAAE,sBAAsB,CAAC;IACvC,cAAc,EAAE,sBAAsB,CAAC;CACxC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,eAAe,CA8DjD"}
@@ -0,0 +1,56 @@
1
+ import { useCallback } from "react";
2
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
3
+ import { createCategory, deleteCategory, getCategoryTree, updateCategory } from "../api/categories.js";
4
+ import { mediaKeys } from "../queryKeys.js";
5
+ /**
6
+ * The caller's nested user category tree, plus create/update/delete
7
+ * mutations that invalidate it exactly. This is the data layer the tree view
8
+ * (`U7`) composes; it renders nothing itself.
9
+ */
10
+ export function useCategoryTree() {
11
+ const queryClient = useQueryClient();
12
+ const queryKey = mediaKeys.categoryTree();
13
+ const query = useQuery({
14
+ queryKey,
15
+ queryFn: getCategoryTree
16
+ });
17
+ const invalidate = useCallback(() => queryClient.invalidateQueries({ queryKey, exact: true }), [queryClient, queryKey]);
18
+ const createMutation = useMutation({
19
+ mutationFn: createCategory,
20
+ onSuccess: invalidate
21
+ });
22
+ const updateMutation = useMutation({
23
+ mutationFn: ({ id, body }) => updateCategory(id, body),
24
+ onSuccess: invalidate
25
+ });
26
+ const removeMutation = useMutation({
27
+ mutationFn: async (id) => {
28
+ await deleteCategory(id);
29
+ },
30
+ onSuccess: invalidate
31
+ });
32
+ const { refetch } = query;
33
+ const { mutateAsync: createCategoryAsync } = createMutation;
34
+ const { mutateAsync: updateCategoryAsync } = updateMutation;
35
+ const { mutateAsync: removeCategoryAsync } = removeMutation;
36
+ const reload = useCallback(async () => {
37
+ await refetch();
38
+ }, [refetch]);
39
+ const create = useCallback((body) => createCategoryAsync(body), [createCategoryAsync]);
40
+ const update = useCallback((id, body) => updateCategoryAsync({ id, body }), [updateCategoryAsync]);
41
+ const remove = useCallback((id) => removeCategoryAsync(id), [removeCategoryAsync]);
42
+ return {
43
+ tree: query.data?.data ?? [],
44
+ count: query.data?.count ?? 0,
45
+ loading: query.isFetching,
46
+ error: query.error ?? null,
47
+ reload,
48
+ create,
49
+ update,
50
+ remove,
51
+ createMutation,
52
+ updateMutation,
53
+ removeMutation
54
+ };
55
+ }
56
+ //# sourceMappingURL=useMediaCategories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMediaCategories.js","sourceRoot":"","sources":["../../../../src/runtime/hooks/useMediaCategories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAA0B,MAAM,uBAAuB,CAAC;AACtG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAyB5C;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC;QACrB,QAAQ;QACR,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,WAAW,CAC5B,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAC9D,CAAC,WAAW,EAAE,QAAQ,CAAC,CACxB,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAA0C;QAC1E,UAAU,EAAE,cAAc;QAC1B,SAAS,EAAE,UAAU;KACtB,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,WAAW,CAAmD;QACnF,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC;QACtD,SAAS,EAAE,UAAU;KACtB,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,WAAW,CAAwB;QACxD,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACvB,MAAM,cAAc,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,SAAS,EAAE,UAAU;KACtB,CAAC,CAAC;IAEH,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,cAAc,CAAC;IAC5D,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,cAAc,CAAC;IAC5D,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,cAAc,CAAC;IAE5D,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACpC,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,IAAoB,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EACnD,CAAC,mBAAmB,CAAC,CACtB,CAAC;IACF,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,EAAU,EAAE,IAAoB,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EACvE,CAAC,mBAAmB,CAAC,CACtB,CAAC;IACF,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE3F,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE;QAC5B,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;QAC7B,OAAO,EAAE,KAAK,CAAC,UAAU;QACzB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,cAAc;QACd,cAAc;QACd,cAAc;KACf,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMediaObjects.d.ts","sourceRoot":"","sources":["../../../../src/runtime/hooks/useMediaObjects.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAsB,MAAM,eAAe,CAAC;AAE7F,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC;AAkBF,wBAAgB,eAAe,CAAC,MAAM,GAAE,gBAAqB,GAAG,eAAe,CAqF9E"}
1
+ {"version":3,"file":"useMediaObjects.d.ts","sourceRoot":"","sources":["../../../../src/runtime/hooks/useMediaObjects.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAsB,MAAM,eAAe,CAAC;AAE7F,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC;AAkBF,wBAAgB,eAAe,CAAC,MAAM,GAAE,gBAAqB,GAAG,eAAe,CAmG9E"}
@@ -15,7 +15,13 @@ function latestCount(data) {
15
15
  }
16
16
  export function useMediaObjects(params = {}) {
17
17
  const queryClient = useQueryClient();
18
- const { category, visibility, status, mime_prefix, created_from, created_to, q, sort_by, order, limit, owner_user_id, include_deleted } = params;
18
+ const { category, visibility, status, mime_prefix, created_from, created_to, q, sort_by, order, limit, owner_user_id, include_deleted,
19
+ // Branch filter over the user category tree. These three are memoized by the
20
+ // same explicit-name discipline as everything above: a param that is not
21
+ // destructured here, copied into `listParams` **and** listed in the
22
+ // dependency array below never changes the query key, so selecting a branch
23
+ // would silently keep serving the previous branch's page.
24
+ category_id, include_descendants, uncategorized } = params;
19
25
  const listParams = useMemo(() => listParamsWithoutCursor({
20
26
  category,
21
27
  visibility,
@@ -28,12 +34,17 @@ export function useMediaObjects(params = {}) {
28
34
  order,
29
35
  limit,
30
36
  owner_user_id,
31
- include_deleted
37
+ include_deleted,
38
+ category_id,
39
+ include_descendants,
40
+ uncategorized
32
41
  }), [
33
42
  category,
43
+ category_id,
34
44
  created_from,
35
45
  created_to,
36
46
  include_deleted,
47
+ include_descendants,
37
48
  limit,
38
49
  mime_prefix,
39
50
  order,
@@ -41,6 +52,7 @@ export function useMediaObjects(params = {}) {
41
52
  q,
42
53
  sort_by,
43
54
  status,
55
+ uncategorized,
44
56
  visibility
45
57
  ]);
46
58
  const queryKey = useMemo(() => mediaKeys.objects(listParams), [listParams]);
@@ -1 +1 @@
1
- {"version":3,"file":"useMediaObjects.js","sourceRoot":"","sources":["../../../../src/runtime/hooks/useMediaObjects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAe5C,SAAS,uBAAuB,CAAC,MAAwB;IACvD,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,MAAM,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,IAAuE;IAC3F,OAAO,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,WAAW,CAAC,IAAuE;IAC1F,OAAO,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAA2B,EAAE;IAC3D,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,EACJ,QAAQ,EACR,UAAU,EACV,MAAM,EACN,WAAW,EACX,YAAY,EACZ,UAAU,EACV,CAAC,EACD,OAAO,EACP,KAAK,EACL,KAAK,EACL,aAAa,EACb,eAAe,EAChB,GAAG,MAAM,CAAC;IACX,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,uBAAuB,CAAC;QAC5B,QAAQ;QACR,UAAU;QACV,MAAM;QACN,WAAW;QACX,YAAY;QACZ,UAAU;QACV,CAAC;QACD,OAAO;QACP,KAAK;QACL,KAAK;QACL,aAAa;QACb,eAAe;KAChB,CAAC,EACF;QACE,QAAQ;QACR,YAAY;QACZ,UAAU;QACV,eAAe;QACf,KAAK;QACL,WAAW;QACX,KAAK;QACL,aAAa;QACb,CAAC;QACD,OAAO;QACP,MAAM;QACN,UAAU;KACX,CACF,CAAC;IACF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,gBAAgB,CAM5B;QACA,QAAQ;QACR,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,SAAS,IAAI,SAAS,EAAE,CAAC;QAC1F,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,IAAI,SAAS;KAClE,CAAC,CAAC;IACH,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAChC,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC/D,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC;IAC3C,qBAAqB,CAAC,OAAO,GAAG,KAAK,CAAC,kBAAkB,CAAC;IAEzD,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,IAAI,EAAE;QACT,MAAM,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC,EACD,CAAC,WAAW,EAAE,QAAQ,CAAC,CACxB,CAAC;IACF,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACtC,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,qBAAqB,CAAC,OAAO;YAAE,OAAO;QACrE,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO;QACL,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/B,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9B,OAAO,EAAE,KAAK,CAAC,UAAU;QACzB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,OAAO,EAAE,KAAK,CAAC,WAAW;QAC1B,OAAO;QACP,QAAQ;KACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"useMediaObjects.js","sourceRoot":"","sources":["../../../../src/runtime/hooks/useMediaObjects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { type UseMutationResult } from "@tanstack/react-query";
2
+ import type { ExportFormat, ExportJobPublic, ExportManifest, ImportFormat, ImportReport, ObjectListParams } from "../schemas.js";
3
+ type StartExportVariables = {
4
+ format: ExportFormat;
5
+ filters?: ObjectListParams;
6
+ };
7
+ type ExportMutation = UseMutationResult<ExportManifest | ExportJobPublic, unknown, StartExportVariables>;
8
+ type StartImportVariables = {
9
+ format: ImportFormat;
10
+ file: File | Blob;
11
+ };
12
+ type ImportMutation = UseMutationResult<ImportReport, unknown, StartImportVariables>;
13
+ export type UseMediaTransfer = {
14
+ /** `null` before an export starts; the manifest, once a `manifest` export resolves. */
15
+ manifest: ExportManifest | null;
16
+ /** The archive job, refreshed by polling while `queued`/`processing`. */
17
+ exportJob: ExportJobPublic | null;
18
+ exportFormat: ExportFormat | null;
19
+ /** True while starting an export, or while an archive job is still active. */
20
+ exportPending: boolean;
21
+ exportError: unknown;
22
+ startExport: (format: ExportFormat, filters?: ObjectListParams) => Promise<void>;
23
+ /** Saves the fetched manifest as a local `.json` file. No-op before one exists. */
24
+ downloadManifest: (filename?: string) => void;
25
+ resetExport: () => void;
26
+ exportMutation: ExportMutation;
27
+ importReport: ImportReport | null;
28
+ importPending: boolean;
29
+ importError: unknown;
30
+ startImport: (format: ImportFormat, file: File | Blob) => Promise<ImportReport>;
31
+ resetImport: () => void;
32
+ importMutation: ImportMutation;
33
+ };
34
+ /**
35
+ * Data layer for the library's Import/Export control (`U10`). `manifest`
36
+ * export resolves inline; `archive` export is polled via `getExportJob`
37
+ * until it leaves `queued`/`processing`. A successful import invalidates the
38
+ * object list and the category tree, since it can create both.
39
+ */
40
+ export declare function useMediaTransfer(): UseMediaTransfer;
41
+ export {};
42
+ //# sourceMappingURL=useMediaTransfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMediaTransfer.d.ts","sourceRoot":"","sources":["../../../../src/runtime/hooks/useMediaTransfer.ts"],"names":[],"mappings":"AACA,OAAO,EAAyC,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAGtG,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAKvB,KAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,CAAC;AACF,KAAK,cAAc,GAAG,iBAAiB,CAAC,cAAc,GAAG,eAAe,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;AAEzG,KAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACnB,CAAC;AACF,KAAK,cAAc,GAAG,iBAAiB,CAAC,YAAY,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;AAkBrF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,uFAAuF;IACvF,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,yEAAyE;IACzE,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAClC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,8EAA8E;IAC9E,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,mFAAmF;IACnF,gBAAgB,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,cAAc,EAAE,cAAc,CAAC;IAE/B,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAChF,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CA+FnD"}
@@ -0,0 +1,106 @@
1
+ import { useCallback, useState } from "react";
2
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
3
+ import { getExportJob, startExport, startImport } from "../api/transfer.js";
4
+ import { mediaKeys } from "../queryKeys.js";
5
+ /** A caller may hold only one in-flight archive export, so this needs no polling. */
6
+ const ACTIVE_EXPORT_STATUSES = new Set(["queued", "processing"]);
7
+ /**
8
+ * Trigger a same-origin download of a JSON document without a server round
9
+ * trip — the manifest was already fetched and parsed, so this hands the
10
+ * browser a `Blob` URL rather than re-requesting the bytes.
11
+ */
12
+ function downloadJson(document_, filename) {
13
+ if (typeof window === "undefined" || typeof document === "undefined")
14
+ return;
15
+ const blob = new Blob([JSON.stringify(document_, null, 2)], { type: "application/json" });
16
+ const url = URL.createObjectURL(blob);
17
+ const anchor = window.document.createElement("a");
18
+ anchor.href = url;
19
+ anchor.download = filename;
20
+ anchor.click();
21
+ URL.revokeObjectURL(url);
22
+ }
23
+ /**
24
+ * Data layer for the library's Import/Export control (`U10`). `manifest`
25
+ * export resolves inline; `archive` export is polled via `getExportJob`
26
+ * until it leaves `queued`/`processing`. A successful import invalidates the
27
+ * object list and the category tree, since it can create both.
28
+ */
29
+ export function useMediaTransfer() {
30
+ const queryClient = useQueryClient();
31
+ const [manifest, setManifest] = useState(null);
32
+ const [exportFormat, setExportFormat] = useState(null);
33
+ const [jobId, setJobId] = useState(null);
34
+ const exportMutation = useMutation({
35
+ mutationFn: ({ format, filters }) => format === "archive" ? startExport("archive", filters) : startExport("manifest", filters),
36
+ onSuccess: (result, variables) => {
37
+ setExportFormat(variables.format);
38
+ if (variables.format === "archive") {
39
+ const job = result;
40
+ setManifest(null);
41
+ // Seed the poll query with the 202 response's own job row (`queued`)
42
+ // so `exportJob` reflects it immediately, rather than reading
43
+ // `undefined` until the first poll tick lands.
44
+ queryClient.setQueryData(mediaKeys.exportJob(job.id), job);
45
+ setJobId(job.id);
46
+ }
47
+ else {
48
+ setJobId(null);
49
+ setManifest(result);
50
+ }
51
+ }
52
+ });
53
+ const jobQueryKey = mediaKeys.exportJob(jobId ?? "");
54
+ const jobQuery = useQuery({
55
+ queryKey: jobQueryKey,
56
+ queryFn: () => getExportJob(jobId),
57
+ enabled: jobId != null,
58
+ refetchInterval: (query) => {
59
+ const currentStatus = query.state.data?.status;
60
+ return currentStatus && ACTIVE_EXPORT_STATUSES.has(currentStatus) ? 2000 : false;
61
+ }
62
+ });
63
+ const runStartExport = useCallback(async (format, filters) => {
64
+ await exportMutation.mutateAsync({ format, filters });
65
+ }, [exportMutation]);
66
+ const downloadManifest = useCallback((filename = "media-export-manifest.json") => {
67
+ if (manifest)
68
+ downloadJson(manifest, filename);
69
+ }, [manifest]);
70
+ const resetExport = useCallback(() => {
71
+ setManifest(null);
72
+ setJobId(null);
73
+ setExportFormat(null);
74
+ exportMutation.reset();
75
+ }, [exportMutation]);
76
+ const importMutation = useMutation({
77
+ mutationFn: ({ format, file }) => startImport(format, file),
78
+ onSuccess: () => {
79
+ // An import can create both objects and categories, so both caches
80
+ // that read them need to be dropped rather than surviving stale.
81
+ void queryClient.invalidateQueries({ queryKey: mediaKeys.objectLists() });
82
+ void queryClient.invalidateQueries({ queryKey: mediaKeys.categoryTree(), exact: true });
83
+ }
84
+ });
85
+ const runStartImport = useCallback((format, file) => importMutation.mutateAsync({ format, file }), [importMutation]);
86
+ const resetImport = useCallback(() => importMutation.reset(), [importMutation]);
87
+ const exportJob = exportFormat === "archive" ? jobQuery.data ?? null : null;
88
+ return {
89
+ manifest,
90
+ exportJob,
91
+ exportFormat,
92
+ exportPending: exportMutation.isPending || (exportJob != null && ACTIVE_EXPORT_STATUSES.has(exportJob.status)),
93
+ exportError: exportMutation.error ?? (exportFormat === "archive" ? jobQuery.error : null) ?? null,
94
+ startExport: runStartExport,
95
+ downloadManifest,
96
+ resetExport,
97
+ exportMutation,
98
+ importReport: importMutation.data ?? null,
99
+ importPending: importMutation.isPending,
100
+ importError: importMutation.error ?? null,
101
+ startImport: runStartImport,
102
+ resetImport,
103
+ importMutation
104
+ };
105
+ }
106
+ //# sourceMappingURL=useMediaTransfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMediaTransfer.js","sourceRoot":"","sources":["../../../../src/runtime/hooks/useMediaTransfer.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,9 @@ export declare const mediaKeys: {
8
8
  object: (objectId: string) => readonly ["media", "object", string];
9
9
  variants: (objectId: string) => readonly ["media", "variants", string];
10
10
  presets: () => readonly ["media", "presets"];
11
+ categoryTree: () => readonly ["media", "categories", "tree"];
11
12
  downloadUrl: (objectId: string) => readonly ["media", "download-url", string];
13
+ exportJob: (jobId: string) => readonly ["media", "export-job", string];
12
14
  adminStats: () => readonly ["media", "admin", "stats"];
13
15
  adminStaleUploads: <TParams extends QueryKeyParams>(params?: TParams) => readonly ["media", "admin", "stale-uploads", Readonly<Partial<TParams>>];
14
16
  adminOrphans: <TParams extends QueryKeyParams>(params?: TParams) => readonly ["media", "admin", "orphans", Readonly<Partial<TParams>>];
@@ -1 +1 @@
1
- {"version":3,"file":"queryKeys.d.ts","sourceRoot":"","sources":["../../../src/runtime/queryKeys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,KAAK,kBAAkB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AACvE,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAazD,eAAO,MAAM,SAAS;;;uBAGF,gBAAgB;uBACf,MAAM;yBACJ,MAAM;;4BAEH,MAAM;;wBAEV,OAAO,SAAS,cAAc,WAAW,OAAO;mBAErD,OAAO,SAAS,cAAc,WAAW,OAAO;;CAGhE,CAAC"}
1
+ {"version":3,"file":"queryKeys.d.ts","sourceRoot":"","sources":["../../../src/runtime/queryKeys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,KAAK,kBAAkB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AACvE,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAazD,eAAO,MAAM,SAAS;;;uBAGF,gBAAgB;uBACf,MAAM;yBACJ,MAAM;;;4BAGH,MAAM;uBACX,MAAM;;wBAEL,OAAO,SAAS,cAAc,WAAW,OAAO;mBAErD,OAAO,SAAS,cAAc,WAAW,OAAO;;CAGhE,CAAC"}
@@ -14,7 +14,9 @@ export const mediaKeys = {
14
14
  object: (objectId) => ["media", "object", objectId],
15
15
  variants: (objectId) => ["media", "variants", objectId],
16
16
  presets: () => ["media", "presets"],
17
+ categoryTree: () => ["media", "categories", "tree"],
17
18
  downloadUrl: (objectId) => ["media", "download-url", objectId],
19
+ exportJob: (jobId) => ["media", "export-job", jobId],
18
20
  adminStats: () => ["media", "admin", "stats"],
19
21
  adminStaleUploads: (params) => ["media", "admin", "stale-uploads", normalizeParams(params)],
20
22
  adminOrphans: (params) => ["media", "admin", "orphans", normalizeParams(params)],
@@ -1 +1 @@
1
- {"version":3,"file":"queryKeys.js","sourceRoot":"","sources":["../../../src/runtime/queryKeys.ts"],"names":[],"mappings":"AAIA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAoC,CAAC;AAE1E,SAAS,eAAe,CAAiC,MAAgB;IACvE,IAAI,CAAC,MAAM;QAAE,OAAO,YAA0C,CAAC;IAE/D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACnC,MAAM,CAAC,CAAC,KAAK,EAAiF,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;SACxH,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAExD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAA0C,CAAC;AAC7F,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAU;IAC7B,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,CAAU;IAChD,OAAO,EAAE,CAAC,SAA2B,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,CAAU;IAClG,MAAM,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAU;IACpE,QAAQ,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAU;IACxE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,CAAU;IAC5C,WAAW,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAU;IAC/E,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAU;IACtD,iBAAiB,EAAE,CAAiC,MAAgB,EAAE,EAAE,CACtE,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,CAAU;IACvE,YAAY,EAAE,CAAiC,MAAgB,EAAE,EAAE,CACjE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,CAAU;IACjE,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,CAAU;CACvE,CAAC"}
1
+ {"version":3,"file":"queryKeys.js","sourceRoot":"","sources":["../../../src/runtime/queryKeys.ts"],"names":[],"mappings":"AAIA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAoC,CAAC;AAE1E,SAAS,eAAe,CAAiC,MAAgB;IACvE,IAAI,CAAC,MAAM;QAAE,OAAO,YAA0C,CAAC;IAE/D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACnC,MAAM,CAAC,CAAC,KAAK,EAAiF,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;SACxH,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAExD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAA0C,CAAC;AAC7F,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAU;IAC7B,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,CAAU;IAChD,OAAO,EAAE,CAAC,SAA2B,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,CAAU;IAClG,MAAM,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAU;IACpE,QAAQ,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAU;IACxE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,CAAU;IAC5C,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAU;IAC5D,WAAW,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAU;IAC/E,SAAS,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAU;IACrE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAU;IACtD,iBAAiB,EAAE,CAAiC,MAAgB,EAAE,EAAE,CACtE,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,CAAU;IACvE,YAAY,EAAE,CAAiC,MAAgB,EAAE,EAAE,CACjE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,CAAU;IACjE,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,CAAU;CACvE,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Create/rename/reparent/delete over the caller's user category tree
3
+ * (`useCategoryTree`). Reparenting and deleting are plain form actions, not
4
+ * drag-and-drop, per the 2026-08-18 decision — this keeps the manager
5
+ * Sonnet-scale and sidesteps the a11y/touch surface a draggable tree would
6
+ * need. This component owns CRUD only; browsing/filtering the tree is `U7`'s
7
+ * job on `MediaLibrary`.
8
+ */
9
+ export declare function CategoryManager(): import("react").JSX.Element;
10
+ //# sourceMappingURL=CategoryManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategoryManager.d.ts","sourceRoot":"","sources":["../../../../src/runtime/react/CategoryManager.tsx"],"names":[],"mappings":"AAkQA;;;;;;;GAOG;AACH,wBAAgB,eAAe,gCA6C9B"}