@anvilkit/plugin-asset-manager 0.1.6 → 0.1.8

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 (251) hide show
  1. package/README.md +28 -20
  2. package/dist/adapters/data-url.d.cts +13 -0
  3. package/dist/adapters/data-url.d.cts.map +1 -1
  4. package/dist/adapters/data-url.d.ts +13 -0
  5. package/dist/adapters/data-url.d.ts.map +1 -1
  6. package/dist/adapters/in-memory.d.cts +8 -1
  7. package/dist/adapters/in-memory.d.cts.map +1 -1
  8. package/dist/adapters/in-memory.d.ts +8 -1
  9. package/dist/adapters/in-memory.d.ts.map +1 -1
  10. package/dist/i18n/entry.cjs +75 -0
  11. package/dist/i18n/entry.d.cts +15 -0
  12. package/dist/i18n/entry.d.cts.map +1 -0
  13. package/dist/i18n/entry.d.ts +15 -0
  14. package/dist/i18n/entry.d.ts.map +1 -0
  15. package/dist/i18n/entry.js +29 -0
  16. package/dist/i18n/provider.cjs +49 -0
  17. package/dist/i18n/provider.d.cts +20 -0
  18. package/dist/i18n/provider.d.cts.map +1 -0
  19. package/dist/i18n/provider.d.ts +20 -0
  20. package/dist/i18n/provider.d.ts.map +1 -0
  21. package/dist/i18n/provider.js +11 -0
  22. package/dist/index.cjs +7 -0
  23. package/dist/index.d.cts +11 -3
  24. package/dist/index.d.cts.map +1 -1
  25. package/dist/index.d.ts +11 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +2 -1
  28. package/dist/plugin.cjs +70 -5
  29. package/dist/plugin.d.cts +3 -2
  30. package/dist/plugin.d.cts.map +1 -1
  31. package/dist/plugin.d.ts +3 -2
  32. package/dist/plugin.d.ts.map +1 -1
  33. package/dist/plugin.js +70 -5
  34. package/dist/sources/composite-source.cjs +138 -0
  35. package/dist/sources/composite-source.d.cts +39 -0
  36. package/dist/sources/composite-source.d.cts.map +1 -0
  37. package/dist/sources/composite-source.d.ts +39 -0
  38. package/dist/sources/composite-source.d.ts.map +1 -0
  39. package/dist/sources/composite-source.js +100 -0
  40. package/dist/sources/federated-search.cjs +173 -0
  41. package/dist/sources/federated-search.d.cts +33 -0
  42. package/dist/sources/federated-search.d.cts.map +1 -0
  43. package/dist/sources/federated-search.d.ts +33 -0
  44. package/dist/sources/federated-search.d.ts.map +1 -0
  45. package/dist/sources/federated-search.js +123 -0
  46. package/dist/sources/provider.cjs +18 -0
  47. package/dist/sources/provider.d.cts +51 -0
  48. package/dist/sources/provider.d.cts.map +1 -0
  49. package/dist/sources/provider.d.ts +51 -0
  50. package/dist/sources/provider.d.ts.map +1 -0
  51. package/dist/sources/provider.js +1 -0
  52. package/dist/sources/unsplash/client.cjs +189 -0
  53. package/dist/sources/unsplash/client.d.cts +87 -0
  54. package/dist/sources/unsplash/client.d.cts.map +1 -0
  55. package/dist/sources/unsplash/client.d.ts +87 -0
  56. package/dist/sources/unsplash/client.d.ts.map +1 -0
  57. package/dist/sources/unsplash/client.js +151 -0
  58. package/dist/sources/unsplash/index.cjs +194 -0
  59. package/dist/sources/unsplash/index.d.cts +16 -0
  60. package/dist/sources/unsplash/index.d.cts.map +1 -0
  61. package/dist/sources/unsplash/index.d.ts +16 -0
  62. package/dist/sources/unsplash/index.d.ts.map +1 -0
  63. package/dist/sources/unsplash/index.js +150 -0
  64. package/dist/sources/unsplash/themes.cjs +141 -0
  65. package/dist/sources/unsplash/themes.d.cts +18 -0
  66. package/dist/sources/unsplash/themes.d.cts.map +1 -0
  67. package/dist/sources/unsplash/themes.d.ts +18 -0
  68. package/dist/sources/unsplash/themes.d.ts.map +1 -0
  69. package/dist/sources/unsplash/themes.js +93 -0
  70. package/dist/sources/unsplash/throttle-cache.cjs +86 -0
  71. package/dist/sources/unsplash/throttle-cache.d.cts +25 -0
  72. package/dist/sources/unsplash/throttle-cache.d.cts.map +1 -0
  73. package/dist/sources/unsplash/throttle-cache.d.ts +25 -0
  74. package/dist/sources/unsplash/throttle-cache.d.ts.map +1 -0
  75. package/dist/sources/unsplash/throttle-cache.js +45 -0
  76. package/dist/types/categories.cjs +18 -0
  77. package/dist/types/categories.d.cts +48 -0
  78. package/dist/types/categories.d.cts.map +1 -0
  79. package/dist/types/categories.d.ts +48 -0
  80. package/dist/types/categories.d.ts.map +1 -0
  81. package/dist/types/categories.js +1 -0
  82. package/dist/types/data-source.cjs +18 -0
  83. package/dist/types/data-source.d.cts +59 -0
  84. package/dist/types/data-source.d.cts.map +1 -0
  85. package/dist/types/data-source.d.ts +59 -0
  86. package/dist/types/data-source.d.ts.map +1 -0
  87. package/dist/types/data-source.js +1 -0
  88. package/dist/types/filter.cjs +18 -0
  89. package/dist/types/filter.d.cts +55 -0
  90. package/dist/types/filter.d.cts.map +1 -0
  91. package/dist/types/filter.d.ts +55 -0
  92. package/dist/types/filter.d.ts.map +1 -0
  93. package/dist/types/filter.js +1 -0
  94. package/dist/types/folders.cjs +42 -0
  95. package/dist/types/folders.d.cts +46 -0
  96. package/dist/types/folders.d.cts.map +1 -0
  97. package/dist/types/folders.d.ts +46 -0
  98. package/dist/types/folders.d.ts.map +1 -0
  99. package/dist/types/folders.js +4 -0
  100. package/dist/types/options.cjs +18 -0
  101. package/dist/types/options.d.cts +68 -0
  102. package/dist/types/options.d.cts.map +1 -0
  103. package/dist/types/options.d.ts +68 -0
  104. package/dist/types/options.d.ts.map +1 -0
  105. package/dist/types/options.js +1 -0
  106. package/dist/types/types.d.cts +21 -27
  107. package/dist/types/types.d.cts.map +1 -1
  108. package/dist/types/types.d.ts +21 -27
  109. package/dist/types/types.d.ts.map +1 -1
  110. package/dist/types/unsplash.cjs +18 -0
  111. package/dist/types/unsplash.d.cts +60 -0
  112. package/dist/types/unsplash.d.cts.map +1 -0
  113. package/dist/types/unsplash.d.ts +60 -0
  114. package/dist/types/unsplash.d.ts.map +1 -0
  115. package/dist/types/unsplash.js +1 -0
  116. package/dist/ui/AssetBrowser.cjs +183 -121
  117. package/dist/ui/AssetBrowser.d.cts +12 -1
  118. package/dist/ui/AssetBrowser.d.cts.map +1 -1
  119. package/dist/ui/AssetBrowser.d.ts +12 -1
  120. package/dist/ui/AssetBrowser.d.ts.map +1 -1
  121. package/dist/ui/AssetBrowser.js +183 -121
  122. package/dist/ui/AssetCommandPalette.cjs +20 -18
  123. package/dist/ui/AssetCommandPalette.d.cts.map +1 -1
  124. package/dist/ui/AssetCommandPalette.d.ts.map +1 -1
  125. package/dist/ui/AssetCommandPalette.js +20 -18
  126. package/dist/ui/AssetManagerUI.cjs +31 -17
  127. package/dist/ui/AssetManagerUI.d.cts +19 -3
  128. package/dist/ui/AssetManagerUI.d.cts.map +1 -1
  129. package/dist/ui/AssetManagerUI.d.ts +19 -3
  130. package/dist/ui/AssetManagerUI.d.ts.map +1 -1
  131. package/dist/ui/AssetManagerUI.js +31 -17
  132. package/dist/ui/DeleteAssetDialog.cjs +5 -3
  133. package/dist/ui/DeleteAssetDialog.d.cts.map +1 -1
  134. package/dist/ui/DeleteAssetDialog.d.ts.map +1 -1
  135. package/dist/ui/DeleteAssetDialog.js +5 -3
  136. package/dist/ui/DeleteFolderDialog.cjs +80 -0
  137. package/dist/ui/DeleteFolderDialog.d.cts +11 -0
  138. package/dist/ui/DeleteFolderDialog.d.cts.map +1 -0
  139. package/dist/ui/DeleteFolderDialog.d.ts +11 -0
  140. package/dist/ui/DeleteFolderDialog.d.ts.map +1 -0
  141. package/dist/ui/DeleteFolderDialog.js +42 -0
  142. package/dist/ui/EmptyFolderState.cjs +56 -0
  143. package/dist/ui/EmptyFolderState.d.cts +6 -0
  144. package/dist/ui/EmptyFolderState.d.cts.map +1 -0
  145. package/dist/ui/EmptyFolderState.d.ts +6 -0
  146. package/dist/ui/EmptyFolderState.d.ts.map +1 -0
  147. package/dist/ui/EmptyFolderState.js +18 -0
  148. package/dist/ui/FolderBreadcrumb.cjs +76 -0
  149. package/dist/ui/FolderBreadcrumb.d.cts +9 -0
  150. package/dist/ui/FolderBreadcrumb.d.cts.map +1 -0
  151. package/dist/ui/FolderBreadcrumb.d.ts +9 -0
  152. package/dist/ui/FolderBreadcrumb.d.ts.map +1 -0
  153. package/dist/ui/FolderBreadcrumb.js +38 -0
  154. package/dist/ui/FolderNameDialog.cjs +105 -0
  155. package/dist/ui/FolderNameDialog.d.cts +14 -0
  156. package/dist/ui/FolderNameDialog.d.cts.map +1 -0
  157. package/dist/ui/FolderNameDialog.d.ts +14 -0
  158. package/dist/ui/FolderNameDialog.d.ts.map +1 -0
  159. package/dist/ui/FolderNameDialog.js +67 -0
  160. package/dist/ui/FolderTree.cjs +85 -0
  161. package/dist/ui/FolderTree.d.cts +13 -0
  162. package/dist/ui/FolderTree.d.cts.map +1 -0
  163. package/dist/ui/FolderTree.d.ts +13 -0
  164. package/dist/ui/FolderTree.d.ts.map +1 -0
  165. package/dist/ui/FolderTree.js +44 -0
  166. package/dist/ui/MetadataPanel.cjs +23 -17
  167. package/dist/ui/MetadataPanel.d.cts.map +1 -1
  168. package/dist/ui/MetadataPanel.d.ts.map +1 -1
  169. package/dist/ui/MetadataPanel.js +23 -17
  170. package/dist/ui/MoveTargetPicker.cjs +87 -0
  171. package/dist/ui/MoveTargetPicker.d.cts +16 -0
  172. package/dist/ui/MoveTargetPicker.d.cts.map +1 -0
  173. package/dist/ui/MoveTargetPicker.d.ts +16 -0
  174. package/dist/ui/MoveTargetPicker.d.ts.map +1 -0
  175. package/dist/ui/MoveTargetPicker.js +49 -0
  176. package/dist/ui/ReplaceAssetDialog.cjs +19 -17
  177. package/dist/ui/ReplaceAssetDialog.d.cts +2 -1
  178. package/dist/ui/ReplaceAssetDialog.d.cts.map +1 -1
  179. package/dist/ui/ReplaceAssetDialog.d.ts +2 -1
  180. package/dist/ui/ReplaceAssetDialog.d.ts.map +1 -1
  181. package/dist/ui/ReplaceAssetDialog.js +19 -17
  182. package/dist/ui/UnsplashPanel.cjs +137 -0
  183. package/dist/ui/UnsplashPanel.d.cts +28 -0
  184. package/dist/ui/UnsplashPanel.d.cts.map +1 -0
  185. package/dist/ui/UnsplashPanel.d.ts +28 -0
  186. package/dist/ui/UnsplashPanel.d.ts.map +1 -0
  187. package/dist/ui/UnsplashPanel.js +99 -0
  188. package/dist/ui/UploadButton.cjs +12 -13
  189. package/dist/ui/UploadButton.d.cts +9 -2
  190. package/dist/ui/UploadButton.d.cts.map +1 -1
  191. package/dist/ui/UploadButton.d.ts +9 -2
  192. package/dist/ui/UploadButton.d.ts.map +1 -1
  193. package/dist/ui/UploadButton.js +12 -13
  194. package/dist/ui/index.cjs +41 -0
  195. package/dist/ui/index.d.cts +15 -0
  196. package/dist/ui/index.d.cts.map +1 -1
  197. package/dist/ui/index.d.ts +15 -0
  198. package/dist/ui/index.d.ts.map +1 -1
  199. package/dist/ui/index.js +8 -0
  200. package/dist/utils/data-source.cjs +190 -0
  201. package/dist/utils/data-source.d.cts +63 -0
  202. package/dist/utils/data-source.d.cts.map +1 -0
  203. package/dist/utils/data-source.d.ts +63 -0
  204. package/dist/utils/data-source.d.ts.map +1 -0
  205. package/dist/utils/data-source.js +149 -0
  206. package/dist/utils/errors.cjs +18 -0
  207. package/dist/utils/errors.d.cts +27 -0
  208. package/dist/utils/errors.d.cts.map +1 -1
  209. package/dist/utils/errors.d.ts +27 -0
  210. package/dist/utils/errors.d.ts.map +1 -1
  211. package/dist/utils/errors.js +16 -1
  212. package/dist/utils/folders.cjs +335 -0
  213. package/dist/utils/folders.d.cts +54 -0
  214. package/dist/utils/folders.d.cts.map +1 -0
  215. package/dist/utils/folders.d.ts +54 -0
  216. package/dist/utils/folders.d.ts.map +1 -0
  217. package/dist/utils/folders.js +297 -0
  218. package/dist/utils/header-action.cjs +1 -1
  219. package/dist/utils/header-action.d.cts.map +1 -1
  220. package/dist/utils/header-action.d.ts.map +1 -1
  221. package/dist/utils/header-action.js +1 -1
  222. package/dist/utils/registry.cjs +38 -12
  223. package/dist/utils/registry.d.cts +29 -1
  224. package/dist/utils/registry.d.cts.map +1 -1
  225. package/dist/utils/registry.d.ts +29 -1
  226. package/dist/utils/registry.d.ts.map +1 -1
  227. package/dist/utils/registry.js +31 -11
  228. package/dist/utils/resolver.cjs +5 -4
  229. package/dist/utils/resolver.d.cts.map +1 -1
  230. package/dist/utils/resolver.d.ts.map +1 -1
  231. package/dist/utils/resolver.js +5 -4
  232. package/dist/utils/studio-asset-source.cjs +13 -4
  233. package/dist/utils/studio-asset-source.d.cts +6 -1
  234. package/dist/utils/studio-asset-source.d.cts.map +1 -1
  235. package/dist/utils/studio-asset-source.d.ts +6 -1
  236. package/dist/utils/studio-asset-source.d.ts.map +1 -1
  237. package/dist/utils/studio-asset-source.js +9 -3
  238. package/dist/utils/validate-upload-result.d.cts +2 -1
  239. package/dist/utils/validate-upload-result.d.cts.map +1 -1
  240. package/dist/utils/validate-upload-result.d.ts +2 -1
  241. package/dist/utils/validate-upload-result.d.ts.map +1 -1
  242. package/dist/version.cjs +1 -1
  243. package/dist/version.d.cts +1 -1
  244. package/dist/version.d.ts +1 -1
  245. package/dist/version.js +1 -1
  246. package/i18n/messages/en.json +99 -0
  247. package/i18n/messages/ja.json +99 -0
  248. package/i18n/messages/ko.json +99 -0
  249. package/i18n/messages/zh.json +99 -0
  250. package/meta/config.json +1 -1
  251. package/package.json +19 -8
