@djangocfg/ui-tools 2.1.390 → 2.1.393

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 (183) hide show
  1. package/README.md +7 -10
  2. package/dist/chunk-PAWJFY3S.mjs +6 -0
  3. package/dist/{chunk-N2XQF2OL.mjs.map → chunk-PAWJFY3S.mjs.map} +1 -1
  4. package/dist/chunk-PK6SKIKE.cjs +8 -0
  5. package/dist/{chunk-OLISEQHS.cjs.map → chunk-PK6SKIKE.cjs.map} +1 -1
  6. package/dist/file-icon/index.cjs +6 -6
  7. package/dist/file-icon/index.d.cts +1 -1
  8. package/dist/file-icon/index.d.ts +1 -1
  9. package/dist/file-icon/index.mjs +1 -1
  10. package/dist/tree/index.cjs +1372 -143
  11. package/dist/tree/index.cjs.map +1 -1
  12. package/dist/tree/index.d.cts +2 -2
  13. package/dist/tree/index.d.ts +2 -2
  14. package/dist/tree/index.mjs +1322 -3
  15. package/dist/tree/index.mjs.map +1 -1
  16. package/dist/{types-CevSbyfD.d.cts → types-B_zhyAqR.d.cts} +1 -1
  17. package/dist/{types-CevSbyfD.d.ts → types-B_zhyAqR.d.ts} +1 -1
  18. package/package.json +6 -14
  19. package/src/tools/AudioPlayer/README.md +4 -4
  20. package/src/tools/Chat/README.md +6 -6
  21. package/src/tools/CronScheduler/index.tsx +1 -1
  22. package/src/tools/CronScheduler/lazy.tsx +1 -1
  23. package/src/tools/ImageViewer/README.md +1 -1
  24. package/src/tools/JsonForm/README.md +2 -2
  25. package/src/tools/MarkdownEditor/README.md +3 -3
  26. package/src/tools/MarkdownMessage/README.md +2 -2
  27. package/src/tools/OpenapiViewer/components/DocsLayout/grouping.ts +5 -1
  28. package/src/tools/SpeechRecognition/README.md +1 -1
  29. package/dist/ChatRoot-EFNXQXXN.cjs +0 -15
  30. package/dist/ChatRoot-EFNXQXXN.cjs.map +0 -1
  31. package/dist/ChatRoot-FITF5RVP.mjs +0 -6
  32. package/dist/ChatRoot-FITF5RVP.mjs.map +0 -1
  33. package/dist/ChatRoot-PNNGQCYF.css +0 -7
  34. package/dist/ChatRoot-PNNGQCYF.css.map +0 -1
  35. package/dist/CronScheduler.client-DLMXCPAJ.mjs +0 -67
  36. package/dist/CronScheduler.client-DLMXCPAJ.mjs.map +0 -1
  37. package/dist/CronScheduler.client-WEJF4PWQ.cjs +0 -72
  38. package/dist/CronScheduler.client-WEJF4PWQ.cjs.map +0 -1
  39. package/dist/DictationField-AS2F33WI.cjs +0 -13
  40. package/dist/DictationField-AS2F33WI.cjs.map +0 -1
  41. package/dist/DictationField-WPONUCYE.mjs +0 -4
  42. package/dist/DictationField-WPONUCYE.mjs.map +0 -1
  43. package/dist/DocsLayout-EKASBSP7.mjs +0 -3448
  44. package/dist/DocsLayout-EKASBSP7.mjs.map +0 -1
  45. package/dist/DocsLayout-MBFIB4NO.css +0 -7
  46. package/dist/DocsLayout-MBFIB4NO.css.map +0 -1
  47. package/dist/DocsLayout-OURFYWQE.cjs +0 -3455
  48. package/dist/DocsLayout-OURFYWQE.cjs.map +0 -1
  49. package/dist/JsonSchemaForm-DD7CLRIG.cjs +0 -13
  50. package/dist/JsonSchemaForm-DD7CLRIG.cjs.map +0 -1
  51. package/dist/JsonSchemaForm-XKUIVELK.mjs +0 -4
  52. package/dist/JsonSchemaForm-XKUIVELK.mjs.map +0 -1
  53. package/dist/JsonTree-43PQAJKY.mjs +0 -5
  54. package/dist/JsonTree-43PQAJKY.mjs.map +0 -1
  55. package/dist/JsonTree-MLET23ZA.css +0 -7
  56. package/dist/JsonTree-MLET23ZA.css.map +0 -1
  57. package/dist/JsonTree-X6W5YEVY.cjs +0 -11
  58. package/dist/JsonTree-X6W5YEVY.cjs.map +0 -1
  59. package/dist/LottiePlayer.client-2S7ISJ2S.cjs +0 -168
  60. package/dist/LottiePlayer.client-2S7ISJ2S.cjs.map +0 -1
  61. package/dist/LottiePlayer.client-5LDSSJWS.mjs +0 -161
  62. package/dist/LottiePlayer.client-5LDSSJWS.mjs.map +0 -1
  63. package/dist/MapContainer-AKIPABJK.mjs +0 -4
  64. package/dist/MapContainer-AKIPABJK.mjs.map +0 -1
  65. package/dist/MapContainer-STVDMC36.cjs +0 -17
  66. package/dist/MapContainer-STVDMC36.cjs.map +0 -1
  67. package/dist/Mermaid.client-DDXWXZXY.css +0 -7
  68. package/dist/Mermaid.client-DDXWXZXY.css.map +0 -1
  69. package/dist/Mermaid.client-NL4SVR7F.mjs +0 -481
  70. package/dist/Mermaid.client-NL4SVR7F.mjs.map +0 -1
  71. package/dist/Mermaid.client-NNTI6DFX.cjs +0 -487
  72. package/dist/Mermaid.client-NNTI6DFX.cjs.map +0 -1
  73. package/dist/Player-BRV7XTWR.mjs +0 -4
  74. package/dist/Player-BRV7XTWR.mjs.map +0 -1
  75. package/dist/Player-PM7F7DD7.cjs +0 -13
  76. package/dist/Player-PM7F7DD7.cjs.map +0 -1
  77. package/dist/Player-ZGQKKOWI.css +0 -66
  78. package/dist/Player-ZGQKKOWI.css.map +0 -1
  79. package/dist/PrettyCode.client-GWFAIVFN.css +0 -7
  80. package/dist/PrettyCode.client-GWFAIVFN.css.map +0 -1
  81. package/dist/PrettyCode.client-KOHDVPPN.cjs +0 -285
  82. package/dist/PrettyCode.client-KOHDVPPN.cjs.map +0 -1
  83. package/dist/PrettyCode.client-ZGYGKE7G.mjs +0 -283
  84. package/dist/PrettyCode.client-ZGYGKE7G.mjs.map +0 -1
  85. package/dist/TreeRoot-5COOOSWG.mjs +0 -4
  86. package/dist/TreeRoot-5COOOSWG.mjs.map +0 -1
  87. package/dist/TreeRoot-AABP2J6Y.cjs +0 -19
  88. package/dist/TreeRoot-AABP2J6Y.cjs.map +0 -1
  89. package/dist/chunk-2NG4SXEP.mjs +0 -743
  90. package/dist/chunk-2NG4SXEP.mjs.map +0 -1
  91. package/dist/chunk-4LFB7I5K.cjs +0 -1387
  92. package/dist/chunk-4LFB7I5K.cjs.map +0 -1
  93. package/dist/chunk-5D2OCOPQ.cjs +0 -222
  94. package/dist/chunk-5D2OCOPQ.cjs.map +0 -1
  95. package/dist/chunk-5I5QNGUG.cjs +0 -611
  96. package/dist/chunk-5I5QNGUG.cjs.map +0 -1
  97. package/dist/chunk-6ZX2G25W.mjs +0 -1361
  98. package/dist/chunk-6ZX2G25W.mjs.map +0 -1
  99. package/dist/chunk-76NNDZH6.cjs +0 -1061
  100. package/dist/chunk-76NNDZH6.cjs.map +0 -1
  101. package/dist/chunk-7CWGZPO3.mjs +0 -214
  102. package/dist/chunk-7CWGZPO3.mjs.map +0 -1
  103. package/dist/chunk-7EYHNP3E.cjs +0 -965
  104. package/dist/chunk-7EYHNP3E.cjs.map +0 -1
  105. package/dist/chunk-7IYXZUJO.cjs +0 -769
  106. package/dist/chunk-7IYXZUJO.cjs.map +0 -1
  107. package/dist/chunk-ADEN3UA4.cjs +0 -892
  108. package/dist/chunk-ADEN3UA4.cjs.map +0 -1
  109. package/dist/chunk-B6IR5KSC.mjs +0 -59
  110. package/dist/chunk-B6IR5KSC.mjs.map +0 -1
  111. package/dist/chunk-C6GXVH5J.mjs +0 -338
  112. package/dist/chunk-C6GXVH5J.mjs.map +0 -1
  113. package/dist/chunk-DMX7W4XZ.mjs +0 -1113
  114. package/dist/chunk-DMX7W4XZ.mjs.map +0 -1
  115. package/dist/chunk-ECONRHIG.mjs +0 -212
  116. package/dist/chunk-ECONRHIG.mjs.map +0 -1
  117. package/dist/chunk-FEN5S772.cjs +0 -1227
  118. package/dist/chunk-FEN5S772.cjs.map +0 -1
  119. package/dist/chunk-FP2RLYQZ.cjs +0 -187
  120. package/dist/chunk-FP2RLYQZ.cjs.map +0 -1
  121. package/dist/chunk-FVVF7VCD.cjs +0 -1325
  122. package/dist/chunk-FVVF7VCD.cjs.map +0 -1
  123. package/dist/chunk-GYIO7W7M.mjs +0 -1197
  124. package/dist/chunk-GYIO7W7M.mjs.map +0 -1
  125. package/dist/chunk-KNDLV4PI.cjs +0 -1356
  126. package/dist/chunk-KNDLV4PI.cjs.map +0 -1
  127. package/dist/chunk-KNEQRUBA.mjs +0 -181
  128. package/dist/chunk-KNEQRUBA.mjs.map +0 -1
  129. package/dist/chunk-N2XQF2OL.mjs +0 -14
  130. package/dist/chunk-N4MZYNR4.mjs +0 -1342
  131. package/dist/chunk-N4MZYNR4.mjs.map +0 -1
  132. package/dist/chunk-NTVBIIUD.mjs +0 -1439
  133. package/dist/chunk-NTVBIIUD.mjs.map +0 -1
  134. package/dist/chunk-OBRSGM64.mjs +0 -607
  135. package/dist/chunk-OBRSGM64.mjs.map +0 -1
  136. package/dist/chunk-ODO4GMW7.mjs +0 -79
  137. package/dist/chunk-ODO4GMW7.mjs.map +0 -1
  138. package/dist/chunk-OLISEQHS.cjs +0 -18
  139. package/dist/chunk-PVAX67JG.mjs +0 -1041
  140. package/dist/chunk-PVAX67JG.mjs.map +0 -1
  141. package/dist/chunk-QJ6GTUCO.cjs +0 -81
  142. package/dist/chunk-QJ6GTUCO.cjs.map +0 -1
  143. package/dist/chunk-T3MWM23F.cjs +0 -214
  144. package/dist/chunk-T3MWM23F.cjs.map +0 -1
  145. package/dist/chunk-TBSHZO5R.cjs +0 -1134
  146. package/dist/chunk-TBSHZO5R.cjs.map +0 -1
  147. package/dist/chunk-UNCS5V5F.mjs +0 -887
  148. package/dist/chunk-UNCS5V5F.mjs.map +0 -1
  149. package/dist/chunk-VWQ5WOIL.mjs +0 -2059
  150. package/dist/chunk-VWQ5WOIL.mjs.map +0 -1
  151. package/dist/chunk-W75B7Y6C.cjs +0 -1478
  152. package/dist/chunk-W75B7Y6C.cjs.map +0 -1
  153. package/dist/chunk-Y6UTOBF6.mjs +0 -938
  154. package/dist/chunk-Y6UTOBF6.mjs.map +0 -1
  155. package/dist/chunk-YDPDTOSP.cjs +0 -2061
  156. package/dist/chunk-YDPDTOSP.cjs.map +0 -1
  157. package/dist/chunk-YW5IVWHQ.cjs +0 -346
  158. package/dist/chunk-YW5IVWHQ.cjs.map +0 -1
  159. package/dist/chunk-YXZ6GU7H.cjs +0 -63
  160. package/dist/chunk-YXZ6GU7H.cjs.map +0 -1
  161. package/dist/chunk-ZL7FH4NW.mjs +0 -1274
  162. package/dist/chunk-ZL7FH4NW.mjs.map +0 -1
  163. package/dist/components-EHOGXATG.cjs +0 -22
  164. package/dist/components-EHOGXATG.cjs.map +0 -1
  165. package/dist/components-MQ6DR7TX.cjs +0 -26
  166. package/dist/components-MQ6DR7TX.cjs.map +0 -1
  167. package/dist/components-XRX7QGLB.mjs +0 -5
  168. package/dist/components-XRX7QGLB.mjs.map +0 -1
  169. package/dist/components-YATKRWLH.mjs +0 -5
  170. package/dist/components-YATKRWLH.mjs.map +0 -1
  171. package/dist/index.cjs +0 -3674
  172. package/dist/index.cjs.map +0 -1
  173. package/dist/index.css +0 -234
  174. package/dist/index.css.map +0 -1
  175. package/dist/index.d.cts +0 -4929
  176. package/dist/index.d.ts +0 -4929
  177. package/dist/index.mjs +0 -2912
  178. package/dist/index.mjs.map +0 -1
  179. package/dist/launcher-5Y42OBSN.mjs +0 -6
  180. package/dist/launcher-5Y42OBSN.mjs.map +0 -1
  181. package/dist/launcher-PMW2YB24.cjs +0 -59
  182. package/dist/launcher-PMW2YB24.cjs.map +0 -1
  183. package/src/index.ts +0 -157
