@emailmaker/filemanager 0.10.80 → 0.10.81

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