@@ -11,7 +11,7 @@
11
11
  * shared `AssetRegistry`. Mutation methods route back through the
12
12
  * registry so the IR resolver and the sidebar see the same data.
13
13
  */
14
- import type { StudioAssetKind, StudioAssetSource } from "@anvilkit/core/types";
14
+ import type { StudioAsset, StudioAssetKind, StudioAssetSource } from "@anvilkit/core/types";
15
15
  import type { AssetRegistry, UploadAdapterOptions, UploadResult } from "../types/types.js";
16
16
  /**
17
17
  * Default concurrency cap for batched uploads. Editors typically drag
@@ -43,6 +43,11 @@ export interface CreateStudioAssetSourceOptions {
43
43
  readonly maxConcurrentUploads?: number;
44
44
  }
45
45
  export declare function createStudioAssetSource(options: CreateStudioAssetSourceOptions): StudioAssetSource;
46
+ /**
47
+ * Project a registry `UploadResult` into the sidebar's `StudioAsset` shape.
48
+ * Exported so the composite source reuses the exact same projection.
49
+ */
50
+ export declare function toStudioAsset(entry: UploadResult, getThumbnail?: (entry: UploadResult) => string | undefined): StudioAsset;
46
51
  /**
47
52
  * Public alias for {@link inferAssetKind}. Preserved as the documented
48
53
  * Studio-side projection so existing imports keep working; library
@@ -1 +1 @@
1
- {"version":3,"file":"studio-asset-source.d.cts","sourceRoot":"","sources":["../../src/utils/studio-asset-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAEX,eAAe,EAGf,iBAAiB,EAGjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACX,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,MAAM,mBAAmB,CAAC;AAI3B;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAChB,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,oBAAoB,KAC1B,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,GAAG,SAAS,CAAC;IACpE;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,8BAA8B,GACrC,iBAAiB,CAqLnB;AA4BD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,CAEzE"}
1
+ {"version":3,"file":"studio-asset-source.d.cts","sourceRoot":"","sources":["../../src/utils/studio-asset-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACX,WAAW,EACX,eAAe,EAGf,iBAAiB,EAGjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACX,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,MAAM,mBAAmB,CAAC;AAI3B;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAChB,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,oBAAoB,KAC1B,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,GAAG,SAAS,CAAC;IACpE;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,8BAA8B,GACrC,iBAAiB,CAqLnB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,YAAY,EACnB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,GAAG,SAAS,GACxD,WAAW,CAqBb;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,CAEzE"}
@@ -11,7 +11,7 @@
11
11
  * shared `AssetRegistry`. Mutation methods route back through the
12
12
  * registry so the IR resolver and the sidebar see the same data.
13
13
  */