@@ -1,346 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkOLISEQHS_cjs = require('./chunk-OLISEQHS.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__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_cjs.__name((key) => get().blobUrls.has(key), "hasBlobUrl"),
95
- // ========== Image Cache ==========
96
- cacheDimensions: /* @__PURE__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_cjs.__name((src) => get().imageDimensions.get(src) ?? null, "getDimensions"),
106
- // ========== Audio Cache ==========
107
- saveAudioPosition: /* @__PURE__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_cjs.__name((uri) => get().audioPlaybackPositions.get(uri) ?? null, "getAudioPosition"),
120
- getEffectConfig: /* @__PURE__ */ chunkOLISEQHS_cjs.__name((key) => get().audioEffectConfigs.get(key) ?? null, "getEffectConfig"),
121
- cacheEffectConfig: /* @__PURE__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_cjs.__name((title) => get().videoPosterUrls.get(title) ?? null, "getPosterUrl"),
154
- cachePosterUrl: /* @__PURE__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_cjs.__name((key) => get().videoPlaybackPositions.get(key) ?? null, "getVideoPosition"),
176
- cacheVideoMetadata: /* @__PURE__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_cjs.__name((url) => get().videoMetadata.get(url) ?? null, "getVideoMetadata"),
186
- invalidateSession: /* @__PURE__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_cjs.__name(() => get().videoPlayerSettings, "getVideoPlayerSettings"),
202
- saveVideoPlayerSettings: /* @__PURE__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_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__ */ chunkOLISEQHS_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 } = chunkOLISEQHS_cjs.__require("react");
312
- useEffect(() => {
313
- return () => {
314
- if (key) {
315
- releaseBlobUrl(key);
316
- }
317
- };
318
- }, [key, releaseBlobUrl]);
319
- }
320
- }
321
- chunkOLISEQHS_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
- chunkOLISEQHS_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-YW5IVWHQ.cjs.map
346
- //# sourceMappingURL=chunk-YW5IVWHQ.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/stores/mediaCache.ts"],"names":["createLogger","create","devtools","persist","__name","useShallow","__require"],"mappings":"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","file":"chunk-YW5IVWHQ.cjs","sourcesContent":["'use client';\n\nimport { create } from 'zustand';\nimport { devtools, persist } from 'zustand/middleware';\nimport { useShallow } from 'zustand/react/shallow';\n\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"]}
@@ -1,63 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkOLISEQHS_cjs = require('./chunk-OLISEQHS.cjs');
4
- var lib = require('@djangocfg/ui-core/lib');
5
- var jsxRuntime = require('react/jsx-runtime');
6
- var lucideReact = require('lucide-react');
7
-
8
- function TreeSkeleton({ rows = 6, className }) {
9
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: lib.cn("flex flex-col gap-1 p-2", className), "aria-hidden": true, children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", style: { paddingLeft: i % 3 * 16 }, children: [
10
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "size-4 shrink-0 animate-pulse rounded bg-muted" }),
11
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "size-4 shrink-0 animate-pulse rounded bg-muted" }),
12
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-3 flex-1 animate-pulse rounded bg-muted" })
13
- ] }, i)) });
14
- }
15
- chunkOLISEQHS_cjs.__name(TreeSkeleton, "TreeSkeleton");
16
- function TreeError({ children, className }) {
17
- return /* @__PURE__ */ jsxRuntime.jsxs(
18
- "div",
19
- {
20
- className: lib.cn(
21
- "flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",
22
- className
23
- ),
24
- role: "alert",
25
- children: [
26
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { "aria-hidden": true, className: "mt-0.5 size-4 shrink-0" }),
27
- /* @__PURE__ */ jsxRuntime.jsx("span", { children })
28
- ]
29
- }
30
- );
31
- }
32
- chunkOLISEQHS_cjs.__name(TreeError, "TreeError");
33
-
34
- // src/tools/Tree/data/createDemoTree.ts
35
- function createDemoTree({
36
- depth = 3,
37
- breadth = 4,
38
- rootPrefix = "node"
39
- } = {}) {
40
- const make = /* @__PURE__ */ chunkOLISEQHS_cjs.__name((id, name, level) => {
41
- if (level >= depth) {
42
- return { id, data: { name } };
43
- }
44
- const children = [];
45
- for (let i = 0; i < breadth; i++) {
46
- const childId = `${id}/${i}`;
47
- children.push(make(childId, `${name}-${i}`, level + 1));
48
- }
49
- return { id, data: { name }, children };
50
- }, "make");
51
- const roots = [];
52
- for (let i = 0; i < breadth; i++) {
53
- roots.push(make(`${rootPrefix}-${i}`, `${rootPrefix} ${i}`, 1));
54
- }
55
- return roots;
56
- }
57
- chunkOLISEQHS_cjs.__name(createDemoTree, "createDemoTree");
58
-
59
- exports.TreeError = TreeError;
60
- exports.TreeSkeleton = TreeSkeleton;
61
- exports.createDemoTree = createDemoTree;
62
- //# sourceMappingURL=chunk-YXZ6GU7H.cjs.map
63
- //# sourceMappingURL=chunk-YXZ6GU7H.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tools/Tree/components/TreeSkeleton.tsx","../src/tools/Tree/components/TreeError.tsx","../src/tools/Tree/data/createDemoTree.ts"],"names":["jsx","cn","jsxs","__name","AlertCircle"],"mappings":"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","file":"chunk-YXZ6GU7H.cjs","sourcesContent":["'use client';\n\nimport { cn } from '@djangocfg/ui-core/lib';\n\nexport interface TreeSkeletonProps {\n rows?: number;\n className?: string;\n}\n\nexport function TreeSkeleton({ rows = 6, className }: TreeSkeletonProps) {\n return (\n <div className={cn('flex flex-col gap-1 p-2', className)} aria-hidden>\n {Array.from({ length: rows }).map((_, i) => (\n <div key={i} className=\"flex items-center gap-2\" style={{ paddingLeft: (i % 3) * 16 }}>\n <span className=\"size-4 shrink-0 animate-pulse rounded bg-muted\" />\n <span className=\"size-4 shrink-0 animate-pulse rounded bg-muted\" />\n <span className=\"h-3 flex-1 animate-pulse rounded bg-muted\" />\n </div>\n ))}\n </div>\n );\n}\n","'use client';\n\nimport { AlertCircle } from 'lucide-react';\nimport { cn } from '@djangocfg/ui-core/lib';\n\nexport interface TreeErrorProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport function TreeError({ children, className }: TreeErrorProps) {\n return (\n <div\n className={cn(\n 'flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive',\n className,\n )}\n role=\"alert\"\n >\n <AlertCircle aria-hidden className=\"mt-0.5 size-4 shrink-0\" />\n <span>{children}</span>\n </div>\n );\n}\n","'use client';\n\nimport type { TreeNode } from '../types';\n\nexport interface DemoNode {\n name: string;\n}\n\n/**\n * Build a deterministic synthetic tree for stories and tests.\n *\n * @example\n * const data = createDemoTree({ depth: 4, breadth: 3 });\n * <TreeRoot data={data} getItemName={(n) => n.data.name} />\n */\nexport function createDemoTree({\n depth = 3,\n breadth = 4,\n rootPrefix = 'node',\n}: {\n depth?: number;\n breadth?: number;\n rootPrefix?: string;\n} = {}): TreeNode<DemoNode>[] {\n const make = (id: string, name: string, level: number): TreeNode<DemoNode> => {\n if (level >= depth) {\n return { id, data: { name } };\n }\n const children: TreeNode<DemoNode>[] = [];\n for (let i = 0; i < breadth; i++) {\n const childId = `${id}/${i}`;\n children.push(make(childId, `${name}-${i}`, level + 1));\n }\n return { id, data: { name }, children };\n };\n\n const roots: TreeNode<DemoNode>[] = [];\n for (let i = 0; i < breadth; i++) {\n roots.push(make(`${rootPrefix}-${i}`, `${rootPrefix} ${i}`, 1));\n }\n return roots;\n}\n"]}