@emailmaker/filemanager 0.10.97 → 0.10.98

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 (501) hide show
  1. package/adapters/DataSourceProxyBase.upload.test.d.ts +1 -0
  2. package/adapters/TreeCache.d.ts +2 -0
  3. package/adapters/TreeCache.forceInvalidate.test.d.ts +1 -0
  4. package/adapters/cacheViewStrategy.d.ts +10 -1
  5. package/adapters/cacheViewTypes.d.ts +5 -0
  6. package/assets/image-editor/images/samples/sample4.json +871 -871
  7. package/assets/image-editor/images/stickers/beach/0.svg +25 -25
  8. package/assets/image-editor/images/stickers/beach/1.svg +14 -14
  9. package/assets/image-editor/images/stickers/beach/10.svg +34 -34
  10. package/assets/image-editor/images/stickers/beach/11.svg +27 -27
  11. package/assets/image-editor/images/stickers/beach/12.svg +10 -10
  12. package/assets/image-editor/images/stickers/beach/13.svg +25 -25
  13. package/assets/image-editor/images/stickers/beach/14.svg +16 -16
  14. package/assets/image-editor/images/stickers/beach/15.svg +14 -14
  15. package/assets/image-editor/images/stickers/beach/16.svg +44 -44
  16. package/assets/image-editor/images/stickers/beach/17.svg +35 -35
  17. package/assets/image-editor/images/stickers/beach/18.svg +32 -32
  18. package/assets/image-editor/images/stickers/beach/19.svg +23 -23
  19. package/assets/image-editor/images/stickers/beach/2.svg +14 -14
  20. package/assets/image-editor/images/stickers/beach/20.svg +24 -24
  21. package/assets/image-editor/images/stickers/beach/21.svg +11 -11
  22. package/assets/image-editor/images/stickers/beach/3.svg +26 -26
  23. package/assets/image-editor/images/stickers/beach/4.svg +25 -25
  24. package/assets/image-editor/images/stickers/beach/5.svg +22 -22
  25. package/assets/image-editor/images/stickers/beach/6.svg +20 -20
  26. package/assets/image-editor/images/stickers/beach/7.svg +32 -32
  27. package/assets/image-editor/images/stickers/beach/8.svg +28 -28
  28. package/assets/image-editor/images/stickers/beach/9.svg +18 -18
  29. package/assets/image-editor/images/stickers/categories/beach.svg +17 -17
  30. package/assets/image-editor/images/stickers/categories/clouds.svg +14 -14
  31. package/assets/image-editor/images/stickers/categories/doodles.svg +12 -12
  32. package/assets/image-editor/images/stickers/categories/emoticon.svg +9 -9
  33. package/assets/image-editor/images/stickers/categories/landmark.svg +19 -19
  34. package/assets/image-editor/images/stickers/categories/speech-bubble.svg +5 -5
  35. package/assets/image-editor/images/stickers/categories/star.svg +5 -5
  36. package/assets/image-editor/images/stickers/categories/transportation.svg +17 -17
  37. package/assets/image-editor/images/stickers/doodles/0.svg +201 -201
  38. package/assets/image-editor/images/stickers/doodles/1.svg +255 -255
  39. package/assets/image-editor/images/stickers/doodles/10.svg +160 -160
  40. package/assets/image-editor/images/stickers/doodles/11.svg +393 -393
  41. package/assets/image-editor/images/stickers/doodles/12.svg +293 -293
  42. package/assets/image-editor/images/stickers/doodles/13.svg +251 -251
  43. package/assets/image-editor/images/stickers/doodles/14.svg +370 -370
  44. package/assets/image-editor/images/stickers/doodles/15.svg +194 -194
  45. package/assets/image-editor/images/stickers/doodles/16.svg +383 -383
  46. package/assets/image-editor/images/stickers/doodles/17.svg +346 -346
  47. package/assets/image-editor/images/stickers/doodles/18.svg +286 -286
  48. package/assets/image-editor/images/stickers/doodles/19.svg +241 -241
  49. package/assets/image-editor/images/stickers/doodles/2.svg +227 -227
  50. package/assets/image-editor/images/stickers/doodles/20.svg +330 -330
  51. package/assets/image-editor/images/stickers/doodles/21.svg +200 -200
  52. package/assets/image-editor/images/stickers/doodles/22.svg +308 -308
  53. package/assets/image-editor/images/stickers/doodles/23.svg +518 -518
  54. package/assets/image-editor/images/stickers/doodles/24.svg +207 -207
  55. package/assets/image-editor/images/stickers/doodles/25.svg +260 -260
  56. package/assets/image-editor/images/stickers/doodles/26.svg +380 -380
  57. package/assets/image-editor/images/stickers/doodles/27.svg +222 -222
  58. package/assets/image-editor/images/stickers/doodles/28.svg +164 -164
  59. package/assets/image-editor/images/stickers/doodles/29.svg +271 -271
  60. package/assets/image-editor/images/stickers/doodles/3.svg +272 -272
  61. package/assets/image-editor/images/stickers/doodles/30.svg +283 -283
  62. package/assets/image-editor/images/stickers/doodles/31.svg +257 -257
  63. package/assets/image-editor/images/stickers/doodles/32.svg +276 -276
  64. package/assets/image-editor/images/stickers/doodles/33.svg +198 -198
  65. package/assets/image-editor/images/stickers/doodles/34.svg +314 -314
  66. package/assets/image-editor/images/stickers/doodles/35.svg +236 -236
  67. package/assets/image-editor/images/stickers/doodles/36.svg +273 -273
  68. package/assets/image-editor/images/stickers/doodles/37.svg +284 -284
  69. package/assets/image-editor/images/stickers/doodles/38.svg +167 -167
  70. package/assets/image-editor/images/stickers/doodles/39.svg +381 -381
  71. package/assets/image-editor/images/stickers/doodles/4.svg +216 -216
  72. package/assets/image-editor/images/stickers/doodles/40.svg +198 -198
  73. package/assets/image-editor/images/stickers/doodles/41.svg +259 -259
  74. package/assets/image-editor/images/stickers/doodles/42.svg +371 -371
  75. package/assets/image-editor/images/stickers/doodles/43.svg +198 -198
  76. package/assets/image-editor/images/stickers/doodles/44.svg +174 -174
  77. package/assets/image-editor/images/stickers/doodles/45.svg +178 -178
  78. package/assets/image-editor/images/stickers/doodles/46.svg +211 -211
  79. package/assets/image-editor/images/stickers/doodles/47.svg +195 -195
  80. package/assets/image-editor/images/stickers/doodles/48.svg +293 -293
  81. package/assets/image-editor/images/stickers/doodles/49.svg +191 -191
  82. package/assets/image-editor/images/stickers/doodles/5.svg +179 -179
  83. package/assets/image-editor/images/stickers/doodles/50.svg +323 -323
  84. package/assets/image-editor/images/stickers/doodles/51.svg +308 -308
  85. package/assets/image-editor/images/stickers/doodles/52.svg +162 -162
  86. package/assets/image-editor/images/stickers/doodles/53.svg +263 -263
  87. package/assets/image-editor/images/stickers/doodles/54.svg +175 -175
  88. package/assets/image-editor/images/stickers/doodles/55.svg +177 -177
  89. package/assets/image-editor/images/stickers/doodles/56.svg +160 -160
  90. package/assets/image-editor/images/stickers/doodles/57.svg +115 -115
  91. package/assets/image-editor/images/stickers/doodles/58.svg +327 -327
  92. package/assets/image-editor/images/stickers/doodles/59.svg +197 -197
  93. package/assets/image-editor/images/stickers/doodles/6.svg +388 -388
  94. package/assets/image-editor/images/stickers/doodles/60.svg +414 -414
  95. package/assets/image-editor/images/stickers/doodles/61.svg +287 -287
  96. package/assets/image-editor/images/stickers/doodles/62.svg +193 -193
  97. package/assets/image-editor/images/stickers/doodles/63.svg +329 -329
  98. package/assets/image-editor/images/stickers/doodles/64.svg +150 -150
  99. package/assets/image-editor/images/stickers/doodles/65.svg +275 -275
  100. package/assets/image-editor/images/stickers/doodles/66.svg +174 -174
  101. package/assets/image-editor/images/stickers/doodles/67.svg +343 -343
  102. package/assets/image-editor/images/stickers/doodles/68.svg +242 -242
  103. package/assets/image-editor/images/stickers/doodles/69.svg +160 -160
  104. package/assets/image-editor/images/stickers/doodles/7.svg +194 -194
  105. package/assets/image-editor/images/stickers/doodles/70.svg +365 -365
  106. package/assets/image-editor/images/stickers/doodles/71.svg +454 -454
  107. package/assets/image-editor/images/stickers/doodles/72.svg +162 -162
  108. package/assets/image-editor/images/stickers/doodles/73.svg +393 -393
  109. package/assets/image-editor/images/stickers/doodles/74.svg +206 -206
  110. package/assets/image-editor/images/stickers/doodles/75.svg +275 -275
  111. package/assets/image-editor/images/stickers/doodles/76.svg +350 -350
  112. package/assets/image-editor/images/stickers/doodles/77.svg +323 -323
  113. package/assets/image-editor/images/stickers/doodles/78.svg +316 -316
  114. package/assets/image-editor/images/stickers/doodles/79.svg +503 -503
  115. package/assets/image-editor/images/stickers/doodles/8.svg +185 -185
  116. package/assets/image-editor/images/stickers/doodles/80.svg +235 -235
  117. package/assets/image-editor/images/stickers/doodles/81.svg +184 -184
  118. package/assets/image-editor/images/stickers/doodles/82.svg +246 -246
  119. package/assets/image-editor/images/stickers/doodles/83.svg +125 -125
  120. package/assets/image-editor/images/stickers/doodles/84.svg +168 -168
  121. package/assets/image-editor/images/stickers/doodles/85.svg +138 -138
  122. package/assets/image-editor/images/stickers/doodles/86.svg +223 -223
  123. package/assets/image-editor/images/stickers/doodles/87.svg +475 -475
  124. package/assets/image-editor/images/stickers/doodles/88.svg +172 -172
  125. package/assets/image-editor/images/stickers/doodles/89.svg +199 -199
  126. package/assets/image-editor/images/stickers/doodles/9.svg +368 -368
  127. package/assets/image-editor/images/stickers/doodles/90.svg +298 -298
  128. package/assets/image-editor/images/stickers/doodles/91.svg +176 -176
  129. package/assets/image-editor/images/stickers/doodles/92.svg +152 -152
  130. package/assets/image-editor/images/stickers/doodles/93.svg +206 -206
  131. package/assets/image-editor/images/stickers/doodles/94.svg +202 -202
  132. package/assets/image-editor/images/stickers/doodles/95.svg +114 -114
  133. package/assets/image-editor/images/stickers/doodles/96.svg +149 -149
  134. package/assets/image-editor/images/stickers/doodles/97.svg +197 -197
  135. package/assets/image-editor/images/stickers/doodles/98.svg +397 -397
  136. package/assets/image-editor/images/stickers/doodles/99.svg +502 -502
  137. package/assets/image-editor/images/stickers/emoticons/afro-1.svg +122 -122
  138. package/assets/image-editor/images/stickers/emoticons/afro.svg +85 -85
  139. package/assets/image-editor/images/stickers/emoticons/agent.svg +114 -114
  140. package/assets/image-editor/images/stickers/emoticons/alien-1.svg +60 -60
  141. package/assets/image-editor/images/stickers/emoticons/alien.svg +64 -64
  142. package/assets/image-editor/images/stickers/emoticons/angel.svg +47 -47
  143. package/assets/image-editor/images/stickers/emoticons/angry-1.svg +83 -83
  144. package/assets/image-editor/images/stickers/emoticons/angry-2.svg +48 -48
  145. package/assets/image-editor/images/stickers/emoticons/angry-3.svg +45 -45
  146. package/assets/image-editor/images/stickers/emoticons/angry-4.svg +52 -52
  147. package/assets/image-editor/images/stickers/emoticons/angry-5.svg +62 -62
  148. package/assets/image-editor/images/stickers/emoticons/angry.svg +78 -78
  149. package/assets/image-editor/images/stickers/emoticons/arguing.svg +49 -49
  150. package/assets/image-editor/images/stickers/emoticons/arrogant.svg +98 -98
  151. package/assets/image-editor/images/stickers/emoticons/asian-1.svg +52 -52
  152. package/assets/image-editor/images/stickers/emoticons/asian.svg +54 -54
  153. package/assets/image-editor/images/stickers/emoticons/avatar.svg +49 -49
  154. package/assets/image-editor/images/stickers/emoticons/baby-1.svg +51 -51
  155. package/assets/image-editor/images/stickers/emoticons/baby-2.svg +54 -54
  156. package/assets/image-editor/images/stickers/emoticons/baby.svg +66 -66
  157. package/assets/image-editor/images/stickers/emoticons/bully.svg +68 -68
  158. package/assets/image-editor/images/stickers/emoticons/burglar.svg +75 -75
  159. package/assets/image-editor/images/stickers/emoticons/businessman.svg +52 -52
  160. package/assets/image-editor/images/stickers/emoticons/cheeky-1.svg +83 -83
  161. package/assets/image-editor/images/stickers/emoticons/cheeky.svg +73 -73
  162. package/assets/image-editor/images/stickers/emoticons/clown.svg +75 -75
  163. package/assets/image-editor/images/stickers/emoticons/confused-1.svg +74 -74
  164. package/assets/image-editor/images/stickers/emoticons/confused-2.svg +55 -55
  165. package/assets/image-editor/images/stickers/emoticons/confused-3.svg +45 -45
  166. package/assets/image-editor/images/stickers/emoticons/confused.svg +66 -66
  167. package/assets/image-editor/images/stickers/emoticons/creepy.svg +60 -60
  168. package/assets/image-editor/images/stickers/emoticons/crying-1.svg +55 -55
  169. package/assets/image-editor/images/stickers/emoticons/crying-2.svg +83 -83
  170. package/assets/image-editor/images/stickers/emoticons/crying-3.svg +53 -53
  171. package/assets/image-editor/images/stickers/emoticons/crying.svg +59 -59
  172. package/assets/image-editor/images/stickers/emoticons/dazed-1.svg +63 -63
  173. package/assets/image-editor/images/stickers/emoticons/dazed-2.svg +51 -51
  174. package/assets/image-editor/images/stickers/emoticons/dazed-3.svg +55 -55
  175. package/assets/image-editor/images/stickers/emoticons/dazed.svg +56 -56
  176. package/assets/image-editor/images/stickers/emoticons/dead-1.svg +61 -61
  177. package/assets/image-editor/images/stickers/emoticons/dead-2.svg +80 -80
  178. package/assets/image-editor/images/stickers/emoticons/dead-3.svg +66 -66
  179. package/assets/image-editor/images/stickers/emoticons/dead-4.svg +54 -54
  180. package/assets/image-editor/images/stickers/emoticons/dead-5.svg +52 -52
  181. package/assets/image-editor/images/stickers/emoticons/dead-6.svg +53 -53
  182. package/assets/image-editor/images/stickers/emoticons/dead.svg +54 -54
  183. package/assets/image-editor/images/stickers/emoticons/desperate-1.svg +47 -47
  184. package/assets/image-editor/images/stickers/emoticons/desperate.svg +75 -75
  185. package/assets/image-editor/images/stickers/emoticons/detective.svg +75 -75
  186. package/assets/image-editor/images/stickers/emoticons/dissapointment.svg +70 -70
  187. package/assets/image-editor/images/stickers/emoticons/doctor.svg +61 -61
  188. package/assets/image-editor/images/stickers/emoticons/drunk.svg +55 -55
  189. package/assets/image-editor/images/stickers/emoticons/dumb.svg +50 -50
  190. package/assets/image-editor/images/stickers/emoticons/emo-1.svg +104 -104
  191. package/assets/image-editor/images/stickers/emoticons/emo-2.svg +111 -111
  192. package/assets/image-editor/images/stickers/emoticons/emo.svg +56 -56
  193. package/assets/image-editor/images/stickers/emoticons/emoticon.svg +84 -84
  194. package/assets/image-editor/images/stickers/emoticons/evil.svg +59 -59
  195. package/assets/image-editor/images/stickers/emoticons/faint-1.svg +75 -75
  196. package/assets/image-editor/images/stickers/emoticons/faint.svg +84 -84
  197. package/assets/image-editor/images/stickers/emoticons/flirt-1.svg +81 -81
  198. package/assets/image-editor/images/stickers/emoticons/flirt-2.svg +68 -68
  199. package/assets/image-editor/images/stickers/emoticons/flirt.svg +71 -71
  200. package/assets/image-editor/images/stickers/emoticons/flirty.svg +60 -60
  201. package/assets/image-editor/images/stickers/emoticons/gangster.svg +54 -54
  202. package/assets/image-editor/images/stickers/emoticons/geek-1.svg +76 -76
  203. package/assets/image-editor/images/stickers/emoticons/geek.svg +69 -69
  204. package/assets/image-editor/images/stickers/emoticons/gentleman-1.svg +82 -82
  205. package/assets/image-editor/images/stickers/emoticons/gentleman-2.svg +58 -58
  206. package/assets/image-editor/images/stickers/emoticons/gentleman-3.svg +54 -54
  207. package/assets/image-editor/images/stickers/emoticons/gentleman-4.svg +59 -59
  208. package/assets/image-editor/images/stickers/emoticons/gentleman.svg +57 -57
  209. package/assets/image-editor/images/stickers/emoticons/ginger.svg +55 -55
  210. package/assets/image-editor/images/stickers/emoticons/girl-1.svg +70 -70
  211. package/assets/image-editor/images/stickers/emoticons/girl.svg +73 -73
  212. package/assets/image-editor/images/stickers/emoticons/goofy-1.svg +46 -46
  213. package/assets/image-editor/images/stickers/emoticons/goofy-2.svg +79 -79
  214. package/assets/image-editor/images/stickers/emoticons/goofy-3.svg +79 -79
  215. package/assets/image-editor/images/stickers/emoticons/goofy-4.svg +46 -46
  216. package/assets/image-editor/images/stickers/emoticons/goofy.svg +79 -79
  217. package/assets/image-editor/images/stickers/emoticons/grubby-1.svg +114 -114
  218. package/assets/image-editor/images/stickers/emoticons/grubby.svg +165 -165
  219. package/assets/image-editor/images/stickers/emoticons/happy-1.svg +49 -49
  220. package/assets/image-editor/images/stickers/emoticons/happy-10.svg +62 -62
  221. package/assets/image-editor/images/stickers/emoticons/happy-11.svg +55 -55
  222. package/assets/image-editor/images/stickers/emoticons/happy-12.svg +53 -53
  223. package/assets/image-editor/images/stickers/emoticons/happy-13.svg +58 -58
  224. package/assets/image-editor/images/stickers/emoticons/happy-14.svg +62 -62
  225. package/assets/image-editor/images/stickers/emoticons/happy-15.svg +49 -49
  226. package/assets/image-editor/images/stickers/emoticons/happy-16.svg +49 -49
  227. package/assets/image-editor/images/stickers/emoticons/happy-2.svg +71 -71
  228. package/assets/image-editor/images/stickers/emoticons/happy-3.svg +74 -74
  229. package/assets/image-editor/images/stickers/emoticons/happy-4.svg +77 -77
  230. package/assets/image-editor/images/stickers/emoticons/happy-5.svg +52 -52
  231. package/assets/image-editor/images/stickers/emoticons/happy-6.svg +54 -54
  232. package/assets/image-editor/images/stickers/emoticons/happy-7.svg +58 -58
  233. package/assets/image-editor/images/stickers/emoticons/happy-8.svg +42 -42
  234. package/assets/image-editor/images/stickers/emoticons/happy-9.svg +45 -45
  235. package/assets/image-editor/images/stickers/emoticons/happy.svg +48 -48
  236. package/assets/image-editor/images/stickers/emoticons/harry-potter.svg +68 -68
  237. package/assets/image-editor/images/stickers/emoticons/heisenberg.svg +80 -80
  238. package/assets/image-editor/images/stickers/emoticons/hipster-1.svg +118 -118
  239. package/assets/image-editor/images/stickers/emoticons/hipster-2.svg +49 -49
  240. package/assets/image-editor/images/stickers/emoticons/hipster.svg +48 -48
  241. package/assets/image-editor/images/stickers/emoticons/in-love-1.svg +62 -62
  242. package/assets/image-editor/images/stickers/emoticons/in-love-2.svg +48 -48
  243. package/assets/image-editor/images/stickers/emoticons/in-love-3.svg +49 -49
  244. package/assets/image-editor/images/stickers/emoticons/in-love-4.svg +50 -50
  245. package/assets/image-editor/images/stickers/emoticons/in-love-5.svg +49 -49
  246. package/assets/image-editor/images/stickers/emoticons/in-love-6.svg +53 -53
  247. package/assets/image-editor/images/stickers/emoticons/in-love.svg +57 -57
  248. package/assets/image-editor/images/stickers/emoticons/japan.svg +79 -79
  249. package/assets/image-editor/images/stickers/emoticons/jew.svg +83 -83
  250. package/assets/image-editor/images/stickers/emoticons/joyful-1.svg +72 -72
  251. package/assets/image-editor/images/stickers/emoticons/joyful-2.svg +45 -45
  252. package/assets/image-editor/images/stickers/emoticons/joyful.svg +47 -47
  253. package/assets/image-editor/images/stickers/emoticons/kiss-1.svg +48 -48
  254. package/assets/image-editor/images/stickers/emoticons/kiss-2.svg +59 -59
  255. package/assets/image-editor/images/stickers/emoticons/kiss-3.svg +53 -53
  256. package/assets/image-editor/images/stickers/emoticons/kiss-4.svg +59 -59
  257. package/assets/image-editor/images/stickers/emoticons/kiss.svg +67 -67
  258. package/assets/image-editor/images/stickers/emoticons/laughing-1.svg +54 -54
  259. package/assets/image-editor/images/stickers/emoticons/laughing-2.svg +57 -57
  260. package/assets/image-editor/images/stickers/emoticons/laughing-3.svg +55 -55
  261. package/assets/image-editor/images/stickers/emoticons/laughing.svg +56 -56
  262. package/assets/image-editor/images/stickers/emoticons/listening.svg +55 -55
  263. package/assets/image-editor/images/stickers/emoticons/love.svg +74 -74
  264. package/assets/image-editor/images/stickers/emoticons/manly.svg +75 -75
  265. package/assets/image-editor/images/stickers/emoticons/miserly-1.svg +90 -90
  266. package/assets/image-editor/images/stickers/emoticons/miserly.svg +82 -82
  267. package/assets/image-editor/images/stickers/emoticons/nerd-1.svg +88 -88
  268. package/assets/image-editor/images/stickers/emoticons/nerd-2.svg +73 -73
  269. package/assets/image-editor/images/stickers/emoticons/nerd-3.svg +60 -60
  270. package/assets/image-editor/images/stickers/emoticons/nerd-4.svg +70 -70
  271. package/assets/image-editor/images/stickers/emoticons/nerd.svg +88 -88
  272. package/assets/image-editor/images/stickers/emoticons/ninja.svg +51 -51
  273. package/assets/image-editor/images/stickers/emoticons/pirate-1.svg +92 -92
  274. package/assets/image-editor/images/stickers/emoticons/pirate-2.svg +48 -48
  275. package/assets/image-editor/images/stickers/emoticons/pirate.svg +286 -286
  276. package/assets/image-editor/images/stickers/emoticons/punk-1.svg +134 -134
  277. package/assets/image-editor/images/stickers/emoticons/punk-2.svg +153 -153
  278. package/assets/image-editor/images/stickers/emoticons/punk.svg +82 -82
  279. package/assets/image-editor/images/stickers/emoticons/rapper.svg +51 -51
  280. package/assets/image-editor/images/stickers/emoticons/relieved.svg +56 -56
  281. package/assets/image-editor/images/stickers/emoticons/rich-1.svg +59 -59
  282. package/assets/image-editor/images/stickers/emoticons/rich-2.svg +93 -93
  283. package/assets/image-editor/images/stickers/emoticons/rich.svg +88 -88
  284. package/assets/image-editor/images/stickers/emoticons/rockstar.svg +177 -177
  285. package/assets/image-editor/images/stickers/emoticons/sad-1.svg +43 -43
  286. package/assets/image-editor/images/stickers/emoticons/sad-2.svg +49 -49
  287. package/assets/image-editor/images/stickers/emoticons/sad-3.svg +49 -49
  288. package/assets/image-editor/images/stickers/emoticons/sad-4.svg +49 -49
  289. package/assets/image-editor/images/stickers/emoticons/sad-5.svg +45 -45
  290. package/assets/image-editor/images/stickers/emoticons/sad-6.svg +47 -47
  291. package/assets/image-editor/images/stickers/emoticons/sad.svg +47 -47
  292. package/assets/image-editor/images/stickers/emoticons/scared-1.svg +79 -79
  293. package/assets/image-editor/images/stickers/emoticons/scared-2.svg +59 -59
  294. package/assets/image-editor/images/stickers/emoticons/scared-3.svg +52 -52
  295. package/assets/image-editor/images/stickers/emoticons/scared.svg +45 -45
  296. package/assets/image-editor/images/stickers/emoticons/sceptic-1.svg +59 -59
  297. package/assets/image-editor/images/stickers/emoticons/sceptic-2.svg +80 -80
  298. package/assets/image-editor/images/stickers/emoticons/sceptic-3.svg +59 -59
  299. package/assets/image-editor/images/stickers/emoticons/sceptic-4.svg +46 -46
  300. package/assets/image-editor/images/stickers/emoticons/sceptic-5.svg +43 -43
  301. package/assets/image-editor/images/stickers/emoticons/sceptic-6.svg +42 -42
  302. package/assets/image-editor/images/stickers/emoticons/sceptic-7.svg +50 -50
  303. package/assets/image-editor/images/stickers/emoticons/sceptic.svg +44 -44
  304. package/assets/image-editor/images/stickers/emoticons/secret.svg +48 -48
  305. package/assets/image-editor/images/stickers/emoticons/shocked-1.svg +67 -67
  306. package/assets/image-editor/images/stickers/emoticons/shocked-2.svg +44 -44
  307. package/assets/image-editor/images/stickers/emoticons/shocked-3.svg +48 -48
  308. package/assets/image-editor/images/stickers/emoticons/shocked.svg +46 -46
  309. package/assets/image-editor/images/stickers/emoticons/sick-1.svg +55 -55
  310. package/assets/image-editor/images/stickers/emoticons/sick-2.svg +48 -48
  311. package/assets/image-editor/images/stickers/emoticons/sick-3.svg +49 -49
  312. package/assets/image-editor/images/stickers/emoticons/sick-4.svg +52 -52
  313. package/assets/image-editor/images/stickers/emoticons/sick.svg +52 -52
  314. package/assets/image-editor/images/stickers/emoticons/silent.svg +43 -43
  315. package/assets/image-editor/images/stickers/emoticons/skeleton.svg +64 -64
  316. package/assets/image-editor/images/stickers/emoticons/smile.svg +43 -43
  317. package/assets/image-editor/images/stickers/emoticons/smiling-1.svg +47 -47
  318. package/assets/image-editor/images/stickers/emoticons/smiling.svg +75 -75
  319. package/assets/image-editor/images/stickers/emoticons/smoked.svg +131 -131
  320. package/assets/image-editor/images/stickers/emoticons/smug-1.svg +74 -74
  321. package/assets/image-editor/images/stickers/emoticons/smug-2.svg +82 -82
  322. package/assets/image-editor/images/stickers/emoticons/smug-3.svg +71 -71
  323. package/assets/image-editor/images/stickers/emoticons/smug-4.svg +50 -50
  324. package/assets/image-editor/images/stickers/emoticons/smug-5.svg +64 -64
  325. package/assets/image-editor/images/stickers/emoticons/smug-6.svg +82 -82
  326. package/assets/image-editor/images/stickers/emoticons/smug.svg +96 -96
  327. package/assets/image-editor/images/stickers/emoticons/sporty.svg +68 -68
  328. package/assets/image-editor/images/stickers/emoticons/stunned.svg +72 -72
  329. package/assets/image-editor/images/stickers/emoticons/superhero-1.svg +60 -60
  330. package/assets/image-editor/images/stickers/emoticons/superhero-2.svg +47 -47
  331. package/assets/image-editor/images/stickers/emoticons/superhero-3.svg +48 -48
  332. package/assets/image-editor/images/stickers/emoticons/superhero-4.svg +52 -52
  333. package/assets/image-editor/images/stickers/emoticons/superhero.svg +45 -45
  334. package/assets/image-editor/images/stickers/emoticons/surprised-1.svg +47 -47
  335. package/assets/image-editor/images/stickers/emoticons/surprised.svg +58 -58
  336. package/assets/image-editor/images/stickers/emoticons/thinking.svg +43 -43
  337. package/assets/image-editor/images/stickers/emoticons/tired-1.svg +78 -78
  338. package/assets/image-editor/images/stickers/emoticons/tired-2.svg +65 -65
  339. package/assets/image-editor/images/stickers/emoticons/tired-3.svg +59 -59
  340. package/assets/image-editor/images/stickers/emoticons/tired.svg +83 -83
  341. package/assets/image-editor/images/stickers/emoticons/tough-1.svg +65 -65
  342. package/assets/image-editor/images/stickers/emoticons/tough.svg +158 -158
  343. package/assets/image-editor/images/stickers/emoticons/trendy.svg +57 -57
  344. package/assets/image-editor/images/stickers/emoticons/vampire-1.svg +56 -56
  345. package/assets/image-editor/images/stickers/emoticons/vampire.svg +59 -59
  346. package/assets/image-editor/images/stickers/emoticons/wink-1.svg +54 -54
  347. package/assets/image-editor/images/stickers/emoticons/wink-2.svg +64 -64
  348. package/assets/image-editor/images/stickers/emoticons/wink.svg +73 -73
  349. package/assets/image-editor/images/stickers/emoticons/winking-1.svg +52 -52
  350. package/assets/image-editor/images/stickers/emoticons/winking.svg +43 -43
  351. package/assets/image-editor/images/stickers/emoticons/yawning-1.svg +62 -62
  352. package/assets/image-editor/images/stickers/emoticons/yawning-2.svg +51 -51
  353. package/assets/image-editor/images/stickers/emoticons/yawning-3.svg +51 -51
  354. package/assets/image-editor/images/stickers/emoticons/yawning.svg +73 -73
  355. package/assets/image-editor/images/stickers/emoticons/yelling.svg +80 -80
  356. package/assets/image-editor/images/stickers/emoticons/zombie.svg +65 -65
  357. package/assets/image-editor/images/stickers/landmarks/0.svg +38 -38
  358. package/assets/image-editor/images/stickers/landmarks/1.svg +46 -46
  359. package/assets/image-editor/images/stickers/landmarks/10.svg +18 -18
  360. package/assets/image-editor/images/stickers/landmarks/11.svg +81 -81
  361. package/assets/image-editor/images/stickers/landmarks/12.svg +77 -77
  362. package/assets/image-editor/images/stickers/landmarks/13.svg +42 -42
  363. package/assets/image-editor/images/stickers/landmarks/14.svg +78 -78
  364. package/assets/image-editor/images/stickers/landmarks/15.svg +84 -84
  365. package/assets/image-editor/images/stickers/landmarks/16.svg +87 -87
  366. package/assets/image-editor/images/stickers/landmarks/17.svg +60 -60
  367. package/assets/image-editor/images/stickers/landmarks/18.svg +30 -30
  368. package/assets/image-editor/images/stickers/landmarks/19.svg +36 -36
  369. package/assets/image-editor/images/stickers/landmarks/2.svg +28 -28
  370. package/assets/image-editor/images/stickers/landmarks/20.svg +137 -137
  371. package/assets/image-editor/images/stickers/landmarks/21.svg +63 -63
  372. package/assets/image-editor/images/stickers/landmarks/22.svg +26 -26
  373. package/assets/image-editor/images/stickers/landmarks/23.svg +52 -52
  374. package/assets/image-editor/images/stickers/landmarks/24.svg +56 -56
  375. package/assets/image-editor/images/stickers/landmarks/25.svg +40 -40
  376. package/assets/image-editor/images/stickers/landmarks/26.svg +34 -34
  377. package/assets/image-editor/images/stickers/landmarks/27.svg +32 -32
  378. package/assets/image-editor/images/stickers/landmarks/28.svg +19 -19
  379. package/assets/image-editor/images/stickers/landmarks/29.svg +23 -23
  380. package/assets/image-editor/images/stickers/landmarks/3.svg +36 -36
  381. package/assets/image-editor/images/stickers/landmarks/30.svg +36 -36
  382. package/assets/image-editor/images/stickers/landmarks/31.svg +27 -27
  383. package/assets/image-editor/images/stickers/landmarks/32.svg +25 -25
  384. package/assets/image-editor/images/stickers/landmarks/33.svg +29 -29
  385. package/assets/image-editor/images/stickers/landmarks/34.svg +72 -72
  386. package/assets/image-editor/images/stickers/landmarks/35.svg +18 -18
  387. package/assets/image-editor/images/stickers/landmarks/36.svg +45 -45
  388. package/assets/image-editor/images/stickers/landmarks/37.svg +46 -46
  389. package/assets/image-editor/images/stickers/landmarks/38.svg +44 -44
  390. package/assets/image-editor/images/stickers/landmarks/39.svg +23 -23
  391. package/assets/image-editor/images/stickers/landmarks/4.svg +33 -33
  392. package/assets/image-editor/images/stickers/landmarks/40.svg +25 -25
  393. package/assets/image-editor/images/stickers/landmarks/41.svg +69 -69
  394. package/assets/image-editor/images/stickers/landmarks/42.svg +75 -75
  395. package/assets/image-editor/images/stickers/landmarks/43.svg +44 -44
  396. package/assets/image-editor/images/stickers/landmarks/44.svg +65 -65
  397. package/assets/image-editor/images/stickers/landmarks/45.svg +19 -19
  398. package/assets/image-editor/images/stickers/landmarks/46.svg +47 -47
  399. package/assets/image-editor/images/stickers/landmarks/47.svg +544 -544
  400. package/assets/image-editor/images/stickers/landmarks/48.svg +162 -162
  401. package/assets/image-editor/images/stickers/landmarks/49.svg +70 -70
  402. package/assets/image-editor/images/stickers/landmarks/5.svg +36 -36
  403. package/assets/image-editor/images/stickers/landmarks/50.svg +52 -52
  404. package/assets/image-editor/images/stickers/landmarks/51.svg +110 -110
  405. package/assets/image-editor/images/stickers/landmarks/52.svg +41 -41
  406. package/assets/image-editor/images/stickers/landmarks/53.svg +74 -74
  407. package/assets/image-editor/images/stickers/landmarks/54.svg +36 -36
  408. package/assets/image-editor/images/stickers/landmarks/55.svg +84 -84
  409. package/assets/image-editor/images/stickers/landmarks/56.svg +93 -93
  410. package/assets/image-editor/images/stickers/landmarks/57.svg +67 -67
  411. package/assets/image-editor/images/stickers/landmarks/58.svg +101 -101
  412. package/assets/image-editor/images/stickers/landmarks/59.svg +47 -47
  413. package/assets/image-editor/images/stickers/landmarks/6.svg +59 -59
  414. package/assets/image-editor/images/stickers/landmarks/60.svg +134 -134
  415. package/assets/image-editor/images/stickers/landmarks/61.svg +79 -79
  416. package/assets/image-editor/images/stickers/landmarks/62.svg +43 -43
  417. package/assets/image-editor/images/stickers/landmarks/63.svg +83 -83
  418. package/assets/image-editor/images/stickers/landmarks/64.svg +99 -99
  419. package/assets/image-editor/images/stickers/landmarks/65.svg +79 -79
  420. package/assets/image-editor/images/stickers/landmarks/66.svg +37 -37
  421. package/assets/image-editor/images/stickers/landmarks/67.svg +82 -82
  422. package/assets/image-editor/images/stickers/landmarks/68.svg +216 -216
  423. package/assets/image-editor/images/stickers/landmarks/69.svg +17 -17
  424. package/assets/image-editor/images/stickers/landmarks/7.svg +16 -16
  425. package/assets/image-editor/images/stickers/landmarks/70.svg +45 -45
  426. package/assets/image-editor/images/stickers/landmarks/71.svg +37 -37
  427. package/assets/image-editor/images/stickers/landmarks/72.svg +28 -28
  428. package/assets/image-editor/images/stickers/landmarks/73.svg +25 -25
  429. package/assets/image-editor/images/stickers/landmarks/74.svg +23 -23
  430. package/assets/image-editor/images/stickers/landmarks/75.svg +88 -88
  431. package/assets/image-editor/images/stickers/landmarks/76.svg +25 -25
  432. package/assets/image-editor/images/stickers/landmarks/77.svg +23 -23
  433. package/assets/image-editor/images/stickers/landmarks/78.svg +63 -63
  434. package/assets/image-editor/images/stickers/landmarks/79.svg +25 -25
  435. package/assets/image-editor/images/stickers/landmarks/8.svg +52 -52
  436. package/assets/image-editor/images/stickers/landmarks/80.svg +29 -29
  437. package/assets/image-editor/images/stickers/landmarks/81.svg +44 -44
  438. package/assets/image-editor/images/stickers/landmarks/82.svg +83 -83
  439. package/assets/image-editor/images/stickers/landmarks/83.svg +65 -65
  440. package/assets/image-editor/images/stickers/landmarks/84.svg +31 -31
  441. package/assets/image-editor/images/stickers/landmarks/85.svg +30 -30
  442. package/assets/image-editor/images/stickers/landmarks/86.svg +26 -26
  443. package/assets/image-editor/images/stickers/landmarks/87.svg +132 -132
  444. package/assets/image-editor/images/stickers/landmarks/88.svg +93 -93
  445. package/assets/image-editor/images/stickers/landmarks/89.svg +91 -91
  446. package/assets/image-editor/images/stickers/landmarks/9.svg +70 -70
  447. package/assets/image-editor/images/stickers/landmarks/90.svg +65 -65
  448. package/assets/image-editor/images/stickers/landmarks/91.svg +36 -36
  449. package/assets/image-editor/images/stickers/landmarks/92.svg +66 -66
  450. package/assets/image-editor/images/stickers/landmarks/93.svg +65 -65
  451. package/assets/image-editor/images/stickers/landmarks/94.svg +28 -28
  452. package/assets/image-editor/images/stickers/landmarks/95.svg +31 -31
  453. package/assets/image-editor/images/stickers/landmarks/96.svg +25 -25
  454. package/assets/image-editor/images/stickers/landmarks/97.svg +31 -31
  455. package/assets/image-editor/images/stickers/landmarks/98.svg +52 -52
  456. package/assets/image-editor/images/stickers/landmarks/99.svg +56 -56
  457. package/assets/image-editor/images/stickers/transportation/0.svg +26 -26
  458. package/assets/image-editor/images/stickers/transportation/1.svg +10 -10
  459. package/assets/image-editor/images/stickers/transportation/10.svg +16 -16
  460. package/assets/image-editor/images/stickers/transportation/11.svg +30 -30
  461. package/assets/image-editor/images/stickers/transportation/12.svg +22 -22
  462. package/assets/image-editor/images/stickers/transportation/13.svg +24 -24
  463. package/assets/image-editor/images/stickers/transportation/14.svg +19 -19
  464. package/assets/image-editor/images/stickers/transportation/15.svg +23 -23
  465. package/assets/image-editor/images/stickers/transportation/16.svg +25 -25
  466. package/assets/image-editor/images/stickers/transportation/17.svg +34 -34
  467. package/assets/image-editor/images/stickers/transportation/18.svg +29 -29
  468. package/assets/image-editor/images/stickers/transportation/19.svg +24 -24
  469. package/assets/image-editor/images/stickers/transportation/2.svg +27 -27
  470. package/assets/image-editor/images/stickers/transportation/20.svg +25 -25
  471. package/assets/image-editor/images/stickers/transportation/21.svg +22 -22
  472. package/assets/image-editor/images/stickers/transportation/3.svg +18 -18
  473. package/assets/image-editor/images/stickers/transportation/4.svg +24 -24
  474. package/assets/image-editor/images/stickers/transportation/5.svg +15 -15
  475. package/assets/image-editor/images/stickers/transportation/6.svg +25 -25
  476. package/assets/image-editor/images/stickers/transportation/7.svg +17 -17
  477. package/assets/image-editor/images/stickers/transportation/8.svg +28 -28
  478. package/assets/image-editor/images/stickers/transportation/9.svg +23 -23
  479. package/debug-script.js +445 -445
  480. package/{file-manager-IconsTab-DaisiPID.js → file-manager-IconsTab-DbYi7sur.js} +2 -2
  481. package/{file-manager-ImageCodeGenerator-oHIsr8W_.js → file-manager-ImageCodeGenerator-BsDmogJl.js} +2 -2
  482. package/{file-manager-JsBarcode-DKe4XXuq.js → file-manager-JsBarcode-DDF8pVlB.js} +2 -2
  483. package/{file-manager-browser-CTCsdvXC.js → file-manager-browser-e3az9wxp.js} +2 -2
  484. package/{file-manager-index-CGOCfKmf.js → file-manager-index-B8YIsLbs.js} +3 -3
  485. package/file-manager.css +142 -142
  486. package/file-manager.esm.js +1 -1
  487. package/file-manager.js +101 -40
  488. package/{fm-icons-tab.11ba2322b3cbc183dcda.js → fm-icons-tab.dbc6aea218d2ab6b3de5.js} +2 -2
  489. package/{fm-image-code-generator.07993408860aec68b038.js → fm-image-code-generator.50fded261e49f2abdf2b.js} +2 -2
  490. package/hooks/core/useFolders.d.ts +8 -0
  491. package/hooks/core/useFolders.mergeLazyRootFolders.test.d.ts +1 -0
  492. package/index.d.ts +1 -1
  493. package/mockServiceWorker.js +344 -344
  494. package/notification.d.ts +642 -642
  495. package/package.json +36 -36
  496. package/presentation/file-list/FileListAdapter.d.ts +1 -1
  497. package/presentation/file-list/FileListAdapter.previewFallback.test.d.ts +1 -0
  498. package/sample-files.json +104 -104
  499. package/suppress-resize-observer-errors.js +60 -60
  500. package/test-pixie-loading.html +108 -108
  501. package/types.d.ts +2 -1