14
- import type { StudioAssetKind, StudioAssetSource } from "@anvilkit/core/types";
14
+ import type { StudioAsset, StudioAssetKind, StudioAssetSource } from "@anvilkit/core/types";
15
15
  import type { AssetRegistry, UploadAdapterOptions, UploadResult } from "../types/types.js";
16
16
  /**
17
17
  * Default concurrency cap for batched uploads. Editors typically drag
@@ -43,6 +43,11 @@ export interface CreateStudioAssetSourceOptions {
43
43
  readonly maxConcurrentUploads?: number;
44
44
  }
45
45
  export declare function createStudioAssetSource(options: CreateStudioAssetSourceOptions): StudioAssetSource;
46
+ /**
47
+ * Project a registry `UploadResult` into the sidebar's `StudioAsset` shape.
48
+ * Exported so the composite source reuses the exact same projection.
49
+ */
50
+ export declare function toStudioAsset(entry: UploadResult, getThumbnail?: (entry: UploadResult) => string | undefined): StudioAsset;
46
51
  /**
47
52
  * Public alias for {@link inferAssetKind}. Preserved as the documented
48
53
  * Studio-side projection so existing imports keep working; library
@@ -1 +1 @@
1
- {"version":3,"file":"studio-asset-source.d.ts","sourceRoot":"","sources":["../../src/utils/studio-asset-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAEX,eAAe,EAGf,iBAAiB,EAGjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACX,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,MAAM,mBAAmB,CAAC;AAI3B;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAChB,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,oBAAoB,KAC1B,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,GAAG,SAAS,CAAC;IACpE;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,8BAA8B,GACrC,iBAAiB,CAqLnB;AA4BD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,CAEzE"}
1
+ {"version":3,"file":"studio-asset-source.d.ts","sourceRoot":"","sources":["../../src/utils/studio-asset-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACX,WAAW,EACX,eAAe,EAGf,iBAAiB,EAGjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACX,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,MAAM,mBAAmB,CAAC;AAI3B;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAChB,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,oBAAoB,KAC1B,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,GAAG,SAAS,CAAC;IACpE;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,8BAA8B,GACrC,iBAAiB,CAqLnB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,YAAY,EACnB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,GAAG,SAAS,GACxD,WAAW,CAqBb;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,CAEzE"}
@@ -7,7 +7,7 @@ function createStudioAssetSource(options) {
7
7
  const project = (entry)=>toStudioAsset(entry, getThumbnail);
8
8
  const uploadListeners = new Set();
9
9
  const fanOut = (event)=>{
10
- for (const listener of uploadListeners)listener(event);
10
+ for (const subscriber of uploadListeners)safeNotify(subscriber, event);
11
11
  };
12
12
  return {
13
13
  list () {
@@ -47,7 +47,7 @@ function createStudioAssetSource(options) {
47
47
  let nextIndex = 0;
48
48
  let abortError;
49
49
  const emit = (event)=>{
50
- listener?.(event);
50
+ safeNotify(listener, event);
51
51
  fanOut(event);
52
52
  };
53
53
  const abortFromSignal = ()=>{
@@ -178,6 +178,12 @@ function deriveFallbackName(entry) {
178
178
  const idTail = entry.id.length > 12 ? `${entry.id.slice(0, 8)}…` : entry.id;
179
179
  return `Asset ${idTail}`;
180
180
  }
181
+ function safeNotify(listener, event) {
182
+ if (void 0 === listener) return;
183
+ try {
184
+ listener(event);
185
+ } catch {}
186
+ }
181
187
  function isAbortError(error) {
182
188
  if (null === error || "object" != typeof error) return false;
183
189
  const name = error.name;
@@ -189,4 +195,4 @@ function makeAbortError() {
189
195
  error.name = "AbortError";
190
196
  return error;
191
197
  }
192
- export { MAX_CONCURRENT_UPLOADS, createStudioAssetSource, inferStudioAssetKind };
198
+ export { MAX_CONCURRENT_UPLOADS, createStudioAssetSource, inferStudioAssetKind, toStudioAsset };
@@ -1,4 +1,5 @@
1
- import type { AssetManagerOptions, UploadResult } from "../types/types.js";
1
+ import type { AssetManagerOptions } from "../types/options.js";
2
+ import type { UploadResult } from "../types/types.js";
2
3
  /**
3
4
  * Subset of {@link AssetManagerOptions} consulted by the trust boundary.
4
5
  * `urlAllowlist` is intentionally absent — Phase 4 replaced the raw
@@ -1 +1 @@
1
- {"version":3,"file":"validate-upload-result.d.cts","sourceRoot":"","sources":["../../src/utils/validate-upload-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAM3E;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC7C,mBAAmB,EACnB,uBAAuB,GAAG,2BAA2B,CACrD,CAAC;AAEF,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,2BAAgC,GACvC,YAAY,CAqBd"}
1
+ {"version":3,"file":"validate-upload-result.d.cts","sourceRoot":"","sources":["../../src/utils/validate-upload-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtD;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC7C,mBAAmB,EACnB,uBAAuB,GAAG,2BAA2B,CACrD,CAAC;AAEF,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,2BAAgC,GACvC,YAAY,CAqBd"}
@@ -1,4 +1,5 @@
1
- import type { AssetManagerOptions, UploadResult } from "../types/types.js";
1
+ import type { AssetManagerOptions } from "../types/options.js";
2
+ import type { UploadResult } from "../types/types.js";
2
3
  /**
3
4
  * Subset of {@link AssetManagerOptions} consulted by the trust boundary.
4
5
  * `urlAllowlist` is intentionally absent — Phase 4 replaced the raw
@@ -1 +1 @@
1
- {"version":3,"file":"validate-upload-result.d.ts","sourceRoot":"","sources":["../../src/utils/validate-upload-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAM3E;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC7C,mBAAmB,EACnB,uBAAuB,GAAG,2BAA2B,CACrD,CAAC;AAEF,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,2BAAgC,GACvC,YAAY,CAqBd"}
1
+ {"version":3,"file":"validate-upload-result.d.ts","sourceRoot":"","sources":["../../src/utils/validate-upload-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtD;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC7C,mBAAmB,EACnB,uBAAuB,GAAG,2BAA2B,CACrD,CAAC;AAEF,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,2BAAgC,GACvC,YAAY,CAqBd"}
package/dist/version.cjs CHANGED
@@ -27,7 +27,7 @@ var __webpack_require__ = {};
27
27
  })();
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
- const ASSET_MANAGER_VERSION = "0.1.6";
30
+ const ASSET_MANAGER_VERSION = "0.1.8";
31
31
  __webpack_require__.d(__webpack_exports__, {}, {
32
32
  ASSET_MANAGER_VERSION: ASSET_MANAGER_VERSION
33
33
  });
@@ -16,5 +16,5 @@
16
16
  * constant ships only the version. Mirrors `@anvilkit/core`'s
17
17
  * `runtime/version.ts`, which makes the same call.
18
18
  */
