@emailmaker/filemanager 0.10.82 → 0.10.83

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 (496) hide show
  1. package/129.533eb7b36d92578d2ead.js +3893 -0
  2. package/583.177f1aa2edb14f5f073e.js +2978 -0
  3. package/assets/image-editor/images/samples/sample4.json +871 -871
  4. package/assets/image-editor/images/stickers/beach/0.svg +25 -25
  5. package/assets/image-editor/images/stickers/beach/1.svg +14 -14
  6. package/assets/image-editor/images/stickers/beach/10.svg +34 -34
  7. package/assets/image-editor/images/stickers/beach/11.svg +27 -27
  8. package/assets/image-editor/images/stickers/beach/12.svg +10 -10
  9. package/assets/image-editor/images/stickers/beach/13.svg +25 -25
  10. package/assets/image-editor/images/stickers/beach/14.svg +16 -16
  11. package/assets/image-editor/images/stickers/beach/15.svg +14 -14
  12. package/assets/image-editor/images/stickers/beach/16.svg +44 -44
  13. package/assets/image-editor/images/stickers/beach/17.svg +35 -35
  14. package/assets/image-editor/images/stickers/beach/18.svg +32 -32
  15. package/assets/image-editor/images/stickers/beach/19.svg +23 -23
  16. package/assets/image-editor/images/stickers/beach/2.svg +14 -14
  17. package/assets/image-editor/images/stickers/beach/20.svg +24 -24
  18. package/assets/image-editor/images/stickers/beach/21.svg +11 -11
  19. package/assets/image-editor/images/stickers/beach/3.svg +26 -26
  20. package/assets/image-editor/images/stickers/beach/4.svg +25 -25
  21. package/assets/image-editor/images/stickers/beach/5.svg +22 -22
  22. package/assets/image-editor/images/stickers/beach/6.svg +20 -20
  23. package/assets/image-editor/images/stickers/beach/7.svg +32 -32
  24. package/assets/image-editor/images/stickers/beach/8.svg +28 -28
  25. package/assets/image-editor/images/stickers/beach/9.svg +18 -18
  26. package/assets/image-editor/images/stickers/categories/beach.svg +17 -17
  27. package/assets/image-editor/images/stickers/categories/clouds.svg +14 -14
  28. package/assets/image-editor/images/stickers/categories/doodles.svg +12 -12
  29. package/assets/image-editor/images/stickers/categories/emoticon.svg +9 -9
  30. package/assets/image-editor/images/stickers/categories/landmark.svg +19 -19
  31. package/assets/image-editor/images/stickers/categories/speech-bubble.svg +5 -5
  32. package/assets/image-editor/images/stickers/categories/star.svg +5 -5
  33. package/assets/image-editor/images/stickers/categories/transportation.svg +17 -17
  34. package/assets/image-editor/images/stickers/doodles/0.svg +201 -201
  35. package/assets/image-editor/images/stickers/doodles/1.svg +255 -255
  36. package/assets/image-editor/images/stickers/doodles/10.svg +160 -160
  37. package/assets/image-editor/images/stickers/doodles/11.svg +393 -393
  38. package/assets/image-editor/images/stickers/doodles/12.svg +293 -293
  39. package/assets/image-editor/images/stickers/doodles/13.svg +251 -251
  40. package/assets/image-editor/images/stickers/doodles/14.svg +370 -370
  41. package/assets/image-editor/images/stickers/doodles/15.svg +194 -194
  42. package/assets/image-editor/images/stickers/doodles/16.svg +383 -383
  43. package/assets/image-editor/images/stickers/doodles/17.svg +346 -346
  44. package/assets/image-editor/images/stickers/doodles/18.svg +286 -286
  45. package/assets/image-editor/images/stickers/doodles/19.svg +241 -241
  46. package/assets/image-editor/images/stickers/doodles/2.svg +227 -227
  47. package/assets/image-editor/images/stickers/doodles/20.svg +330 -330
  48. package/assets/image-editor/images/stickers/doodles/21.svg +200 -200
  49. package/assets/image-editor/images/stickers/doodles/22.svg +308 -308
  50. package/assets/image-editor/images/stickers/doodles/23.svg +518 -518
  51. package/assets/image-editor/images/stickers/doodles/24.svg +207 -207
  52. package/assets/image-editor/images/stickers/doodles/25.svg +260 -260
  53. package/assets/image-editor/images/stickers/doodles/26.svg +380 -380
  54. package/assets/image-editor/images/stickers/doodles/27.svg +222 -222
  55. package/assets/image-editor/images/stickers/doodles/28.svg +164 -164
  56. package/assets/image-editor/images/stickers/doodles/29.svg +271 -271
  57. package/assets/image-editor/images/stickers/doodles/3.svg +272 -272
  58. package/assets/image-editor/images/stickers/doodles/30.svg +283 -283
  59. package/assets/image-editor/images/stickers/doodles/31.svg +257 -257
  60. package/assets/image-editor/images/stickers/doodles/32.svg +276 -276
  61. package/assets/image-editor/images/stickers/doodles/33.svg +198 -198
  62. package/assets/image-editor/images/stickers/doodles/34.svg +314 -314
  63. package/assets/image-editor/images/stickers/doodles/35.svg +236 -236
  64. package/assets/image-editor/images/stickers/doodles/36.svg +273 -273
  65. package/assets/image-editor/images/stickers/doodles/37.svg +284 -284
  66. package/assets/image-editor/images/stickers/doodles/38.svg +167 -167
  67. package/assets/image-editor/images/stickers/doodles/39.svg +381 -381
  68. package/assets/image-editor/images/stickers/doodles/4.svg +216 -216
  69. package/assets/image-editor/images/stickers/doodles/40.svg +198 -198
  70. package/assets/image-editor/images/stickers/doodles/41.svg +259 -259
  71. package/assets/image-editor/images/stickers/doodles/42.svg +371 -371
  72. package/assets/image-editor/images/stickers/doodles/43.svg +198 -198
  73. package/assets/image-editor/images/stickers/doodles/44.svg +174 -174
  74. package/assets/image-editor/images/stickers/doodles/45.svg +178 -178
  75. package/assets/image-editor/images/stickers/doodles/46.svg +211 -211
  76. package/assets/image-editor/images/stickers/doodles/47.svg +195 -195
  77. package/assets/image-editor/images/stickers/doodles/48.svg +293 -293
  78. package/assets/image-editor/images/stickers/doodles/49.svg +191 -191
  79. package/assets/image-editor/images/stickers/doodles/5.svg +179 -179
  80. package/assets/image-editor/images/stickers/doodles/50.svg +323 -323
  81. package/assets/image-editor/images/stickers/doodles/51.svg +308 -308
  82. package/assets/image-editor/images/stickers/doodles/52.svg +162 -162
  83. package/assets/image-editor/images/stickers/doodles/53.svg +263 -263
  84. package/assets/image-editor/images/stickers/doodles/54.svg +175 -175
  85. package/assets/image-editor/images/stickers/doodles/55.svg +177 -177
  86. package/assets/image-editor/images/stickers/doodles/56.svg +160 -160
  87. package/assets/image-editor/images/stickers/doodles/57.svg +115 -115
  88. package/assets/image-editor/images/stickers/doodles/58.svg +327 -327
  89. package/assets/image-editor/images/stickers/doodles/59.svg +197 -197
  90. package/assets/image-editor/images/stickers/doodles/6.svg +388 -388
  91. package/assets/image-editor/images/stickers/doodles/60.svg +414 -414
  92. package/assets/image-editor/images/stickers/doodles/61.svg +287 -287
  93. package/assets/image-editor/images/stickers/doodles/62.svg +193 -193
  94. package/assets/image-editor/images/stickers/doodles/63.svg +329 -329
  95. package/assets/image-editor/images/stickers/doodles/64.svg +150 -150
  96. package/assets/image-editor/images/stickers/doodles/65.svg +275 -275
  97. package/assets/image-editor/images/stickers/doodles/66.svg +174 -174
  98. package/assets/image-editor/images/stickers/doodles/67.svg +343 -343
  99. package/assets/image-editor/images/stickers/doodles/68.svg +242 -242
  100. package/assets/image-editor/images/stickers/doodles/69.svg +160 -160
  101. package/assets/image-editor/images/stickers/doodles/7.svg +194 -194
  102. package/assets/image-editor/images/stickers/doodles/70.svg +365 -365
  103. package/assets/image-editor/images/stickers/doodles/71.svg +454 -454
  104. package/assets/image-editor/images/stickers/doodles/72.svg +162 -162
  105. package/assets/image-editor/images/stickers/doodles/73.svg +393 -393
  106. package/assets/image-editor/images/stickers/doodles/74.svg +206 -206
  107. package/assets/image-editor/images/stickers/doodles/75.svg +275 -275
  108. package/assets/image-editor/images/stickers/doodles/76.svg +350 -350
  109. package/assets/image-editor/images/stickers/doodles/77.svg +323 -323
  110. package/assets/image-editor/images/stickers/doodles/78.svg +316 -316
  111. package/assets/image-editor/images/stickers/doodles/79.svg +503 -503
  112. package/assets/image-editor/images/stickers/doodles/8.svg +185 -185
  113. package/assets/image-editor/images/stickers/doodles/80.svg +235 -235
  114. package/assets/image-editor/images/stickers/doodles/81.svg +184 -184
  115. package/assets/image-editor/images/stickers/doodles/82.svg +246 -246
  116. package/assets/image-editor/images/stickers/doodles/83.svg +125 -125
  117. package/assets/image-editor/images/stickers/doodles/84.svg +168 -168
  118. package/assets/image-editor/images/stickers/doodles/85.svg +138 -138
  119. package/assets/image-editor/images/stickers/doodles/86.svg +223 -223
  120. package/assets/image-editor/images/stickers/doodles/87.svg +475 -475
  121. package/assets/image-editor/images/stickers/doodles/88.svg +172 -172
  122. package/assets/image-editor/images/stickers/doodles/89.svg +199 -199
  123. package/assets/image-editor/images/stickers/doodles/9.svg +368 -368
  124. package/assets/image-editor/images/stickers/doodles/90.svg +298 -298
  125. package/assets/image-editor/images/stickers/doodles/91.svg +176 -176
  126. package/assets/image-editor/images/stickers/doodles/92.svg +152 -152
  127. package/assets/image-editor/images/stickers/doodles/93.svg +206 -206
  128. package/assets/image-editor/images/stickers/doodles/94.svg +202 -202
  129. package/assets/image-editor/images/stickers/doodles/95.svg +114 -114
  130. package/assets/image-editor/images/stickers/doodles/96.svg +149 -149
  131. package/assets/image-editor/images/stickers/doodles/97.svg +197 -197
  132. package/assets/image-editor/images/stickers/doodles/98.svg +397 -397
  133. package/assets/image-editor/images/stickers/doodles/99.svg +502 -502
  134. package/assets/image-editor/images/stickers/emoticons/afro-1.svg +122 -122
  135. package/assets/image-editor/images/stickers/emoticons/afro.svg +85 -85
  136. package/assets/image-editor/images/stickers/emoticons/agent.svg +114 -114
  137. package/assets/image-editor/images/stickers/emoticons/alien-1.svg +60 -60
  138. package/assets/image-editor/images/stickers/emoticons/alien.svg +64 -64
  139. package/assets/image-editor/images/stickers/emoticons/angel.svg +47 -47
  140. package/assets/image-editor/images/stickers/emoticons/angry-1.svg +83 -83
  141. package/assets/image-editor/images/stickers/emoticons/angry-2.svg +48 -48
  142. package/assets/image-editor/images/stickers/emoticons/angry-3.svg +45 -45
  143. package/assets/image-editor/images/stickers/emoticons/angry-4.svg +52 -52
  144. package/assets/image-editor/images/stickers/emoticons/angry-5.svg +62 -62
  145. package/assets/image-editor/images/stickers/emoticons/angry.svg +78 -78
  146. package/assets/image-editor/images/stickers/emoticons/arguing.svg +49 -49
  147. package/assets/image-editor/images/stickers/emoticons/arrogant.svg +98 -98
  148. package/assets/image-editor/images/stickers/emoticons/asian-1.svg +52 -52
  149. package/assets/image-editor/images/stickers/emoticons/asian.svg +54 -54
  150. package/assets/image-editor/images/stickers/emoticons/avatar.svg +49 -49
  151. package/assets/image-editor/images/stickers/emoticons/baby-1.svg +51 -51
  152. package/assets/image-editor/images/stickers/emoticons/baby-2.svg +54 -54
  153. package/assets/image-editor/images/stickers/emoticons/baby.svg +66 -66
  154. package/assets/image-editor/images/stickers/emoticons/bully.svg +68 -68
  155. package/assets/image-editor/images/stickers/emoticons/burglar.svg +75 -75
  156. package/assets/image-editor/images/stickers/emoticons/businessman.svg +52 -52
  157. package/assets/image-editor/images/stickers/emoticons/cheeky-1.svg +83 -83
  158. package/assets/image-editor/images/stickers/emoticons/cheeky.svg +73 -73
  159. package/assets/image-editor/images/stickers/emoticons/clown.svg +75 -75
  160. package/assets/image-editor/images/stickers/emoticons/confused-1.svg +74 -74
  161. package/assets/image-editor/images/stickers/emoticons/confused-2.svg +55 -55
  162. package/assets/image-editor/images/stickers/emoticons/confused-3.svg +45 -45
  163. package/assets/image-editor/images/stickers/emoticons/confused.svg +66 -66
  164. package/assets/image-editor/images/stickers/emoticons/creepy.svg +60 -60
  165. package/assets/image-editor/images/stickers/emoticons/crying-1.svg +55 -55
  166. package/assets/image-editor/images/stickers/emoticons/crying-2.svg +83 -83
  167. package/assets/image-editor/images/stickers/emoticons/crying-3.svg +53 -53
  168. package/assets/image-editor/images/stickers/emoticons/crying.svg +59 -59
  169. package/assets/image-editor/images/stickers/emoticons/dazed-1.svg +63 -63
  170. package/assets/image-editor/images/stickers/emoticons/dazed-2.svg +51 -51
  171. package/assets/image-editor/images/stickers/emoticons/dazed-3.svg +55 -55
  172. package/assets/image-editor/images/stickers/emoticons/dazed.svg +56 -56
  173. package/assets/image-editor/images/stickers/emoticons/dead-1.svg +61 -61
  174. package/assets/image-editor/images/stickers/emoticons/dead-2.svg +80 -80
  175. package/assets/image-editor/images/stickers/emoticons/dead-3.svg +66 -66
  176. package/assets/image-editor/images/stickers/emoticons/dead-4.svg +54 -54
  177. package/assets/image-editor/images/stickers/emoticons/dead-5.svg +52 -52
  178. package/assets/image-editor/images/stickers/emoticons/dead-6.svg +53 -53
  179. package/assets/image-editor/images/stickers/emoticons/dead.svg +54 -54
  180. package/assets/image-editor/images/stickers/emoticons/desperate-1.svg +47 -47
  181. package/assets/image-editor/images/stickers/emoticons/desperate.svg +75 -75
  182. package/assets/image-editor/images/stickers/emoticons/detective.svg +75 -75
  183. package/assets/image-editor/images/stickers/emoticons/dissapointment.svg +70 -70
  184. package/assets/image-editor/images/stickers/emoticons/doctor.svg +61 -61
  185. package/assets/image-editor/images/stickers/emoticons/drunk.svg +55 -55
  186. package/assets/image-editor/images/stickers/emoticons/dumb.svg +50 -50
  187. package/assets/image-editor/images/stickers/emoticons/emo-1.svg +104 -104
  188. package/assets/image-editor/images/stickers/emoticons/emo-2.svg +111 -111
  189. package/assets/image-editor/images/stickers/emoticons/emo.svg +56 -56
  190. package/assets/image-editor/images/stickers/emoticons/emoticon.svg +84 -84
  191. package/assets/image-editor/images/stickers/emoticons/evil.svg +59 -59
  192. package/assets/image-editor/images/stickers/emoticons/faint-1.svg +75 -75
  193. package/assets/image-editor/images/stickers/emoticons/faint.svg +84 -84
  194. package/assets/image-editor/images/stickers/emoticons/flirt-1.svg +81 -81
  195. package/assets/image-editor/images/stickers/emoticons/flirt-2.svg +68 -68
  196. package/assets/image-editor/images/stickers/emoticons/flirt.svg +71 -71
  197. package/assets/image-editor/images/stickers/emoticons/flirty.svg +60 -60
  198. package/assets/image-editor/images/stickers/emoticons/gangster.svg +54 -54
  199. package/assets/image-editor/images/stickers/emoticons/geek-1.svg +76 -76
  200. package/assets/image-editor/images/stickers/emoticons/geek.svg +69 -69
  201. package/assets/image-editor/images/stickers/emoticons/gentleman-1.svg +82 -82
  202. package/assets/image-editor/images/stickers/emoticons/gentleman-2.svg +58 -58
  203. package/assets/image-editor/images/stickers/emoticons/gentleman-3.svg +54 -54
  204. package/assets/image-editor/images/stickers/emoticons/gentleman-4.svg +59 -59
  205. package/assets/image-editor/images/stickers/emoticons/gentleman.svg +57 -57
  206. package/assets/image-editor/images/stickers/emoticons/ginger.svg +55 -55
  207. package/assets/image-editor/images/stickers/emoticons/girl-1.svg +70 -70
  208. package/assets/image-editor/images/stickers/emoticons/girl.svg +73 -73
  209. package/assets/image-editor/images/stickers/emoticons/goofy-1.svg +46 -46
  210. package/assets/image-editor/images/stickers/emoticons/goofy-2.svg +79 -79
  211. package/assets/image-editor/images/stickers/emoticons/goofy-3.svg +79 -79
  212. package/assets/image-editor/images/stickers/emoticons/goofy-4.svg +46 -46
  213. package/assets/image-editor/images/stickers/emoticons/goofy.svg +79 -79
  214. package/assets/image-editor/images/stickers/emoticons/grubby-1.svg +114 -114
  215. package/assets/image-editor/images/stickers/emoticons/grubby.svg +165 -165
  216. package/assets/image-editor/images/stickers/emoticons/happy-1.svg +49 -49
  217. package/assets/image-editor/images/stickers/emoticons/happy-10.svg +62 -62
  218. package/assets/image-editor/images/stickers/emoticons/happy-11.svg +55 -55
  219. package/assets/image-editor/images/stickers/emoticons/happy-12.svg +53 -53
  220. package/assets/image-editor/images/stickers/emoticons/happy-13.svg +58 -58
  221. package/assets/image-editor/images/stickers/emoticons/happy-14.svg +62 -62
  222. package/assets/image-editor/images/stickers/emoticons/happy-15.svg +49 -49
  223. package/assets/image-editor/images/stickers/emoticons/happy-16.svg +49 -49
  224. package/assets/image-editor/images/stickers/emoticons/happy-2.svg +71 -71
  225. package/assets/image-editor/images/stickers/emoticons/happy-3.svg +74 -74
  226. package/assets/image-editor/images/stickers/emoticons/happy-4.svg +77 -77
  227. package/assets/image-editor/images/stickers/emoticons/happy-5.svg +52 -52
  228. package/assets/image-editor/images/stickers/emoticons/happy-6.svg +54 -54
  229. package/assets/image-editor/images/stickers/emoticons/happy-7.svg +58 -58
  230. package/assets/image-editor/images/stickers/emoticons/happy-8.svg +42 -42
  231. package/assets/image-editor/images/stickers/emoticons/happy-9.svg +45 -45
  232. package/assets/image-editor/images/stickers/emoticons/happy.svg +48 -48
  233. package/assets/image-editor/images/stickers/emoticons/harry-potter.svg +68 -68
  234. package/assets/image-editor/images/stickers/emoticons/heisenberg.svg +80 -80
  235. package/assets/image-editor/images/stickers/emoticons/hipster-1.svg +118 -118
  236. package/assets/image-editor/images/stickers/emoticons/hipster-2.svg +49 -49
  237. package/assets/image-editor/images/stickers/emoticons/hipster.svg +48 -48
  238. package/assets/image-editor/images/stickers/emoticons/in-love-1.svg +62 -62
  239. package/assets/image-editor/images/stickers/emoticons/in-love-2.svg +48 -48
  240. package/assets/image-editor/images/stickers/emoticons/in-love-3.svg +49 -49
  241. package/assets/image-editor/images/stickers/emoticons/in-love-4.svg +50 -50
  242. package/assets/image-editor/images/stickers/emoticons/in-love-5.svg +49 -49
  243. package/assets/image-editor/images/stickers/emoticons/in-love-6.svg +53 -53
  244. package/assets/image-editor/images/stickers/emoticons/in-love.svg +57 -57
  245. package/assets/image-editor/images/stickers/emoticons/japan.svg +79 -79
  246. package/assets/image-editor/images/stickers/emoticons/jew.svg +83 -83
  247. package/assets/image-editor/images/stickers/emoticons/joyful-1.svg +72 -72
  248. package/assets/image-editor/images/stickers/emoticons/joyful-2.svg +45 -45
  249. package/assets/image-editor/images/stickers/emoticons/joyful.svg +47 -47
  250. package/assets/image-editor/images/stickers/emoticons/kiss-1.svg +48 -48
  251. package/assets/image-editor/images/stickers/emoticons/kiss-2.svg +59 -59
  252. package/assets/image-editor/images/stickers/emoticons/kiss-3.svg +53 -53
  253. package/assets/image-editor/images/stickers/emoticons/kiss-4.svg +59 -59
  254. package/assets/image-editor/images/stickers/emoticons/kiss.svg +67 -67
  255. package/assets/image-editor/images/stickers/emoticons/laughing-1.svg +54 -54
  256. package/assets/image-editor/images/stickers/emoticons/laughing-2.svg +57 -57
  257. package/assets/image-editor/images/stickers/emoticons/laughing-3.svg +55 -55
  258. package/assets/image-editor/images/stickers/emoticons/laughing.svg +56 -56
  259. package/assets/image-editor/images/stickers/emoticons/listening.svg +55 -55
  260. package/assets/image-editor/images/stickers/emoticons/love.svg +74 -74
  261. package/assets/image-editor/images/stickers/emoticons/manly.svg +75 -75
  262. package/assets/image-editor/images/stickers/emoticons/miserly-1.svg +90 -90
  263. package/assets/image-editor/images/stickers/emoticons/miserly.svg +82 -82
  264. package/assets/image-editor/images/stickers/emoticons/nerd-1.svg +88 -88
  265. package/assets/image-editor/images/stickers/emoticons/nerd-2.svg +73 -73
  266. package/assets/image-editor/images/stickers/emoticons/nerd-3.svg +60 -60
  267. package/assets/image-editor/images/stickers/emoticons/nerd-4.svg +70 -70
  268. package/assets/image-editor/images/stickers/emoticons/nerd.svg +88 -88
  269. package/assets/image-editor/images/stickers/emoticons/ninja.svg +51 -51
  270. package/assets/image-editor/images/stickers/emoticons/pirate-1.svg +92 -92
  271. package/assets/image-editor/images/stickers/emoticons/pirate-2.svg +48 -48
  272. package/assets/image-editor/images/stickers/emoticons/pirate.svg +286 -286
  273. package/assets/image-editor/images/stickers/emoticons/punk-1.svg +134 -134
  274. package/assets/image-editor/images/stickers/emoticons/punk-2.svg +153 -153
  275. package/assets/image-editor/images/stickers/emoticons/punk.svg +82 -82
  276. package/assets/image-editor/images/stickers/emoticons/rapper.svg +51 -51
  277. package/assets/image-editor/images/stickers/emoticons/relieved.svg +56 -56
  278. package/assets/image-editor/images/stickers/emoticons/rich-1.svg +59 -59
  279. package/assets/image-editor/images/stickers/emoticons/rich-2.svg +93 -93
  280. package/assets/image-editor/images/stickers/emoticons/rich.svg +88 -88
  281. package/assets/image-editor/images/stickers/emoticons/rockstar.svg +177 -177
  282. package/assets/image-editor/images/stickers/emoticons/sad-1.svg +43 -43
  283. package/assets/image-editor/images/stickers/emoticons/sad-2.svg +49 -49
  284. package/assets/image-editor/images/stickers/emoticons/sad-3.svg +49 -49
  285. package/assets/image-editor/images/stickers/emoticons/sad-4.svg +49 -49
  286. package/assets/image-editor/images/stickers/emoticons/sad-5.svg +45 -45
  287. package/assets/image-editor/images/stickers/emoticons/sad-6.svg +47 -47
  288. package/assets/image-editor/images/stickers/emoticons/sad.svg +47 -47
  289. package/assets/image-editor/images/stickers/emoticons/scared-1.svg +79 -79
  290. package/assets/image-editor/images/stickers/emoticons/scared-2.svg +59 -59
  291. package/assets/image-editor/images/stickers/emoticons/scared-3.svg +52 -52
  292. package/assets/image-editor/images/stickers/emoticons/scared.svg +45 -45
  293. package/assets/image-editor/images/stickers/emoticons/sceptic-1.svg +59 -59
  294. package/assets/image-editor/images/stickers/emoticons/sceptic-2.svg +80 -80
  295. package/assets/image-editor/images/stickers/emoticons/sceptic-3.svg +59 -59
  296. package/assets/image-editor/images/stickers/emoticons/sceptic-4.svg +46 -46
  297. package/assets/image-editor/images/stickers/emoticons/sceptic-5.svg +43 -43
  298. package/assets/image-editor/images/stickers/emoticons/sceptic-6.svg +42 -42
  299. package/assets/image-editor/images/stickers/emoticons/sceptic-7.svg +50 -50
  300. package/assets/image-editor/images/stickers/emoticons/sceptic.svg +44 -44
  301. package/assets/image-editor/images/stickers/emoticons/secret.svg +48 -48
  302. package/assets/image-editor/images/stickers/emoticons/shocked-1.svg +67 -67
  303. package/assets/image-editor/images/stickers/emoticons/shocked-2.svg +44 -44
  304. package/assets/image-editor/images/stickers/emoticons/shocked-3.svg +48 -48
  305. package/assets/image-editor/images/stickers/emoticons/shocked.svg +46 -46
  306. package/assets/image-editor/images/stickers/emoticons/sick-1.svg +55 -55
  307. package/assets/image-editor/images/stickers/emoticons/sick-2.svg +48 -48
  308. package/assets/image-editor/images/stickers/emoticons/sick-3.svg +49 -49
  309. package/assets/image-editor/images/stickers/emoticons/sick-4.svg +52 -52
  310. package/assets/image-editor/images/stickers/emoticons/sick.svg +52 -52
  311. package/assets/image-editor/images/stickers/emoticons/silent.svg +43 -43
  312. package/assets/image-editor/images/stickers/emoticons/skeleton.svg +64 -64
  313. package/assets/image-editor/images/stickers/emoticons/smile.svg +43 -43
  314. package/assets/image-editor/images/stickers/emoticons/smiling-1.svg +47 -47
  315. package/assets/image-editor/images/stickers/emoticons/smiling.svg +75 -75
  316. package/assets/image-editor/images/stickers/emoticons/smoked.svg +131 -131
  317. package/assets/image-editor/images/stickers/emoticons/smug-1.svg +74 -74
  318. package/assets/image-editor/images/stickers/emoticons/smug-2.svg +82 -82
  319. package/assets/image-editor/images/stickers/emoticons/smug-3.svg +71 -71
  320. package/assets/image-editor/images/stickers/emoticons/smug-4.svg +50 -50
  321. package/assets/image-editor/images/stickers/emoticons/smug-5.svg +64 -64
  322. package/assets/image-editor/images/stickers/emoticons/smug-6.svg +82 -82
  323. package/assets/image-editor/images/stickers/emoticons/smug.svg +96 -96
  324. package/assets/image-editor/images/stickers/emoticons/sporty.svg +68 -68
  325. package/assets/image-editor/images/stickers/emoticons/stunned.svg +72 -72
  326. package/assets/image-editor/images/stickers/emoticons/superhero-1.svg +60 -60
  327. package/assets/image-editor/images/stickers/emoticons/superhero-2.svg +47 -47
  328. package/assets/image-editor/images/stickers/emoticons/superhero-3.svg +48 -48
  329. package/assets/image-editor/images/stickers/emoticons/superhero-4.svg +52 -52
  330. package/assets/image-editor/images/stickers/emoticons/superhero.svg +45 -45
  331. package/assets/image-editor/images/stickers/emoticons/surprised-1.svg +47 -47
  332. package/assets/image-editor/images/stickers/emoticons/surprised.svg +58 -58
  333. package/assets/image-editor/images/stickers/emoticons/thinking.svg +43 -43
  334. package/assets/image-editor/images/stickers/emoticons/tired-1.svg +78 -78
  335. package/assets/image-editor/images/stickers/emoticons/tired-2.svg +65 -65
  336. package/assets/image-editor/images/stickers/emoticons/tired-3.svg +59 -59
  337. package/assets/image-editor/images/stickers/emoticons/tired.svg +83 -83
  338. package/assets/image-editor/images/stickers/emoticons/tough-1.svg +65 -65
  339. package/assets/image-editor/images/stickers/emoticons/tough.svg +158 -158
  340. package/assets/image-editor/images/stickers/emoticons/trendy.svg +57 -57
  341. package/assets/image-editor/images/stickers/emoticons/vampire-1.svg +56 -56
  342. package/assets/image-editor/images/stickers/emoticons/vampire.svg +59 -59
  343. package/assets/image-editor/images/stickers/emoticons/wink-1.svg +54 -54
  344. package/assets/image-editor/images/stickers/emoticons/wink-2.svg +64 -64
  345. package/assets/image-editor/images/stickers/emoticons/wink.svg +73 -73
  346. package/assets/image-editor/images/stickers/emoticons/winking-1.svg +52 -52
  347. package/assets/image-editor/images/stickers/emoticons/winking.svg +43 -43
  348. package/assets/image-editor/images/stickers/emoticons/yawning-1.svg +62 -62
  349. package/assets/image-editor/images/stickers/emoticons/yawning-2.svg +51 -51
  350. package/assets/image-editor/images/stickers/emoticons/yawning-3.svg +51 -51
  351. package/assets/image-editor/images/stickers/emoticons/yawning.svg +73 -73
  352. package/assets/image-editor/images/stickers/emoticons/yelling.svg +80 -80
  353. package/assets/image-editor/images/stickers/emoticons/zombie.svg +65 -65
  354. package/assets/image-editor/images/stickers/landmarks/0.svg +38 -38
  355. package/assets/image-editor/images/stickers/landmarks/1.svg +46 -46
  356. package/assets/image-editor/images/stickers/landmarks/10.svg +18 -18
  357. package/assets/image-editor/images/stickers/landmarks/11.svg +81 -81
  358. package/assets/image-editor/images/stickers/landmarks/12.svg +77 -77
  359. package/assets/image-editor/images/stickers/landmarks/13.svg +42 -42
  360. package/assets/image-editor/images/stickers/landmarks/14.svg +78 -78
  361. package/assets/image-editor/images/stickers/landmarks/15.svg +84 -84
  362. package/assets/image-editor/images/stickers/landmarks/16.svg +87 -87
  363. package/assets/image-editor/images/stickers/landmarks/17.svg +60 -60
  364. package/assets/image-editor/images/stickers/landmarks/18.svg +30 -30
  365. package/assets/image-editor/images/stickers/landmarks/19.svg +36 -36
  366. package/assets/image-editor/images/stickers/landmarks/2.svg +28 -28
  367. package/assets/image-editor/images/stickers/landmarks/20.svg +137 -137
  368. package/assets/image-editor/images/stickers/landmarks/21.svg +63 -63
  369. package/assets/image-editor/images/stickers/landmarks/22.svg +26 -26
  370. package/assets/image-editor/images/stickers/landmarks/23.svg +52 -52
  371. package/assets/image-editor/images/stickers/landmarks/24.svg +56 -56
  372. package/assets/image-editor/images/stickers/landmarks/25.svg +40 -40
  373. package/assets/image-editor/images/stickers/landmarks/26.svg +34 -34
  374. package/assets/image-editor/images/stickers/landmarks/27.svg +32 -32
  375. package/assets/image-editor/images/stickers/landmarks/28.svg +19 -19
  376. package/assets/image-editor/images/stickers/landmarks/29.svg +23 -23
  377. package/assets/image-editor/images/stickers/landmarks/3.svg +36 -36
  378. package/assets/image-editor/images/stickers/landmarks/30.svg +36 -36
  379. package/assets/image-editor/images/stickers/landmarks/31.svg +27 -27
  380. package/assets/image-editor/images/stickers/landmarks/32.svg +25 -25
  381. package/assets/image-editor/images/stickers/landmarks/33.svg +29 -29
  382. package/assets/image-editor/images/stickers/landmarks/34.svg +72 -72
  383. package/assets/image-editor/images/stickers/landmarks/35.svg +18 -18
  384. package/assets/image-editor/images/stickers/landmarks/36.svg +45 -45
  385. package/assets/image-editor/images/stickers/landmarks/37.svg +46 -46
  386. package/assets/image-editor/images/stickers/landmarks/38.svg +44 -44
  387. package/assets/image-editor/images/stickers/landmarks/39.svg +23 -23
  388. package/assets/image-editor/images/stickers/landmarks/4.svg +33 -33
  389. package/assets/image-editor/images/stickers/landmarks/40.svg +25 -25
  390. package/assets/image-editor/images/stickers/landmarks/41.svg +69 -69
  391. package/assets/image-editor/images/stickers/landmarks/42.svg +75 -75
  392. package/assets/image-editor/images/stickers/landmarks/43.svg +44 -44
  393. package/assets/image-editor/images/stickers/landmarks/44.svg +65 -65
  394. package/assets/image-editor/images/stickers/landmarks/45.svg +19 -19
  395. package/assets/image-editor/images/stickers/landmarks/46.svg +47 -47
  396. package/assets/image-editor/images/stickers/landmarks/47.svg +544 -544
  397. package/assets/image-editor/images/stickers/landmarks/48.svg +162 -162
  398. package/assets/image-editor/images/stickers/landmarks/49.svg +70 -70
  399. package/assets/image-editor/images/stickers/landmarks/5.svg +36 -36
  400. package/assets/image-editor/images/stickers/landmarks/50.svg +52 -52
  401. package/assets/image-editor/images/stickers/landmarks/51.svg +110 -110
  402. package/assets/image-editor/images/stickers/landmarks/52.svg +41 -41
  403. package/assets/image-editor/images/stickers/landmarks/53.svg +74 -74
  404. package/assets/image-editor/images/stickers/landmarks/54.svg +36 -36
  405. package/assets/image-editor/images/stickers/landmarks/55.svg +84 -84
  406. package/assets/image-editor/images/stickers/landmarks/56.svg +93 -93
  407. package/assets/image-editor/images/stickers/landmarks/57.svg +67 -67
  408. package/assets/image-editor/images/stickers/landmarks/58.svg +101 -101
  409. package/assets/image-editor/images/stickers/landmarks/59.svg +47 -47
  410. package/assets/image-editor/images/stickers/landmarks/6.svg +59 -59
  411. package/assets/image-editor/images/stickers/landmarks/60.svg +134 -134
  412. package/assets/image-editor/images/stickers/landmarks/61.svg +79 -79
  413. package/assets/image-editor/images/stickers/landmarks/62.svg +43 -43
  414. package/assets/image-editor/images/stickers/landmarks/63.svg +83 -83
  415. package/assets/image-editor/images/stickers/landmarks/64.svg +99 -99
  416. package/assets/image-editor/images/stickers/landmarks/65.svg +79 -79
  417. package/assets/image-editor/images/stickers/landmarks/66.svg +37 -37
  418. package/assets/image-editor/images/stickers/landmarks/67.svg +82 -82
  419. package/assets/image-editor/images/stickers/landmarks/68.svg +216 -216
  420. package/assets/image-editor/images/stickers/landmarks/69.svg +17 -17
  421. package/assets/image-editor/images/stickers/landmarks/7.svg +16 -16
  422. package/assets/image-editor/images/stickers/landmarks/70.svg +45 -45
  423. package/assets/image-editor/images/stickers/landmarks/71.svg +37 -37
  424. package/assets/image-editor/images/stickers/landmarks/72.svg +28 -28
  425. package/assets/image-editor/images/stickers/landmarks/73.svg +25 -25
  426. package/assets/image-editor/images/stickers/landmarks/74.svg +23 -23
  427. package/assets/image-editor/images/stickers/landmarks/75.svg +88 -88
  428. package/assets/image-editor/images/stickers/landmarks/76.svg +25 -25
  429. package/assets/image-editor/images/stickers/landmarks/77.svg +23 -23
  430. package/assets/image-editor/images/stickers/landmarks/78.svg +63 -63
  431. package/assets/image-editor/images/stickers/landmarks/79.svg +25 -25
  432. package/assets/image-editor/images/stickers/landmarks/8.svg +52 -52
  433. package/assets/image-editor/images/stickers/landmarks/80.svg +29 -29
  434. package/assets/image-editor/images/stickers/landmarks/81.svg +44 -44
  435. package/assets/image-editor/images/stickers/landmarks/82.svg +83 -83
  436. package/assets/image-editor/images/stickers/landmarks/83.svg +65 -65
  437. package/assets/image-editor/images/stickers/landmarks/84.svg +31 -31
  438. package/assets/image-editor/images/stickers/landmarks/85.svg +30 -30
  439. package/assets/image-editor/images/stickers/landmarks/86.svg +26 -26
  440. package/assets/image-editor/images/stickers/landmarks/87.svg +132 -132
  441. package/assets/image-editor/images/stickers/landmarks/88.svg +93 -93
  442. package/assets/image-editor/images/stickers/landmarks/89.svg +91 -91
  443. package/assets/image-editor/images/stickers/landmarks/9.svg +70 -70
  444. package/assets/image-editor/images/stickers/landmarks/90.svg +65 -65
  445. package/assets/image-editor/images/stickers/landmarks/91.svg +36 -36
  446. package/assets/image-editor/images/stickers/landmarks/92.svg +66 -66
  447. package/assets/image-editor/images/stickers/landmarks/93.svg +65 -65
  448. package/assets/image-editor/images/stickers/landmarks/94.svg +28 -28
  449. package/assets/image-editor/images/stickers/landmarks/95.svg +31 -31
  450. package/assets/image-editor/images/stickers/landmarks/96.svg +25 -25
  451. package/assets/image-editor/images/stickers/landmarks/97.svg +31 -31
  452. package/assets/image-editor/images/stickers/landmarks/98.svg +52 -52
  453. package/assets/image-editor/images/stickers/landmarks/99.svg +56 -56
  454. package/assets/image-editor/images/stickers/transportation/0.svg +26 -26
  455. package/assets/image-editor/images/stickers/transportation/1.svg +10 -10
  456. package/assets/image-editor/images/stickers/transportation/10.svg +16 -16
  457. package/assets/image-editor/images/stickers/transportation/11.svg +30 -30
  458. package/assets/image-editor/images/stickers/transportation/12.svg +22 -22
  459. package/assets/image-editor/images/stickers/transportation/13.svg +24 -24
  460. package/assets/image-editor/images/stickers/transportation/14.svg +19 -19
  461. package/assets/image-editor/images/stickers/transportation/15.svg +23 -23
  462. package/assets/image-editor/images/stickers/transportation/16.svg +25 -25
  463. package/assets/image-editor/images/stickers/transportation/17.svg +34 -34
  464. package/assets/image-editor/images/stickers/transportation/18.svg +29 -29
  465. package/assets/image-editor/images/stickers/transportation/19.svg +24 -24
  466. package/assets/image-editor/images/stickers/transportation/2.svg +27 -27
  467. package/assets/image-editor/images/stickers/transportation/20.svg +25 -25
  468. package/assets/image-editor/images/stickers/transportation/21.svg +22 -22
  469. package/assets/image-editor/images/stickers/transportation/3.svg +18 -18
  470. package/assets/image-editor/images/stickers/transportation/4.svg +24 -24
  471. package/assets/image-editor/images/stickers/transportation/5.svg +15 -15
  472. package/assets/image-editor/images/stickers/transportation/6.svg +25 -25
  473. package/assets/image-editor/images/stickers/transportation/7.svg +17 -17
  474. package/assets/image-editor/images/stickers/transportation/8.svg +28 -28
  475. package/assets/image-editor/images/stickers/transportation/9.svg +23 -23
  476. package/components/ImageCodeGenerator/ImageCodeGenerator.d.ts +4 -0
  477. package/constants/index.d.ts +2 -0
  478. package/debug-script.js +445 -445
  479. package/file-manager-IconsTab-ww_epetO.js +2 -0
  480. package/file-manager-ImageCodeGenerator-BxkI9HtY.js +2 -0
  481. package/file-manager-JsBarcode-CMRzMjTV.js +2 -0
  482. package/file-manager-index-CqMa6hmd.js +2 -0
  483. package/{file-manager-index-S_eK0A-M.js → file-manager-index-Du1En8uk.js} +9 -9
  484. package/file-manager.css +160 -6
  485. package/file-manager.esm.js +1 -1
  486. package/file-manager.js +45792 -45726
  487. package/{fm-icons-tab.4e78e0d23b307449840c.js → fm-icons-tab.60bc2670cf092ed76cd0.js} +16 -12
  488. package/fm-image-code-generator.1f6c519dd7ec020319ad.js +371 -0
  489. package/mockServiceWorker.js +344 -344
  490. package/notification.d.ts +636 -636
  491. package/package.json +30 -30
  492. package/sample-files.json +104 -104
  493. package/suppress-resize-observer-errors.js +60 -60
  494. package/test-pixie-loading.html +108 -108
  495. package/types.d.ts +20 -2
  496. package/file-manager-IconsTab-HtufafvD.js +0 -2
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
  });