@djangocfg/ui-tools 2.1.110 → 2.1.111

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 (159) hide show
  1. package/README.md +242 -49
  2. package/dist/JsonSchemaForm-65NLLK56.mjs +4 -0
  3. package/dist/JsonSchemaForm-65NLLK56.mjs.map +1 -0
  4. package/dist/JsonSchemaForm-PY6DH3HE.cjs +13 -0
  5. package/dist/JsonSchemaForm-PY6DH3HE.cjs.map +1 -0
  6. package/dist/JsonTree-6RYAOPSS.mjs +4 -0
  7. package/dist/JsonTree-6RYAOPSS.mjs.map +1 -0
  8. package/dist/JsonTree-7OH6CIHT.cjs +10 -0
  9. package/dist/JsonTree-7OH6CIHT.cjs.map +1 -0
  10. package/dist/MapContainer-GXQLP5WY.mjs +214 -0
  11. package/dist/MapContainer-GXQLP5WY.mjs.map +1 -0
  12. package/dist/MapContainer-RYG4HPH4.cjs +221 -0
  13. package/dist/MapContainer-RYG4HPH4.cjs.map +1 -0
  14. package/dist/{Mermaid.client-4OCKJ6QD.mjs → Mermaid.client-OKACITCW.mjs} +16 -7
  15. package/dist/Mermaid.client-OKACITCW.mjs.map +1 -0
  16. package/dist/{Mermaid.client-ZP6OE46Z.cjs → Mermaid.client-PNXEC6YL.cjs} +16 -7
  17. package/dist/Mermaid.client-PNXEC6YL.cjs.map +1 -0
  18. package/dist/{PlaygroundLayout-XXVBU4WZ.cjs → PlaygroundLayout-SYMEAG3J.cjs} +25 -24
  19. package/dist/PlaygroundLayout-SYMEAG3J.cjs.map +1 -0
  20. package/dist/{PlaygroundLayout-LMQTVXSP.mjs → PlaygroundLayout-UQRBU5RH.mjs} +4 -3
  21. package/dist/PlaygroundLayout-UQRBU5RH.mjs.map +1 -0
  22. package/dist/{PrettyCode.client-2CLSV2VD.cjs → PrettyCode.client-DANYYQYO.cjs} +11 -4
  23. package/dist/PrettyCode.client-DANYYQYO.cjs.map +1 -0
  24. package/dist/{PrettyCode.client-Y2BVON7R.mjs → PrettyCode.client-RS5ZTNBT.mjs} +11 -4
  25. package/dist/PrettyCode.client-RS5ZTNBT.mjs.map +1 -0
  26. package/dist/chunk-2DSR7V2L.mjs +561 -0
  27. package/dist/chunk-2DSR7V2L.mjs.map +1 -0
  28. package/dist/chunk-47T5ECYV.cjs +1357 -0
  29. package/dist/chunk-47T5ECYV.cjs.map +1 -0
  30. package/dist/chunk-5QT3QYFZ.cjs +189 -0
  31. package/dist/chunk-5QT3QYFZ.cjs.map +1 -0
  32. package/dist/chunk-7IIRYG4S.mjs +1057 -0
  33. package/dist/chunk-7IIRYG4S.mjs.map +1 -0
  34. package/dist/{chunk-FB5QBSI3.cjs → chunk-DI3HUXHK.cjs} +15 -195
  35. package/dist/chunk-DI3HUXHK.cjs.map +1 -0
  36. package/dist/chunk-EVGWYASL.cjs +1528 -0
  37. package/dist/chunk-EVGWYASL.cjs.map +1 -0
  38. package/dist/chunk-F2N7P5XU.cjs +30 -0
  39. package/dist/chunk-F2N7P5XU.cjs.map +1 -0
  40. package/dist/{chunk-L6UHASYQ.mjs → chunk-G6PRZP5I.mjs} +7 -186
  41. package/dist/chunk-G6PRZP5I.mjs.map +1 -0
  42. package/dist/chunk-JWB2EWQO.mjs +5 -0
  43. package/dist/chunk-JWB2EWQO.mjs.map +1 -0
  44. package/dist/chunk-LTJX2JXE.mjs +338 -0
  45. package/dist/chunk-LTJX2JXE.mjs.map +1 -0
  46. package/dist/chunk-OVNC4KW6.mjs +1494 -0
  47. package/dist/chunk-OVNC4KW6.mjs.map +1 -0
  48. package/dist/chunk-PNZSJN6T.cjs +1086 -0
  49. package/dist/chunk-PNZSJN6T.cjs.map +1 -0
  50. package/dist/chunk-TEFRA7GW.cjs +565 -0
  51. package/dist/chunk-TEFRA7GW.cjs.map +1 -0
  52. package/dist/chunk-UOMPPIED.mjs +1343 -0
  53. package/dist/chunk-UOMPPIED.mjs.map +1 -0
  54. package/dist/chunk-W6YHQI4F.mjs +187 -0
  55. package/dist/chunk-W6YHQI4F.mjs.map +1 -0
  56. package/dist/chunk-XTBRWVIV.cjs +346 -0
  57. package/dist/chunk-XTBRWVIV.cjs.map +1 -0
  58. package/dist/components-C7ZL7OMY.mjs +5 -0
  59. package/dist/components-C7ZL7OMY.mjs.map +1 -0
  60. package/dist/components-CJ2IB65O.cjs +27 -0
  61. package/dist/components-CJ2IB65O.cjs.map +1 -0
  62. package/dist/components-EASJYK45.mjs +6 -0
  63. package/dist/components-EASJYK45.mjs.map +1 -0
  64. package/dist/components-LDRFDV4A.cjs +22 -0
  65. package/dist/components-LDRFDV4A.cjs.map +1 -0
  66. package/dist/components-VZKUTDJK.mjs +5 -0
  67. package/dist/components-VZKUTDJK.mjs.map +1 -0
  68. package/dist/components-Y64GTIMQ.cjs +42 -0
  69. package/dist/components-Y64GTIMQ.cjs.map +1 -0
  70. package/dist/index.cjs +701 -4813
  71. package/dist/index.cjs.map +1 -1
  72. package/dist/index.d.cts +1274 -1026
  73. package/dist/index.d.ts +1274 -1026
  74. package/dist/index.mjs +358 -4730
  75. package/dist/index.mjs.map +1 -1
  76. package/package.json +27 -4
  77. package/src/components/index.ts +17 -0
  78. package/src/components/lazy-wrapper.tsx +281 -0
  79. package/src/index.ts +92 -7
  80. package/src/tools/AudioPlayer/components/HybridAudioPlayer.tsx +14 -5
  81. package/src/tools/AudioPlayer/lazy.tsx +85 -0
  82. package/src/tools/Gallery/components/Gallery.tsx +182 -0
  83. package/src/tools/Gallery/components/GalleryCarousel.tsx +251 -0
  84. package/src/tools/Gallery/components/GalleryCompact.tsx +173 -0
  85. package/src/tools/Gallery/components/GalleryGrid.tsx +493 -0
  86. package/src/tools/Gallery/components/GalleryImage.tsx +66 -0
  87. package/src/tools/Gallery/components/GalleryLightbox.tsx +331 -0
  88. package/src/tools/Gallery/components/GalleryMedia.tsx +66 -0
  89. package/src/tools/Gallery/components/GalleryThumbnails.tsx +173 -0
  90. package/src/tools/Gallery/components/GalleryThumbnailsVirtual.tsx +138 -0
  91. package/src/tools/Gallery/components/GalleryVideo.tsx +222 -0
  92. package/src/tools/Gallery/components/index.ts +13 -0
  93. package/src/tools/Gallery/hooks/index.ts +23 -0
  94. package/src/tools/Gallery/hooks/useGallery.ts +137 -0
  95. package/src/tools/Gallery/hooks/useImageDimensions.ts +223 -0
  96. package/src/tools/Gallery/hooks/usePinchZoom.ts +234 -0
  97. package/src/tools/Gallery/hooks/usePreloadImages.ts +71 -0
  98. package/src/tools/Gallery/hooks/useSwipe.ts +86 -0
  99. package/src/tools/Gallery/hooks/useVirtualList.ts +129 -0
  100. package/src/tools/Gallery/hooks/useZoom.ts +316 -0
  101. package/src/tools/Gallery/index.ts +66 -0
  102. package/src/tools/Gallery/types.ts +183 -0
  103. package/src/tools/Gallery/utils/imageAnalysis.ts +52 -0
  104. package/src/tools/Gallery/utils/index.ts +11 -0
  105. package/src/tools/ImageViewer/components/ImageToolbar.tsx +20 -8
  106. package/src/tools/ImageViewer/components/ImageViewer.tsx +12 -4
  107. package/src/tools/ImageViewer/lazy.tsx +37 -0
  108. package/src/tools/JsonForm/lazy.tsx +43 -0
  109. package/src/tools/JsonForm/widgets/ColorWidget.tsx +4 -1
  110. package/src/tools/JsonTree/lazy.tsx +45 -0
  111. package/src/tools/LottiePlayer/lazy.tsx +57 -0
  112. package/src/tools/Map/components/CustomOverlay.tsx +54 -0
  113. package/src/tools/Map/components/DrawControl.tsx +36 -0
  114. package/src/tools/Map/components/GeocoderControl.tsx +70 -0
  115. package/src/tools/Map/components/LayerSwitcher.tsx +225 -0
  116. package/src/tools/Map/components/MapCluster.tsx +273 -0
  117. package/src/tools/Map/components/MapContainer.tsx +191 -0
  118. package/src/tools/Map/components/MapControls.tsx +44 -0
  119. package/src/tools/Map/components/MapLegend.tsx +161 -0
  120. package/src/tools/Map/components/MapMarker.tsx +102 -0
  121. package/src/tools/Map/components/MapPopup.tsx +46 -0
  122. package/src/tools/Map/components/MapSource.tsx +30 -0
  123. package/src/tools/Map/components/index.ts +20 -0
  124. package/src/tools/Map/context/MapContext.tsx +89 -0
  125. package/src/tools/Map/context/index.ts +2 -0
  126. package/src/tools/Map/hooks/index.ts +9 -0
  127. package/src/tools/Map/hooks/useMap.ts +11 -0
  128. package/src/tools/Map/hooks/useMapControl.ts +99 -0
  129. package/src/tools/Map/hooks/useMapEvents.ts +147 -0
  130. package/src/tools/Map/hooks/useMapLayers.ts +83 -0
  131. package/src/tools/Map/hooks/useMapViewport.ts +62 -0
  132. package/src/tools/Map/hooks/useMarkers.ts +85 -0
  133. package/src/tools/Map/index.ts +116 -0
  134. package/src/tools/Map/layers/cluster.ts +94 -0
  135. package/src/tools/Map/layers/index.ts +15 -0
  136. package/src/tools/Map/layers/line.ts +93 -0
  137. package/src/tools/Map/layers/point.ts +61 -0
  138. package/src/tools/Map/layers/polygon.ts +73 -0
  139. package/src/tools/Map/lazy.tsx +56 -0
  140. package/src/tools/Map/styles/index.ts +15 -0
  141. package/src/tools/Map/types.ts +259 -0
  142. package/src/tools/Map/utils/geo.ts +88 -0
  143. package/src/tools/Map/utils/index.ts +16 -0
  144. package/src/tools/Map/utils/transform.ts +107 -0
  145. package/src/tools/Mermaid/Mermaid.client.tsx +12 -4
  146. package/src/tools/Mermaid/components/MermaidFullscreenModal.tsx +6 -2
  147. package/src/tools/Mermaid/lazy.tsx +46 -0
  148. package/src/tools/OpenapiViewer/lazy.tsx +72 -0
  149. package/src/tools/PrettyCode/PrettyCode.client.tsx +10 -3
  150. package/src/tools/PrettyCode/lazy.tsx +64 -0
  151. package/src/tools/VideoPlayer/lazy.tsx +63 -0
  152. package/dist/Mermaid.client-4OCKJ6QD.mjs.map +0 -1
  153. package/dist/Mermaid.client-ZP6OE46Z.cjs.map +0 -1
  154. package/dist/PlaygroundLayout-LMQTVXSP.mjs.map +0 -1
  155. package/dist/PlaygroundLayout-XXVBU4WZ.cjs.map +0 -1
  156. package/dist/PrettyCode.client-2CLSV2VD.cjs.map +0 -1
  157. package/dist/PrettyCode.client-Y2BVON7R.mjs.map +0 -1
  158. package/dist/chunk-FB5QBSI3.cjs.map +0 -1
  159. package/dist/chunk-L6UHASYQ.mjs.map +0 -1