19
- export declare const ASSET_MANAGER_VERSION = "0.1.6";
19
+ export declare const ASSET_MANAGER_VERSION = "0.1.8";
20
20
  //# sourceMappingURL=version.d.cts.map
package/dist/version.d.ts CHANGED
@@ -16,5 +16,5 @@
16
16
  * constant ships only the version. Mirrors `@anvilkit/core`'s
17
17
  * `runtime/version.ts`, which makes the same call.
18
18
  */
19
- export declare const ASSET_MANAGER_VERSION = "0.1.6";
19
+ export declare const ASSET_MANAGER_VERSION = "0.1.8";
20
20
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- const ASSET_MANAGER_VERSION = "0.1.6";
1
+ const ASSET_MANAGER_VERSION = "0.1.8";
2
2
  export { ASSET_MANAGER_VERSION };
@@ -0,0 +1,99 @@
1
+ {
2
+ "assetManager.action.upload": "Upload asset",
3
+ "assetManager.button.cancel": "Cancel",
4
+ "assetManager.button.delete": "Delete",
5
+ "assetManager.button.replace": "Replace",
6
+ "assetManager.button.create": "Create",
7
+ "assetManager.button.edit": "Edit",
8
+ "assetManager.button.save": "Save",
9
+ "assetManager.button.loadMore": "Load more",
10
+ "assetManager.button.deleteContents": "Delete contents",
11
+ "assetManager.dialog.deleteTitle": "Delete asset?",
12
+ "assetManager.dialog.deleteDescription": "will be removed from the registry. References to it in the page will fail to resolve.",
13
+ "assetManager.dialog.deleteReferenced": "This asset is referenced in {count} {nodes}.",
14
+ "assetManager.dialog.deleteProgress": "Deleting…",
15
+ "assetManager.dialog.replaceTitle": "Replace asset?",
16
+ "assetManager.dialog.replaceDescription": "Pick a file to replace {label} with. Existing asset:// references will resolve to the new bytes.",
17
+ "assetManager.dialog.replaceDescriptionGeneric": "Pick a file to replace this asset with.",
18
+ "assetManager.dialog.replaceFileLabel": "Replacement file",
19
+ "assetManager.dialog.chooseFile": "Choose file",
20
+ "assetManager.dialog.chooseFileDifferent": "Choose a different file",
21
+ "assetManager.dialog.fileSelected": "Selected: {name}",
22
+ "assetManager.dialog.noFileSelected": "No file selected.",
23
+ "assetManager.dialog.replaceProgress": "Replacing…",
24
+ "assetManager.dialog.newFolderTitle": "New folder",
25
+ "assetManager.dialog.folderSaveError": "Could not save the folder.",
26
+ "assetManager.dialog.folderNamePlaceholder": "Folder name",
27
+ "assetManager.dialog.saveProgress": "Saving…",
28
+ "assetManager.dialog.deleteFolderTitle": "Delete folder?",
29
+ "assetManager.dialog.deleteFolderDescription": "\"{name}\" will be removed. By default its contents move up to the parent folder, so nothing is deleted. Choose \"Delete contents\" to remove its {count} {assets} too.",
30
+ "assetManager.dialog.removeFolder": "Remove folder",
31
+ "assetManager.dialog.removeProgress": "Removing…",
32
+ "assetManager.dialog.editTitle": "Edit asset",
33
+ "assetManager.dialog.moveTitle": "Move to folder",
34
+ "assetManager.form.nameLabel": "Name",
35
+ "assetManager.form.tagsLabel": "Tags",
36
+ "assetManager.form.tagsListLabel": "Current tags",
37
+ "assetManager.form.removeTag": "Remove tag {tag}",
38
+ "assetManager.form.addTagPlaceholder": "Add a tag and press Enter",
39
+ "assetManager.browser.title": "Asset browser",
40
+ "assetManager.browser.subtitle": "Validated assets currently registered in memory.",
41
+ "assetManager.browser.searchLabel": "Search assets",
42
+ "assetManager.browser.searchPlaceholder": "Search by name, tag, or MIME",
43
+ "assetManager.browser.filterLabel": "Asset kind filters",
44
+ "assetManager.browser.filterByKind": "Filter {kind} assets",
45
+ "assetManager.browser.assetsLabel": "Assets",
46
+ "assetManager.browser.insert": "Insert asset {id}",
47
+ "assetManager.browser.edit": "Edit asset {id}",
48
+ "assetManager.browser.replace": "Replace asset {id}",
49
+ "assetManager.browser.delete": "Delete asset {id}",
50
+ "assetManager.browser.unknownMime": "unknown type",
51
+ "assetManager.browser.empty": "No assets uploaded yet.",
52
+ "assetManager.browser.emptyFiltered": "No assets match the current filters.",
53
+ "assetManager.palette.title": "Find an asset",
54
+ "assetManager.palette.subtitle": "Search by name, id, MIME type, or tag.",
55
+ "assetManager.palette.searchLabel": "Asset search query",
56
+ "assetManager.palette.searchPlaceholder": "Type to search…",
57
+ "assetManager.palette.resultsLabel": "Asset results",
58
+ "assetManager.palette.noMatches": "No matches.",
59
+ "assetManager.kind.image": "image",
60
+ "assetManager.kind.video": "video",
61
+ "assetManager.kind.audio": "audio",
62
+ "assetManager.kind.font": "font",
63
+ "assetManager.kind.document": "document",
64
+ "assetManager.ui.title": "Asset manager",
65
+ "assetManager.ui.subtitle": "Upload via the configured adapter, then insert a validated asset reference.",
66
+ "assetManager.upload.buttonLabel": "Upload asset file",
67
+ "assetManager.upload.button": "Upload asset",
68
+ "assetManager.upload.chooseLabel": "Choose files to upload",
69
+ "assetManager.upload.progress": "Uploading…",
70
+ "assetManager.upload.progressLabel": "Batch upload progress",
71
+ "assetManager.upload.status": "Uploading {completed} of {total}",
72
+ "assetManager.upload.statusProgress": "Uploading {completed} of {total}…",
73
+ "assetManager.upload.statusIdle": "Accepted files upload through the configured adapter.",
74
+ "assetManager.upload.toFolder": "Drop files here or upload",
75
+ "assetManager.folder.root": "All assets",
76
+ "assetManager.folder.empty": "This folder is empty.",
77
+ "assetManager.breadcrumb.label": "Folders",
78
+ "assetManager.tree.label": "Folders",
79
+ "assetManager.tree.dropHint": "Open {name} — or drop assets here to move them in",
80
+ "assetManager.unsplash.disabled": "Connect Unsplash by adding an access key via a server proxy.",
81
+ "assetManager.unsplash.loading": "Loading photos…",
82
+ "assetManager.unsplash.searchPlaceholder": "Search Unsplash…",
83
+ "assetManager.unsplash.themesLabel": "Unsplash themes",
84
+ "assetManager.unsplash.rateLimited": "Unsplash rate limit reached. Try again shortly.",
85
+ "assetManager.unsplash.error": "Couldn't reach Unsplash. Retry.",
86
+ "assetManager.unsplash.empty": "Search Unsplash to browse photos.",
87
+ "assetManager.unsplash.insert": "Insert photo by {photographer}",
88
+ "assetManager.source.library": "Library",
89
+ "assetManager.source.unsplash": "Unsplash",
90
+ "assetManager.unsplash.theme.all": "All",
91
+ "assetManager.unsplash.theme.nature": "Nature",
92
+ "assetManager.unsplash.theme.architecture": "Architecture",
93
+ "assetManager.unsplash.theme.business": "Business",
94
+ "assetManager.unsplash.theme.food": "Food",
95
+ "assetManager.unsplash.theme.technology": "Technology",
96
+ "assetManager.unsplash.theme.travel": "Travel",
97
+ "assetManager.unsplash.theme.texture": "Texture",
98
+ "assetManager.unsplash.theme.people": "People"
99
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "assetManager.action.upload": "アセットをアップロード",
3
+ "assetManager.button.cancel": "キャンセル",
4
+ "assetManager.button.delete": "削除",
5
+ "assetManager.button.replace": "置き換え",
6
+ "assetManager.button.create": "作成",
7
+ "assetManager.button.edit": "編集",
8
+ "assetManager.button.save": "保存",
9
+ "assetManager.button.loadMore": "さらに読み込む",
10
+ "assetManager.button.deleteContents": "内容を削除",
11
+ "assetManager.dialog.deleteTitle": "アセットを削除しますか?",
12
+ "assetManager.dialog.deleteDescription": "はレジストリから削除されます。ページ内のこのアセットへの参照は解決できなくなります。",
13
+ "assetManager.dialog.deleteReferenced": "このアセットは {count} 個の{nodes}で参照されています。",
14
+ "assetManager.dialog.deleteProgress": "削除中…",
15
+ "assetManager.dialog.replaceTitle": "アセットを置き換えますか?",
16
+ "assetManager.dialog.replaceDescription": "{label} を置き換えるファイルを選択してください。既存の asset:// 参照は新しいバイトに解決されます。",
17
+ "assetManager.dialog.replaceDescriptionGeneric": "このアセットを置き換えるファイルを選択してください。",
18
+ "assetManager.dialog.replaceFileLabel": "置き換えるファイル",
19
+ "assetManager.dialog.chooseFile": "ファイルを選択",
20
+ "assetManager.dialog.chooseFileDifferent": "別のファイルを選択",
21
+ "assetManager.dialog.fileSelected": "選択済み: {name}",
22
+ "assetManager.dialog.noFileSelected": "ファイルが選択されていません。",
23
+ "assetManager.dialog.replaceProgress": "置き換え中…",
24
+ "assetManager.dialog.newFolderTitle": "新しいフォルダー",
25
+ "assetManager.dialog.folderSaveError": "フォルダーを保存できませんでした。",
26
+ "assetManager.dialog.folderNamePlaceholder": "フォルダー名",
27
+ "assetManager.dialog.saveProgress": "保存中…",
28
+ "assetManager.dialog.deleteFolderTitle": "フォルダーを削除しますか?",
29
+ "assetManager.dialog.deleteFolderDescription": "「{name}」は削除されます。デフォルトではその内容は親フォルダーに移動するため、何も削除されません。「内容を削除」を選択すると、その {count} 個の{assets}も削除されます。",
30
+ "assetManager.dialog.removeFolder": "フォルダーを削除",
31
+ "assetManager.dialog.removeProgress": "削除中…",
32
+ "assetManager.dialog.editTitle": "アセットを編集",
33
+ "assetManager.dialog.moveTitle": "フォルダーに移動",
34
+ "assetManager.form.nameLabel": "名前",
35
+ "assetManager.form.tagsLabel": "タグ",
36
+ "assetManager.form.tagsListLabel": "現在のタグ",
37
+ "assetManager.form.removeTag": "タグ {tag} を削除",
38
+ "assetManager.form.addTagPlaceholder": "タグを追加して Enter キーを押す",
39
+ "assetManager.browser.title": "アセットブラウザー",
40
+ "assetManager.browser.subtitle": "現在メモリに登録されている検証済みアセット。",
41
+ "assetManager.browser.searchLabel": "アセットを検索",
42
+ "assetManager.browser.searchPlaceholder": "名前、タグ、または MIME で検索",
43
+ "assetManager.browser.filterLabel": "アセット種類フィルター",
44
+ "assetManager.browser.filterByKind": "{kind} アセットをフィルター",
45
+ "assetManager.browser.assetsLabel": "アセット",
46
+ "assetManager.browser.insert": "アセット {id} を挿入",
47
+ "assetManager.browser.edit": "アセット {id} を編集",
48
+ "assetManager.browser.replace": "アセット {id} を置き換え",
49
+ "assetManager.browser.delete": "アセット {id} を削除",
50
+ "assetManager.browser.unknownMime": "不明な種類",
51
+ "assetManager.browser.empty": "まだアセットがアップロードされていません。",
52
+ "assetManager.browser.emptyFiltered": "現在のフィルターに一致するアセットはありません。",
53
+ "assetManager.palette.title": "アセットを検索",
54
+ "assetManager.palette.subtitle": "名前、id、MIME タイプ、またはタグで検索します。",
55
+ "assetManager.palette.searchLabel": "アセット検索クエリ",
56
+ "assetManager.palette.searchPlaceholder": "入力して検索…",
57
+ "assetManager.palette.resultsLabel": "アセットの結果",
58
+ "assetManager.palette.noMatches": "一致するものがありません。",
59
+ "assetManager.kind.image": "画像",
60
+ "assetManager.kind.video": "動画",
61
+ "assetManager.kind.audio": "オーディオ",
62
+ "assetManager.kind.font": "フォント",
63
+ "assetManager.kind.document": "ドキュメント",
64
+ "assetManager.ui.title": "アセットマネージャー",
65
+ "assetManager.ui.subtitle": "設定済みのアダプター経由でアップロードし、検証済みのアセット参照を挿入します。",
66
+ "assetManager.upload.buttonLabel": "アセットファイルをアップロード",
67
+ "assetManager.upload.button": "アセットをアップロード",
68
+ "assetManager.upload.chooseLabel": "アップロードするファイルを選択",
69
+ "assetManager.upload.progress": "アップロード中…",
70
+ "assetManager.upload.progressLabel": "一括アップロードの進捗",
71
+ "assetManager.upload.status": "{total} 個中 {completed} 個をアップロード中",
72
+ "assetManager.upload.statusProgress": "{total} 個中 {completed} 個をアップロード中…",
73
+ "assetManager.upload.statusIdle": "受け付けたファイルは設定済みのアダプター経由でアップロードされます。",
74
+ "assetManager.upload.toFolder": "ここにファイルをドロップするかアップロード",
75
+ "assetManager.folder.root": "すべてのアセット",
76
+ "assetManager.folder.empty": "このフォルダーは空です。",
77
+ "assetManager.breadcrumb.label": "フォルダー",
78
+ "assetManager.tree.label": "フォルダー",
79
+ "assetManager.tree.dropHint": "{name} を開く — またはアセットをここにドロップして移動",
80
+ "assetManager.unsplash.disabled": "サーバープロキシ経由でアクセスキーを追加して Unsplash に接続します。",
81
+ "assetManager.unsplash.loading": "写真を読み込み中…",
82
+ "assetManager.unsplash.searchPlaceholder": "Unsplash を検索…",
83
+ "assetManager.unsplash.themesLabel": "Unsplash テーマ",
84
+ "assetManager.unsplash.rateLimited": "Unsplash のレート制限に達しました。しばらくしてからもう一度お試しください。",
85
+ "assetManager.unsplash.error": "Unsplash に接続できませんでした。再試行してください。",
86
+ "assetManager.unsplash.empty": "Unsplash を検索して写真を閲覧します。",
87
+ "assetManager.unsplash.insert": "{photographer} の写真を挿入",
88
+ "assetManager.source.library": "ライブラリ",
89
+ "assetManager.source.unsplash": "Unsplash",
90
+ "assetManager.unsplash.theme.all": "すべて",
91
+ "assetManager.unsplash.theme.nature": "自然",
92
+ "assetManager.unsplash.theme.architecture": "建築",
93
+ "assetManager.unsplash.theme.business": "ビジネス",
94
+ "assetManager.unsplash.theme.food": "食べ物",
95
+ "assetManager.unsplash.theme.technology": "テクノロジー",
96
+ "assetManager.unsplash.theme.travel": "旅行",
97
+ "assetManager.unsplash.theme.texture": "テクスチャ",
98
+ "assetManager.unsplash.theme.people": "人物"
99
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "assetManager.action.upload": "에셋 업로드",
3
+ "assetManager.button.cancel": "취소",
4
+ "assetManager.button.delete": "삭제",
5
+ "assetManager.button.replace": "교체",
6
+ "assetManager.button.create": "만들기",
7
+ "assetManager.button.edit": "편집",
8
+ "assetManager.button.save": "저장",
9
+ "assetManager.button.loadMore": "더 보기",
10
+ "assetManager.button.deleteContents": "콘텐츠 삭제",
11
+ "assetManager.dialog.deleteTitle": "에셋을 삭제하시겠습니까?",
12
+ "assetManager.dialog.deleteDescription": "이(가) 레지스트리에서 제거됩니다. 페이지의 이 에셋에 대한 참조는 확인되지 않습니다.",
13
+ "assetManager.dialog.deleteReferenced": "이 에셋은 {count}개의 {nodes}에서 참조됩니다.",
14
+ "assetManager.dialog.deleteProgress": "삭제 중…",
15
+ "assetManager.dialog.replaceTitle": "에셋을 교체하시겠습니까?",
16
+ "assetManager.dialog.replaceDescription": "{label}을(를) 교체할 파일을 선택하세요. 기존 asset:// 참조는 새 바이트로 확인됩니다.",
17
+ "assetManager.dialog.replaceDescriptionGeneric": "이 에셋을 교체할 파일을 선택하세요.",
18
+ "assetManager.dialog.replaceFileLabel": "교체 파일",
19
+ "assetManager.dialog.chooseFile": "파일 선택",
20
+ "assetManager.dialog.chooseFileDifferent": "다른 파일 선택",
21
+ "assetManager.dialog.fileSelected": "선택됨: {name}",
22
+ "assetManager.dialog.noFileSelected": "선택된 파일이 없습니다.",
23
+ "assetManager.dialog.replaceProgress": "교체 중…",
24
+ "assetManager.dialog.newFolderTitle": "새 폴더",
25
+ "assetManager.dialog.folderSaveError": "폴더를 저장할 수 없습니다.",
26
+ "assetManager.dialog.folderNamePlaceholder": "폴더 이름",
27
+ "assetManager.dialog.saveProgress": "저장 중…",
28
+ "assetManager.dialog.deleteFolderTitle": "폴더를 삭제하시겠습니까?",
29
+ "assetManager.dialog.deleteFolderDescription": "\"{name}\"이(가) 제거됩니다. 기본적으로 그 콘텐츠는 상위 폴더로 이동하므로 아무것도 삭제되지 않습니다. \"콘텐츠 삭제\"를 선택하면 그 {count}개의 {assets}도 제거됩니다.",
30
+ "assetManager.dialog.removeFolder": "폴더 제거",
31
+ "assetManager.dialog.removeProgress": "제거 중…",
32
+ "assetManager.dialog.editTitle": "에셋 편집",
33
+ "assetManager.dialog.moveTitle": "폴더로 이동",
34
+ "assetManager.form.nameLabel": "이름",
35
+ "assetManager.form.tagsLabel": "태그",
36
+ "assetManager.form.tagsListLabel": "현재 태그",
37
+ "assetManager.form.removeTag": "태그 {tag} 제거",
38
+ "assetManager.form.addTagPlaceholder": "태그를 추가하고 Enter를 누르세요",
39
+ "assetManager.browser.title": "에셋 브라우저",
40
+ "assetManager.browser.subtitle": "현재 메모리에 등록된 검증된 에셋.",
41
+ "assetManager.browser.searchLabel": "에셋 검색",
42
+ "assetManager.browser.searchPlaceholder": "이름, 태그 또는 MIME로 검색",
43
+ "assetManager.browser.filterLabel": "에셋 종류 필터",
44
+ "assetManager.browser.filterByKind": "{kind} 에셋 필터링",
45
+ "assetManager.browser.assetsLabel": "에셋",
46
+ "assetManager.browser.insert": "에셋 {id} 삽입",
47
+ "assetManager.browser.edit": "에셋 {id} 편집",
48
+ "assetManager.browser.replace": "에셋 {id} 교체",
49
+ "assetManager.browser.delete": "에셋 {id} 삭제",
50
+ "assetManager.browser.unknownMime": "알 수 없는 유형",
51
+ "assetManager.browser.empty": "아직 업로드된 에셋이 없습니다.",
52
+ "assetManager.browser.emptyFiltered": "현재 필터와 일치하는 에셋이 없습니다.",
53
+ "assetManager.palette.title": "에셋 찾기",
54
+ "assetManager.palette.subtitle": "이름, id, MIME 유형 또는 태그로 검색하세요.",
55
+ "assetManager.palette.searchLabel": "에셋 검색 쿼리",
56
+ "assetManager.palette.searchPlaceholder": "입력하여 검색…",
57
+ "assetManager.palette.resultsLabel": "에셋 결과",
58
+ "assetManager.palette.noMatches": "일치하는 항목이 없습니다.",
59
+ "assetManager.kind.image": "이미지",
60
+ "assetManager.kind.video": "동영상",
61
+ "assetManager.kind.audio": "오디오",
62
+ "assetManager.kind.font": "글꼴",
63
+ "assetManager.kind.document": "문서",
64
+ "assetManager.ui.title": "에셋 관리자",
65
+ "assetManager.ui.subtitle": "구성된 어댑터를 통해 업로드한 다음 검증된 에셋 참조를 삽입하세요.",
66
+ "assetManager.upload.buttonLabel": "에셋 파일 업로드",
67
+ "assetManager.upload.button": "에셋 업로드",
68
+ "assetManager.upload.chooseLabel": "업로드할 파일 선택",
69
+ "assetManager.upload.progress": "업로드 중…",
70
+ "assetManager.upload.progressLabel": "일괄 업로드 진행률",
71
+ "assetManager.upload.status": "{total}개 중 {completed}개 업로드 중",
72
+ "assetManager.upload.statusProgress": "{total}개 중 {completed}개 업로드 중…",
73
+ "assetManager.upload.statusIdle": "허용된 파일은 구성된 어댑터를 통해 업로드됩니다.",
74
+ "assetManager.upload.toFolder": "여기에 파일을 끌어다 놓거나 업로드",
75
+ "assetManager.folder.root": "모든 에셋",
76
+ "assetManager.folder.empty": "이 폴더는 비어 있습니다.",
77
+ "assetManager.breadcrumb.label": "폴더",
78
+ "assetManager.tree.label": "폴더",
79
+ "assetManager.tree.dropHint": "{name} 열기 — 또는 에셋을 여기에 놓아 이동",
80
+ "assetManager.unsplash.disabled": "서버 프록시를 통해 액세스 키를 추가하여 Unsplash에 연결하세요.",
81
+ "assetManager.unsplash.loading": "사진 불러오는 중…",
82
+ "assetManager.unsplash.searchPlaceholder": "Unsplash 검색…",
83
+ "assetManager.unsplash.themesLabel": "Unsplash 테마",
84
+ "assetManager.unsplash.rateLimited": "Unsplash 속도 제한에 도달했습니다. 잠시 후 다시 시도하세요.",
85
+ "assetManager.unsplash.error": "Unsplash에 연결할 수 없습니다. 다시 시도하세요.",
86
+ "assetManager.unsplash.empty": "Unsplash를 검색하여 사진을 찾아보세요.",
87
+ "assetManager.unsplash.insert": "{photographer}의 사진 삽입",
88
+ "assetManager.source.library": "라이브러리",
89
+ "assetManager.source.unsplash": "Unsplash",
90
+ "assetManager.unsplash.theme.all": "전체",
91
+ "assetManager.unsplash.theme.nature": "자연",
92
+ "assetManager.unsplash.theme.architecture": "건축",
93
+ "assetManager.unsplash.theme.business": "비즈니스",
94
+ "assetManager.unsplash.theme.food": "음식",
95
+ "assetManager.unsplash.theme.technology": "기술",
96
+ "assetManager.unsplash.theme.travel": "여행",
97
+ "assetManager.unsplash.theme.texture": "텍스처",
98
+ "assetManager.unsplash.theme.people": "인물"
99
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "assetManager.action.upload": "上传素材",
3
+ "assetManager.button.cancel": "取消",
4
+ "assetManager.button.delete": "删除",
5
+ "assetManager.button.replace": "替换",
6
+ "assetManager.button.create": "创建",
7
+ "assetManager.button.edit": "编辑",
8
+ "assetManager.button.save": "保存",
9
+ "assetManager.button.loadMore": "加载更多",
10
+ "assetManager.button.deleteContents": "删除内容",
11
+ "assetManager.dialog.deleteTitle": "删除素材?",
12
+ "assetManager.dialog.deleteDescription": "将从注册表中移除。页面中对它的引用将无法解析。",
13
+ "assetManager.dialog.deleteReferenced": "该素材被 {count} 个{nodes}引用。",
14
+ "assetManager.dialog.deleteProgress": "删除中…",
15
+ "assetManager.dialog.replaceTitle": "替换素材?",
16
+ "assetManager.dialog.replaceDescription": "选择一个文件来替换 {label}。现有的 asset:// 引用将解析为新的字节。",
17
+ "assetManager.dialog.replaceDescriptionGeneric": "选择一个文件来替换此素材。",
18
+ "assetManager.dialog.replaceFileLabel": "替换文件",
19
+ "assetManager.dialog.chooseFile": "选择文件",
20
+ "assetManager.dialog.chooseFileDifferent": "选择其他文件",
21
+ "assetManager.dialog.fileSelected": "已选择:{name}",
22
+ "assetManager.dialog.noFileSelected": "未选择文件。",
23
+ "assetManager.dialog.replaceProgress": "替换中…",
24
+ "assetManager.dialog.newFolderTitle": "新建文件夹",
25
+ "assetManager.dialog.folderSaveError": "无法保存文件夹。",
26
+ "assetManager.dialog.folderNamePlaceholder": "文件夹名称",
27
+ "assetManager.dialog.saveProgress": "保存中…",
28
+ "assetManager.dialog.deleteFolderTitle": "删除文件夹?",
29
+ "assetManager.dialog.deleteFolderDescription": "“{name}”将被移除。默认情况下,其内容会上移到父文件夹,因此不会删除任何内容。选择“删除内容”可同时删除其 {count} 个{assets}。",
30
+ "assetManager.dialog.removeFolder": "移除文件夹",
31
+ "assetManager.dialog.removeProgress": "移除中…",
32
+ "assetManager.dialog.editTitle": "编辑素材",
33
+ "assetManager.dialog.moveTitle": "移动到文件夹",
34
+ "assetManager.form.nameLabel": "名称",
35
+ "assetManager.form.tagsLabel": "标签",
36
+ "assetManager.form.tagsListLabel": "当前标签",
37
+ "assetManager.form.removeTag": "移除标签 {tag}",
38
+ "assetManager.form.addTagPlaceholder": "添加标签并按 Enter",
39
+ "assetManager.browser.title": "素材浏览器",
40
+ "assetManager.browser.subtitle": "当前在内存中注册的已验证素材。",
41
+ "assetManager.browser.searchLabel": "搜索素材",
42
+ "assetManager.browser.searchPlaceholder": "按名称、标签或 MIME 搜索",
43
+ "assetManager.browser.filterLabel": "素材类型筛选",
44
+ "assetManager.browser.filterByKind": "筛选{kind}素材",
45
+ "assetManager.browser.assetsLabel": "素材",
46
+ "assetManager.browser.insert": "插入素材 {id}",
47
+ "assetManager.browser.edit": "编辑素材 {id}",
48
+ "assetManager.browser.replace": "替换素材 {id}",
49
+ "assetManager.browser.delete": "删除素材 {id}",
50
+ "assetManager.browser.unknownMime": "未知类型",
51
+ "assetManager.browser.empty": "尚未上传素材。",
52
+ "assetManager.browser.emptyFiltered": "没有符合当前筛选条件的素材。",
53
+ "assetManager.palette.title": "查找素材",
54
+ "assetManager.palette.subtitle": "按名称、id、MIME 类型或标签搜索。",
55
+ "assetManager.palette.searchLabel": "素材搜索查询",
56
+ "assetManager.palette.searchPlaceholder": "输入以搜索…",
57
+ "assetManager.palette.resultsLabel": "素材结果",
58
+ "assetManager.palette.noMatches": "无匹配项。",
59
+ "assetManager.kind.image": "图片",
60
+ "assetManager.kind.video": "视频",
61
+ "assetManager.kind.audio": "音频",
62
+ "assetManager.kind.font": "字体",
63
+ "assetManager.kind.document": "文档",
64
+ "assetManager.ui.title": "素材管理器",
65
+ "assetManager.ui.subtitle": "通过配置的适配器上传,然后插入已验证的素材引用。",
66
+ "assetManager.upload.buttonLabel": "上传素材文件",
67
+ "assetManager.upload.button": "上传素材",
68
+ "assetManager.upload.chooseLabel": "选择要上传的文件",
69
+ "assetManager.upload.progress": "上传中…",
70
+ "assetManager.upload.progressLabel": "批量上传进度",
71
+ "assetManager.upload.status": "正在上传 {total} 个中的第 {completed} 个",
72
+ "assetManager.upload.statusProgress": "正在上传 {total} 个中的第 {completed} 个…",
73
+ "assetManager.upload.statusIdle": "接受的文件通过配置的适配器上传。",
74
+ "assetManager.upload.toFolder": "将文件拖放到此处或上传",
75
+ "assetManager.folder.root": "全部素材",
76
+ "assetManager.folder.empty": "此文件夹为空。",
77
+ "assetManager.breadcrumb.label": "文件夹",
78
+ "assetManager.tree.label": "文件夹",
79
+ "assetManager.tree.dropHint": "打开 {name} — 或将素材拖放到此处以移入",
80
+ "assetManager.unsplash.disabled": "通过服务器代理添加访问密钥以连接 Unsplash。",
81
+ "assetManager.unsplash.loading": "正在加载照片…",
82
+ "assetManager.unsplash.searchPlaceholder": "搜索 Unsplash…",
83
+ "assetManager.unsplash.themesLabel": "Unsplash 主题",
84
+ "assetManager.unsplash.rateLimited": "已达到 Unsplash 速率限制。请稍后重试。",
85
+ "assetManager.unsplash.error": "无法连接 Unsplash。请重试。",
86
+ "assetManager.unsplash.empty": "搜索 Unsplash 以浏览照片。",
87
+ "assetManager.unsplash.insert": "插入 {photographer} 的照片",
88
+ "assetManager.source.library": "素材库",
89
+ "assetManager.source.unsplash": "Unsplash",
90
+ "assetManager.unsplash.theme.all": "全部",
91
+ "assetManager.unsplash.theme.nature": "自然",
92
+ "assetManager.unsplash.theme.architecture": "建筑",
93
+ "assetManager.unsplash.theme.business": "商务",
94
+ "assetManager.unsplash.theme.food": "美食",
95
+ "assetManager.unsplash.theme.technology": "科技",
96
+ "assetManager.unsplash.theme.travel": "旅行",
97
+ "assetManager.unsplash.theme.texture": "纹理",
98
+ "assetManager.unsplash.theme.people": "人物"
99
+ }
package/meta/config.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "anvilkit-plugin-asset-manager",
3
3
  "name": "Asset Manager",
