@anvilkit/plugin-asset-manager 0.1.2 → 0.1.4

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 (185) hide show
  1. package/README.md +366 -108
  2. package/dist/adapters/data-url.cjs +10 -6
  3. package/dist/adapters/data-url.d.cts +1 -1
  4. package/dist/adapters/data-url.d.cts.map +1 -1
  5. package/dist/adapters/data-url.d.ts +1 -1
  6. package/dist/adapters/data-url.d.ts.map +1 -1
  7. package/dist/adapters/data-url.js +7 -3
  8. package/dist/adapters/extract-image-dimensions.cjs +9 -0
  9. package/dist/adapters/extract-image-dimensions.d.cts +6 -0
  10. package/dist/adapters/extract-image-dimensions.d.cts.map +1 -1
  11. package/dist/adapters/extract-image-dimensions.d.ts +6 -0
  12. package/dist/adapters/extract-image-dimensions.d.ts.map +1 -1
  13. package/dist/adapters/extract-image-dimensions.js +9 -0
  14. package/dist/adapters/in-memory.cjs +6 -4
  15. package/dist/adapters/in-memory.d.cts +7 -1
  16. package/dist/adapters/in-memory.d.cts.map +1 -1
  17. package/dist/adapters/in-memory.d.ts +7 -1
  18. package/dist/adapters/in-memory.d.ts.map +1 -1
  19. package/dist/adapters/in-memory.js +6 -4
  20. package/dist/adapters/s3-presigned.cjs +90 -40
  21. package/dist/adapters/s3-presigned.d.cts +5 -4
  22. package/dist/adapters/s3-presigned.d.cts.map +1 -1
  23. package/dist/adapters/s3-presigned.d.ts +5 -4
  24. package/dist/adapters/s3-presigned.d.ts.map +1 -1
  25. package/dist/adapters/s3-presigned.js +80 -30
  26. package/dist/index.cjs +20 -20
  27. package/dist/index.d.cts +13 -13
  28. package/dist/index.d.cts.map +1 -1
  29. package/dist/index.d.ts +13 -13
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +7 -7
  32. package/dist/plugin.cjs +56 -31
  33. package/dist/plugin.d.cts +6 -5
  34. package/dist/plugin.d.cts.map +1 -1
  35. package/dist/plugin.d.ts +6 -5
  36. package/dist/plugin.d.ts.map +1 -1
  37. package/dist/plugin.js +34 -17
  38. package/dist/testing/index.cjs +2 -2
  39. package/dist/testing/index.d.cts +1 -1
  40. package/dist/testing/index.d.cts.map +1 -1
  41. package/dist/testing/index.d.ts +1 -1
  42. package/dist/testing/index.d.ts.map +1 -1
  43. package/dist/testing/index.js +1 -1
  44. package/dist/{types.d.cts → types/types.d.cts} +9 -1
  45. package/dist/types/types.d.cts.map +1 -0
  46. package/dist/{types.d.ts → types/types.d.ts} +9 -1
  47. package/dist/types/types.d.ts.map +1 -0
  48. package/dist/types/types.js +1 -0
  49. package/dist/ui/AssetBrowser.cjs +55 -20
  50. package/dist/ui/AssetBrowser.d.cts +11 -2
  51. package/dist/ui/AssetBrowser.d.cts.map +1 -1
  52. package/dist/ui/AssetBrowser.d.ts +11 -2
  53. package/dist/ui/AssetBrowser.d.ts.map +1 -1
  54. package/dist/ui/AssetBrowser.js +55 -20
  55. package/dist/ui/AssetCommandPalette.cjs +20 -11
  56. package/dist/ui/AssetCommandPalette.d.cts +1 -1
  57. package/dist/ui/AssetCommandPalette.d.cts.map +1 -1
  58. package/dist/ui/AssetCommandPalette.d.ts +1 -1
  59. package/dist/ui/AssetCommandPalette.d.ts.map +1 -1
  60. package/dist/ui/AssetCommandPalette.js +19 -10
  61. package/dist/ui/AssetManagerUI.cjs +3 -2
  62. package/dist/ui/AssetManagerUI.d.cts +1 -1
  63. package/dist/ui/AssetManagerUI.d.cts.map +1 -1
  64. package/dist/ui/AssetManagerUI.d.ts +1 -1
  65. package/dist/ui/AssetManagerUI.d.ts.map +1 -1
  66. package/dist/ui/AssetManagerUI.js +2 -1
  67. package/dist/ui/DeleteAssetDialog.cjs +1 -0
  68. package/dist/ui/DeleteAssetDialog.d.cts +1 -1
  69. package/dist/ui/DeleteAssetDialog.d.cts.map +1 -1
  70. package/dist/ui/DeleteAssetDialog.d.ts +1 -1
  71. package/dist/ui/DeleteAssetDialog.d.ts.map +1 -1
  72. package/dist/ui/DeleteAssetDialog.js +1 -0
  73. package/dist/ui/MetadataPanel.cjs +1 -0
  74. package/dist/ui/MetadataPanel.d.cts +1 -1
  75. package/dist/ui/MetadataPanel.d.cts.map +1 -1
  76. package/dist/ui/MetadataPanel.d.ts +1 -1
  77. package/dist/ui/MetadataPanel.d.ts.map +1 -1
  78. package/dist/ui/MetadataPanel.js +1 -0
  79. package/dist/ui/ReplaceAssetDialog.cjs +1 -0
  80. package/dist/ui/ReplaceAssetDialog.d.cts +1 -1
  81. package/dist/ui/ReplaceAssetDialog.d.cts.map +1 -1
  82. package/dist/ui/ReplaceAssetDialog.d.ts +1 -1
  83. package/dist/ui/ReplaceAssetDialog.d.ts.map +1 -1
  84. package/dist/ui/ReplaceAssetDialog.js +1 -0
  85. package/dist/ui/UploadButton.cjs +24 -9
  86. package/dist/ui/UploadButton.d.cts +1 -1
  87. package/dist/ui/UploadButton.d.cts.map +1 -1
  88. package/dist/ui/UploadButton.d.ts +1 -1
  89. package/dist/ui/UploadButton.d.ts.map +1 -1
  90. package/dist/ui/UploadButton.js +23 -8
  91. package/dist/ui/index.cjs +5 -5
  92. package/dist/utils/asset-reference.d.cts.map +1 -0
  93. package/dist/utils/asset-reference.d.ts.map +1 -0
  94. package/dist/utils/csp.d.cts.map +1 -0
  95. package/dist/utils/csp.d.ts.map +1 -0
  96. package/dist/utils/errors.d.cts.map +1 -0
  97. package/dist/utils/errors.d.ts.map +1 -0
  98. package/dist/utils/header-action.d.cts.map +1 -0
  99. package/dist/utils/header-action.d.ts.map +1 -0
  100. package/dist/{infer-kind.d.cts → utils/infer-kind.d.cts} +1 -1
  101. package/dist/utils/infer-kind.d.cts.map +1 -0
  102. package/dist/{infer-kind.d.ts → utils/infer-kind.d.ts} +1 -1
  103. package/dist/utils/infer-kind.d.ts.map +1 -0
  104. package/dist/utils/registry.d.cts +3 -0
  105. package/dist/utils/registry.d.cts.map +1 -0
  106. package/dist/utils/registry.d.ts +3 -0
  107. package/dist/utils/registry.d.ts.map +1 -0
  108. package/dist/{resolver.cjs → utils/resolver.cjs} +8 -3
  109. package/dist/{resolver.d.cts → utils/resolver.d.cts} +1 -1
  110. package/dist/utils/resolver.d.cts.map +1 -0
  111. package/dist/{resolver.d.ts → utils/resolver.d.ts} +1 -1
  112. package/dist/utils/resolver.d.ts.map +1 -0
  113. package/dist/{resolver.js → utils/resolver.js} +6 -1
  114. package/dist/{retry.cjs → utils/retry.cjs} +10 -8
  115. package/dist/utils/retry.d.cts.map +1 -0
  116. package/dist/utils/retry.d.ts.map +1 -0
  117. package/dist/{retry.js → utils/retry.js} +10 -8
  118. package/dist/{studio-asset-source.cjs → utils/studio-asset-source.cjs} +28 -7
  119. package/dist/{studio-asset-source.d.cts → utils/studio-asset-source.d.cts} +2 -2
  120. package/dist/utils/studio-asset-source.d.cts.map +1 -0
  121. package/dist/{studio-asset-source.d.ts → utils/studio-asset-source.d.ts} +2 -2
  122. package/dist/utils/studio-asset-source.d.ts.map +1 -0
  123. package/dist/{studio-asset-source.js → utils/studio-asset-source.js} +26 -5
  124. package/dist/{validate-upload-result.cjs → utils/validate-upload-result.cjs} +49 -10
  125. package/dist/{validate-upload-result.d.cts → utils/validate-upload-result.d.cts} +1 -1
  126. package/dist/utils/validate-upload-result.d.cts.map +1 -0
  127. package/dist/{validate-upload-result.d.ts → utils/validate-upload-result.d.ts} +1 -1
  128. package/dist/utils/validate-upload-result.d.ts.map +1 -0
  129. package/dist/{validate-upload-result.js → utils/validate-upload-result.js} +49 -10
  130. package/dist/version.cjs +36 -0
  131. package/dist/version.d.cts +20 -0
  132. package/dist/version.d.cts.map +1 -0
  133. package/dist/version.d.ts +20 -0
  134. package/dist/version.d.ts.map +1 -0
  135. package/dist/version.js +2 -0
  136. package/meta/config.json +8 -0
  137. package/package.json +23 -22
  138. package/dist/asset-reference.d.cts.map +0 -1
  139. package/dist/asset-reference.d.ts.map +0 -1
  140. package/dist/csp.d.cts.map +0 -1
  141. package/dist/csp.d.ts.map +0 -1
  142. package/dist/errors.d.cts.map +0 -1
  143. package/dist/errors.d.ts.map +0 -1
  144. package/dist/header-action.d.cts.map +0 -1
  145. package/dist/header-action.d.ts.map +0 -1
  146. package/dist/infer-kind.d.cts.map +0 -1
  147. package/dist/infer-kind.d.ts.map +0 -1
  148. package/dist/registry.d.cts +0 -3
  149. package/dist/registry.d.cts.map +0 -1
  150. package/dist/registry.d.ts +0 -3
  151. package/dist/registry.d.ts.map +0 -1
  152. package/dist/resolver.d.cts.map +0 -1
  153. package/dist/resolver.d.ts.map +0 -1
  154. package/dist/retry.d.cts.map +0 -1
  155. package/dist/retry.d.ts.map +0 -1
  156. package/dist/studio-asset-source.d.cts.map +0 -1
  157. package/dist/studio-asset-source.d.ts.map +0 -1
  158. package/dist/types.d.cts.map +0 -1
  159. package/dist/types.d.ts.map +0 -1
  160. package/dist/types.js +0 -0
  161. package/dist/validate-upload-result.d.cts.map +0 -1
  162. package/dist/validate-upload-result.d.ts.map +0 -1
  163. /package/dist/{types.cjs → types/types.cjs} +0 -0
  164. /package/dist/{asset-reference.cjs → utils/asset-reference.cjs} +0 -0
  165. /package/dist/{asset-reference.d.cts → utils/asset-reference.d.cts} +0 -0
  166. /package/dist/{asset-reference.d.ts → utils/asset-reference.d.ts} +0 -0
  167. /package/dist/{asset-reference.js → utils/asset-reference.js} +0 -0
  168. /package/dist/{csp.cjs → utils/csp.cjs} +0 -0
  169. /package/dist/{csp.d.cts → utils/csp.d.cts} +0 -0
  170. /package/dist/{csp.d.ts → utils/csp.d.ts} +0 -0
  171. /package/dist/{csp.js → utils/csp.js} +0 -0
  172. /package/dist/{errors.cjs → utils/errors.cjs} +0 -0
  173. /package/dist/{errors.d.cts → utils/errors.d.cts} +0 -0
  174. /package/dist/{errors.d.ts → utils/errors.d.ts} +0 -0
  175. /package/dist/{errors.js → utils/errors.js} +0 -0
  176. /package/dist/{header-action.cjs → utils/header-action.cjs} +0 -0
  177. /package/dist/{header-action.d.cts → utils/header-action.d.cts} +0 -0
  178. /package/dist/{header-action.d.ts → utils/header-action.d.ts} +0 -0
  179. /package/dist/{header-action.js → utils/header-action.js} +0 -0
  180. /package/dist/{infer-kind.cjs → utils/infer-kind.cjs} +0 -0
  181. /package/dist/{infer-kind.js → utils/infer-kind.js} +0 -0
  182. /package/dist/{registry.cjs → utils/registry.cjs} +0 -0
  183. /package/dist/{registry.js → utils/registry.js} +0 -0
  184. /package/dist/{retry.d.cts → utils/retry.d.cts} +0 -0
  185. /package/dist/{retry.d.ts → utils/retry.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
- import type { UploadResult } from "../types.js";
1
+ import type { UploadResult } from "../types/types.js";
2
2
  export interface AssetBrowserProps {
3
3
  readonly assets: readonly UploadResult[];
4
4
  readonly onInsert: (asset: UploadResult) => void;
@@ -36,7 +36,16 @@ export interface AssetBrowserProps {
36
36
  * scroll math entirely.
37
37
  */
38
38
  readonly virtualizeThreshold?: number;
39
- /** Pixel height of a single row when virtualizing. */
39
+ /**
40
+ * Pixel height of a single row when virtualizing.
41
+ *
42
+ * **Fixed-height contract:** the windowing math (visible range, scroll
43
+ * offset, and keyboard-focus scroll) assumes every row is exactly
44
+ * `itemHeight` tall. Rows that wrap or vary in height (long names,
45
+ * thumbnails) will desync the scroll position and focus calculation.
46
+ * Keep rows uniform, or raise `virtualizeThreshold` so the list renders
47
+ * inline instead.
48
+ */
40
49
  readonly itemHeight?: number;
41
50
  /** Pixel height of the scroll container when virtualizing. */
42
51
  readonly maxHeight?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetBrowser.d.cts","sourceRoot":"","sources":["../../src/ui/AssetBrowser.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,aAAa,CAAC;AAU3D,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAQD,wBAAgB,YAAY,CAAC,EAC5B,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,MAAM,EACN,aAAqB,EACrB,QAA4B,EAC5B,mBAAkD,EAClD,UAAgC,EAChC,SAA8B,GAC9B,EAAE,iBAAiB,2CAmVnB"}
1
+ {"version":3,"file":"AssetBrowser.d.cts","sourceRoot":"","sources":["../../src/ui/AssetBrowser.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAWjE,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC;;;;;;;;;OASG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAQD,wBAAgB,YAAY,CAAC,EAC5B,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,MAAM,EACN,aAAqB,EACrB,QAA4B,EAC5B,mBAAkD,EAClD,UAAgC,EAChC,SAA8B,GAC9B,EAAE,iBAAiB,2CAkZnB"}
@@ -1,4 +1,4 @@
1
- import type { UploadResult } from "../types.js";
1
+ import type { UploadResult } from "../types/types.js";
2
2
  export interface AssetBrowserProps {
3
3
  readonly assets: readonly UploadResult[];
4
4
  readonly onInsert: (asset: UploadResult) => void;
@@ -36,7 +36,16 @@ export interface AssetBrowserProps {
36
36
  * scroll math entirely.
37
37
  */
38
38
  readonly virtualizeThreshold?: number;
39
- /** Pixel height of a single row when virtualizing. */
39
+ /**
40
+ * Pixel height of a single row when virtualizing.
41
+ *
42
+ * **Fixed-height contract:** the windowing math (visible range, scroll
43
+ * offset, and keyboard-focus scroll) assumes every row is exactly
44
+ * `itemHeight` tall. Rows that wrap or vary in height (long names,
45
+ * thumbnails) will desync the scroll position and focus calculation.
46
+ * Keep rows uniform, or raise `virtualizeThreshold` so the list renders
47
+ * inline instead.
48
+ */
40
49
  readonly itemHeight?: number;
41
50
  /** Pixel height of the scroll container when virtualizing. */
42
51
  readonly maxHeight?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetBrowser.d.ts","sourceRoot":"","sources":["../../src/ui/AssetBrowser.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,aAAa,CAAC;AAU3D,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAQD,wBAAgB,YAAY,CAAC,EAC5B,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,MAAM,EACN,aAAqB,EACrB,QAA4B,EAC5B,mBAAkD,EAClD,UAAgC,EAChC,SAA8B,GAC9B,EAAE,iBAAiB,2CAmVnB"}
1
+ {"version":3,"file":"AssetBrowser.d.ts","sourceRoot":"","sources":["../../src/ui/AssetBrowser.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAWjE,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC;;;;;;;;;OASG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAQD,wBAAgB,YAAY,CAAC,EAC5B,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,MAAM,EACN,aAAqB,EACrB,QAA4B,EAC5B,mBAAkD,EAClD,UAAgC,EAChC,SAA8B,GAC9B,EAAE,iBAAiB,2CAkZnB"}
@@ -1,6 +1,8 @@
1
+ "use client";
1
2
  import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@anvilkit/ui/card";
2
3
  import { Input } from "@anvilkit/ui/input";
3
- import { inferAssetKind } from "../infer-kind.js";
4
+ import { flushSync } from "react-dom";
5
+ import { inferAssetKind } from "../utils/infer-kind.js";
4
6
  import * as __rspack_external_react from "react";
5
7
  const KIND_FILTERS = [
6
8
  "image",
@@ -22,22 +24,40 @@ function AssetBrowser({ assets, onInsert, onDelete, onReplace, onEdit, searchEna
22
24
  const [pageLimit, setPageLimit] = __rspack_external_react.useState(pageSize);
23
25
  const buttonRefs = __rspack_external_react.useRef([]);
24
26
  const scrollContainerRef = __rspack_external_react.useRef(null);
27
+ const scrollFrameRef = __rspack_external_react.useRef(null);
28
+ const pendingScrollTopRef = __rspack_external_react.useRef(0);
29
+ __rspack_external_react.useEffect(()=>()=>{
30
+ if (null !== scrollFrameRef.current && "function" == typeof cancelAnimationFrame) cancelAnimationFrame(scrollFrameRef.current);
31
+ }, []);
32
+ const searchIndex = __rspack_external_react.useMemo(()=>{
33
+ if (!searchEnabled) return null;
34
+ return assets.map((asset)=>({
35
+ asset,
36
+ kind: inferAssetKind(asset),
37
+ haystack: [
38
+ asset.id,
39
+ asset.name ?? "",
40
+ asset.meta?.mimeType ?? "",
41
+ ...asset.tags ?? []
42
+ ].join("\u0000").toLowerCase()
43
+ }));
44
+ }, [
45
+ assets,
46
+ searchEnabled
47
+ ]);
25
48
  const filteredAssets = __rspack_external_react.useMemo(()=>{
26
- if (!searchEnabled) return assets;
49
+ if (!searchEnabled || null === searchIndex) return assets;
27
50
  const lower = query.trim().toLowerCase();
28
- return assets.filter((asset)=>{
29
- if (activeKinds.length > 0) {
30
- if (!activeKinds.includes(inferAssetKind(asset))) return false;
31
- }
32
- if ("" === lower) return true;
33
- if (asset.id.toLowerCase().includes(lower)) return true;
34
- if (asset.name?.toLowerCase().includes(lower)) return true;
35
- if (asset.meta?.mimeType?.toLowerCase().includes(lower)) return true;
36
- if (asset.tags?.some((tag)=>tag.toLowerCase().includes(lower))) return true;
37
- return false;
38
- });
51
+ const hasKindFilter = activeKinds.length > 0;
52
+ if ("" === lower && !hasKindFilter) return assets;
53
+ const result = [];
54
+ for (const entry of searchIndex)if (!hasKindFilter || activeKinds.includes(entry.kind)) {
55
+ if ("" === lower || entry.haystack.includes(lower)) result.push(entry.asset);
56
+ }
57
+ return result;
39
58
  }, [
40
59
  assets,
60
+ searchIndex,
41
61
  activeKinds,
42
62
  query,
43
63
  searchEnabled
@@ -59,19 +79,27 @@ function AssetBrowser({ assets, onInsert, onDelete, onReplace, onEdit, searchEna
59
79
  function moveFocus(nextIndex) {
60
80
  if (0 === total) return;
61
81
  const clampedIndex = Math.max(0, Math.min(nextIndex, total - 1));
62
- setActiveIndex(clampedIndex);
63
82
  if (isVirtualized && scrollContainerRef.current) {
64
83
  const targetTop = clampedIndex * itemHeight;
65
84
  const targetBottom = targetTop + itemHeight;
66
85
  const viewTop = scrollContainerRef.current.scrollTop;
67
- const viewBottom = viewTop + maxHeight;
68
- if (targetTop < viewTop) scrollContainerRef.current.scrollTop = targetTop;
69
- else if (targetBottom > viewBottom) scrollContainerRef.current.scrollTop = targetBottom - maxHeight;
70
- queueMicrotask(()=>{
71
- buttonRefs.current[clampedIndex]?.focus();
86
+ let nextScrollTop = viewTop;
87
+ if (targetTop < viewTop) nextScrollTop = targetTop;
88
+ else if (targetBottom > viewTop + maxHeight) nextScrollTop = targetBottom - maxHeight;
89
+ if (null !== scrollFrameRef.current && "function" == typeof cancelAnimationFrame) {
90
+ cancelAnimationFrame(scrollFrameRef.current);
91
+ scrollFrameRef.current = null;
92
+ }
93
+ pendingScrollTopRef.current = nextScrollTop;
94
+ flushSync(()=>{
95
+ setActiveIndex(clampedIndex);
96
+ setScrollTop(nextScrollTop);
72
97
  });
98
+ scrollContainerRef.current.scrollTop = nextScrollTop;
99
+ buttonRefs.current[clampedIndex]?.focus();
73
100
  return;
74
101
  }
102
+ setActiveIndex(clampedIndex);
75
103
  buttonRefs.current[clampedIndex]?.focus();
76
104
  }
77
105
  function toggleKind(kind) {
@@ -202,7 +230,14 @@ function AssetBrowser({ assets, onInsert, onDelete, onReplace, onEdit, searchEna
202
230
  return /*#__PURE__*/ __rspack_external_react.createElement(Card, null, /*#__PURE__*/ __rspack_external_react.createElement(CardHeader, null, /*#__PURE__*/ __rspack_external_react.createElement(CardTitle, null, "Asset browser"), /*#__PURE__*/ __rspack_external_react.createElement(CardDescription, null, "Validated assets currently registered in memory.")), /*#__PURE__*/ __rspack_external_react.createElement(CardContent, null, filterRow, /*#__PURE__*/ __rspack_external_react.createElement("div", {
203
231
  "data-asset-manager-virtual": true,
204
232
  onScroll: (event)=>{
205
- setScrollTop(event.currentTarget.scrollTop);
233
+ const next = event.currentTarget.scrollTop;
234
+ if ("function" != typeof requestAnimationFrame) return void setScrollTop(next);
235
+ pendingScrollTopRef.current = next;
236
+ if (null !== scrollFrameRef.current) return;
237
+ scrollFrameRef.current = requestAnimationFrame(()=>{
238
+ scrollFrameRef.current = null;
239
+ setScrollTop(pendingScrollTopRef.current);
240
+ });
206
241
  },
207
242
  ref: scrollContainerRef,
208
243
  style: {
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ "use client";
2
3
  var __webpack_require__ = {};
3
4
  (()=>{
4
5
  __webpack_require__.d = (exports1, definition)=>{
@@ -29,7 +30,7 @@ __webpack_require__.d(__webpack_exports__, {
29
30
  const dialog_namespaceObject = require("@anvilkit/ui/dialog");
30
31
  const input_namespaceObject = require("@anvilkit/ui/input");
31
32
  const external_react_namespaceObject = require("react");
32
- const external_infer_kind_cjs_namespaceObject = require("../infer-kind.cjs");
33
+ const infer_kind_cjs_namespaceObject = require("../utils/infer-kind.cjs");
33
34
  const DEFAULT_MAX_RESULTS = 20;
34
35
  function AssetCommandPalette({ registry, open, onOpenChange, onSelect, maxResults = DEFAULT_MAX_RESULTS }) {
35
36
  const [query, setQuery] = external_react_namespaceObject.useState("");
@@ -48,27 +49,35 @@ function AssetCommandPalette({ registry, open, onOpenChange, onSelect, maxResult
48
49
  registry,
49
50
  maxResults
50
51
  ]);
52
+ const queryRef = external_react_namespaceObject.useRef(query);
53
+ queryRef.current = query;
51
54
  external_react_namespaceObject.useEffect(()=>{
52
55
  if (!open) return;
53
- refresh(query);
54
- const unsubscribe = registry.subscribe(()=>{
55
- refresh(query);
56
+ setQuery("");
57
+ queueMicrotask(()=>{
58
+ inputRef.current?.focus();
56
59
  });
57
- return unsubscribe;
60
+ }, [
61
+ open
62
+ ]);
63
+ external_react_namespaceObject.useEffect(()=>{
64
+ if (!open) return;
65
+ refresh(query);
58
66
  }, [
59
67
  open,
60
68
  query,
61
- registry,
62
69
  refresh
63
70
  ]);
64
71
  external_react_namespaceObject.useEffect(()=>{
65
72
  if (!open) return;
66
- setQuery("");
67
- queueMicrotask(()=>{
68
- inputRef.current?.focus();
73
+ const unsubscribe = registry.subscribe(()=>{
74
+ refresh(queryRef.current);
69
75
  });
76
+ return unsubscribe;
70
77
  }, [
71
- open
78
+ open,
79
+ registry,
80
+ refresh
72
81
  ]);
73
82
  function handleKeyDown(event) {
74
83
  if ("ArrowDown" === event.key) {
@@ -124,7 +133,7 @@ function AssetCommandPalette({ registry, open, onOpenChange, onSelect, maxResult
124
133
  setActiveIndex(index);
125
134
  },
126
135
  type: "button"
127
- }, /*#__PURE__*/ external_react_namespaceObject.createElement("span", null, asset.name ?? asset.id), /*#__PURE__*/ external_react_namespaceObject.createElement("span", null, asset.meta?.mimeType ?? (0, external_infer_kind_cjs_namespaceObject.inferAssetKind)(asset))))))));
136
+ }, /*#__PURE__*/ external_react_namespaceObject.createElement("span", null, asset.name ?? asset.id), /*#__PURE__*/ external_react_namespaceObject.createElement("span", null, asset.meta?.mimeType ?? (0, infer_kind_cjs_namespaceObject.inferAssetKind)(asset))))))));
128
137
  }
129
138
  exports.AssetCommandPalette = __webpack_exports__.AssetCommandPalette;
130
139
  for(var __rspack_i in __webpack_exports__)if (-1 === [
@@ -1,4 +1,4 @@
1
- import type { AssetRegistry, UploadResult } from "../types.js";
1
+ import type { AssetRegistry, UploadResult } from "../types/types.js";
2
2
  export interface AssetCommandPaletteProps {
3
3
  /** Registry the palette searches against. */
4
4
  readonly registry: AssetRegistry;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetCommandPalette.d.cts","sourceRoot":"","sources":["../../src/ui/AssetCommandPalette.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,WAAW,wBAAwB;IACxC,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID,wBAAgB,mBAAmB,CAAC,EACnC,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,UAAgC,GAChC,EAAE,wBAAwB,2CAmH1B"}
1
+ {"version":3,"file":"AssetCommandPalette.d.cts","sourceRoot":"","sources":["../../src/ui/AssetCommandPalette.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGrE,MAAM,WAAW,wBAAwB;IACxC,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID,wBAAgB,mBAAmB,CAAC,EACnC,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,UAAgC,GAChC,EAAE,wBAAwB,2CAiI1B"}
@@ -1,4 +1,4 @@
1
- import type { AssetRegistry, UploadResult } from "../types.js";
1
+ import type { AssetRegistry, UploadResult } from "../types/types.js";
2
2
  export interface AssetCommandPaletteProps {
3
3
  /** Registry the palette searches against. */
4
4
  readonly registry: AssetRegistry;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetCommandPalette.d.ts","sourceRoot":"","sources":["../../src/ui/AssetCommandPalette.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,WAAW,wBAAwB;IACxC,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID,wBAAgB,mBAAmB,CAAC,EACnC,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,UAAgC,GAChC,EAAE,wBAAwB,2CAmH1B"}
1
+ {"version":3,"file":"AssetCommandPalette.d.ts","sourceRoot":"","sources":["../../src/ui/AssetCommandPalette.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGrE,MAAM,WAAW,wBAAwB;IACxC,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID,wBAAgB,mBAAmB,CAAC,EACnC,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,UAAgC,GAChC,EAAE,wBAAwB,2CAiI1B"}
@@ -1,6 +1,7 @@
1
+ "use client";
1
2
  import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@anvilkit/ui/dialog";
2
3
  import { Input } from "@anvilkit/ui/input";
3
- import { inferAssetKind } from "../infer-kind.js";
4
+ import { inferAssetKind } from "../utils/infer-kind.js";
4
5
  import * as __rspack_external_react from "react";
5
6
  const DEFAULT_MAX_RESULTS = 20;
6
7
  function AssetCommandPalette({ registry, open, onOpenChange, onSelect, maxResults = DEFAULT_MAX_RESULTS }) {
@@ -20,27 +21,35 @@ function AssetCommandPalette({ registry, open, onOpenChange, onSelect, maxResult
20
21
  registry,
21
22
  maxResults
22
23
  ]);
24
+ const queryRef = __rspack_external_react.useRef(query);
25
+ queryRef.current = query;
23
26
  __rspack_external_react.useEffect(()=>{
24
27
  if (!open) return;
25
- refresh(query);
26
- const unsubscribe = registry.subscribe(()=>{
27
- refresh(query);
28
+ setQuery("");
29
+ queueMicrotask(()=>{
30
+ inputRef.current?.focus();
28
31
  });
29
- return unsubscribe;
32
+ }, [
33
+ open
34
+ ]);
35
+ __rspack_external_react.useEffect(()=>{
36
+ if (!open) return;
37
+ refresh(query);
30
38
  }, [
31
39
  open,
32
40
  query,
33
- registry,
34
41
  refresh
35
42
  ]);
36
43
  __rspack_external_react.useEffect(()=>{
37
44
  if (!open) return;
38
- setQuery("");
39
- queueMicrotask(()=>{
40
- inputRef.current?.focus();
45
+ const unsubscribe = registry.subscribe(()=>{
46
+ refresh(queryRef.current);
41
47
  });
48
+ return unsubscribe;
42
49
  }, [
43
- open
50
+ open,
51
+ registry,
52
+ refresh
44
53
  ]);
45
54
  function handleKeyDown(event) {
46
55
  if ("ArrowDown" === event.key) {
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ "use client";
2
3
  var __webpack_require__ = {};
3
4
  (()=>{
4
5
  __webpack_require__.d = (exports1, definition)=>{
@@ -29,7 +30,7 @@ __webpack_require__.d(__webpack_exports__, {
29
30
  const card_namespaceObject = require("@anvilkit/ui/card");
30
31
  const progress_namespaceObject = require("@anvilkit/ui/progress");
31
32
  const external_react_namespaceObject = require("react");
32
- const external_validate_upload_result_cjs_namespaceObject = require("../validate-upload-result.cjs");
33
+ const validate_upload_result_cjs_namespaceObject = require("../utils/validate-upload-result.cjs");
33
34
  const external_AssetBrowser_cjs_namespaceObject = require("./AssetBrowser.cjs");
34
35
  const external_AssetCommandPalette_cjs_namespaceObject = require("./AssetCommandPalette.cjs");
35
36
  const external_DeleteAssetDialog_cjs_namespaceObject = require("./DeleteAssetDialog.cjs");
@@ -77,7 +78,7 @@ function AssetManagerUI({ acceptedMimeTypes, allowMixedScriptHostnames, dataUrlA
77
78
  }
78
79
  async function handleConfirmReplace(asset, file) {
79
80
  const uploaded = await uploader(file);
80
- const validated = (0, external_validate_upload_result_cjs_namespaceObject.validateUploadResult)({
81
+ const validated = (0, validate_upload_result_cjs_namespaceObject.validateUploadResult)({
81
82
  ...uploaded,
82
83
  meta: {
83
84
  size: file.size,
@@ -1,4 +1,4 @@
1
- import type { AssetManagerOptions, AssetRegistry, UploadResult } from "../types.js";
1
+ import type { AssetManagerOptions, AssetRegistry, UploadResult } from "../types/types.js";
2
2
  export interface AssetManagerUIProps extends Pick<AssetManagerOptions, "acceptedMimeTypes" | "maxFileSize" | "uploader" | "dataUrlAllowlistOptIn" | "allowMixedScriptHostnames"> {
3
3
  readonly registry: AssetRegistry;
4
4
  readonly onAssetInserted?: (asset: UploadResult) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetManagerUI.d.cts","sourceRoot":"","sources":["../../src/ui/AssetManagerUI.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACX,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,MAAM,aAAa,CAAC;AASrB,MAAM,WAAW,mBAChB,SAAQ,IAAI,CACX,mBAAmB,EACjB,mBAAmB,GACnB,aAAa,GACb,UAAU,GACV,uBAAuB,GACvB,2BAA2B,CAC7B;IACD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACzD;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,EAC9B,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,QAAQ,EACR,aAAoB,EACpB,QAAQ,GACR,EAAE,mBAAmB,2CAiKrB"}
1
+ {"version":3,"file":"AssetManagerUI.d.cts","sourceRoot":"","sources":["../../src/ui/AssetManagerUI.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACX,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,MAAM,mBAAmB,CAAC;AAS3B,MAAM,WAAW,mBAChB,SAAQ,IAAI,CACX,mBAAmB,EACjB,mBAAmB,GACnB,aAAa,GACb,UAAU,GACV,uBAAuB,GACvB,2BAA2B,CAC7B;IACD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACzD;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,EAC9B,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,QAAQ,EACR,aAAoB,EACpB,QAAQ,GACR,EAAE,mBAAmB,2CAiKrB"}
@@ -1,4 +1,4 @@
1
- import type { AssetManagerOptions, AssetRegistry, UploadResult } from "../types.js";
1
+ import type { AssetManagerOptions, AssetRegistry, UploadResult } from "../types/types.js";
2
2
  export interface AssetManagerUIProps extends Pick<AssetManagerOptions, "acceptedMimeTypes" | "maxFileSize" | "uploader" | "dataUrlAllowlistOptIn" | "allowMixedScriptHostnames"> {
3
3
  readonly registry: AssetRegistry;
4
4
  readonly onAssetInserted?: (asset: UploadResult) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetManagerUI.d.ts","sourceRoot":"","sources":["../../src/ui/AssetManagerUI.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACX,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,MAAM,aAAa,CAAC;AASrB,MAAM,WAAW,mBAChB,SAAQ,IAAI,CACX,mBAAmB,EACjB,mBAAmB,GACnB,aAAa,GACb,UAAU,GACV,uBAAuB,GACvB,2BAA2B,CAC7B;IACD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACzD;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,EAC9B,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,QAAQ,EACR,aAAoB,EACpB,QAAQ,GACR,EAAE,mBAAmB,2CAiKrB"}
1
+ {"version":3,"file":"AssetManagerUI.d.ts","sourceRoot":"","sources":["../../src/ui/AssetManagerUI.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACX,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,MAAM,mBAAmB,CAAC;AAS3B,MAAM,WAAW,mBAChB,SAAQ,IAAI,CACX,mBAAmB,EACjB,mBAAmB,GACnB,aAAa,GACb,UAAU,GACV,uBAAuB,GACvB,2BAA2B,CAC7B;IACD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACzD;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,EAC9B,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,QAAQ,EACR,aAAoB,EACpB,QAAQ,GACR,EAAE,mBAAmB,2CAiKrB"}
@@ -1,6 +1,7 @@
1
+ "use client";
1
2
  import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@anvilkit/ui/card";
2
3
  import { Progress } from "@anvilkit/ui/progress";
3
- import { validateUploadResult } from "../validate-upload-result.js";
4
+ import { validateUploadResult } from "../utils/validate-upload-result.js";
4
5
  import { AssetBrowser } from "./AssetBrowser.js";
5
6
  import { AssetCommandPalette } from "./AssetCommandPalette.js";
6
7
  import { DeleteAssetDialog } from "./DeleteAssetDialog.js";
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ "use client";
2
3
  var __webpack_require__ = {};
3
4
  (()=>{
4
5
  __webpack_require__.d = (exports1, definition)=>{
@@ -1,4 +1,4 @@
1
- import type { UploadResult } from "../types.js";
1
+ import type { UploadResult } from "../types/types.js";
2
2
  export interface DeleteAssetDialogProps {
3
3
  /**
4
4
  * Asset to confirm deletion for. When `null`, the dialog is closed.
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteAssetDialog.d.cts","sourceRoot":"","sources":["../../src/ui/DeleteAssetDialog.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACtC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,iBAAiB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,SAAS,EACT,cAAc,GACd,EAAE,sBAAsB,2CA8DxB"}
1
+ {"version":3,"file":"DeleteAssetDialog.d.cts","sourceRoot":"","sources":["../../src/ui/DeleteAssetDialog.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACtC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,iBAAiB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,SAAS,EACT,cAAc,GACd,EAAE,sBAAsB,2CA8DxB"}
@@ -1,4 +1,4 @@
1
- import type { UploadResult } from "../types.js";
1
+ import type { UploadResult } from "../types/types.js";
2
2
  export interface DeleteAssetDialogProps {
3
3
  /**
4
4
  * Asset to confirm deletion for. When `null`, the dialog is closed.
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteAssetDialog.d.ts","sourceRoot":"","sources":["../../src/ui/DeleteAssetDialog.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACtC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,iBAAiB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,SAAS,EACT,cAAc,GACd,EAAE,sBAAsB,2CA8DxB"}
1
+ {"version":3,"file":"DeleteAssetDialog.d.ts","sourceRoot":"","sources":["../../src/ui/DeleteAssetDialog.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACtC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,iBAAiB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,SAAS,EACT,cAAc,GACd,EAAE,sBAAsB,2CA8DxB"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { Button } from "@anvilkit/ui/button";
2
3
  import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@anvilkit/ui/dialog";
3
4
  import * as __rspack_external_react from "react";
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ "use client";
2
3
  var __webpack_require__ = {};
3
4
  (()=>{
4
5
  __webpack_require__.d = (exports1, definition)=>{
@@ -1,4 +1,4 @@
1
- import type { UploadResult } from "../types.js";
1
+ import type { UploadResult } from "../types/types.js";
2
2
  export interface MetadataPanelProps {
3
3
  /**
4
4
  * Asset whose metadata is being edited. When `null`, the panel is
@@ -1 +1 @@
1
- {"version":3,"file":"MetadataPanel.d.cts","sourceRoot":"","sources":["../../src/ui/MetadataPanel.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CACnB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,KAC7D,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,SAAS,GACT,EAAE,kBAAkB,2CAuIpB"}
1
+ {"version":3,"file":"MetadataPanel.d.cts","sourceRoot":"","sources":["../../src/ui/MetadataPanel.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CACnB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,KAC7D,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,SAAS,GACT,EAAE,kBAAkB,2CAuIpB"}
@@ -1,4 +1,4 @@
1
- import type { UploadResult } from "../types.js";
1
+ import type { UploadResult } from "../types/types.js";
2
2
  export interface MetadataPanelProps {
3
3
  /**
4
4
  * Asset whose metadata is being edited. When `null`, the panel is
@@ -1 +1 @@
1
- {"version":3,"file":"MetadataPanel.d.ts","sourceRoot":"","sources":["../../src/ui/MetadataPanel.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CACnB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,KAC7D,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,SAAS,GACT,EAAE,kBAAkB,2CAuIpB"}
1
+ {"version":3,"file":"MetadataPanel.d.ts","sourceRoot":"","sources":["../../src/ui/MetadataPanel.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CACnB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,KAC7D,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,SAAS,GACT,EAAE,kBAAkB,2CAuIpB"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { Button } from "@anvilkit/ui/button";
2
3
  import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@anvilkit/ui/dialog";
3
4
  import { Input } from "@anvilkit/ui/input";
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ "use client";
2
3
  var __webpack_require__ = {};
3
4
  (()=>{
4
5
  __webpack_require__.d = (exports1, definition)=>{
@@ -1,4 +1,4 @@
1
- import type { AssetManagerOptions, UploadResult } from "../types.js";
1
+ import type { AssetManagerOptions, UploadResult } from "../types/types.js";
2
2
  export interface ReplaceAssetDialogProps extends Pick<AssetManagerOptions, "acceptedMimeTypes" | "maxFileSize"> {
3
3
  /** Asset to replace. `null` closes the dialog. */
4
4
  readonly asset: UploadResult | null;
@@ -1 +1 @@
1
- {"version":3,"file":"ReplaceAssetDialog.d.cts","sourceRoot":"","sources":["../../src/ui/ReplaceAssetDialog.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,uBAChB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,aAAa,CAAC;IACtE,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,CAAC,EAClC,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,GACT,EAAE,uBAAuB,2CAuHzB"}
1
+ {"version":3,"file":"ReplaceAssetDialog.d.cts","sourceRoot":"","sources":["../../src/ui/ReplaceAssetDialog.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE3E,MAAM,WAAW,uBAChB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,aAAa,CAAC;IACtE,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,CAAC,EAClC,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,GACT,EAAE,uBAAuB,2CAuHzB"}
@@ -1,4 +1,4 @@
1
- import type { AssetManagerOptions, UploadResult } from "../types.js";
1
+ import type { AssetManagerOptions, UploadResult } from "../types/types.js";
2
2
  export interface ReplaceAssetDialogProps extends Pick<AssetManagerOptions, "acceptedMimeTypes" | "maxFileSize"> {
3
3
  /** Asset to replace. `null` closes the dialog. */
4
4
  readonly asset: UploadResult | null;
@@ -1 +1 @@
1
- {"version":3,"file":"ReplaceAssetDialog.d.ts","sourceRoot":"","sources":["../../src/ui/ReplaceAssetDialog.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,uBAChB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,aAAa,CAAC;IACtE,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,CAAC,EAClC,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,GACT,EAAE,uBAAuB,2CAuHzB"}
1
+ {"version":3,"file":"ReplaceAssetDialog.d.ts","sourceRoot":"","sources":["../../src/ui/ReplaceAssetDialog.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE3E,MAAM,WAAW,uBAChB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,aAAa,CAAC;IACtE,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,CAAC,EAClC,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,GACT,EAAE,uBAAuB,2CAuHzB"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { Button } from "@anvilkit/ui/button";
2
3
  import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@anvilkit/ui/dialog";
3
4
  import { validateSelectedFile } from "../plugin.js";
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ "use client";
2
3
  var __webpack_require__ = {};
3
4
  (()=>{
4
5
  __webpack_require__.d = (exports1, definition)=>{
@@ -29,18 +30,24 @@ __webpack_require__.d(__webpack_exports__, {
29
30
  const button_namespaceObject = require("@anvilkit/ui/button");
30
31
  const external_react_namespaceObject = require("react");
31
32
  const external_plugin_cjs_namespaceObject = require("../plugin.cjs");
32
- const external_validate_upload_result_cjs_namespaceObject = require("../validate-upload-result.cjs");
33
+ const validate_upload_result_cjs_namespaceObject = require("../utils/validate-upload-result.cjs");
33
34
  function UploadButton({ acceptedMimeTypes, allowMixedScriptHostnames, dataUrlAllowlistOptIn, maxFileSize, onError, onProgress, onUploaded, uploader }) {
34
35
  const inputRef = external_react_namespaceObject.useRef(null);
35
36
  const [errorMessage, setErrorMessage] = external_react_namespaceObject.useState(null);
36
37
  const [batch, setBatch] = external_react_namespaceObject.useState(null);
37
38
  const [isDragOver, setIsDragOver] = external_react_namespaceObject.useState(false);
38
39
  const isUploading = null !== batch;
40
+ const uploadAbortRef = external_react_namespaceObject.useRef(null);
41
+ external_react_namespaceObject.useEffect(()=>()=>uploadAbortRef.current?.abort(), []);
39
42
  const acceptAttr = external_react_namespaceObject.useMemo(()=>acceptedMimeTypes?.join(","), [
40
43
  acceptedMimeTypes
41
44
  ]);
42
45
  async function processFiles(files) {
43
46
  if (0 === files.length) return;
47
+ uploadAbortRef.current?.abort();
48
+ const controller = new AbortController();
49
+ uploadAbortRef.current = controller;
50
+ const { signal } = controller;
44
51
  const total = files.length;
45
52
  setErrorMessage(null);
46
53
  const initial = {
@@ -51,14 +58,18 @@ function UploadButton({ acceptedMimeTypes, allowMixedScriptHostnames, dataUrlAll
51
58
  onProgress?.(initial);
52
59
  let lastError = null;
53
60
  for(let index = 0; index < files.length; index += 1){
61
+ if (signal.aborted) return;
54
62
  const file = files[index];
55
63
  if (file) try {
56
64
  (0, external_plugin_cjs_namespaceObject.validateSelectedFile)(file, {
57
65
  acceptedMimeTypes,
58
66
  maxFileSize
59
67
  });
60
- const uploaded = await uploader(file);
61
- const validated = (0, external_validate_upload_result_cjs_namespaceObject.validateUploadResult)({
68
+ const uploaded = await uploader(file, {
69
+ signal
70
+ });
71
+ if (signal.aborted) return;
72
+ const validated = (0, validate_upload_result_cjs_namespaceObject.validateUploadResult)({
62
73
  ...uploaded,
63
74
  meta: {
64
75
  size: file.size,
@@ -73,17 +84,21 @@ function UploadButton({ acceptedMimeTypes, allowMixedScriptHostnames, dataUrlAll
73
84
  });
74
85
  onUploaded?.(validated);
75
86
  } catch (error) {
87
+ if (signal.aborted) return;
76
88
  lastError = error instanceof Error ? error.message : String(error);
77
89
  onError?.(error);
78
90
  } finally{
79
- const next = {
80
- completed: index + 1,
81
- total
82
- };
83
- setBatch(next);
84
- onProgress?.(next);
91
+ if (!signal.aborted) {
92
+ const next = {
93
+ completed: index + 1,
94
+ total
95
+ };
96
+ setBatch(next);
97
+ onProgress?.(next);
98
+ }
85
99
  }
86
100
  }
101
+ if (signal.aborted) return;
87
102
  if (null !== lastError) setErrorMessage(lastError);
88
103
  setBatch(null);
89
104
  onProgress?.(null);
@@ -1,4 +1,4 @@
1
- import type { AssetManagerOptions, UploadResult } from "../types.js";
1
+ import type { AssetManagerOptions, UploadResult } from "../types/types.js";
2
2
  export interface UploadProgressSnapshot {
3
3
  readonly completed: number;
4
4
  readonly total: number;
@@ -1 +1 @@
1
- {"version":3,"file":"UploadButton.d.cts","sourceRoot":"","sources":["../../src/ui/UploadButton.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGrE,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAChB,SAAQ,IAAI,CACX,mBAAmB,EACjB,mBAAmB,GACnB,aAAa,GACb,UAAU,GACV,uBAAuB,GACvB,2BAA2B,CAC7B;IACD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI,KAAK,IAAI,CAAC;CACxE;AAED,wBAAgB,YAAY,CAAC,EAC5B,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,WAAW,EACX,OAAO,EACP,UAAU,EACV,UAAU,EACV,QAAQ,GACR,EAAE,iBAAiB,2CAwJnB"}
1
+ {"version":3,"file":"UploadButton.d.cts","sourceRoot":"","sources":["../../src/ui/UploadButton.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG3E,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAChB,SAAQ,IAAI,CACX,mBAAmB,EACjB,mBAAmB,GACnB,aAAa,GACb,UAAU,GACV,uBAAuB,GACvB,2BAA2B,CAC7B;IACD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI,KAAK,IAAI,CAAC;CACxE;AAED,wBAAgB,YAAY,CAAC,EAC5B,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,WAAW,EACX,OAAO,EACP,UAAU,EACV,UAAU,EACV,QAAQ,GACR,EAAE,iBAAiB,2CA6KnB"}
@@ -1,4 +1,4 @@
1
- import type { AssetManagerOptions, UploadResult } from "../types.js";
1
+ import type { AssetManagerOptions, UploadResult } from "../types/types.js";
2
2
  export interface UploadProgressSnapshot {
3
3
  readonly completed: number;
4
4
  readonly total: number;