package/debug-script.js CHANGED
@@ -1,446 +1,446 @@
1
- /**
2
- * Отладочный скрипт для проверки и исправления циклических зависимостей в папках
3
- */
4
- document.addEventListener('DOMContentLoaded', () => {
5
- const debugContainer = document.createElement('div');
6
- debugContainer.style.padding = '20px';
7
- debugContainer.style.margin = '20px';
8
- debugContainer.style.background = '#f0f0f0';
9
- debugContainer.style.border = '1px solid #ddd';
10
- debugContainer.style.borderRadius = '5px';
11
-
12
- const heading = document.createElement('h1');
13
- heading.textContent = 'Отладка структуры папок файлового менеджера';
14
- debugContainer.appendChild(heading);
15
-
16
- // Кнопка для проверки наличия сервера
17
- const checkServerButton = document.createElement('button');
18
- checkServerButton.textContent = 'Проверить состояние сервера';
19
- checkServerButton.style.padding = '10px 15px';
20
- checkServerButton.style.margin = '10px 0';
21
- checkServerButton.style.background = '#722ed1';
22
- checkServerButton.style.color = 'white';
23
- checkServerButton.style.border = 'none';
24
- checkServerButton.style.borderRadius = '4px';
25
- checkServerButton.style.cursor = 'pointer';
26
- debugContainer.appendChild(checkServerButton);
27
-
28
- // Кнопка для проверки циклических зависимостей
29
- const checkButton = document.createElement('button');
30
- checkButton.textContent = 'Проверить и исправить циклические зависимости';
31
- checkButton.style.padding = '10px 15px';
32
- checkButton.style.margin = '10px 0 10px 10px';
33
- checkButton.style.background = '#1890ff';
34
- checkButton.style.color = 'white';
35
- checkButton.style.border = 'none';
36
- checkButton.style.borderRadius = '4px';
37
- checkButton.style.cursor = 'pointer';
38
- debugContainer.appendChild(checkButton);
39
-
40
- // Кнопка для тестирования создания папки
41
- const testCreateFolderButton = document.createElement('button');
42
- testCreateFolderButton.textContent = 'Тест создания папки';
43
- testCreateFolderButton.style.padding = '10px 15px';
44
- testCreateFolderButton.style.margin = '10px 0 10px 10px';
45
- testCreateFolderButton.style.background = '#52c41a';
46
- testCreateFolderButton.style.color = 'white';
47
- testCreateFolderButton.style.border = 'none';
48
- testCreateFolderButton.style.borderRadius = '4px';
49
- testCreateFolderButton.style.cursor = 'pointer';
50
- debugContainer.appendChild(testCreateFolderButton);
51
-
52
- // Лог результатов
53
- const resultLog = document.createElement('div');
54
- resultLog.style.marginTop = '20px';
55
- resultLog.style.padding = '15px';
56
- resultLog.style.background = '#fff';
57
- resultLog.style.border = '1px solid #ddd';
58
- resultLog.style.borderRadius = '4px';
59
- resultLog.style.height = '400px';
60
- resultLog.style.overflowY = 'auto';
61
- resultLog.style.fontFamily = 'monospace';
62
- debugContainer.appendChild(resultLog);
63
-
64
- document.getElementById('root').appendChild(debugContainer);
65
-
66
- // Функция добавления записи в лог
67
- function logMessage(message, type = 'info') {
68
- const logEntry = document.createElement('div');
69
- logEntry.style.margin = '5px 0';
70
- logEntry.style.padding = '5px';
71
-
72
- switch (type) {
73
- case 'error':
74
- logEntry.style.color = '#ff4d4f';
75
- logEntry.style.fontWeight = 'bold';
76
- break;
77
- case 'success':
78
- logEntry.style.color = '#52c41a';
79
- break;
80
- case 'warning':
81
- logEntry.style.color = '#faad14';
82
- break;
83
- default:
84
- logEntry.style.color = '#222';
85
- }
86
-
87
- logEntry.textContent = `[${new Date().toLocaleTimeString()}] ${message}`;
88
- resultLog.appendChild(logEntry);
89
- resultLog.scrollTop = resultLog.scrollHeight;
90
- console.log(`[DEBUG] ${message}`);
91
- }
92
-
93
- // Обработчик кнопки проверки сервера
94
- checkServerButton.addEventListener('click', () => {
95
- resultLog.innerHTML = '';
96
- logMessage('Проверка состояния сервера...');
97
-
98
- if (window.server) {
99
- logMessage('Сервер инициализирован!', 'success');
100
- logMessage(`Версия Mirage: ${window.server.miragejs.VERSION || 'неизвестна'}`);
101
- logMessage('Доступные модели:');
102
-
103
- // Перечисляем доступные модели
104
- try {
105
- const models = window.server.db._collections;
106
- for (const modelName in models) {
107
- logMessage(`- ${modelName}: ${models[modelName].length} записей`);
108
- }
109
- } catch (error) {
110
- logMessage(`Ошибка при получении моделей: ${error.message}`, 'error');
111
- }
112
-
113
- // Проверяем доступ к API через fetch
114
- logMessage('Проверка доступа к API...');
115
-
116
- fetch('/api/folders')
117
- .then(response => {
118
- if (response.ok) {
119
- logMessage('API /api/folders доступен', 'success');
120
- return response.json();
121
- } else {
122
- throw new Error(`HTTP ошибка ${response.status}`);
123
- }
124
- })
125
- .then(data => {
126
- logMessage(`Получено ${data.folders?.length || 0} папок`);
127
- })
128
- .catch(error => {
129
- logMessage(`Ошибка при доступе к API: ${error.message}`, 'error');
130
- });
131
- } else {
132
- logMessage('Сервер не найден в глобальном объекте window!', 'error');
133
- logMessage('Проверяем доступность API напрямую...');
134
-
135
- // Пробуем получить доступ к API даже если server не найден
136
- fetch('/api/folders')
137
- .then(response => {
138
- if (response.ok) {
139
- logMessage('API /api/folders доступен несмотря на отсутствие объекта server', 'success');
140
- } else {
141
- throw new Error(`HTTP ошибка ${response.status}`);
142
- }
143
- })
144
- .catch(error => {
145
- logMessage(`API недоступен: ${error.message}`, 'error');
146
- logMessage('Возможно, сервер не запущен или не настроен правильно', 'warning');
147
- });
148
- }
149
- });
150
-
151
- // Обработчик кнопки проверки циклических зависимостей
152
- checkButton.addEventListener('click', async () => {
153
- resultLog.innerHTML = '';
154
- logMessage('Начинаем проверку структуры папок...');
155
-
156
- try {
157
- // Загружаем папки с сервера
158
- logMessage('Загрузка списка папок...');
159
- const foldersResponse = await fetch('/api/folders');
160
-
161
- if (!foldersResponse.ok) {
162
- throw new Error(`Ошибка при загрузке папок: ${foldersResponse.status}`);
163
- }
164
-
165
- const foldersData = await foldersResponse.json();
166
- const folders = foldersData.folders || [];
167
-
168
- logMessage(`Загружено ${folders.length} папок`, 'success');
169
-
170
- // Проверка на прямые циклические зависимости (папка сама себе родитель)
171
- const directCycles = folders.filter(folder => folder.id === folder.parentId && folder.parentId !== null);
172
-
173
- if (directCycles.length > 0) {
174
- logMessage(`Обнаружено ${directCycles.length} папок с прямыми циклическими зависимостями:`, 'error');
175
- directCycles.forEach(folder => {
176
- logMessage(`- Папка "${folder.name}" (ID: ${folder.id}) является родителем самой себя`, 'error');
177
- });
178
-
179
- // Исправляем прямые циклические зависимости
180
- logMessage('Исправление прямых циклических зависимостей...');
181
-
182
- for (const folder of directCycles) {
183
- logMessage(`Исправление папки "${folder.name}" (ID: ${folder.id})...`);
184
-
185
- // Сбрасываем parentId на null
186
- const fixResponse = await fetch(`/api/folders/${folder.id}`, {
187
- method: 'PATCH',
188
- headers: {
189
- 'Content-Type': 'application/json'
190
- },
191
- body: JSON.stringify({
192
- parentId: null
193
- })
194
- }).catch(error => {
195
- // Если API не поддерживает PATCH, симулируем изменение через консоль
196
- logMessage(`API метод PATCH не поддерживается: ${error.message}`, 'warning');
197
- logMessage(`Симуляция исправления: window.server.db.folders.update(${folder.id}, { parentId: null })`, 'info');
198
-
199
- // Выполняем прямую модификацию в консоли, если доступно
200
- if (window.server && window.server.db && window.server.db.folders) {
201
- const updatedFolder = window.server.db.folders.update(folder.id, { parentId: null });
202
- return { ok: true, json: () => updatedFolder };
203
- }
204
-
205
- return { ok: false };
206
- });
207
-
208
- if (fixResponse.ok) {
209
- logMessage(`Папка "${folder.name}" исправлена`, 'success');
210
- } else {
211
- logMessage(`Не удалось исправить папку "${folder.name}"`, 'error');
212
- }
213
- }
214
- } else {
215
- logMessage('Прямых циклических зависимостей не обнаружено', 'success');
216
- }
217
-
218
- // Ищем непрямые циклические зависимости
219
- logMessage('Проверка на непрямые циклические зависимости...');
220
-
221
- // Функция для проверки циклических зависимостей
222
- function findCyclicDependencies(folders) {
223
- const cyclicFolders = [];
224
-
225
- for (const folder of folders) {
226
- if (!folder.parentId) continue;
227
-
228
- const visited = new Set();
229
- let currentId = folder.parentId;
230
-
231
- while (currentId) {
232
- if (visited.has(currentId)) {
233
- // Цикл обнаружен
234
- cyclicFolders.push(folder);
235
- break;
236
- }
237
-
238
- if (currentId === folder.id) {
239
- // Прямой цикл (уже обработан выше)
240
- break;
241
- }
242
-
243
- visited.add(currentId);
244
-
245
- const parentFolder = folders.find(f => f.id === currentId);
246
- if (!parentFolder) break;
247
-
248
- currentId = parentFolder.parentId;
249
- }
250
- }
251
-
252
- return cyclicFolders;
253
- }
254
-
255
- const cyclicFolders = findCyclicDependencies(folders);
256
-
257
- if (cyclicFolders.length > 0) {
258
- logMessage(`Обнаружено ${cyclicFolders.length} папок с непрямыми циклическими зависимостями:`, 'error');
259
-
260
- cyclicFolders.forEach(folder => {
261
- logMessage(`- Папка "${folder.name}" (ID: ${folder.id}) имеет циклическую зависимость через родителя ${folder.parentId}`, 'error');
262
- });
263
-
264
- // Исправляем непрямые циклические зависимости
265
- logMessage('Исправление непрямых циклических зависимостей...');
266
-
267
- for (const folder of cyclicFolders) {
268
- logMessage(`Исправление папки "${folder.name}" (ID: ${folder.id})...`);
269
-
270
- // Сбрасываем parentId на null
271
- const fixResponse = await fetch(`/api/folders/${folder.id}`, {
272
- method: 'PATCH',
273
- headers: {
274
- 'Content-Type': 'application/json'
275
- },
276
- body: JSON.stringify({
277
- parentId: null
278
- })
279
- }).catch(error => {
280
- // Если API не поддерживает PATCH, симулируем изменение
281
- logMessage(`API метод PATCH не поддерживается: ${error.message}`, 'warning');
282
- logMessage(`Симуляция исправления: window.server.db.folders.update(${folder.id}, { parentId: null })`, 'info');
283
-
284
- // Выполняем прямую модификацию, если доступно
285
- if (window.server && window.server.db && window.server.db.folders) {
286
- const updatedFolder = window.server.db.folders.update(folder.id, { parentId: null });
287
- return { ok: true, json: () => updatedFolder };
288
- }
289
-
290
- return { ok: false };
291
- });
292
-
293
- if (fixResponse.ok) {
294
- logMessage(`Папка "${folder.name}" исправлена`, 'success');
295
- } else {
296
- logMessage(`Не удалось исправить папку "${folder.name}"`, 'error');
297
- }
298
- }
299
- } else {
300
- logMessage('Непрямых циклических зависимостей не обнаружено', 'success');
301
- }
302
-
303
- // Финальная проверка после исправлений
304
- logMessage('Выполняем повторную проверку после исправлений...');
305
-
306
- const finalCheckResponse = await fetch('/api/folders');
307
- const finalFoldersData = await finalCheckResponse.json();
308
- const finalFolders = finalFoldersData.folders || [];
309
-
310
- const remainingDirectCycles = finalFolders.filter(folder => folder.id === folder.parentId && folder.parentId !== null);
311
- const remainingIndirectCycles = findCyclicDependencies(finalFolders);
312
-
313
- if (remainingDirectCycles.length === 0 && remainingIndirectCycles.length === 0) {
314
- logMessage('Все циклические зависимости успешно устранены!', 'success');
315
- } else {
316
- logMessage(`Осталось нерешенных проблем: ${remainingDirectCycles.length + remainingIndirectCycles.length}`, 'warning');
317
- }
318
-
319
- // Визуализация итоговой структуры папок
320
- logMessage('Итоговая структура папок:');
321
-
322
- // Строим карту отношений родитель-дети
323
- const folderMap = {};
324
- finalFolders.forEach(folder => {
325
- if (!folderMap[folder.id]) {
326
- folderMap[folder.id] = {
327
- ...folder,
328
- children: []
329
- };
330
- } else {
331
- folderMap[folder.id] = {
332
- ...folderMap[folder.id],
333
- ...folder
334
- };
335
- }
336
- });
337
-
338
- // Создаем связи родитель-дети
339
- finalFolders.forEach(folder => {
340
- if (folder.parentId && folderMap[folder.parentId]) {
341
- folderMap[folder.parentId].children.push(folderMap[folder.id]);
342
- }
343
- });
344
-
345
- // Корневые папки (без родителя)
346
- const rootFolders = finalFolders.filter(folder => !folder.parentId);
347
-
348
- // Рекурсивная функция для вывода структуры папок
349
- function printFolderStructure(folder, level = 0) {
350
- const indent = ' '.repeat(level);
351
- logMessage(`${indent}└─ ${folder.name} (ID: ${folder.id})`);
352
-
353
- const children = finalFolders.filter(f => f.parentId === folder.id);
354
- children.forEach(child => {
355
- printFolderStructure(child, level + 1);
356
- });
357
- }
358
-
359
- rootFolders.forEach(folder => {
360
- printFolderStructure(folder);
361
- });
362
-
363
- } catch (error) {
364
- logMessage(`Ошибка при выполнении проверки: ${error.message}`, 'error');
365
- console.error('Ошибка при отладке:', error);
366
- }
367
- });
368
-
369
- // Обработчик кнопки тестирования создания папки
370
- testCreateFolderButton.addEventListener('click', async () => {
371
- resultLog.innerHTML = '';
372
- logMessage('Тестирование создания папки...');
373
-
374
- try {
375
- // Генерируем уникальное имя папки для тестирования
376
- const testFolderName = `Тестовая папка ${new Date().toLocaleTimeString()}`;
377
- logMessage(`Создаем папку "${testFolderName}" в корневом каталоге...`);
378
-
379
- // Отправляем запрос на создание папки
380
- const response = await fetch('/api/folders', {
381
- method: 'POST',
382
- headers: {
383
- 'Content-Type': 'application/json'
384
- },
385
- body: JSON.stringify({
386
- name: testFolderName,
387
- parentId: null
388
- })
389
- });
390
-
391
- // Анализируем ответ
392
- logMessage(`Статус ответа: ${response.status} ${response.statusText}`);
393
- const responseData = await response.json();
394
-
395
- // Выводим подробную информацию о структуре ответа
396
- logMessage('Структура ответа сервера:');
397
- const responseStructure = JSON.stringify(responseData, null, 2);
398
-
399
- const responseDetails = document.createElement('pre');
400
- responseDetails.style.backgroundColor = '#f5f5f5';
401
- responseDetails.style.padding = '10px';
402
- responseDetails.style.borderRadius = '4px';
403
- responseDetails.style.fontSize = '12px';
404
- responseDetails.style.overflow = 'auto';
405
- responseDetails.style.maxHeight = '200px';
406
- responseDetails.textContent = responseStructure;
407
- resultLog.appendChild(responseDetails);
408
-
409
- if (response.ok) {
410
- logMessage(`Папка "${testFolderName}" успешно создана!`, 'success');
411
-
412
- // Проверяем структуру ответа
413
- if (responseData.folder) {
414
- logMessage(`ID новой папки: ${responseData.folder.id}`, 'success');
415
- logMessage('Формат ответа: { folder: {...} }', 'info');
416
- } else if (responseData.id) {
417
- logMessage(`ID новой папки: ${responseData.id}`, 'success');
418
- logMessage('Формат ответа: {...}', 'info');
419
- } else {
420
- logMessage('Некорректный формат ответа: отсутствует ID папки', 'error');
421
- }
422
-
423
- // Загружаем список папок для проверки
424
- logMessage('Проверяем, что папка появилась в списке...');
425
- const foldersResponse = await fetch('/api/folders');
426
- const foldersData = await foldersResponse.json();
427
- const folders = foldersData.folders || [];
428
-
429
- // Ищем созданную папку в списке
430
- const folderId = responseData.folder ? responseData.folder.id : responseData.id;
431
- const createdFolder = folders.find(folder => folder.id === folderId);
432
-
433
- if (createdFolder) {
434
- logMessage(`Папка "${createdFolder.name}" найдена в списке!`, 'success');
435
- } else {
436
- logMessage('Папка не найдена в списке после создания!', 'error');
437
- }
438
- } else {
439
- logMessage(`Ошибка при создании папки: ${responseData.error || 'Неизвестная ошибка'}`, 'error');
440
- }
441
- } catch (error) {
442
- logMessage(`Ошибка при тестировании: ${error.message}`, 'error');
443
- console.error('Ошибка при тестировании создания папки:', error);
444
- }
445
- });
1
+ /**
2
+ * Отладочный скрипт для проверки и исправления циклических зависимостей в папках
3
+ */
4
+ document.addEventListener('DOMContentLoaded', () => {
5
+ const debugContainer = document.createElement('div');
6
+ debugContainer.style.padding = '20px';
7
+ debugContainer.style.margin = '20px';
8
+ debugContainer.style.background = '#f0f0f0';
9
+ debugContainer.style.border = '1px solid #ddd';
10
+ debugContainer.style.borderRadius = '5px';
11
+
12
+ const heading = document.createElement('h1');
13
+ heading.textContent = 'Отладка структуры папок файлового менеджера';
14
+ debugContainer.appendChild(heading);
15
+
16
+ // Кнопка для проверки наличия сервера
17
+ const checkServerButton = document.createElement('button');
18
+ checkServerButton.textContent = 'Проверить состояние сервера';
19
+ checkServerButton.style.padding = '10px 15px';
20
+ checkServerButton.style.margin = '10px 0';
21
+ checkServerButton.style.background = '#722ed1';
22
+ checkServerButton.style.color = 'white';
23
+ checkServerButton.style.border = 'none';
24
+ checkServerButton.style.borderRadius = '4px';
25
+ checkServerButton.style.cursor = 'pointer';
26
+ debugContainer.appendChild(checkServerButton);
27
+
28
+ // Кнопка для проверки циклических зависимостей
29
+ const checkButton = document.createElement('button');
30
+ checkButton.textContent = 'Проверить и исправить циклические зависимости';
31
+ checkButton.style.padding = '10px 15px';
32
+ checkButton.style.margin = '10px 0 10px 10px';
33
+ checkButton.style.background = '#1890ff';
34
+ checkButton.style.color = 'white';
35
+ checkButton.style.border = 'none';
36
+ checkButton.style.borderRadius = '4px';
37
+ checkButton.style.cursor = 'pointer';
38
+ debugContainer.appendChild(checkButton);
39
+
40
+ // Кнопка для тестирования создания папки
41
+ const testCreateFolderButton = document.createElement('button');
42
+ testCreateFolderButton.textContent = 'Тест создания папки';
43
+ testCreateFolderButton.style.padding = '10px 15px';
44
+ testCreateFolderButton.style.margin = '10px 0 10px 10px';
45
+ testCreateFolderButton.style.background = '#52c41a';
46
+ testCreateFolderButton.style.color = 'white';
47
+ testCreateFolderButton.style.border = 'none';
48
+ testCreateFolderButton.style.borderRadius = '4px';
49
+ testCreateFolderButton.style.cursor = 'pointer';
50
+ debugContainer.appendChild(testCreateFolderButton);
51
+
52
+ // Лог результатов
53
+ const resultLog = document.createElement('div');
54
+ resultLog.style.marginTop = '20px';
55
+ resultLog.style.padding = '15px';
56
+ resultLog.style.background = '#fff';
57
+ resultLog.style.border = '1px solid #ddd';
58
+ resultLog.style.borderRadius = '4px';
59
+ resultLog.style.height = '400px';
60
+ resultLog.style.overflowY = 'auto';
61
+ resultLog.style.fontFamily = 'monospace';
62
+ debugContainer.appendChild(resultLog);
63
+
64
+ document.getElementById('root').appendChild(debugContainer);
65
+
66
+ // Функция добавления записи в лог
67
+ function logMessage(message, type = 'info') {
68
+ const logEntry = document.createElement('div');
69
+ logEntry.style.margin = '5px 0';
70
+ logEntry.style.padding = '5px';
71
+
72
+ switch (type) {
73
+ case 'error':
74
+ logEntry.style.color = '#ff4d4f';
75
+ logEntry.style.fontWeight = 'bold';
76
+ break;
77
+ case 'success':
78
+ logEntry.style.color = '#52c41a';
79
+ break;
80
+ case 'warning':
81
+ logEntry.style.color = '#faad14';
82
+ break;
83
+ default:
84
+ logEntry.style.color = '#222';
85
+ }
86
+
87
+ logEntry.textContent = `[${new Date().toLocaleTimeString()}] ${message}`;
88
+ resultLog.appendChild(logEntry);
89
+ resultLog.scrollTop = resultLog.scrollHeight;
90
+ console.log(`[DEBUG] ${message}`);
91
+ }
92
+
93
+ // Обработчик кнопки проверки сервера
94
+ checkServerButton.addEventListener('click', () => {
95
+ resultLog.innerHTML = '';
96
+ logMessage('Проверка состояния сервера...');
97
+
98
+ if (window.server) {
99
+ logMessage('Сервер инициализирован!', 'success');
100
+ logMessage(`Версия Mirage: ${window.server.miragejs.VERSION || 'неизвестна'}`);
101
+ logMessage('Доступные модели:');
102
+
103
+ // Перечисляем доступные модели
104
+ try {
105
+ const models = window.server.db._collections;
106
+ for (const modelName in models) {
107
+ logMessage(`- ${modelName}: ${models[modelName].length} записей`);
108
+ }
109
+ } catch (error) {
110
+ logMessage(`Ошибка при получении моделей: ${error.message}`, 'error');
111
+ }
112
+
113
+ // Проверяем доступ к API через fetch
114
+ logMessage('Проверка доступа к API...');
115
+
116
+ fetch('/api/folders')
117
+ .then(response => {
118
+ if (response.ok) {
119
+ logMessage('API /api/folders доступен', 'success');
120
+ return response.json();
121
+ } else {
122
+ throw new Error(`HTTP ошибка ${response.status}`);
123
+ }
124
+ })
125
+ .then(data => {
126
+ logMessage(`Получено ${data.folders?.length || 0} папок`);
127
+ })
128
+ .catch(error => {
129
+ logMessage(`Ошибка при доступе к API: ${error.message}`, 'error');
130
+ });
131
+ } else {
132
+ logMessage('Сервер не найден в глобальном объекте window!', 'error');
133
+ logMessage('Проверяем доступность API напрямую...');
134
+
135
+ // Пробуем получить доступ к API даже если server не найден
136
+ fetch('/api/folders')
137
+ .then(response => {
138
+ if (response.ok) {
139
+ logMessage('API /api/folders доступен несмотря на отсутствие объекта server', 'success');
140
+ } else {
141
+ throw new Error(`HTTP ошибка ${response.status}`);
142
+ }
143
+ })
144
+ .catch(error => {
145
+ logMessage(`API недоступен: ${error.message}`, 'error');
146
+ logMessage('Возможно, сервер не запущен или не настроен правильно', 'warning');
147
+ });
148
+ }
149
+ });
150
+
151
+ // Обработчик кнопки проверки циклических зависимостей
152
+ checkButton.addEventListener('click', async () => {
153
+ resultLog.innerHTML = '';
154
+ logMessage('Начинаем проверку структуры папок...');
155
+
156
+ try {
157
+ // Загружаем папки с сервера
158
+ logMessage('Загрузка списка папок...');
159
+ const foldersResponse = await fetch('/api/folders');
160
+
161
+ if (!foldersResponse.ok) {
162
+ throw new Error(`Ошибка при загрузке папок: ${foldersResponse.status}`);
163
+ }
164
+
165
+ const foldersData = await foldersResponse.json();
166
+ const folders = foldersData.folders || [];
167
+
168
+ logMessage(`Загружено ${folders.length} папок`, 'success');
169
+
170
+ // Проверка на прямые циклические зависимости (папка сама себе родитель)
171
+ const directCycles = folders.filter(folder => folder.id === folder.parentId && folder.parentId !== null);
172
+
173
+ if (directCycles.length > 0) {
174
+ logMessage(`Обнаружено ${directCycles.length} папок с прямыми циклическими зависимостями:`, 'error');
175
+ directCycles.forEach(folder => {
176
+ logMessage(`- Папка "${folder.name}" (ID: ${folder.id}) является родителем самой себя`, 'error');
177
+ });
178
+
179
+ // Исправляем прямые циклические зависимости
180
+ logMessage('Исправление прямых циклических зависимостей...');
181
+
182
+ for (const folder of directCycles) {
183
+ logMessage(`Исправление папки "${folder.name}" (ID: ${folder.id})...`);
184
+
185
+ // Сбрасываем parentId на null
186
+ const fixResponse = await fetch(`/api/folders/${folder.id}`, {
187
+ method: 'PATCH',
188
+ headers: {
189
+ 'Content-Type': 'application/json'
190
+ },
191
+ body: JSON.stringify({
192
+ parentId: null
193
+ })
194
+ }).catch(error => {
195
+ // Если API не поддерживает PATCH, симулируем изменение через консоль
196
+ logMessage(`API метод PATCH не поддерживается: ${error.message}`, 'warning');
197
+ logMessage(`Симуляция исправления: window.server.db.folders.update(${folder.id}, { parentId: null })`, 'info');
198
+
199
+ // Выполняем прямую модификацию в консоли, если доступно
200
+ if (window.server && window.server.db && window.server.db.folders) {
201
+ const updatedFolder = window.server.db.folders.update(folder.id, { parentId: null });
202
+ return { ok: true, json: () => updatedFolder };
203
+ }
204
+
205
+ return { ok: false };
206
+ });
207
+
208
+ if (fixResponse.ok) {
209
+ logMessage(`Папка "${folder.name}" исправлена`, 'success');
210
+ } else {
211
+ logMessage(`Не удалось исправить папку "${folder.name}"`, 'error');
212
+ }
213
+ }
214
+ } else {
215
+ logMessage('Прямых циклических зависимостей не обнаружено', 'success');
216
+ }
217
+
218
+ // Ищем непрямые циклические зависимости
219
+ logMessage('Проверка на непрямые циклические зависимости...');
220
+
221
+ // Функция для проверки циклических зависимостей
222
+ function findCyclicDependencies(folders) {
223
+ const cyclicFolders = [];
224
+
225
+ for (const folder of folders) {
226
+ if (!folder.parentId) continue;
227
+
228
+ const visited = new Set();
229
+ let currentId = folder.parentId;
230
+
231
+ while (currentId) {
232
+ if (visited.has(currentId)) {
233
+ // Цикл обнаружен
234
+ cyclicFolders.push(folder);
235
+ break;
236
+ }
237
+
238
+ if (currentId === folder.id) {
239
+ // Прямой цикл (уже обработан выше)
240
+ break;
241
+ }
242
+
243
+ visited.add(currentId);
244
+
245
+ const parentFolder = folders.find(f => f.id === currentId);
246
+ if (!parentFolder) break;
247
+
248
+ currentId = parentFolder.parentId;
249
+ }
250
+ }
251
+
252
+ return cyclicFolders;
253
+ }
254
+
255
+ const cyclicFolders = findCyclicDependencies(folders);
256
+
257
+ if (cyclicFolders.length > 0) {
258
+ logMessage(`Обнаружено ${cyclicFolders.length} папок с непрямыми циклическими зависимостями:`, 'error');
259
+
260
+ cyclicFolders.forEach(folder => {
261
+ logMessage(`- Папка "${folder.name}" (ID: ${folder.id}) имеет циклическую зависимость через родителя ${folder.parentId}`, 'error');
262
+ });
263
+
264
+ // Исправляем непрямые циклические зависимости
265
+ logMessage('Исправление непрямых циклических зависимостей...');
266
+
267
+ for (const folder of cyclicFolders) {
268
+ logMessage(`Исправление папки "${folder.name}" (ID: ${folder.id})...`);
269
+
270
+ // Сбрасываем parentId на null
271
+ const fixResponse = await fetch(`/api/folders/${folder.id}`, {
272
+ method: 'PATCH',
273
+ headers: {
274
+ 'Content-Type': 'application/json'
275
+ },
276
+ body: JSON.stringify({
277
+ parentId: null
278
+ })
279
+ }).catch(error => {
280
+ // Если API не поддерживает PATCH, симулируем изменение
281
+ logMessage(`API метод PATCH не поддерживается: ${error.message}`, 'warning');
282
+ logMessage(`Симуляция исправления: window.server.db.folders.update(${folder.id}, { parentId: null })`, 'info');
283
+
284
+ // Выполняем прямую модификацию, если доступно
285
+ if (window.server && window.server.db && window.server.db.folders) {
286
+ const updatedFolder = window.server.db.folders.update(folder.id, { parentId: null });
287
+ return { ok: true, json: () => updatedFolder };
288
+ }
289
+
290
+ return { ok: false };
291
+ });
292
+
293
+ if (fixResponse.ok) {
294
+ logMessage(`Папка "${folder.name}" исправлена`, 'success');
295
+ } else {
296
+ logMessage(`Не удалось исправить папку "${folder.name}"`, 'error');
297
+ }
298
+ }
299
+ } else {
300
+ logMessage('Непрямых циклических зависимостей не обнаружено', 'success');
301
+ }
302
+
303
+ // Финальная проверка после исправлений
304
+ logMessage('Выполняем повторную проверку после исправлений...');
305
+
306
+ const finalCheckResponse = await fetch('/api/folders');
307
+ const finalFoldersData = await finalCheckResponse.json();
308
+ const finalFolders = finalFoldersData.folders || [];
309
+
310
+ const remainingDirectCycles = finalFolders.filter(folder => folder.id === folder.parentId && folder.parentId !== null);
311
+ const remainingIndirectCycles = findCyclicDependencies(finalFolders);
312
+
313
+ if (remainingDirectCycles.length === 0 && remainingIndirectCycles.length === 0) {
314
+ logMessage('Все циклические зависимости успешно устранены!', 'success');
315
+ } else {
316
+ logMessage(`Осталось нерешенных проблем: ${remainingDirectCycles.length + remainingIndirectCycles.length}`, 'warning');
317
+ }
318
+
319
+ // Визуализация итоговой структуры папок
320
+ logMessage('Итоговая структура папок:');
321
+
322
+ // Строим карту отношений родитель-дети
323
+ const folderMap = {};
324
+ finalFolders.forEach(folder => {
325
+ if (!folderMap[folder.id]) {
326
+ folderMap[folder.id] = {
327
+ ...folder,
328
+ children: []
329
+ };
330
+ } else {
331
+ folderMap[folder.id] = {
332
+ ...folderMap[folder.id],
333
+ ...folder
334
+ };
335
+ }
336
+ });
337
+
338
+ // Создаем связи родитель-дети
339
+ finalFolders.forEach(folder => {
340
+ if (folder.parentId && folderMap[folder.parentId]) {
341
+ folderMap[folder.parentId].children.push(folderMap[folder.id]);
342
+ }
343
+ });
344
+
345
+ // Корневые папки (без родителя)
346
+ const rootFolders = finalFolders.filter(folder => !folder.parentId);
347
+
348
+ // Рекурсивная функция для вывода структуры папок
349
+ function printFolderStructure(folder, level = 0) {
350
+ const indent = ' '.repeat(level);
351
+ logMessage(`${indent}└─ ${folder.name} (ID: ${folder.id})`);
352
+
353
+ const children = finalFolders.filter(f => f.parentId === folder.id);
354
+ children.forEach(child => {
355
+ printFolderStructure(child, level + 1);
356
+ });
357
+ }
358
+
359
+ rootFolders.forEach(folder => {
360
+ printFolderStructure(folder);
361
+ });
362
+
363
+ } catch (error) {
364
+ logMessage(`Ошибка при выполнении проверки: ${error.message}`, 'error');
365
+ console.error('Ошибка при отладке:', error);
366
+ }
367
+ });
368
+
369
+ // Обработчик кнопки тестирования создания папки
370
+ testCreateFolderButton.addEventListener('click', async () => {
371
+ resultLog.innerHTML = '';
372
+ logMessage('Тестирование создания папки...');
373
+
374
+ try {
375
+ // Генерируем уникальное имя папки для тестирования
376
+ const testFolderName = `Тестовая папка ${new Date().toLocaleTimeString()}`;
377
+ logMessage(`Создаем папку "${testFolderName}" в корневом каталоге...`);
378
+
379
+ // Отправляем запрос на создание папки
380
+ const response = await fetch('/api/folders', {
381
+ method: 'POST',
382
+ headers: {
383
+ 'Content-Type': 'application/json'
384
+ },
385
+ body: JSON.stringify({
386
+ name: testFolderName,
387
+ parentId: null
388
+ })
389
+ });
390
+
391
+ // Анализируем ответ
392
+ logMessage(`Статус ответа: ${response.status} ${response.statusText}`);
393
+ const responseData = await response.json();
394
+
395
+ // Выводим подробную информацию о структуре ответа
396
+ logMessage('Структура ответа сервера:');
397
+ const responseStructure = JSON.stringify(responseData, null, 2);
398
+
399
+ const responseDetails = document.createElement('pre');
400
+ responseDetails.style.backgroundColor = '#f5f5f5';
401
+ responseDetails.style.padding = '10px';
402
+ responseDetails.style.borderRadius = '4px';
403
+ responseDetails.style.fontSize = '12px';
404
+ responseDetails.style.overflow = 'auto';
405
+ responseDetails.style.maxHeight = '200px';
406
+ responseDetails.textContent = responseStructure;
407
+ resultLog.appendChild(responseDetails);
408
+
409
+ if (response.ok) {
410
+ logMessage(`Папка "${testFolderName}" успешно создана!`, 'success');
411
+
412
+ // Проверяем структуру ответа
413
+ if (responseData.folder) {
414
+ logMessage(`ID новой папки: ${responseData.folder.id}`, 'success');
415
+ logMessage('Формат ответа: { folder: {...} }', 'info');
416
+ } else if (responseData.id) {
417
+ logMessage(`ID новой папки: ${responseData.id}`, 'success');
418
+ logMessage('Формат ответа: {...}', 'info');
419
+ } else {
420
+ logMessage('Некорректный формат ответа: отсутствует ID папки', 'error');
421
+ }
422
+
423
+ // Загружаем список папок для проверки
424
+ logMessage('Проверяем, что папка появилась в списке...');
425
+ const foldersResponse = await fetch('/api/folders');
426
+ const foldersData = await foldersResponse.json();
427
+ const folders = foldersData.folders || [];
428
+
429
+ // Ищем созданную папку в списке
430
+ const folderId = responseData.folder ? responseData.folder.id : responseData.id;
431
+ const createdFolder = folders.find(folder => folder.id === folderId);
432
+
433
+ if (createdFolder) {
434
+ logMessage(`Папка "${createdFolder.name}" найдена в списке!`, 'success');
435
+ } else {
436
+ logMessage('Папка не найдена в списке после создания!', 'error');
437
+ }
438
+ } else {
439
+ logMessage(`Ошибка при создании папки: ${responseData.error || 'Неизвестная ошибка'}`, 'error');
440
+ }
441
+ } catch (error) {
442
+ logMessage(`Ошибка при тестировании: ${error.message}`, 'error');
443
+ console.error('Ошибка при тестировании создания папки:', error);
444
+ }
445
+ });
446
446
  });