4
- "version": "0.1.6",
4
+ "version": "0.1.8",
5
5
  "coreVersion": "^0.1.0-alpha",
6
6
  "description": "Headless asset upload plugin with host-provided persistence and a separate React UI subpath.",
7
7
  "capabilities": { "header": true }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anvilkit/plugin-asset-manager",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "Headless asset manager plugin for Anvilkit Studio with host-provided uploads and optional React UI.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -56,11 +56,22 @@
56
56
  "types": "./dist/adapters/s3-presigned.d.cts",
57
57
  "default": "./dist/adapters/s3-presigned.cjs"
58
58
  }
59
+ },
60
+ "./providers/unsplash": {
61
+ "import": {
62
+ "types": "./dist/sources/unsplash/index.d.ts",
63
+ "default": "./dist/sources/unsplash/index.js"
64
+ },
65
+ "require": {
66
+ "types": "./dist/sources/unsplash/index.d.cts",
67
+ "default": "./dist/sources/unsplash/index.cjs"
68
+ }
59
69
  }
60
70
  },
61
71
  "files": [
62
72
  "dist",
63
- "meta"
73
+ "meta",
74
+ "i18n"
64
75
  ],
65
76
  "license": "MIT",
66
77
  "sideEffects": false,
@@ -70,8 +81,8 @@
70
81
  },
71
82
  "peerDependencies": {
72
83
  "@puckeditor/core": "^0.21.2",
73
- "react": ">=19.0.0",
74
- "react-dom": ">=19.0.0"
84
+ "react": ">=19.2.0",
85
+ "react-dom": ">=19.2.0"
75
86
  },
76
87
  "peerDependenciesMeta": {
77
88
  "react": {
@@ -86,10 +97,10 @@
86
97
  },
87
98
  "dependencies": {
88
99
  "lucide-react": "^1.16.0",
89
- "@anvilkit/core": "0.1.10",
90
- "@anvilkit/ir": "0.1.11",
91
- "@anvilkit/ui": "0.1.11",
92
- "@anvilkit/utils": "0.1.11"
100
+ "@anvilkit/core": "0.1.15",
101
+ "@anvilkit/ir": "0.1.15",
102
+ "@anvilkit/ui": "0.1.15",
103
+ "@anvilkit/utils": "0.1.15"
93
104
  },
94
105
  "devDependencies": {
95
106
  "@puckeditor/core": "^0.21.2",