@@ -0,0 +1,346 @@
1
+ 'use strict';
2
+
3
+ var chunkWGEGR3DF_cjs = require('./chunk-WGEGR3DF.cjs');
4
+ var zustand = require('zustand');
5
+ var middleware = require('zustand/middleware');
6
+ var shallow = require('zustand/react/shallow');
7
+ var lib = require('@djangocfg/ui-core/lib');
8
+
9
+ var cacheDebug = lib.createLogger("MediaCache");
10
+ var STREAM_URL_TTL = 30 * 1e3;
11
+ var DEFAULT_VIDEO_SETTINGS = {
12
+ volume: 1,
13
+ isLooping: false
14
+ };
15
+ var initialState = {
16
+ blobUrls: /* @__PURE__ */ new Map(),
17
+ imageDimensions: /* @__PURE__ */ new Map(),
18
+ audioPlaybackPositions: /* @__PURE__ */ new Map(),
19
+ audioEffectConfigs: /* @__PURE__ */ new Map(),
20
+ videoStreamUrls: /* @__PURE__ */ new Map(),
21
+ videoPosterUrls: /* @__PURE__ */ new Map(),
22
+ videoPlaybackPositions: /* @__PURE__ */ new Map(),
23
+ videoMetadata: /* @__PURE__ */ new Map(),
24
+ videoPlayerSettings: DEFAULT_VIDEO_SETTINGS
25
+ };
26
+ var useMediaCacheStore = zustand.create()(
27
+ middleware.devtools(
28
+ middleware.persist(
29
+ (set, get) => ({
30
+ ...initialState,
31
+ // ========== Blob URL Management ==========
32
+ getOrCreateBlobUrl: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((key, content, mimeType) => {
33
+ const existing = get().blobUrls.get(key);
34
+ if (existing) {
35
+ cacheDebug.debug(`Blob URL reused: ${key}`, { refCount: existing.refCount + 1 });
36
+ set(
37
+ (state) => ({
38
+ blobUrls: new Map(state.blobUrls).set(key, {
39
+ ...existing,
40
+ refCount: existing.refCount + 1
41
+ })
42
+ }),
43
+ false,
44
+ "blobUrl/incrementRef"
45
+ );
46
+ return existing.url;
47
+ }
48
+ const blob = new Blob([content], { type: mimeType });
49
+ const url = URL.createObjectURL(blob);
50
+ const sizeMB = (content.byteLength / 1024 / 1024).toFixed(2);
51
+ cacheDebug.debug(`Blob URL created: ${key}`, { mimeType, size: `${sizeMB}MB` });
52
+ set(
53
+ (state) => ({
54
+ blobUrls: new Map(state.blobUrls).set(key, {
55
+ url,
56
+ refCount: 1,
57
+ createdAt: Date.now()
58
+ })
59
+ }),
60
+ false,
61
+ "blobUrl/create"
62
+ );
63
+ return url;
64
+ }, "getOrCreateBlobUrl"),
65
+ releaseBlobUrl: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((key) => {
66
+ const entry = get().blobUrls.get(key);
67
+ if (!entry) return;
68
+ if (entry.refCount <= 1) {
69
+ cacheDebug.debug(`Blob URL revoked: ${key}`);
70
+ URL.revokeObjectURL(entry.url);
71
+ set(
72
+ (state) => {
73
+ const newMap = new Map(state.blobUrls);
74
+ newMap.delete(key);
75
+ return { blobUrls: newMap };
76
+ },
77
+ false,
78
+ "blobUrl/revoke"
79
+ );
80
+ } else {
81
+ cacheDebug.debug(`Blob URL released: ${key}`, { refCount: entry.refCount - 1 });
82
+ set(
83
+ (state) => ({
84
+ blobUrls: new Map(state.blobUrls).set(key, {
85
+ ...entry,
86
+ refCount: entry.refCount - 1
87
+ })
88
+ }),
89
+ false,
90
+ "blobUrl/decrementRef"
91
+ );
92
+ }
93
+ }, "releaseBlobUrl"),
94
+ hasBlobUrl: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((key) => get().blobUrls.has(key), "hasBlobUrl"),
95
+ // ========== Image Cache ==========
96
+ cacheDimensions: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((src, dims) => {
97
+ set(
98
+ (state) => ({
99
+ imageDimensions: new Map(state.imageDimensions).set(src, dims)
100
+ }),
101
+ false,
102
+ "image/cacheDimensions"
103
+ );
104
+ }, "cacheDimensions"),
105
+ getDimensions: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((src) => get().imageDimensions.get(src) ?? null, "getDimensions"),
106
+ // ========== Audio Cache ==========
107
+ saveAudioPosition: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((uri, time) => {
108
+ set(
109
+ (state) => ({
110
+ audioPlaybackPositions: new Map(state.audioPlaybackPositions).set(
111
+ uri,
112
+ time
113
+ )
114
+ }),
115
+ false,
116
+ "audio/savePosition"
117
+ );
118
+ }, "saveAudioPosition"),
119
+ getAudioPosition: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((uri) => get().audioPlaybackPositions.get(uri) ?? null, "getAudioPosition"),
120
+ getEffectConfig: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((key) => get().audioEffectConfigs.get(key) ?? null, "getEffectConfig"),
121
+ cacheEffectConfig: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((key, config) => {
122
+ set(
123
+ (state) => ({
124
+ audioEffectConfigs: new Map(state.audioEffectConfigs).set(
125
+ key,
126
+ config
127
+ )
128
+ }),
129
+ false,
130
+ "audio/cacheEffectConfig"
131
+ );
132
+ }, "cacheEffectConfig"),
133
+ // ========== Video Cache ==========
134
+ getOrCreateStreamUrl: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((sessionId, path, generator) => {
135
+ const key = `${sessionId}:${path}`;
136
+ const cached = get().videoStreamUrls.get(key);
137
+ if (cached && Date.now() - cached.timestamp < STREAM_URL_TTL) {
138
+ return cached.url;
139
+ }
140
+ const url = generator(sessionId, path);
141
+ set(
142
+ (state) => ({
143
+ videoStreamUrls: new Map(state.videoStreamUrls).set(key, {
144
+ url,
145
+ timestamp: Date.now()
146
+ })
147
+ }),
148
+ false,
149
+ "video/cacheStreamUrl"
150
+ );
151
+ return url;
152
+ }, "getOrCreateStreamUrl"),
153
+ getPosterUrl: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((title) => get().videoPosterUrls.get(title) ?? null, "getPosterUrl"),
154
+ cachePosterUrl: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((title, url) => {
155
+ set(
156
+ (state) => ({
157
+ videoPosterUrls: new Map(state.videoPosterUrls).set(title, url)
158
+ }),
159
+ false,
160
+ "video/cachePosterUrl"
161
+ );
162
+ }, "cachePosterUrl"),
163
+ saveVideoPosition: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((key, time) => {
164
+ set(
165
+ (state) => ({
166
+ videoPlaybackPositions: new Map(state.videoPlaybackPositions).set(
167
+ key,
168
+ time
169
+ )
170
+ }),
171
+ false,
172
+ "video/savePosition"
173
+ );
174
+ }, "saveVideoPosition"),
175
+ getVideoPosition: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((key) => get().videoPlaybackPositions.get(key) ?? null, "getVideoPosition"),
176
+ cacheVideoMetadata: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((url, meta) => {
177
+ set(
178
+ (state) => ({
179
+ videoMetadata: new Map(state.videoMetadata).set(url, meta)
180
+ }),
181
+ false,
182
+ "video/cacheMetadata"
183
+ );
184
+ }, "cacheVideoMetadata"),
185
+ getVideoMetadata: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((url) => get().videoMetadata.get(url) ?? null, "getVideoMetadata"),
186
+ invalidateSession: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((sessionId) => {
187
+ set(
188
+ (state) => {
189
+ const newUrls = new Map(state.videoStreamUrls);
190
+ for (const [key] of newUrls) {
191
+ if (key.startsWith(`${sessionId}:`)) {
192
+ newUrls.delete(key);
193
+ }
194
+ }
195
+ return { videoStreamUrls: newUrls };
196
+ },
197
+ false,
198
+ "video/invalidateSession"
199
+ );
200
+ }, "invalidateSession"),
201
+ getVideoPlayerSettings: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(() => get().videoPlayerSettings, "getVideoPlayerSettings"),
202
+ saveVideoPlayerSettings: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((settings) => {
203
+ set(
204
+ (state) => ({
205
+ videoPlayerSettings: { ...state.videoPlayerSettings, ...settings }
206
+ }),
207
+ false,
208
+ "video/savePlayerSettings"
209
+ );
210
+ }, "saveVideoPlayerSettings"),
211
+ // ========== Global ==========
212
+ clearCache: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(() => {
213
+ const stats = get().getCacheStats();
214
+ cacheDebug.info("Clearing cache", stats);
215
+ get().blobUrls.forEach(({ url }) => URL.revokeObjectURL(url));
216
+ set(initialState, false, "clearCache");
217
+ }, "clearCache"),
218
+ getCacheStats: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(() => ({
219
+ blobUrls: get().blobUrls.size,
220
+ dimensions: get().imageDimensions.size,
221
+ audioPositions: get().audioPlaybackPositions.size,
222
+ videoPositions: get().videoPlaybackPositions.size
223
+ }), "getCacheStats")
224
+ }),
225
+ {
226
+ name: "media-cache-storage",
227
+ // Only persist playback positions, poster URLs, and player settings
228
+ partialize: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name((state) => ({
229
+ audioPlaybackPositions: Array.from(
230
+ state.audioPlaybackPositions.entries()
231
+ ),
232
+ videoPlaybackPositions: Array.from(
233
+ state.videoPlaybackPositions.entries()
234
+ ),
235
+ videoPosterUrls: Array.from(state.videoPosterUrls.entries()),
236
+ videoPlayerSettings: state.videoPlayerSettings
237
+ }), "partialize"),
238
+ // Rehydrate Maps from arrays
239
+ onRehydrateStorage: /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(() => (state) => {
240
+ if (state) {
241
+ const persistedAudio = state.audioPlaybackPositions;
242
+ const persistedVideo = state.videoPlaybackPositions;
243
+ const persistedPosters = state.videoPosterUrls;
244
+ const persistedSettings = state.videoPlayerSettings;
245
+ state.audioPlaybackPositions = new Map(
246
+ Array.isArray(persistedAudio) ? persistedAudio : []
247
+ );
248
+ state.videoPlaybackPositions = new Map(
249
+ Array.isArray(persistedVideo) ? persistedVideo : []
250
+ );
251
+ state.videoPosterUrls = new Map(
252
+ Array.isArray(persistedPosters) ? persistedPosters : []
253
+ );
254
+ state.videoPlayerSettings = {
255
+ ...DEFAULT_VIDEO_SETTINGS,
256
+ ...persistedSettings && typeof persistedSettings === "object" ? persistedSettings : {}
257
+ };
258
+ }
259
+ }, "onRehydrateStorage")
260
+ }
261
+ ),
262
+ { name: "MediaCacheStore" }
263
+ )
264
+ );
265
+ var useImageCache = /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(() => useMediaCacheStore(
266
+ shallow.useShallow((state) => ({
267
+ getOrCreateBlobUrl: state.getOrCreateBlobUrl,
268
+ releaseBlobUrl: state.releaseBlobUrl,
269
+ hasBlobUrl: state.hasBlobUrl,
270
+ cacheDimensions: state.cacheDimensions,
271
+ getDimensions: state.getDimensions
272
+ }))
273
+ ), "useImageCache");
274
+ var useAudioCache = /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(() => useMediaCacheStore(
275
+ shallow.useShallow((state) => ({
276
+ getOrCreateBlobUrl: state.getOrCreateBlobUrl,
277
+ releaseBlobUrl: state.releaseBlobUrl,
278
+ hasBlobUrl: state.hasBlobUrl,
279
+ saveAudioPosition: state.saveAudioPosition,
280
+ getAudioPosition: state.getAudioPosition,
281
+ getEffectConfig: state.getEffectConfig,
282
+ cacheEffectConfig: state.cacheEffectConfig
283
+ }))
284
+ ), "useAudioCache");
285
+ var useVideoCache = /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(() => useMediaCacheStore(
286
+ shallow.useShallow((state) => ({
287
+ getOrCreateBlobUrl: state.getOrCreateBlobUrl,
288
+ releaseBlobUrl: state.releaseBlobUrl,
289
+ hasBlobUrl: state.hasBlobUrl,
290
+ getOrCreateStreamUrl: state.getOrCreateStreamUrl,
291
+ getPosterUrl: state.getPosterUrl,
292
+ cachePosterUrl: state.cachePosterUrl,
293
+ saveVideoPosition: state.saveVideoPosition,
294
+ getVideoPosition: state.getVideoPosition,
295
+ cacheVideoMetadata: state.cacheVideoMetadata,
296
+ getVideoMetadata: state.getVideoMetadata,
297
+ invalidateSession: state.invalidateSession,
298
+ getVideoPlayerSettings: state.getVideoPlayerSettings,
299
+ saveVideoPlayerSettings: state.saveVideoPlayerSettings
300
+ }))
301
+ ), "useVideoCache");
302
+ var useVideoPlayerSettings = /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(() => useMediaCacheStore(
303
+ shallow.useShallow((state) => ({
304
+ settings: state.videoPlayerSettings,
305
+ saveSettings: state.saveVideoPlayerSettings
306
+ }))
307
+ ), "useVideoPlayerSettings");
308
+ function useBlobUrlCleanup(key) {
309
+ const releaseBlobUrl = useMediaCacheStore((s) => s.releaseBlobUrl);
310
+ if (typeof window !== "undefined") {
311
+ const { useEffect } = chunkWGEGR3DF_cjs.__require("react");
312
+ useEffect(() => {
313
+ return () => {
314
+ if (key) {
315
+ releaseBlobUrl(key);
316
+ }
317
+ };
318
+ }, [key, releaseBlobUrl]);
319
+ }
320
+ }
321
+ chunkWGEGR3DF_cjs.__name(useBlobUrlCleanup, "useBlobUrlCleanup");
322
+ function generateContentKey(content) {
323
+ const arr = new Uint8Array(content);
324
+ const len = arr.length;
325
+ const start = arr.slice(0, Math.min(1024, len));
326
+ const end = arr.slice(Math.max(0, len - 1024));
327
+ let hash = len;
328
+ for (let i = 0; i < start.length; i++) {
329
+ hash = (hash << 5) - hash + start[i] | 0;
330
+ }
331
+ for (let i = 0; i < end.length; i++) {
332
+ hash = (hash << 5) - hash + end[i] | 0;
333
+ }
334
+ return `blob-${len}-${hash.toString(16)}`;
335
+ }
336
+ chunkWGEGR3DF_cjs.__name(generateContentKey, "generateContentKey");
337
+
338
+ exports.generateContentKey = generateContentKey;
339
+ exports.useAudioCache = useAudioCache;
340
+ exports.useBlobUrlCleanup = useBlobUrlCleanup;
341
+ exports.useImageCache = useImageCache;
342
+ exports.useMediaCacheStore = useMediaCacheStore;
343
+ exports.useVideoCache = useVideoCache;
344
+ exports.useVideoPlayerSettings = useVideoPlayerSettings;
345
+ //# sourceMappingURL=chunk-XTBRWVIV.cjs.map
346
+ //# sourceMappingURL=chunk-XTBRWVIV.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/stores/mediaCache.ts"],"names":["createLogger","create","devtools","persist","__name","useShallow","__require"],"mappings":"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","file":"chunk-XTBRWVIV.cjs","sourcesContent":["'use client';\n\nimport { create } from 'zustand';\nimport { persist, devtools } from 'zustand/middleware';\nimport { useShallow } from 'zustand/react/shallow';\nimport { createLogger } from '@djangocfg/ui-core/lib';\n\nconst cacheDebug = createLogger('MediaCache');\n\n// Types\ninterface BlobUrlEntry {\n url: string;\n refCount: number;\n createdAt: number;\n}\n\ninterface ImageDimensions {\n width: number;\n height: number;\n}\n\ninterface VideoMetadata {\n duration: number;\n width: number;\n height: number;\n codec?: string;\n}\n\ninterface EffectConfig {\n opacity: number;\n scale: number;\n blur: string;\n}\n\n/** Video player settings (persisted) */\ninterface VideoPlayerSettings {\n volume: number;\n isLooping: boolean;\n}\n\n// Stream URL TTL (30 seconds - shorter to avoid stale session/token issues)\nconst STREAM_URL_TTL = 30 * 1000;\n\ninterface MediaCacheState {\n // Blob URL cache (shared by Image, Audio, Video)\n blobUrls: Map<string, BlobUrlEntry>;\n\n // Image-specific\n imageDimensions: Map<string, ImageDimensions>;\n\n // Audio-specific\n audioPlaybackPositions: Map<string, number>;\n audioEffectConfigs: Map<string, EffectConfig>;\n\n // Video-specific\n videoStreamUrls: Map<string, { url: string; timestamp: number }>;\n videoPosterUrls: Map<string, string>;\n videoPlaybackPositions: Map<string, number>;\n videoMetadata: Map<string, VideoMetadata>;\n videoPlayerSettings: VideoPlayerSettings;\n}\n\ninterface MediaCacheActions {\n // Blob URL management (shared)\n getOrCreateBlobUrl: (\n key: string,\n content: ArrayBuffer,\n mimeType: string\n ) => string;\n releaseBlobUrl: (key: string) => void;\n hasBlobUrl: (key: string) => boolean;\n\n // Image actions\n cacheDimensions: (src: string, dims: ImageDimensions) => void;\n getDimensions: (src: string) => ImageDimensions | null;\n\n // Audio actions\n saveAudioPosition: (uri: string, time: number) => void;\n getAudioPosition: (uri: string) => number | null;\n getEffectConfig: (key: string) => EffectConfig | null;\n cacheEffectConfig: (key: string, config: EffectConfig) => void;\n\n // Video actions\n getOrCreateStreamUrl: (\n sessionId: string,\n path: string,\n generator: (sessionId: string, path: string) => string\n ) => string;\n getPosterUrl: (title: string) => string | null;\n cachePosterUrl: (title: string, url: string) => void;\n saveVideoPosition: (key: string, time: number) => void;\n getVideoPosition: (key: string) => number | null;\n cacheVideoMetadata: (url: string, meta: VideoMetadata) => void;\n getVideoMetadata: (url: string) => VideoMetadata | null;\n invalidateSession: (sessionId: string) => void;\n getVideoPlayerSettings: () => VideoPlayerSettings;\n saveVideoPlayerSettings: (settings: Partial<VideoPlayerSettings>) => void;\n\n // Global\n clearCache: () => void;\n getCacheStats: () => {\n blobUrls: number;\n dimensions: number;\n audioPositions: number;\n videoPositions: number;\n };\n}\n\ntype MediaCacheStore = MediaCacheState & MediaCacheActions;\n\n// Initial state\nconst DEFAULT_VIDEO_SETTINGS: VideoPlayerSettings = {\n volume: 1,\n isLooping: false,\n};\n\nconst initialState: MediaCacheState = {\n blobUrls: new Map(),\n imageDimensions: new Map(),\n audioPlaybackPositions: new Map(),\n audioEffectConfigs: new Map(),\n videoStreamUrls: new Map(),\n videoPosterUrls: new Map(),\n videoPlaybackPositions: new Map(),\n videoMetadata: new Map(),\n videoPlayerSettings: DEFAULT_VIDEO_SETTINGS,\n};\n\nexport const useMediaCacheStore = create<MediaCacheStore>()(\n devtools(\n persist(\n (set, get) => ({\n ...initialState,\n\n // ========== Blob URL Management ==========\n\n getOrCreateBlobUrl: (key, content, mimeType) => {\n const existing = get().blobUrls.get(key);\n if (existing) {\n // Increment ref count\n cacheDebug.debug(`Blob URL reused: ${key}`, { refCount: existing.refCount + 1 });\n set(\n (state) => ({\n blobUrls: new Map(state.blobUrls).set(key, {\n ...existing,\n refCount: existing.refCount + 1,\n }),\n }),\n false,\n 'blobUrl/incrementRef'\n );\n return existing.url;\n }\n\n // Create new blob URL\n const blob = new Blob([content], { type: mimeType });\n const url = URL.createObjectURL(blob);\n const sizeMB = (content.byteLength / 1024 / 1024).toFixed(2);\n cacheDebug.debug(`Blob URL created: ${key}`, { mimeType, size: `${sizeMB}MB` });\n set(\n (state) => ({\n blobUrls: new Map(state.blobUrls).set(key, {\n url,\n refCount: 1,\n createdAt: Date.now(),\n }),\n }),\n false,\n 'blobUrl/create'\n );\n return url;\n },\n\n releaseBlobUrl: (key) => {\n const entry = get().blobUrls.get(key);\n if (!entry) return;\n\n if (entry.refCount <= 1) {\n // Last reference - revoke and remove\n cacheDebug.debug(`Blob URL revoked: ${key}`);\n URL.revokeObjectURL(entry.url);\n set(\n (state) => {\n const newMap = new Map(state.blobUrls);\n newMap.delete(key);\n return { blobUrls: newMap };\n },\n false,\n 'blobUrl/revoke'\n );\n } else {\n // Decrement ref count\n cacheDebug.debug(`Blob URL released: ${key}`, { refCount: entry.refCount - 1 });\n set(\n (state) => ({\n blobUrls: new Map(state.blobUrls).set(key, {\n ...entry,\n refCount: entry.refCount - 1,\n }),\n }),\n false,\n 'blobUrl/decrementRef'\n );\n }\n },\n\n hasBlobUrl: (key) => get().blobUrls.has(key),\n\n // ========== Image Cache ==========\n\n cacheDimensions: (src, dims) => {\n set(\n (state) => ({\n imageDimensions: new Map(state.imageDimensions).set(src, dims),\n }),\n false,\n 'image/cacheDimensions'\n );\n },\n\n getDimensions: (src) => get().imageDimensions.get(src) ?? null,\n\n // ========== Audio Cache ==========\n\n saveAudioPosition: (uri, time) => {\n set(\n (state) => ({\n audioPlaybackPositions: new Map(state.audioPlaybackPositions).set(\n uri,\n time\n ),\n }),\n false,\n 'audio/savePosition'\n );\n },\n\n getAudioPosition: (uri) =>\n get().audioPlaybackPositions.get(uri) ?? null,\n\n getEffectConfig: (key) => get().audioEffectConfigs.get(key) ?? null,\n\n cacheEffectConfig: (key, config) => {\n set(\n (state) => ({\n audioEffectConfigs: new Map(state.audioEffectConfigs).set(\n key,\n config\n ),\n }),\n false,\n 'audio/cacheEffectConfig'\n );\n },\n\n // ========== Video Cache ==========\n\n getOrCreateStreamUrl: (sessionId, path, generator) => {\n const key = `${sessionId}:${path}`;\n const cached = get().videoStreamUrls.get(key);\n\n // Return if fresh\n if (cached && Date.now() - cached.timestamp < STREAM_URL_TTL) {\n return cached.url;\n }\n\n // Generate and cache\n const url = generator(sessionId, path);\n set(\n (state) => ({\n videoStreamUrls: new Map(state.videoStreamUrls).set(key, {\n url,\n timestamp: Date.now(),\n }),\n }),\n false,\n 'video/cacheStreamUrl'\n );\n return url;\n },\n\n getPosterUrl: (title) => get().videoPosterUrls.get(title) ?? null,\n\n cachePosterUrl: (title, url) => {\n set(\n (state) => ({\n videoPosterUrls: new Map(state.videoPosterUrls).set(title, url),\n }),\n false,\n 'video/cachePosterUrl'\n );\n },\n\n saveVideoPosition: (key, time) => {\n set(\n (state) => ({\n videoPlaybackPositions: new Map(state.videoPlaybackPositions).set(\n key,\n time\n ),\n }),\n false,\n 'video/savePosition'\n );\n },\n\n getVideoPosition: (key) =>\n get().videoPlaybackPositions.get(key) ?? null,\n\n cacheVideoMetadata: (url, meta) => {\n set(\n (state) => ({\n videoMetadata: new Map(state.videoMetadata).set(url, meta),\n }),\n false,\n 'video/cacheMetadata'\n );\n },\n\n getVideoMetadata: (url) => get().videoMetadata.get(url) ?? null,\n\n invalidateSession: (sessionId) => {\n set(\n (state) => {\n const newUrls = new Map(state.videoStreamUrls);\n for (const [key] of newUrls) {\n if (key.startsWith(`${sessionId}:`)) {\n newUrls.delete(key);\n }\n }\n return { videoStreamUrls: newUrls };\n },\n false,\n 'video/invalidateSession'\n );\n },\n\n getVideoPlayerSettings: () => get().videoPlayerSettings,\n\n saveVideoPlayerSettings: (settings) => {\n set(\n (state) => ({\n videoPlayerSettings: { ...state.videoPlayerSettings, ...settings },\n }),\n false,\n 'video/savePlayerSettings'\n );\n },\n\n // ========== Global ==========\n\n clearCache: () => {\n const stats = get().getCacheStats();\n cacheDebug.info('Clearing cache', stats);\n // Revoke all blob URLs before clearing\n get().blobUrls.forEach(({ url }) => URL.revokeObjectURL(url));\n set(initialState, false, 'clearCache');\n },\n\n getCacheStats: () => ({\n blobUrls: get().blobUrls.size,\n dimensions: get().imageDimensions.size,\n audioPositions: get().audioPlaybackPositions.size,\n videoPositions: get().videoPlaybackPositions.size,\n }),\n }),\n {\n name: 'media-cache-storage',\n // Only persist playback positions, poster URLs, and player settings\n partialize: (state) => ({\n audioPlaybackPositions: Array.from(\n state.audioPlaybackPositions.entries()\n ),\n videoPlaybackPositions: Array.from(\n state.videoPlaybackPositions.entries()\n ),\n videoPosterUrls: Array.from(state.videoPosterUrls.entries()),\n videoPlayerSettings: state.videoPlayerSettings,\n }),\n // Rehydrate Maps from arrays\n onRehydrateStorage: () => (state) => {\n if (state) {\n // Type assertion for persisted data\n const persistedAudio = state.audioPlaybackPositions as unknown;\n const persistedVideo = state.videoPlaybackPositions as unknown;\n const persistedPosters = state.videoPosterUrls as unknown;\n const persistedSettings = state.videoPlayerSettings as unknown;\n\n state.audioPlaybackPositions = new Map(\n Array.isArray(persistedAudio)\n ? (persistedAudio as [string, number][])\n : []\n );\n state.videoPlaybackPositions = new Map(\n Array.isArray(persistedVideo)\n ? (persistedVideo as [string, number][])\n : []\n );\n state.videoPosterUrls = new Map(\n Array.isArray(persistedPosters)\n ? (persistedPosters as [string, string][])\n : []\n );\n // Merge persisted settings with defaults (handles missing fields)\n state.videoPlayerSettings = {\n ...DEFAULT_VIDEO_SETTINGS,\n ...(persistedSettings && typeof persistedSettings === 'object'\n ? (persistedSettings as Partial<VideoPlayerSettings>)\n : {}),\n };\n }\n },\n }\n ),\n { name: 'MediaCacheStore' }\n )\n);\n\n// ========== Selective Hooks ==========\n\n/**\n * Hook for image-related cache operations\n * Uses useShallow to prevent infinite re-renders\n */\nexport const useImageCache = () =>\n useMediaCacheStore(\n useShallow((state) => ({\n getOrCreateBlobUrl: state.getOrCreateBlobUrl,\n releaseBlobUrl: state.releaseBlobUrl,\n hasBlobUrl: state.hasBlobUrl,\n cacheDimensions: state.cacheDimensions,\n getDimensions: state.getDimensions,\n }))\n );\n\n/**\n * Hook for audio-related cache operations\n * Uses useShallow to prevent infinite re-renders\n */\nexport const useAudioCache = () =>\n useMediaCacheStore(\n useShallow((state) => ({\n getOrCreateBlobUrl: state.getOrCreateBlobUrl,\n releaseBlobUrl: state.releaseBlobUrl,\n hasBlobUrl: state.hasBlobUrl,\n saveAudioPosition: state.saveAudioPosition,\n getAudioPosition: state.getAudioPosition,\n getEffectConfig: state.getEffectConfig,\n cacheEffectConfig: state.cacheEffectConfig,\n }))\n );\n\n/**\n * Hook for video-related cache operations\n * Uses useShallow to prevent infinite re-renders\n */\nexport const useVideoCache = () =>\n useMediaCacheStore(\n useShallow((state) => ({\n getOrCreateBlobUrl: state.getOrCreateBlobUrl,\n releaseBlobUrl: state.releaseBlobUrl,\n hasBlobUrl: state.hasBlobUrl,\n getOrCreateStreamUrl: state.getOrCreateStreamUrl,\n getPosterUrl: state.getPosterUrl,\n cachePosterUrl: state.cachePosterUrl,\n saveVideoPosition: state.saveVideoPosition,\n getVideoPosition: state.getVideoPosition,\n cacheVideoMetadata: state.cacheVideoMetadata,\n getVideoMetadata: state.getVideoMetadata,\n invalidateSession: state.invalidateSession,\n getVideoPlayerSettings: state.getVideoPlayerSettings,\n saveVideoPlayerSettings: state.saveVideoPlayerSettings,\n }))\n );\n\n/**\n * Hook for video player settings only\n * Returns current settings and save function\n */\nexport const useVideoPlayerSettings = () =>\n useMediaCacheStore(\n useShallow((state) => ({\n settings: state.videoPlayerSettings,\n saveSettings: state.saveVideoPlayerSettings,\n }))\n );\n\n/**\n * Hook for blob URL cleanup on unmount\n */\nexport function useBlobUrlCleanup(key: string | null) {\n const releaseBlobUrl = useMediaCacheStore((s) => s.releaseBlobUrl);\n\n // Using inline effect to avoid importing useEffect in store\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const { useEffect } = require('react');\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n return () => {\n if (key) {\n releaseBlobUrl(key);\n }\n };\n }, [key, releaseBlobUrl]);\n }\n}\n\n// ========== Utilities ==========\n\n/**\n * Generate a cache key from ArrayBuffer content\n * Uses first and last 1KB + length for fast hashing\n */\nexport function generateContentKey(content: ArrayBuffer): string {\n const arr = new Uint8Array(content);\n const len = arr.length;\n\n // Take first 1KB\n const start = arr.slice(0, Math.min(1024, len));\n // Take last 1KB\n const end = arr.slice(Math.max(0, len - 1024));\n\n // Simple hash from bytes\n let hash = len;\n for (let i = 0; i < start.length; i++) {\n hash = ((hash << 5) - hash + start[i]) | 0;\n }\n for (let i = 0; i < end.length; i++) {\n hash = ((hash << 5) - hash + end[i]) | 0;\n }\n\n return `blob-${len}-${hash.toString(16)}`;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export { AudioReactiveCover, GlowEffect, HybridAudioPlayer, HybridSimplePlayer, HybridWaveform, MeshEffect, OrbsEffect, SpotlightEffect } from './chunk-OVNC4KW6.mjs';
2
+ import './chunk-JWB2EWQO.mjs';
3
+ import './chunk-CGILA3WO.mjs';
4
+ //# sourceMappingURL=components-C7ZL7OMY.mjs.map
5
+ //# sourceMappingURL=components-C7ZL7OMY.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"components-C7ZL7OMY.mjs"}
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var chunk47T5ECYV_cjs = require('./chunk-47T5ECYV.cjs');
4
+ require('./chunk-F2N7P5XU.cjs');
5
+ require('./chunk-XTBRWVIV.cjs');
6
+ require('./chunk-WGEGR3DF.cjs');
7
+
8
+
9
+
10
+ Object.defineProperty(exports, "VideoControls", {
11
+ enumerable: true,
12
+ get: function () { return chunk47T5ECYV_cjs.VideoControls; }
13
+ });
14
+ Object.defineProperty(exports, "VideoErrorFallback", {
15
+ enumerable: true,
16
+ get: function () { return chunk47T5ECYV_cjs.VideoErrorFallback; }
17
+ });
18
+ Object.defineProperty(exports, "VideoPlayer", {
19
+ enumerable: true,
20
+ get: function () { return chunk47T5ECYV_cjs.VideoPlayer; }
21
+ });
22
+ Object.defineProperty(exports, "createVideoErrorFallback", {
23
+ enumerable: true,
24
+ get: function () { return chunk47T5ECYV_cjs.createVideoErrorFallback; }
25
+ });
26
+ //# sourceMappingURL=components-CJ2IB65O.cjs.map
27
+ //# sourceMappingURL=components-CJ2IB65O.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"components-CJ2IB65O.cjs"}
@@ -0,0 +1,6 @@
1
+ export { VideoControls, VideoErrorFallback, VideoPlayer, createVideoErrorFallback } from './chunk-UOMPPIED.mjs';
2
+ import './chunk-JWB2EWQO.mjs';
3
+ import './chunk-LTJX2JXE.mjs';
4
+ import './chunk-CGILA3WO.mjs';
5
+ //# sourceMappingURL=components-EASJYK45.mjs.map
6
+ //# sourceMappingURL=components-EASJYK45.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"components-EASJYK45.mjs"}
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var chunkTEFRA7GW_cjs = require('./chunk-TEFRA7GW.cjs');
4
+ require('./chunk-XTBRWVIV.cjs');
5
+ require('./chunk-WGEGR3DF.cjs');
6
+
7
+
8
+
9
+ Object.defineProperty(exports, "ImageInfo", {
10
+ enumerable: true,
11
+ get: function () { return chunkTEFRA7GW_cjs.ImageInfo; }
12
+ });
13
+ Object.defineProperty(exports, "ImageToolbar", {
14
+ enumerable: true,
15
+ get: function () { return chunkTEFRA7GW_cjs.ImageToolbar; }
16
+ });
17
+ Object.defineProperty(exports, "ImageViewer", {
18
+ enumerable: true,
19
+ get: function () { return chunkTEFRA7GW_cjs.ImageViewer; }
20
+ });
21
+ //# sourceMappingURL=components-LDRFDV4A.cjs.map
22
+ //# sourceMappingURL=components-LDRFDV4A.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"components-LDRFDV4A.cjs"}
@@ -0,0 +1,5 @@
1
+ export { ImageInfo, ImageToolbar, ImageViewer } from './chunk-2DSR7V2L.mjs';
2
+ import './chunk-LTJX2JXE.mjs';
3
+ import './chunk-CGILA3WO.mjs';
4
+ //# sourceMappingURL=components-VZKUTDJK.mjs.map
5
+ //# sourceMappingURL=components-VZKUTDJK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"components-VZKUTDJK.mjs"}
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ var chunkEVGWYASL_cjs = require('./chunk-EVGWYASL.cjs');
4
+ require('./chunk-F2N7P5XU.cjs');
5
+ require('./chunk-WGEGR3DF.cjs');
6
+
7
+
8
+
9
+ Object.defineProperty(exports, "AudioReactiveCover", {
10
+ enumerable: true,
11
+ get: function () { return chunkEVGWYASL_cjs.AudioReactiveCover; }
12
+ });
13
+ Object.defineProperty(exports, "GlowEffect", {
14
+ enumerable: true,
15
+ get: function () { return chunkEVGWYASL_cjs.GlowEffect; }
16
+ });
17
+ Object.defineProperty(exports, "HybridAudioPlayer", {
18
+ enumerable: true,
19
+ get: function () { return chunkEVGWYASL_cjs.HybridAudioPlayer; }
20
+ });
21
+ Object.defineProperty(exports, "HybridSimplePlayer", {
22
+ enumerable: true,
23
+ get: function () { return chunkEVGWYASL_cjs.HybridSimplePlayer; }
24
+ });
25
+ Object.defineProperty(exports, "HybridWaveform", {
26
+ enumerable: true,
27
+ get: function () { return chunkEVGWYASL_cjs.HybridWaveform; }
28
+ });
29
+ Object.defineProperty(exports, "MeshEffect", {
30
+ enumerable: true,
31
+ get: function () { return chunkEVGWYASL_cjs.MeshEffect; }
32
+ });
33
+ Object.defineProperty(exports, "OrbsEffect", {
34
+ enumerable: true,
35
+ get: function () { return chunkEVGWYASL_cjs.OrbsEffect; }
36
+ });
37
+ Object.defineProperty(exports, "SpotlightEffect", {
38
+ enumerable: true,
39
+ get: function () { return chunkEVGWYASL_cjs.SpotlightEffect; }
40
+ });
41
+ //# sourceMappingURL=components-Y64GTIMQ.cjs.map
42
+ //# sourceMappingURL=components-Y64GTIMQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"components-Y64GTIMQ.cjs"}