@bylqwjc/media-editor-react 1.0.12

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 (434) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +51 -0
  3. package/dist/index.cjs +282 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +54 -0
  6. package/dist/index.d.ts +54 -0
  7. package/dist/index.js +240 -0
  8. package/dist/index.js.map +1 -0
  9. package/filerobot.css +1669 -0
  10. package/node_modules/@media-editor/client/LICENSE +21 -0
  11. package/node_modules/@media-editor/client/README.md +27 -0
  12. package/node_modules/@media-editor/client/dist/index.cjs +60 -0
  13. package/node_modules/@media-editor/client/dist/index.cjs.map +1 -0
  14. package/node_modules/@media-editor/client/dist/index.d.cts +24 -0
  15. package/node_modules/@media-editor/client/dist/index.d.ts +24 -0
  16. package/node_modules/@media-editor/client/dist/index.js +35 -0
  17. package/node_modules/@media-editor/client/dist/index.js.map +1 -0
  18. package/node_modules/@media-editor/client/package.json +23 -0
  19. package/node_modules/@media-editor/core/LICENSE +21 -0
  20. package/node_modules/@media-editor/core/README.md +14 -0
  21. package/node_modules/@media-editor/core/dist/browser.cjs +505 -0
  22. package/node_modules/@media-editor/core/dist/browser.cjs.map +1 -0
  23. package/node_modules/@media-editor/core/dist/browser.d.cts +100 -0
  24. package/node_modules/@media-editor/core/dist/browser.d.ts +100 -0
  25. package/node_modules/@media-editor/core/dist/browser.js +883 -0
  26. package/node_modules/@media-editor/core/dist/browser.js.map +1 -0
  27. package/node_modules/@media-editor/core/dist/chunk-MGKYVYOH.js +371 -0
  28. package/node_modules/@media-editor/core/dist/chunk-MGKYVYOH.js.map +1 -0
  29. package/node_modules/@media-editor/core/dist/chunk-USY6UDGL.js +87 -0
  30. package/node_modules/@media-editor/core/dist/chunk-USY6UDGL.js.map +1 -0
  31. package/node_modules/@media-editor/core/dist/chunk-XCBM7P7N.js +592 -0
  32. package/node_modules/@media-editor/core/dist/chunk-XCBM7P7N.js.map +1 -0
  33. package/node_modules/@media-editor/core/dist/engine.cjs +540 -0
  34. package/node_modules/@media-editor/core/dist/engine.cjs.map +1 -0
  35. package/node_modules/@media-editor/core/dist/engine.d.cts +325 -0
  36. package/node_modules/@media-editor/core/dist/engine.d.ts +359 -0
  37. package/node_modules/@media-editor/core/dist/engine.js +315 -0
  38. package/node_modules/@media-editor/core/dist/engine.js.map +1 -0
  39. package/node_modules/@media-editor/core/dist/filerobot.cjs +818 -0
  40. package/node_modules/@media-editor/core/dist/filerobot.cjs.map +1 -0
  41. package/node_modules/@media-editor/core/dist/filerobot.d.cts +88 -0
  42. package/node_modules/@media-editor/core/dist/filerobot.d.ts +88 -0
  43. package/node_modules/@media-editor/core/dist/filerobot.js +473 -0
  44. package/node_modules/@media-editor/core/dist/filerobot.js.map +1 -0
  45. package/node_modules/@media-editor/core/dist/index.cjs +1276 -0
  46. package/node_modules/@media-editor/core/dist/index.cjs.map +1 -0
  47. package/node_modules/@media-editor/core/dist/index.d.cts +242 -0
  48. package/node_modules/@media-editor/core/dist/index.d.ts +264 -0
  49. package/node_modules/@media-editor/core/dist/index.js +682 -0
  50. package/node_modules/@media-editor/core/dist/index.js.map +1 -0
  51. package/node_modules/@media-editor/core/dist/platform-presets-B-o4C6uY.d.cts +80 -0
  52. package/node_modules/@media-editor/core/dist/platform-presets-B-o4C6uY.d.ts +80 -0
  53. package/node_modules/@media-editor/core/dist/state-B85vkf7_.d.cts +936 -0
  54. package/node_modules/@media-editor/core/dist/state-B85vkf7_.d.ts +1027 -0
  55. package/node_modules/@media-editor/core/node_modules/zod/LICENSE +21 -0
  56. package/node_modules/@media-editor/core/node_modules/zod/README.md +208 -0
  57. package/node_modules/@media-editor/core/node_modules/zod/index.cjs +33 -0
  58. package/node_modules/@media-editor/core/node_modules/zod/index.d.cts +4 -0
  59. package/node_modules/@media-editor/core/node_modules/zod/index.d.ts +4 -0
  60. package/node_modules/@media-editor/core/node_modules/zod/index.js +4 -0
  61. package/node_modules/@media-editor/core/node_modules/zod/package.json +118 -0
  62. package/node_modules/@media-editor/core/node_modules/zod/v3/ZodError.cjs +138 -0
  63. package/node_modules/@media-editor/core/node_modules/zod/v3/ZodError.d.cts +164 -0
  64. package/node_modules/@media-editor/core/node_modules/zod/v3/ZodError.d.ts +164 -0
  65. package/node_modules/@media-editor/core/node_modules/zod/v3/ZodError.js +133 -0
  66. package/node_modules/@media-editor/core/node_modules/zod/v3/errors.cjs +17 -0
  67. package/node_modules/@media-editor/core/node_modules/zod/v3/errors.d.cts +5 -0
  68. package/node_modules/@media-editor/core/node_modules/zod/v3/errors.d.ts +5 -0
  69. package/node_modules/@media-editor/core/node_modules/zod/v3/errors.js +9 -0
  70. package/node_modules/@media-editor/core/node_modules/zod/v3/external.cjs +22 -0
  71. package/node_modules/@media-editor/core/node_modules/zod/v3/external.d.cts +6 -0
  72. package/node_modules/@media-editor/core/node_modules/zod/v3/external.d.ts +6 -0
  73. package/node_modules/@media-editor/core/node_modules/zod/v3/external.js +6 -0
  74. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  75. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  76. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  77. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  78. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  79. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  80. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  81. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  82. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  83. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  84. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  85. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  86. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  87. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  88. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  89. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  90. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  91. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  92. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  93. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  94. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/util.cjs +137 -0
  95. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/util.d.cts +85 -0
  96. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/util.d.ts +85 -0
  97. package/node_modules/@media-editor/core/node_modules/zod/v3/helpers/util.js +133 -0
  98. package/node_modules/@media-editor/core/node_modules/zod/v3/index.cjs +33 -0
  99. package/node_modules/@media-editor/core/node_modules/zod/v3/index.d.cts +4 -0
  100. package/node_modules/@media-editor/core/node_modules/zod/v3/index.d.ts +4 -0
  101. package/node_modules/@media-editor/core/node_modules/zod/v3/index.js +4 -0
  102. package/node_modules/@media-editor/core/node_modules/zod/v3/locales/en.cjs +111 -0
  103. package/node_modules/@media-editor/core/node_modules/zod/v3/locales/en.d.cts +3 -0
  104. package/node_modules/@media-editor/core/node_modules/zod/v3/locales/en.d.ts +3 -0
  105. package/node_modules/@media-editor/core/node_modules/zod/v3/locales/en.js +109 -0
  106. package/node_modules/@media-editor/core/node_modules/zod/v3/standard-schema.cjs +2 -0
  107. package/node_modules/@media-editor/core/node_modules/zod/v3/standard-schema.d.cts +102 -0
  108. package/node_modules/@media-editor/core/node_modules/zod/v3/standard-schema.d.ts +102 -0
  109. package/node_modules/@media-editor/core/node_modules/zod/v3/standard-schema.js +1 -0
  110. package/node_modules/@media-editor/core/node_modules/zod/v3/types.cjs +3775 -0
  111. package/node_modules/@media-editor/core/node_modules/zod/v3/types.d.cts +1031 -0
  112. package/node_modules/@media-editor/core/node_modules/zod/v3/types.d.ts +1031 -0
  113. package/node_modules/@media-editor/core/node_modules/zod/v3/types.js +3693 -0
  114. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/checks.cjs +32 -0
  115. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/checks.d.cts +1 -0
  116. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/checks.d.ts +1 -0
  117. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/checks.js +1 -0
  118. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/coerce.cjs +47 -0
  119. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  120. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  121. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/coerce.js +17 -0
  122. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/compat.cjs +57 -0
  123. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/compat.d.cts +46 -0
  124. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/compat.d.ts +46 -0
  125. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/compat.js +27 -0
  126. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/errors.cjs +67 -0
  127. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/errors.d.cts +30 -0
  128. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/errors.d.ts +30 -0
  129. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/errors.js +41 -0
  130. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/external.cjs +70 -0
  131. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/external.d.cts +13 -0
  132. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/external.d.ts +13 -0
  133. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/external.js +18 -0
  134. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/index.cjs +33 -0
  135. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/index.d.cts +4 -0
  136. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/index.d.ts +4 -0
  137. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/index.js +4 -0
  138. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/iso.cjs +60 -0
  139. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/iso.d.cts +22 -0
  140. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/iso.d.ts +22 -0
  141. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/iso.js +30 -0
  142. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/parse.cjs +32 -0
  143. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/parse.d.cts +23 -0
  144. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/parse.d.ts +23 -0
  145. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/parse.js +6 -0
  146. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/schemas.cjs +1109 -0
  147. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/schemas.d.cts +630 -0
  148. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/schemas.d.ts +630 -0
  149. package/node_modules/@media-editor/core/node_modules/zod/v4/classic/schemas.js +1006 -0
  150. package/node_modules/@media-editor/core/node_modules/zod/v4/core/api.cjs +1039 -0
  151. package/node_modules/@media-editor/core/node_modules/zod/v4/core/api.d.cts +284 -0
  152. package/node_modules/@media-editor/core/node_modules/zod/v4/core/api.d.ts +284 -0
  153. package/node_modules/@media-editor/core/node_modules/zod/v4/core/api.js +906 -0
  154. package/node_modules/@media-editor/core/node_modules/zod/v4/core/checks.cjs +591 -0
  155. package/node_modules/@media-editor/core/node_modules/zod/v4/core/checks.d.cts +278 -0
  156. package/node_modules/@media-editor/core/node_modules/zod/v4/core/checks.d.ts +278 -0
  157. package/node_modules/@media-editor/core/node_modules/zod/v4/core/checks.js +565 -0
  158. package/node_modules/@media-editor/core/node_modules/zod/v4/core/core.cjs +67 -0
  159. package/node_modules/@media-editor/core/node_modules/zod/v4/core/core.d.cts +49 -0
  160. package/node_modules/@media-editor/core/node_modules/zod/v4/core/core.d.ts +49 -0
  161. package/node_modules/@media-editor/core/node_modules/zod/v4/core/core.js +61 -0
  162. package/node_modules/@media-editor/core/node_modules/zod/v4/core/doc.cjs +39 -0
  163. package/node_modules/@media-editor/core/node_modules/zod/v4/core/doc.d.cts +14 -0
  164. package/node_modules/@media-editor/core/node_modules/zod/v4/core/doc.d.ts +14 -0
  165. package/node_modules/@media-editor/core/node_modules/zod/v4/core/doc.js +35 -0
  166. package/node_modules/@media-editor/core/node_modules/zod/v4/core/errors.cjs +226 -0
  167. package/node_modules/@media-editor/core/node_modules/zod/v4/core/errors.d.cts +208 -0
  168. package/node_modules/@media-editor/core/node_modules/zod/v4/core/errors.d.ts +208 -0
  169. package/node_modules/@media-editor/core/node_modules/zod/v4/core/errors.js +195 -0
  170. package/node_modules/@media-editor/core/node_modules/zod/v4/core/function.cjs +102 -0
  171. package/node_modules/@media-editor/core/node_modules/zod/v4/core/function.d.cts +52 -0
  172. package/node_modules/@media-editor/core/node_modules/zod/v4/core/function.d.ts +52 -0
  173. package/node_modules/@media-editor/core/node_modules/zod/v4/core/function.js +75 -0
  174. package/node_modules/@media-editor/core/node_modules/zod/v4/core/index.cjs +44 -0
  175. package/node_modules/@media-editor/core/node_modules/zod/v4/core/index.d.cts +15 -0
  176. package/node_modules/@media-editor/core/node_modules/zod/v4/core/index.d.ts +15 -0
  177. package/node_modules/@media-editor/core/node_modules/zod/v4/core/index.js +15 -0
  178. package/node_modules/@media-editor/core/node_modules/zod/v4/core/json-schema.cjs +2 -0
  179. package/node_modules/@media-editor/core/node_modules/zod/v4/core/json-schema.d.cts +87 -0
  180. package/node_modules/@media-editor/core/node_modules/zod/v4/core/json-schema.d.ts +87 -0
  181. package/node_modules/@media-editor/core/node_modules/zod/v4/core/json-schema.js +1 -0
  182. package/node_modules/@media-editor/core/node_modules/zod/v4/core/parse.cjs +87 -0
  183. package/node_modules/@media-editor/core/node_modules/zod/v4/core/parse.d.cts +25 -0
  184. package/node_modules/@media-editor/core/node_modules/zod/v4/core/parse.d.ts +25 -0
  185. package/node_modules/@media-editor/core/node_modules/zod/v4/core/parse.js +57 -0
  186. package/node_modules/@media-editor/core/node_modules/zod/v4/core/regexes.cjs +103 -0
  187. package/node_modules/@media-editor/core/node_modules/zod/v4/core/regexes.d.cts +62 -0
  188. package/node_modules/@media-editor/core/node_modules/zod/v4/core/regexes.d.ts +62 -0
  189. package/node_modules/@media-editor/core/node_modules/zod/v4/core/regexes.js +95 -0
  190. package/node_modules/@media-editor/core/node_modules/zod/v4/core/registries.cjs +56 -0
  191. package/node_modules/@media-editor/core/node_modules/zod/v4/core/registries.d.cts +35 -0
  192. package/node_modules/@media-editor/core/node_modules/zod/v4/core/registries.d.ts +35 -0
  193. package/node_modules/@media-editor/core/node_modules/zod/v4/core/registries.js +51 -0
  194. package/node_modules/@media-editor/core/node_modules/zod/v4/core/schemas.cjs +1748 -0
  195. package/node_modules/@media-editor/core/node_modules/zod/v4/core/schemas.d.cts +1041 -0
  196. package/node_modules/@media-editor/core/node_modules/zod/v4/core/schemas.d.ts +1041 -0
  197. package/node_modules/@media-editor/core/node_modules/zod/v4/core/schemas.js +1717 -0
  198. package/node_modules/@media-editor/core/node_modules/zod/v4/core/standard-schema.cjs +2 -0
  199. package/node_modules/@media-editor/core/node_modules/zod/v4/core/standard-schema.d.cts +55 -0
  200. package/node_modules/@media-editor/core/node_modules/zod/v4/core/standard-schema.d.ts +55 -0
  201. package/node_modules/@media-editor/core/node_modules/zod/v4/core/standard-schema.js +1 -0
  202. package/node_modules/@media-editor/core/node_modules/zod/v4/core/to-json-schema.cjs +854 -0
  203. package/node_modules/@media-editor/core/node_modules/zod/v4/core/to-json-schema.d.cts +88 -0
  204. package/node_modules/@media-editor/core/node_modules/zod/v4/core/to-json-schema.d.ts +88 -0
  205. package/node_modules/@media-editor/core/node_modules/zod/v4/core/to-json-schema.js +849 -0
  206. package/node_modules/@media-editor/core/node_modules/zod/v4/core/util.cjs +539 -0
  207. package/node_modules/@media-editor/core/node_modules/zod/v4/core/util.d.cts +183 -0
  208. package/node_modules/@media-editor/core/node_modules/zod/v4/core/util.d.ts +183 -0
  209. package/node_modules/@media-editor/core/node_modules/zod/v4/core/util.js +493 -0
  210. package/node_modules/@media-editor/core/node_modules/zod/v4/core/versions.cjs +8 -0
  211. package/node_modules/@media-editor/core/node_modules/zod/v4/core/versions.d.cts +5 -0
  212. package/node_modules/@media-editor/core/node_modules/zod/v4/core/versions.d.ts +5 -0
  213. package/node_modules/@media-editor/core/node_modules/zod/v4/core/versions.js +5 -0
  214. package/node_modules/@media-editor/core/node_modules/zod/v4/index.cjs +22 -0
  215. package/node_modules/@media-editor/core/node_modules/zod/v4/index.d.cts +3 -0
  216. package/node_modules/@media-editor/core/node_modules/zod/v4/index.d.ts +3 -0
  217. package/node_modules/@media-editor/core/node_modules/zod/v4/index.js +3 -0
  218. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ar.cjs +142 -0
  219. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ar.d.cts +4 -0
  220. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ar.d.ts +4 -0
  221. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ar.js +116 -0
  222. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/az.cjs +141 -0
  223. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/az.d.cts +4 -0
  224. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/az.d.ts +4 -0
  225. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/az.js +115 -0
  226. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/be.cjs +190 -0
  227. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/be.d.cts +4 -0
  228. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/be.d.ts +4 -0
  229. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/be.js +164 -0
  230. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ca.cjs +144 -0
  231. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ca.d.cts +4 -0
  232. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ca.d.ts +4 -0
  233. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ca.js +118 -0
  234. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/cs.cjs +161 -0
  235. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/cs.d.cts +4 -0
  236. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/cs.d.ts +4 -0
  237. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/cs.js +135 -0
  238. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/de.cjs +142 -0
  239. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/de.d.cts +4 -0
  240. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/de.d.ts +4 -0
  241. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/de.js +116 -0
  242. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/en.cjs +145 -0
  243. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/en.d.cts +5 -0
  244. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/en.d.ts +5 -0
  245. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/en.js +117 -0
  246. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/eo.cjs +144 -0
  247. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/eo.d.cts +5 -0
  248. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/eo.d.ts +5 -0
  249. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/eo.js +116 -0
  250. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/es.cjs +143 -0
  251. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/es.d.cts +4 -0
  252. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/es.d.ts +4 -0
  253. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/es.js +117 -0
  254. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fa.cjs +148 -0
  255. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fa.d.cts +4 -0
  256. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fa.d.ts +4 -0
  257. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fa.js +122 -0
  258. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fi.cjs +148 -0
  259. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fi.d.cts +4 -0
  260. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fi.d.ts +4 -0
  261. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fi.js +122 -0
  262. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fr-CA.cjs +143 -0
  263. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fr-CA.d.cts +4 -0
  264. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  265. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fr-CA.js +117 -0
  266. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fr.cjs +142 -0
  267. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fr.d.cts +4 -0
  268. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fr.d.ts +4 -0
  269. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/fr.js +116 -0
  270. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/he.cjs +143 -0
  271. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/he.d.cts +4 -0
  272. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/he.d.ts +4 -0
  273. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/he.js +117 -0
  274. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/hu.cjs +143 -0
  275. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/hu.d.cts +4 -0
  276. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/hu.d.ts +4 -0
  277. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/hu.js +117 -0
  278. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/id.cjs +142 -0
  279. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/id.d.cts +4 -0
  280. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/id.d.ts +4 -0
  281. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/id.js +116 -0
  282. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/index.cjs +84 -0
  283. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/index.d.cts +39 -0
  284. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/index.d.ts +39 -0
  285. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/index.js +39 -0
  286. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/it.cjs +143 -0
  287. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/it.d.cts +4 -0
  288. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/it.d.ts +4 -0
  289. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/it.js +117 -0
  290. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ja.cjs +141 -0
  291. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ja.d.cts +4 -0
  292. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ja.d.ts +4 -0
  293. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ja.js +115 -0
  294. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/kh.cjs +143 -0
  295. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/kh.d.cts +4 -0
  296. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/kh.d.ts +4 -0
  297. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/kh.js +117 -0
  298. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ko.cjs +147 -0
  299. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ko.d.cts +4 -0
  300. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ko.d.ts +4 -0
  301. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ko.js +121 -0
  302. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/mk.cjs +144 -0
  303. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/mk.d.cts +4 -0
  304. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/mk.d.ts +4 -0
  305. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/mk.js +118 -0
  306. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ms.cjs +142 -0
  307. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ms.d.cts +4 -0
  308. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ms.d.ts +4 -0
  309. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ms.js +116 -0
  310. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/nl.cjs +143 -0
  311. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/nl.d.cts +4 -0
  312. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/nl.d.ts +4 -0
  313. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/nl.js +117 -0
  314. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/no.cjs +142 -0
  315. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/no.d.cts +4 -0
  316. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/no.d.ts +4 -0
  317. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/no.js +116 -0
  318. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ota.cjs +143 -0
  319. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ota.d.cts +4 -0
  320. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ota.d.ts +4 -0
  321. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ota.js +117 -0
  322. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/pl.cjs +143 -0
  323. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/pl.d.cts +4 -0
  324. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/pl.d.ts +4 -0
  325. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/pl.js +117 -0
  326. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ps.cjs +148 -0
  327. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ps.d.cts +4 -0
  328. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ps.d.ts +4 -0
  329. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ps.js +122 -0
  330. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/pt.cjs +142 -0
  331. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/pt.d.cts +4 -0
  332. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/pt.d.ts +4 -0
  333. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/pt.js +116 -0
  334. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ru.cjs +190 -0
  335. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ru.d.cts +4 -0
  336. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ru.d.ts +4 -0
  337. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ru.js +164 -0
  338. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/sl.cjs +143 -0
  339. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/sl.d.cts +4 -0
  340. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/sl.d.ts +4 -0
  341. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/sl.js +117 -0
  342. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/sv.cjs +144 -0
  343. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/sv.d.cts +4 -0
  344. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/sv.d.ts +4 -0
  345. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/sv.js +118 -0
  346. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ta.cjs +143 -0
  347. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ta.d.cts +4 -0
  348. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ta.d.ts +4 -0
  349. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ta.js +117 -0
  350. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/th.cjs +143 -0
  351. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/th.d.cts +4 -0
  352. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/th.d.ts +4 -0
  353. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/th.js +117 -0
  354. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/tr.cjs +143 -0
  355. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/tr.d.cts +5 -0
  356. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/tr.d.ts +5 -0
  357. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/tr.js +115 -0
  358. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ua.cjs +143 -0
  359. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ua.d.cts +4 -0
  360. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ua.d.ts +4 -0
  361. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ua.js +117 -0
  362. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ur.cjs +143 -0
  363. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ur.d.cts +4 -0
  364. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ur.d.ts +4 -0
  365. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/ur.js +117 -0
  366. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/vi.cjs +142 -0
  367. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/vi.d.cts +4 -0
  368. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/vi.d.ts +4 -0
  369. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/vi.js +116 -0
  370. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/zh-CN.cjs +142 -0
  371. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/zh-CN.d.cts +4 -0
  372. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  373. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/zh-CN.js +116 -0
  374. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/zh-TW.cjs +143 -0
  375. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/zh-TW.d.cts +4 -0
  376. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  377. package/node_modules/@media-editor/core/node_modules/zod/v4/locales/zh-TW.js +117 -0
  378. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/checks.cjs +34 -0
  379. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/checks.d.cts +1 -0
  380. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/checks.d.ts +1 -0
  381. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/checks.js +1 -0
  382. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/coerce.cjs +47 -0
  383. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  384. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  385. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/coerce.js +17 -0
  386. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/external.cjs +62 -0
  387. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/external.d.cts +11 -0
  388. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/external.d.ts +11 -0
  389. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/external.js +13 -0
  390. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/index.cjs +32 -0
  391. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/index.d.cts +3 -0
  392. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/index.d.ts +3 -0
  393. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/index.js +3 -0
  394. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/iso.cjs +60 -0
  395. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/iso.d.cts +22 -0
  396. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/iso.d.ts +22 -0
  397. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/iso.js +30 -0
  398. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/parse.cjs +8 -0
  399. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/parse.d.cts +1 -0
  400. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/parse.d.ts +1 -0
  401. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/parse.js +1 -0
  402. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/schemas.cjs +839 -0
  403. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/schemas.d.cts +356 -0
  404. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/schemas.d.ts +356 -0
  405. package/node_modules/@media-editor/core/node_modules/zod/v4/mini/schemas.js +732 -0
  406. package/node_modules/@media-editor/core/node_modules/zod/v4-mini/index.cjs +17 -0
  407. package/node_modules/@media-editor/core/node_modules/zod/v4-mini/index.d.cts +1 -0
  408. package/node_modules/@media-editor/core/node_modules/zod/v4-mini/index.d.ts +1 -0
  409. package/node_modules/@media-editor/core/node_modules/zod/v4-mini/index.js +1 -0
  410. package/node_modules/@media-editor/core/package.json +42 -0
  411. package/node_modules/@media-editor/image/LICENSE +21 -0
  412. package/node_modules/@media-editor/image/README.md +48 -0
  413. package/node_modules/@media-editor/image/dist/chunk-5TBO732O.js +1 -0
  414. package/node_modules/@media-editor/image/dist/index-CU3vkvDR.d.ts +44 -0
  415. package/node_modules/@media-editor/image/dist/index.css +1 -0
  416. package/node_modules/@media-editor/image/dist/index.d.ts +2 -0
  417. package/node_modules/@media-editor/image/dist/index.js +364 -0
  418. package/node_modules/@media-editor/image/dist/lazy.css +1 -0
  419. package/node_modules/@media-editor/image/dist/lazy.d.ts +8 -0
  420. package/node_modules/@media-editor/image/dist/lazy.js +1 -0
  421. package/node_modules/@media-editor/image/package.json +29 -0
  422. package/node_modules/@media-editor/video/LICENSE +21 -0
  423. package/node_modules/@media-editor/video/README.md +55 -0
  424. package/node_modules/@media-editor/video/dist/chunk-EK7ODJWE.js +1 -0
  425. package/node_modules/@media-editor/video/dist/index-CX2iAapm.d.ts +51 -0
  426. package/node_modules/@media-editor/video/dist/index.d.ts +4 -0
  427. package/node_modules/@media-editor/video/dist/index.js +16919 -0
  428. package/node_modules/@media-editor/video/dist/lazy.d.ts +10 -0
  429. package/node_modules/@media-editor/video/dist/lazy.js +1 -0
  430. package/node_modules/@media-editor/video/dist/legacy.js +65 -0
  431. package/node_modules/@media-editor/video/package.json +29 -0
  432. package/package.json +48 -0
  433. package/style.css +1 -0
  434. package/theme.css +1214 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i18n.ts","../src/platform-table.ts","../src/platform-presets.ts","../src/filerobot-annotation.ts"],"names":[],"mappings":";AASA,IAAM,EAAA,GAA6B;AAAA;AAAA,EAEjC,WAAA,EAAa,cAAA;AAAA,EACb,WAAA,EAAa,cAAA;AAAA,EACb,WAAA,EAAa,cAAA;AAAA,EACb,aAAA,EAAe,cAAA;AAAA,EACf,eAAA,EAAiB,cAAA;AAAA,EACjB,cAAA,EAAgB,cAAA;AAAA,EAChB,aAAA,EAAe,cAAA;AAAA;AAAA,EAEf,iBAAA,EAAmB,cAAA;AAAA,EACnB,eAAA,EAAiB,cAAA;AAAA,EACjB,iBAAA,EAAmB,cAAA;AAAA,EACnB,YAAA,EAAc,OAAA;AAAA;AAAA,EAEd,gBAAA,EAAkB,cAAA;AAAA,EAClB,aAAA,EAAe,cAAA;AAAA,EACf,gBAAA,EAAkB,cAAA;AAAA,EAClB,cAAA,EAAgB,cAAA;AAAA,EAChB,eAAA,EAAiB,cAAA;AAAA,EACjB,cAAA,EAAgB,cAAA;AAAA,EAChB,iBAAA,EAAmB,cAAA;AAAA,EACnB,cAAA,EAAgB,cAAA;AAAA,EAChB,eAAA,EAAiB,cAAA;AAAA,EACjB,eAAA,EAAiB,cAAA;AAAA,EACjB,sBAAA,EAAwB,cAAA;AAAA,EACxB,qBAAA,EAAuB,0BAAA;AAAA,EACvB,sBAAA,EAAwB,cAAA;AAAA,EACxB,mBAAA,EAAqB,0BAAA;AAAA,EACrB,cAAA,EAAgB,sJAAA;AAAA,EAChB,yBAAA,EAA2B,mDAAA;AAAA;AAAA,EAE3B,aAAA,EAAe,cAAA;AAAA,EACf,WAAA,EAAa,cAAA;AAAA,EACb,cAAA,EAAgB,cAAA;AAAA,EAChB,aAAA,EAAe,cAAA;AAAA,EACf,aAAA,EAAe,cAAA;AAAA,EACf,cAAA,EAAgB,cAAA;AAAA;AAAA,EAEhB,YAAA,EAAc,cAAA;AAAA,EACd,YAAA,EAAc,0BAAA;AAAA,EACd,YAAA,EAAc,mBAAA;AAAA,EACd,YAAA,EAAc,mBAAA;AAAA,EACd,WAAA,EAAa,kBAAA;AAAA,EACb,WAAA,EAAa,kBAAA;AAAA;AAAA,EAEb,SAAA,EAAW,cAAA;AAAA,EACX,aAAA,EAAe,4CAAA;AAAA,EACf,YAAA,EAAc,6BAAA;AAAA,EACd,WAAA,EAAa,cAAA;AAAA,EACb,UAAA,EAAY,cAAA;AAAA,EACZ,YAAA,EAAc,cAAA;AAAA,EACd,aAAA,EAAe,cAAA;AAAA,EACf,iBAAA,EAAmB,0BAAA;AAAA,EACnB,YAAA,EAAc,cAAA;AAAA,EACd,kBAAA,EAAoB,0BAAA;AAAA,EACpB,eAAA,EAAiB,0BAAA;AAAA,EACjB,YAAA,EAAc,wBAAA;AAAA,EACd,WAAA,EAAa,0BAAA;AAAA,EACb,eAAA,EAAiB,oBAAA;AAAA,EACjB,iBAAA,EAAmB,2BAAA;AAAA,EACnB,iBAAA,EAAmB,2BAAA;AAAA,EACnB,iBAAA,EAAmB,iCAAA;AAAA,EACnB,YAAA,EAAc,iCAAA;AAAA,EACd,YAAA,EAAc,iCAAA;AAAA,EACd,sBAAA,EAAwB,cAAA;AAAA,EACxB,iBAAA,EAAmB,cAAA;AAAA,EACnB,iBAAA,EAAmB,cAAA;AAAA;AAAA,EAEnB,WAAA,EAAa,kCAAA;AAAA,EACb,UAAA,EAAY,cAAA;AAAA,EACZ,UAAA,EAAY,cAAA;AAAA,EACZ,iBAAA,EAAmB,kDAAA;AAAA,EACnB,iBAAA,EAAmB,sCAAA;AAAA,EACnB,oBAAA,EAAsB,0BAAA;AAAA,EACtB,mBAAA,EAAqB,0BAAA;AAAA,EACrB,oBAAA,EAAsB,0BAAA;AAAA,EACtB,oBAAA,EAAsB,0BAAA;AAAA,EACtB,gBAAA,EAAkB,kDAAA;AAAA,EAClB,YAAA,EAAc,kDAAA;AAAA,EACd,eAAA,EAAiB,qGAAA;AAAA,EACjB,WAAA,EAAa,sFAAA;AAAA,EACb,aAAA,EAAe,mDAAA;AAAA,EACf,YAAA,EAAc,mDAAA;AAAA,EACd,SAAA,EAAW,4CAAA;AAAA,EACX,cAAA,EAAgB,sCAAA;AAAA,EAChB,cAAA,EAAgB,wKAAA;AAAA,EAChB,aAAA,EAAe,0DAAA;AAAA,EACf,aAAA,EAAe,gCAAA;AAAA,EACf,gBAAA,EAAkB,gCAAA;AAAA,EAClB,gBAAA,EAAkB,sCAAA;AAAA;AAAA,EAElB,cAAA,EAAgB,4CAAA;AAAA,EAChB,cAAA,EAAgB,mDAAA;AAAA,EAChB,eAAA,EAAiB,2EAAA;AAAA,EACjB,cAAA,EAAgB,0IAAA;AAAA,EAChB,cAAA,EAAgB,mDAAA;AAAA,EAChB,eAAA,EAAiB,2EAAA;AAAA,EACjB,mBAAA,EAAqB,0BAAA;AAAA,EACrB,kBAAA,EAAoB,sCAAA;AAAA,EACpB,YAAA,EAAc,2BAAA;AAAA,EACd,eAAA,EAAiB,+DAAA;AAAA,EACjB,cAAA,EAAgB,4CAAA;AAAA,EAChB,cAAA,EAAgB,8DAAA;AAAA,EAChB,eAAA,EAAiB,gCAAA;AAAA;AAAA,EAEjB,gBAAA,EAAkB,sCAAA;AAAA,EAClB,mBAAA,EAAqB,wGAAA;AAAA,EACrB,UAAA,EAAY,qBAAA;AAAA,EACZ,aAAA,EAAe,sCAAA;AAAA,EACf,cAAA,EAAgB,0BAAA;AAAA,EAChB,YAAA,EAAc,gCAAA;AAAA,EACd,WAAA,EAAa,uCAAA;AAAA;AAAA,EAEb,kBAAA,EAAoB,2DAAA;AAAA,EACpB,sBAAA,EAAwB,2EAAA;AAAA,EACxB,iBAAA,EAAmB,sGAAA;AAAA,EACnB,gBAAA,EAAkB,0BAAA;AAAA,EAClB,cAAA,EAAgB,cAAA;AAAA,EAChB,aAAA,EAAe,sBAAA;AAAA,EACf,eAAA,EAAiB,6FAAA;AAAA,EACjB,oBAAA,EAAsB,wGAAA;AAAA,EACtB,YAAA,EAAc,cAAA;AAAA,EACd,aAAA,EAAe,sEAAA;AAAA,EACf,WAAA,EAAa,cAAA;AAAA,EACb,SAAA,EAAW,UAAA;AAAA;AAAA,EAEX,cAAA,EAAgB,gCAAA;AAAA;AAAA,EAEhB,aAAA,EAAe,gCAAA;AAAA,EACf,gBAAA,EAAkB,iHAAA;AAAA,EAClB,YAAA,EAAc,wDAAA;AAAA,EACd,gBAAA,EAAkB;AACpB,CAAA;AAEA,IAAM,EAAA,GAA6B;AAAA,EACjC,WAAA,EAAa,MAAA;AAAA,EACb,WAAA,EAAa,MAAA;AAAA,EACb,WAAA,EAAa,MAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,eAAA,EAAiB,UAAA;AAAA,EACjB,cAAA,EAAgB,UAAA;AAAA,EAChB,aAAA,EAAe,OAAA;AAAA,EACf,iBAAA,EAAmB,YAAA;AAAA,EACnB,eAAA,EAAiB,UAAA;AAAA,EACjB,iBAAA,EAAmB,YAAA;AAAA,EACnB,YAAA,EAAc,OAAA;AAAA,EACd,gBAAA,EAAkB,QAAA;AAAA,EAClB,aAAA,EAAe,KAAA;AAAA,EACf,gBAAA,EAAkB,QAAA;AAAA,EAClB,cAAA,EAAgB,MAAA;AAAA,EAChB,eAAA,EAAiB,OAAA;AAAA,EACjB,cAAA,EAAgB,MAAA;AAAA,EAChB,iBAAA,EAAmB,SAAA;AAAA,EACnB,cAAA,EAAgB,MAAA;AAAA,EAChB,eAAA,EAAiB,OAAA;AAAA,EACjB,eAAA,EAAiB,OAAA;AAAA,EACjB,sBAAA,EAAwB,MAAA;AAAA,EACxB,qBAAA,EAAuB,iBAAA;AAAA,EACvB,sBAAA,EAAwB,MAAA;AAAA,EACxB,mBAAA,EAAqB,YAAA;AAAA,EACrB,cAAA,EAAgB,qFAAA;AAAA,EAChB,yBAAA,EAA2B,6BAAA;AAAA,EAC3B,aAAA,EAAe,UAAA;AAAA,EACf,WAAA,EAAa,KAAA;AAAA,EACb,cAAA,EAAgB,OAAA;AAAA,EAChB,aAAA,EAAe,MAAA;AAAA,EACf,aAAA,EAAe,MAAA;AAAA,EACf,cAAA,EAAgB,OAAA;AAAA,EAChB,YAAA,EAAc,UAAA;AAAA,EACd,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc,eAAA;AAAA,EACd,YAAA,EAAc,gBAAA;AAAA,EACd,WAAA,EAAa,YAAA;AAAA,EACb,WAAA,EAAa,cAAA;AAAA,EACb,SAAA,EAAW,KAAA;AAAA,EACX,aAAA,EAAe,aAAA;AAAA,EACf,YAAA,EAAc,kBAAA;AAAA,EACd,WAAA,EAAa,OAAA;AAAA,EACb,UAAA,EAAY,MAAA;AAAA,EACZ,YAAA,EAAc,QAAA;AAAA,EACd,aAAA,EAAe,OAAA;AAAA,EACf,iBAAA,EAAmB,cAAA;AAAA,EACnB,YAAA,EAAc,QAAA;AAAA,EACd,kBAAA,EAAoB,cAAA;AAAA,EACpB,eAAA,EAAiB,iBAAA;AAAA,EACjB,YAAA,EAAc,iBAAA;AAAA,EACd,WAAA,EAAa,gBAAA;AAAA,EACb,eAAA,EAAiB,eAAA;AAAA,EACjB,iBAAA,EAAmB,qBAAA;AAAA,EACnB,iBAAA,EAAmB,oBAAA;AAAA,EACnB,iBAAA,EAAmB,oBAAA;AAAA,EACnB,YAAA,EAAc,wBAAA;AAAA,EACd,YAAA,EAAc,sBAAA;AAAA,EACd,sBAAA,EAAwB,KAAA;AAAA,EACxB,iBAAA,EAAmB,MAAA;AAAA,EACnB,iBAAA,EAAmB,MAAA;AAAA,EACnB,WAAA,EAAa,qBAAA;AAAA,EACb,UAAA,EAAY,MAAA;AAAA,EACZ,UAAA,EAAY,MAAA;AAAA,EACZ,iBAAA,EAAmB,sBAAA;AAAA,EACnB,iBAAA,EAAmB,cAAA;AAAA,EACnB,oBAAA,EAAsB,kBAAA;AAAA,EACtB,mBAAA,EAAqB,iBAAA;AAAA,EACrB,oBAAA,EAAsB,aAAA;AAAA,EACtB,oBAAA,EAAsB,cAAA;AAAA,EACtB,gBAAA,EAAkB,uBAAA;AAAA,EAClB,YAAA,EAAc,gCAAA;AAAA,EACd,eAAA,EAAiB,2DAAA;AAAA,EACjB,WAAA,EAAa,wCAAA;AAAA,EACb,aAAA,EAAe,gCAAA;AAAA,EACf,YAAA,EAAc,+BAAA;AAAA,EACd,SAAA,EAAW,cAAA;AAAA,EACX,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,yFAAA;AAAA,EAChB,aAAA,EAAe,+BAAA;AAAA,EACf,aAAA,EAAe,aAAA;AAAA,EACf,gBAAA,EAAkB,mBAAA;AAAA,EAClB,gBAAA,EAAkB,8BAAA;AAAA,EAClB,cAAA,EAAgB,4BAAA;AAAA,EAChB,cAAA,EAAgB,2BAAA;AAAA,EAChB,eAAA,EAAiB,wCAAA;AAAA,EACjB,cAAA,EAAgB,kFAAA;AAAA,EAChB,cAAA,EAAgB,2BAAA;AAAA,EAChB,eAAA,EAAiB,wCAAA;AAAA,EACjB,mBAAA,EAAqB,mBAAA;AAAA,EACrB,kBAAA,EAAoB,wBAAA;AAAA,EACpB,YAAA,EAAc,oBAAA;AAAA,EACd,eAAA,EAAiB,mCAAA;AAAA,EACjB,cAAA,EAAgB,6BAAA;AAAA,EAChB,cAAA,EAAgB,yCAAA;AAAA,EAChB,eAAA,EAAiB,yBAAA;AAAA,EACjB,gBAAA,EAAkB,iBAAA;AAAA,EAClB,mBAAA,EAAqB,8EAAA;AAAA,EACrB,UAAA,EAAY,aAAA;AAAA,EACZ,aAAA,EAAe,qBAAA;AAAA,EACf,cAAA,EAAgB,YAAA;AAAA,EAChB,YAAA,EAAc,cAAA;AAAA,EACd,WAAA,EAAa,uBAAA;AAAA,EACb,kBAAA,EAAoB,mCAAA;AAAA,EACpB,sBAAA,EAAwB,gDAAA;AAAA,EACxB,iBAAA,EAAmB,wDAAA;AAAA,EACnB,gBAAA,EAAkB,QAAA;AAAA,EAClB,cAAA,EAAgB,MAAA;AAAA,EAChB,aAAA,EAAe,cAAA;AAAA,EACf,eAAA,EAAiB,+DAAA;AAAA,EACjB,oBAAA,EAAsB,4EAAA;AAAA,EACtB,YAAA,EAAc,QAAA;AAAA,EACd,aAAA,EAAe,mDAAA;AAAA,EACf,WAAA,EAAa,OAAA;AAAA,EACb,SAAA,EAAW,UAAA;AAAA,EACX,cAAA,EAAgB,oBAAA;AAAA,EAChB,aAAA,EAAe,cAAA;AAAA,EACf,gBAAA,EAAkB,wEAAA;AAAA,EAClB,YAAA,EAAc,mCAAA;AAAA,EACd,gBAAA,EAAkB;AACpB,CAAA;AAEA,IAAM,EAAA,GAA6B;AAAA,EACjC,WAAA,EAAa,QAAA;AAAA,EACb,WAAA,EAAa,UAAA;AAAA,EACb,WAAA,EAAa,eAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,eAAA,EAAiB,QAAA;AAAA,EACjB,cAAA,EAAgB,UAAA;AAAA,EAChB,aAAA,EAAe,eAAA;AAAA,EACf,iBAAA,EAAmB,QAAA;AAAA,EACnB,eAAA,EAAiB,WAAA;AAAA,EACjB,iBAAA,EAAmB,eAAA;AAAA,EACnB,YAAA,EAAc,OAAA;AAAA,EACd,gBAAA,EAAkB,aAAA;AAAA,EAClB,aAAA,EAAe,QAAA;AAAA,EACf,gBAAA,EAAkB,UAAA;AAAA,EAClB,cAAA,EAAgB,UAAA;AAAA,EAChB,eAAA,EAAiB,QAAA;AAAA,EACjB,cAAA,EAAgB,eAAA;AAAA,EAChB,iBAAA,EAAmB,QAAA;AAAA,EACnB,cAAA,EAAgB,OAAA;AAAA,EAChB,eAAA,EAAiB,OAAA;AAAA,EACjB,eAAA,EAAiB,QAAA;AAAA,EACjB,sBAAA,EAAwB,QAAA;AAAA,EACxB,qBAAA,EAAuB,uBAAA;AAAA,EACvB,sBAAA,EAAwB,QAAA;AAAA,EACxB,mBAAA,EAAqB,eAAA;AAAA,EACrB,cAAA,EAAgB,+GAAA;AAAA,EAChB,yBAAA,EAA2B,qCAAA;AAAA,EAC3B,aAAA,EAAe,UAAA;AAAA,EACf,WAAA,EAAa,gBAAA;AAAA,EACb,cAAA,EAAgB,OAAA;AAAA,EAChB,aAAA,EAAe,WAAA;AAAA,EACf,aAAA,EAAe,SAAA;AAAA,EACf,cAAA,EAAgB,SAAA;AAAA,EAChB,YAAA,EAAc,UAAA;AAAA,EACd,YAAA,EAAc,OAAA;AAAA,EACd,YAAA,EAAc,eAAA;AAAA,EACd,YAAA,EAAc,iBAAA;AAAA,EACd,WAAA,EAAa,cAAA;AAAA,EACb,WAAA,EAAa,cAAA;AAAA,EACb,SAAA,EAAW,SAAA;AAAA,EACX,aAAA,EAAe,oBAAA;AAAA,EACf,YAAA,EAAc,kBAAA;AAAA,EACd,WAAA,EAAa,SAAA;AAAA,EACb,UAAA,EAAY,QAAA;AAAA,EACZ,YAAA,EAAc,UAAA;AAAA,EACd,aAAA,EAAe,aAAA;AAAA,EACf,iBAAA,EAAmB,kBAAA;AAAA,EACnB,YAAA,EAAc,UAAA;AAAA,EACd,kBAAA,EAAoB,kBAAA;AAAA,EACpB,eAAA,EAAiB,kBAAA;AAAA,EACjB,YAAA,EAAc,mBAAA;AAAA,EACd,WAAA,EAAa,oBAAA;AAAA,EACb,eAAA,EAAiB,kBAAA;AAAA,EACjB,iBAAA,EAAmB,uBAAA;AAAA,EACnB,iBAAA,EAAmB,wBAAA;AAAA,EACnB,iBAAA,EAAmB,6BAAA;AAAA,EACnB,YAAA,EAAc,2BAAA;AAAA,EACd,YAAA,EAAc,yBAAA;AAAA,EACd,sBAAA,EAAwB,MAAA;AAAA,EACxB,iBAAA,EAAmB,MAAA;AAAA,EACnB,iBAAA,EAAmB,MAAA;AAAA,EACnB,WAAA,EAAa,0BAAA;AAAA,EACb,UAAA,EAAY,UAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,iBAAA,EAAmB,gCAAA;AAAA,EACnB,iBAAA,EAAmB,sBAAA;AAAA,EACnB,oBAAA,EAAsB,sBAAA;AAAA,EACtB,mBAAA,EAAqB,sBAAA;AAAA,EACrB,oBAAA,EAAsB,sBAAA;AAAA,EACtB,oBAAA,EAAsB,wBAAA;AAAA,EACtB,gBAAA,EAAkB,wBAAA;AAAA,EAClB,YAAA,EAAc,gCAAA;AAAA,EACd,eAAA,EAAiB,wFAAA;AAAA,EACjB,WAAA,EAAa,qCAAA;AAAA,EACb,aAAA,EAAe,yCAAA;AAAA,EACf,YAAA,EAAc,yCAAA;AAAA,EACd,SAAA,EAAW,kBAAA;AAAA,EACX,cAAA,EAAgB,4BAAA;AAAA,EAChB,cAAA,EAAgB,+GAAA;AAAA,EAChB,aAAA,EAAe,qCAAA;AAAA,EACf,aAAA,EAAe,eAAA;AAAA,EACf,gBAAA,EAAkB,wBAAA;AAAA,EAClB,gBAAA,EAAkB,mCAAA;AAAA,EAClB,cAAA,EAAgB,8BAAA;AAAA,EAChB,cAAA,EAAgB,2BAAA;AAAA,EAChB,eAAA,EAAiB,wDAAA;AAAA,EACjB,cAAA,EAAgB,sFAAA;AAAA,EAChB,cAAA,EAAgB,wBAAA;AAAA,EAChB,eAAA,EAAiB,qDAAA;AAAA,EACjB,mBAAA,EAAqB,wBAAA;AAAA,EACrB,kBAAA,EAAoB,kCAAA;AAAA,EACpB,YAAA,EAAc,sBAAA;AAAA,EACd,eAAA,EAAiB,4CAAA;AAAA,EACjB,cAAA,EAAgB,4BAAA;AAAA,EAChB,cAAA,EAAgB,+CAAA;AAAA,EAChB,eAAA,EAAiB,6BAAA;AAAA,EACjB,gBAAA,EAAkB,kBAAA;AAAA,EAClB,mBAAA,EAAqB,kFAAA;AAAA,EACrB,UAAA,EAAY,cAAA;AAAA,EACZ,aAAA,EAAe,uBAAA;AAAA,EACf,cAAA,EAAgB,aAAA;AAAA,EAChB,YAAA,EAAc,iBAAA;AAAA,EACd,WAAA,EAAa,0BAAA;AAAA,EACb,kBAAA,EAAoB,iDAAA;AAAA,EACpB,sBAAA,EAAwB,8DAAA;AAAA,EACxB,iBAAA,EAAmB,sFAAA;AAAA,EACnB,gBAAA,EAAkB,QAAA;AAAA,EAClB,cAAA,EAAgB,WAAA;AAAA,EAChB,aAAA,EAAe,cAAA;AAAA,EACf,eAAA,EAAiB,6EAAA;AAAA,EACjB,oBAAA,EAAsB,gGAAA;AAAA,EACtB,YAAA,EAAc,SAAA;AAAA,EACd,aAAA,EAAe,0EAAA;AAAA,EACf,WAAA,EAAa,WAAA;AAAA,EACb,SAAA,EAAW,UAAA;AAAA,EACX,cAAA,EAAgB,gBAAA;AAAA,EAChB,aAAA,EAAe,mBAAA;AAAA,EACf,gBAAA,EAAkB,gFAAA;AAAA,EAClB,YAAA,EAAc,4CAAA;AAAA,EACd,gBAAA,EAAkB;AACpB,CAAA;AAEA,IAAM,WAAA,GAAsC;AAAA,EAC1C,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAC3D,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAC3D,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAC3D,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAC3D,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAC3D,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAC3D,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAC3D,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,YAAA,EAAI,cAAA;AAAA,EAC5C,YAAA,EAAI,cAAA;AAAA,EAAM,YAAA,EAAI,cAAA;AAAA,EAAM,MAAA,EAAG,QAAA;AAAA,EAAK,MAAA,EAAG,QAAA;AAAA,EAAK,YAAA,EAAI,cAAA;AAAA,EAAM,YAAA,EAAI,cAAA;AAAA,EAClD,YAAA,EAAI,cAAA;AAAA,EAAM,YAAA,EAAI,cAAA;AAAA,EAAM,YAAA,EAAI,cAAA;AAAA,EAAM,YAAA,EAAI,cAAA;AAAA,EAAM,YAAA,EAAI;AAC9C,CAAA;AAEO,IAAM,MAAA,GAAS,CAAC,KAAA,KAAkB;AACvC,EAAA,IAAI,IAAA,GAAO,KAAA;AACX,EAAA,KAAA,MAAW,CAAC,MAAM,EAAE,CAAA,IAAK,OAAO,OAAA,CAAQ,WAAW,EAAE,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,CAAE,MAAA,GAAS,EAAE,CAAC,CAAA,CAAE,MAAM,CAAA,EAAG;AAC9F,IAAA,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,IAAA,EAAM,EAAE,CAAA;AAAA,EACjC;AACA,EAAA,OAAO,IAAA;AACT;AAEA,IAAM,SAAiC,MAAA,CAAO,WAAA;AAAA,EAC5C,MAAA,CAAO,OAAA,CAAQ,EAAE,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,KAAK,MAAM,CAAC,GAAA,EAAK,MAAA,CAAO,KAAK,CAAC,CAAC;AAC/D,CAAA;AAEO,IAAM,kBAAgE,EAAE,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,WAAW,MAAA;AAG/F,SAAS,OAAA,CAAQ,MAAA,EAAsB,GAAA,EAAa,IAAA,EAAgD;AACzG,EAAA,IAAI,CAAA,GAAI,gBAAgB,MAAM,CAAA,GAAI,GAAG,CAAA,IAAK,eAAA,CAAgB,EAAA,CAAG,GAAG,CAAA,IAAK,GAAA;AACrE,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,CAAA,IAAK,MAAA,CAAO,QAAQ,IAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,WAAW,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAA,EAAK,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACjF;AACA,EAAA,OAAO,CAAA;AACT;;;ACtZO,IAAM,wBAAA,GAA6C;AAAA,EACxD,EAAE,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,OAAA,EAAS,OAAO,cAAA,EAAgB,UAAA,EAAY,aAAA,EAAY,KAAA,EAAO,QAAQ,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,MAAA,EAAQ,iBAAiB,MAAA,EAAO;AAAA,EAC3K,EAAE,QAAA,EAAU,WAAA,EAAa,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,gBAAA,EAAkB,UAAA,EAAY,YAAA,EAAW,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW,WAAA,EAAY;AAAA,EAChI,EAAE,QAAA,EAAU,WAAA,EAAa,QAAA,EAAU,OAAA,EAAS,OAAO,iBAAA,EAAmB,UAAA,EAAY,aAAA,EAAY,KAAA,EAAO,QAAQ,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,MAAA,EAAQ,iBAAiB,MAAA,EAAO;AAAA,EACjL,EAAE,QAAA,EAAU,WAAA,EAAa,QAAA,EAAU,OAAA,EAAS,OAAO,iBAAA,EAAmB,UAAA,EAAY,aAAA,EAAY,KAAA,EAAO,QAAQ,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,MAAA,EAAQ,iBAAiB,MAAA,EAAO;AAAA,EACjL,EAAE,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,eAAA,EAAiB,UAAA,EAAY,YAAA,EAAW,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW,WAAA,EAAY;AAAA,EAC9H,EAAE,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,OAAA,EAAS,OAAO,gBAAA,EAAkB,UAAA,EAAY,aAAA,EAAY,KAAA,EAAO,QAAQ,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,MAAA,EAAQ,iBAAiB,MAAA,EAAO;AAAA,EAC/K,EAAE,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,OAAO,eAAA,EAAiB,UAAA,EAAY,aAAA,EAAY,KAAA,EAAO,QAAQ,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,MAAA,EAAQ,iBAAiB,OAAA,EAAQ;AAAA,EAC9K,EAAE,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,QAAA,EAAU,OAAO,gBAAA,EAAkB,UAAA,EAAY,cAAA,EAAa,KAAA,EAAO,QAAQ,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,MAAA,EAAQ,iBAAiB,MAAA,EAAO;AAAA,EAChL,EAAE,QAAA,EAAU,WAAA,EAAa,QAAA,EAAU,KAAA,EAAO,OAAO,eAAA,EAAiB,UAAA,EAAY,KAAA,EAAO,KAAA,EAAO,OAAO,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,MAAA,EAAQ,iBAAiB,MAAA,EAAO;AAAA,EACvK,EAAE,QAAA,EAAU,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,OAAO,QAAA,EAAU,UAAA,EAAY,WAAA,EAAU,KAAA,EAAO,QAAQ,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,MAAA,EAAQ,iBAAiB,MAAA,EAAO;AAAA,EAC7J,EAAE,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,eAAA,EAAiB,UAAA,EAAY,YAAA,EAAW,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW,WAAA,EAAY;AAAA,EAC9H,EAAE,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,OAAA,EAAS,OAAO,gBAAA,EAAkB,UAAA,EAAY,aAAA,EAAY,KAAA,EAAO,QAAQ,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,MAAA,EAAQ,iBAAiB,OAAA,EAAQ;AAAA,EAChL,EAAE,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,cAAA,EAAgB,UAAA,EAAY,YAAA,EAAW,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW,WAAA,EAAY;AAAA,EAC5H,EAAE,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,MAAA,EAAQ,OAAO,eAAA,EAAiB,UAAA,EAAY,YAAA,EAAW,KAAA,EAAO,OAAO,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,MAAA,EAAQ,iBAAiB,MAAA,EAAO;AAAA,EAC3K,EAAE,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,MAAA,EAAQ,OAAO,aAAA,EAAe,UAAA,EAAY,YAAA,EAAW,KAAA,EAAO,QAAQ,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,MAAA,EAAQ,iBAAiB,MAAA;AACnK;;;ACrBA,IAAM,WAAA,GAAsC;AAAA,EAC1C,KAAA,EAAO,kBAAA;AAAA,EACP,KAAA,EAAO,kBAAA;AAAA,EACP,KAAA,EAAO,kBAAA;AAAA,EACP,MAAA,EAAQ,mBAAA;AAAA,EACR,MAAA,EAAQ,mBAAA;AAAA,EACR,KAAA,EAAO,kBAAA;AAAA,EACP,QAAA,EAAU;AACZ,CAAA;AAEO,SAAS,WAAW,CAAA,EAAmB;AAC5C,EAAA,MAAM,CAAC,GAAG,CAAC,CAAA,GAAI,EAAE,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,IAAK,CAAC,CAAA,EAAG,OAAO,CAAA;AACrB,EAAA,OAAO,CAAA,GAAI,CAAA;AACb;AAEA,SAAS,cAAc,MAAA,EAAiC;AACtD,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,MAAM,MAAqB,EAAC;AAC5B,EAAA,KAAA,MAAW,KAAK,MAAA,EAAQ;AACtB,IAAA,IAAI,CAAC,CAAA,IAAK,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,EAAG;AACvB,IAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AACV,IAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,UAAA,CAAW,CAAC,CAAA,EAAG,KAAA,EAAO,WAAA,CAAY,CAAC,CAAA,IAAK,GAAG,CAAA;AAAA,EACzE;AACA,EAAA,OAAO,GAAA;AACT;AAGO,IAAM,sBAAqC,aAAA,CAAc;AAAA,EAC9D,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ;AAC9C,CAAC;AAGM,IAAM,sBAAqC,aAAA,CAAc;AAAA,EAC9D,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO;AACzB,CAAC;AAWM,SAAS,8BAAA,CAA+B,UAA4B,wBAAA,EAAsD;AAC/H,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,MAAM,MAAkC,EAAC;AACzC,EAAA,KAAA,MAAW,KAAK,OAAA,EAAS;AACvB,IAAA,IAAI,CAAC,EAAE,UAAA,EAAY;AACnB,IAAA,MAAM,GAAA,GAAM,GAAG,CAAA,CAAE,QAAQ,IAAI,CAAA,CAAE,QAAQ,CAAA,CAAA,EAAI,CAAA,CAAE,UAAU,CAAA,CAAA;AACvD,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG;AACnB,IAAA,IAAA,CAAK,IAAI,GAAG,CAAA;AACZ,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,IAAA,CAAK,GAAG,KAAK,CAAA,CAAE,KAAA;AAC5D,IAAA,GAAA,CAAI,IAAA,CAAK,EAAE,QAAA,EAAU,CAAA,CAAE,UAAU,QAAA,EAAU,CAAA,CAAE,QAAA,EAAU,KAAA,EAAO,CAAA,EAAG,IAAI,IAAI,CAAA,CAAE,UAAU,CAAA,CAAA,EAAI,KAAA,EAAO,CAAA,CAAE,UAAA,EAAY,OAAO,UAAA,CAAW,CAAA,CAAE,UAAU,CAAA,EAAG,CAAA;AAAA,EACjJ;AACA,EAAA,OAAO,GAAA;AACT;AAEO,IAAM,+BAA2D,8BAAA;AAcjE,SAAS,yBAAA,CAA0B,UAA4B,wBAAA,EAA4C;AAChH,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAA4B;AACnD,EAAA,KAAA,MAAW,KAAK,OAAA,EAAS;AACvB,IAAA,MAAM,GAAA,GAAM,UAAA,CAAW,GAAA,CAAI,CAAA,CAAE,QAAQ,CAAA;AACrC,IAAA,IAAI,CAAC,GAAA,IAAQ,GAAA,CAAI,QAAA,KAAa,MAAA,IAAU,CAAA,CAAE,QAAA,KAAa,MAAA,EAAS,UAAA,CAAW,GAAA,CAAI,CAAA,CAAE,QAAA,EAAU,CAAC,CAAA;AAAA,EAC9F;AACA,EAAA,OAAO,KAAA,CAAM,KAAK,UAAA,CAAW,MAAA,EAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM;AAChD,IAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,CAAA,CAAE,UAAU,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAChD,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,IAAA,CAAK,GAAG,KAAK,CAAA,CAAE,KAAA;AAC5D,IAAA,OAAO,EAAE,UAAU,CAAA,CAAE,QAAA,EAAU,OAAO,CAAA,EAAG,IAAI,IAAI,CAAA,CAAE,KAAK,IAAI,KAAA,EAAO,CAAA,CAAE,OAAO,KAAA,EAAO,UAAA,CAAW,EAAE,KAAK,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,EAC/G,CAAC,CAAA;AACH;AAGO,IAAM,yBAA2C,yBAAA;AAUxD,SAAS,MAAA,CAAO,YAAoB,SAAA,EAA6C;AAC/E,EAAA,IAAI,cAAc,CAAA,EAAG;AACnB,IAAA,OAAO,EAAE,CAAA,EAAG,IAAA,CAAK,KAAA,CAAO,SAAA,GAAY,aAAc,CAAC,CAAA,GAAI,CAAA,EAAG,CAAA,EAAG,SAAA,EAAU;AAAA,EACzE;AACA,EAAA,OAAO,EAAE,CAAA,EAAG,SAAA,EAAW,CAAA,EAAG,IAAA,CAAK,MAAM,SAAA,GAAY,UAAA,GAAa,CAAC,CAAA,GAAI,CAAA,EAAE;AACvE;AAGO,SAAS,qBAAA,CAAsB,UAA4B,wBAAA,EAAwC;AACxG,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,MAAM,MAAoB,EAAC;AAC3B,EAAA,KAAA,MAAW,KAAK,OAAA,EAAS;AACvB,IAAA,IAAI,CAAC,CAAA,CAAE,UAAA,IAAc,CAAC,EAAE,eAAA,EAAiB;AACzC,IAAA,MAAM,SAAA,GAAY,CAAA,CAAE,eAAA,KAAoB,OAAA,GAAU,IAAA,GAAO,GAAA;AACzD,IAAA,MAAM,EAAE,GAAG,CAAA,EAAE,GAAI,OAAO,UAAA,CAAW,CAAA,CAAE,UAAU,CAAA,EAAG,SAAS,CAAA;AAC3D,IAAA,MAAM,GAAA,GAAM,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AACrB,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG;AACnB,IAAA,IAAA,CAAK,IAAI,GAAG,CAAA;AACZ,IAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,UAAU,CAAA,CAAA,EAAI,CAAC,CAAA,IAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAA,EAAG,GAAG,CAAA;AAAA,EACvD;AACA,EAAA,OAAO,GAAA;AACT;AAGO,IAAM,qBAAmC,qBAAA;;;AC9HzC,SAAS,4BAAA,CACd,KACA,KAAA,EACuB;AACvB,EAAA,IAAI,GAAA,CAAI,YAAA,EAAc,OAAO,EAAC;AAC9B,EAAA,IAAA,CAAK,GAAA,CAAI,QAAA,IAAY,CAAA,MAAO,CAAA,SAAU,EAAC;AACvC,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,WAAA,EAAa,QAAA,IAAY,CAAA;AAC3C,EAAA,OAAO,MAAM,EAAE,QAAA,EAAU,CAAC,GAAA,KAAQ,EAAC;AACrC","file":"chunk-XCBM7P7N.js","sourcesContent":["/**\n * editor-core/i18n —— 编辑器文案字典(纯 TS,零框架依赖,Vue/React 壳共用)。\n * key 规约(domain 扁平):tool.* tune.* overlay.* filter.* ratio.* act.* err.* tip.* msg.* lbl.* panel.* poster.* crop.*\n * 插值:{name} 形式,tEditor 第三参传值。\n * 单测保证所有 locale key 集合一致(Filerobot 内核覆盖键不在此,见 ImageEditor 的 FIE_* translations)。\n */\n\nexport type EditorLocale = 'zh' | 'en' | 'es' | 'zh-Hant';\n\nconst zh: Record<string, string> = {\n // 工具卡\n 'tool.trim': '剪辑',\n 'tool.crop': '裁剪',\n 'tool.tune': '调色',\n 'tool.filter': '滤镜',\n 'tool.annotate': '标注',\n 'tool.sticker': '贴纸',\n 'tool.resize': '比例',\n // 调色项\n 'tune.brightness': '亮度',\n 'tune.contrast': '对比',\n 'tune.saturation': '饱和',\n 'tune.gamma': 'Gamma',\n // 标注工具\n 'overlay.select': '选择',\n 'overlay.pen': '画笔',\n 'overlay.eraser': '橡皮',\n 'overlay.line': '直线',\n 'overlay.arrow': '箭头',\n 'overlay.rect': '矩形',\n 'overlay.ellipse': '椭圆',\n 'overlay.text': '文字',\n 'overlay.color': '线色',\n 'overlay.width': '线宽',\n 'overlay.copySelected': '复制',\n 'overlay.delSelected': '删除选中',\n 'overlay.editSelected': '编辑',\n 'overlay.pickImage': '选择图片',\n 'overlay.hint': '点 emoji/图片添加 → 画布上拖动摆位,拖右下角紫色把手缩放',\n 'overlay.textPlaceholder': '输入文字,回车确认',\n // 滤镜预设\n 'filter.none': '原图',\n 'filter.bw': '黑白',\n 'filter.sepia': '复古',\n 'filter.warm': '暖阳',\n 'filter.cool': '冷调',\n 'filter.vivid': '鲜艳',\n // 比例\n 'ratio.orig': '原始',\n 'ratio.free': '自由比例',\n 'ratio.9:16': '竖屏 9:16',\n 'ratio.16:9': '横屏 16:9',\n 'ratio.1:1': '方形 1:1',\n 'ratio.4:5': '竖图 4:5',\n // 动作\n 'act.fit': '适应',\n 'act.zoomFit': '缩放至适当大小',\n 'act.zoomTo': '缩放至 {value}%',\n 'act.split': '分割',\n 'act.copy': '复制',\n 'act.delete': '删除',\n 'act.restore': '还原',\n 'act.deleteMusic': '删除音乐',\n 'act.cancel': '取消',\n 'act.exportPoster': '导出封面',\n 'act.exporting': '导出中…',\n 'act.poster': '🖼 封面',\n 'act.again': '再次下载',\n 'act.saveDrive': '存网盘',\n 'act.changeImage': '← 换一张',\n 'act.changeVideo': '← 换一个',\n 'crop.rotateLeft': '↺ 向左旋转',\n 'crop.flipX': '⇋ 水平翻转',\n 'crop.flipY': '⇵ 垂直翻转',\n 'crop.rotateLeftShort': '左转',\n 'crop.flipXShort': '横翻',\n 'crop.flipYShort': '竖翻',\n // 提示(title)\n 'tip.close': '关闭(换文件)',\n 'tip.undo': '撤销',\n 'tip.redo': '重做',\n 'tip.resetOpened': '重置到打开文件时',\n 'tip.previewZoom': '预览缩放比例',\n 'tip.previewZoomOut': '缩小预览',\n 'tip.previewZoomIn': '放大预览',\n 'tip.previewZoomFit': '适应预览',\n 'tip.previewPointer': '指针工具',\n 'tip.previewPan': '手工具:拖动画面',\n 'tip.poster': '预览并选择封面帧',\n 'tip.keepAudio': '原视频声音开关(与音乐混音;预览同步)',\n 'tip.split': '在播放头处把当前片段一分为二',\n 'tip.zoomOut': '缩小时间轴(Ctrl+滚轮)',\n 'tip.zoomIn': '放大时间轴(Ctrl+滚轮)',\n 'tip.fit': '缩放到适应宽度',\n 'tip.addVideo': '添加视频片段',\n 'tip.addAudio': '添加音乐(音频文件,或选含声音的视频自动提取音轨;与原声混音)',\n 'tip.dupClip': '复制该片段(插到其后)',\n 'tip.delClip': '删除该片段',\n 'tip.lockAspect': '锁定纵横比',\n 'tip.dblConfirm': '双击确认裁剪',\n // 错误\n 'err.notVideo': '请选择视频文件',\n 'err.maxVideo': '最多 {max} 个视频素材',\n 'err.videoLoad': '视频加载失败,请换一个文件',\n 'err.notAudio': '请选择音频文件(mp3/wav/m4a),或含声音的视频(自动提取音轨)',\n 'err.maxAudio': '最多 {max} 个音频素材',\n 'err.audioLoad': '音频加载失败,请换一个文件',\n 'err.processFailed': '处理失败',\n 'err.posterFailed': '封面渲染失败',\n 'err.canvas': 'canvas 不可用',\n 'err.imageRead': '图片读取失败,请换一张',\n 'err.notImage': '请选择图片文件',\n 'err.fileType': '只支持图片或视频文件',\n 'err.saveDrive': '存网盘失败',\n // 状态\n 'msg.processing': '正在导出中…',\n 'msg.exportingHint': '请稍候,导出完成后会自动返回结果。',\n 'msg.done': '完成 ✓',\n 'msg.loading': '素材加载中…',\n 'msg.exported': '已导出:',\n 'msg.saving': '存网盘中…',\n 'msg.saved': '已存到网盘 ✓',\n // 视频视图文案\n 'lbl.ratioSection': '画面比例(裁剪,不变形)',\n 'lbl.dragToReposition': '↔ 拖动预览可调整裁剪位置',\n 'lbl.sizeSection': '导出尺寸(像素;比例不符时 cover 居中裁剪)',\n 'lbl.currentOut': '当前输出',\n 'lbl.zoomSize': '大小',\n 'lbl.noScale': '(未缩放)',\n 'lbl.coverNote': '· 比例不一致时居中裁剪(cover),不变形',\n 'lbl.audioTrackHint': '♪ 音频轨(右侧 + 添加音乐,与原声混音)',\n 'lbl.volume': '音量',\n 'lbl.volNote': '(预览最大 100%,导出按设定值)',\n 'lbl.music': '音乐',\n 'kbd.fit': '⇧ F',\n // 封面弹层\n 'poster.title': '选择封面帧',\n // 面板层\n 'panel.title': '媒体编辑器',\n 'panel.subtitle': '上传图片 / 视频,裁剪 · 滤镜 · 文字 · 导出',\n 'panel.pick': '点击选择图片或视频',\n 'panel.pickHint': '图片用 Filerobot · 视频可裁剪/静音/封面',\n};\n\nconst en: Record<string, string> = {\n 'tool.trim': 'Trim',\n 'tool.crop': 'Crop',\n 'tool.tune': 'Tune',\n 'tool.filter': 'Filters',\n 'tool.annotate': 'Annotate',\n 'tool.sticker': 'Stickers',\n 'tool.resize': 'Ratio',\n 'tune.brightness': 'Brightness',\n 'tune.contrast': 'Contrast',\n 'tune.saturation': 'Saturation',\n 'tune.gamma': 'Gamma',\n 'overlay.select': 'Select',\n 'overlay.pen': 'Pen',\n 'overlay.eraser': 'Eraser',\n 'overlay.line': 'Line',\n 'overlay.arrow': 'Arrow',\n 'overlay.rect': 'Rect',\n 'overlay.ellipse': 'Ellipse',\n 'overlay.text': 'Text',\n 'overlay.color': 'Color',\n 'overlay.width': 'Width',\n 'overlay.copySelected': 'Copy',\n 'overlay.delSelected': 'Delete selected',\n 'overlay.editSelected': 'Edit',\n 'overlay.pickImage': 'Pick image',\n 'overlay.hint': 'Tap emoji/image to add → drag to place, drag the purple corner handle to scale',\n 'overlay.textPlaceholder': 'Type text, Enter to confirm',\n 'filter.none': 'Original',\n 'filter.bw': 'B&W',\n 'filter.sepia': 'Sepia',\n 'filter.warm': 'Warm',\n 'filter.cool': 'Cool',\n 'filter.vivid': 'Vivid',\n 'ratio.orig': 'Original',\n 'ratio.free': 'Free ratio',\n 'ratio.9:16': 'Portrait 9:16',\n 'ratio.16:9': 'Landscape 16:9',\n 'ratio.1:1': 'Square 1:1',\n 'ratio.4:5': 'Vertical 4:5',\n 'act.fit': 'Fit',\n 'act.zoomFit': 'Zoom to fit',\n 'act.zoomTo': 'Zoom to {value}%',\n 'act.split': 'Split',\n 'act.copy': 'Copy',\n 'act.delete': 'Delete',\n 'act.restore': 'Reset',\n 'act.deleteMusic': 'Remove music',\n 'act.cancel': 'Cancel',\n 'act.exportPoster': 'Export cover',\n 'act.exporting': 'Exporting…',\n 'act.poster': '🖼 Cover',\n 'act.again': 'Download again',\n 'act.saveDrive': 'Save to drive',\n 'act.changeImage': '← Change image',\n 'act.changeVideo': '← Change file',\n 'crop.rotateLeft': '↺ Rotate left',\n 'crop.flipX': '⇋ Flip horizontal',\n 'crop.flipY': '⇵ Flip vertical',\n 'crop.rotateLeftShort': 'Rot',\n 'crop.flipXShort': 'Flip',\n 'crop.flipYShort': 'Flip',\n 'tip.close': 'Close (change file)',\n 'tip.undo': 'Undo',\n 'tip.redo': 'Redo',\n 'tip.resetOpened': 'Reset to opened file',\n 'tip.previewZoom': 'Preview zoom',\n 'tip.previewZoomOut': 'Zoom out preview',\n 'tip.previewZoomIn': 'Zoom in preview',\n 'tip.previewZoomFit': 'Fit preview',\n 'tip.previewPointer': 'Pointer tool',\n 'tip.previewPan': 'Hand tool: pan canvas',\n 'tip.poster': 'Preview and pick a cover frame',\n 'tip.keepAudio': 'Original audio on/off (mixed with music; preview follows)',\n 'tip.split': 'Split the current clip at the playhead',\n 'tip.zoomOut': 'Zoom out timeline (Ctrl+wheel)',\n 'tip.zoomIn': 'Zoom in timeline (Ctrl+wheel)',\n 'tip.fit': 'Fit to width',\n 'tip.addVideo': 'Add video clip',\n 'tip.addAudio': 'Add music (audio file, or a video with sound to extract its track; mixed with original)',\n 'tip.dupClip': 'Duplicate clip (insert after)',\n 'tip.delClip': 'Delete clip',\n 'tip.lockAspect': 'Lock aspect ratio',\n 'tip.dblConfirm': 'Double-click to confirm crop',\n 'err.notVideo': 'Please choose a video file',\n 'err.maxVideo': 'Up to {max} video sources',\n 'err.videoLoad': 'Failed to load video, try another file',\n 'err.notAudio': 'Choose an audio file (mp3/wav/m4a), or a video with sound (audio auto-extracted)',\n 'err.maxAudio': 'Up to {max} audio sources',\n 'err.audioLoad': 'Failed to load audio, try another file',\n 'err.processFailed': 'Processing failed',\n 'err.posterFailed': 'Failed to render cover',\n 'err.canvas': 'Canvas unavailable',\n 'err.imageRead': 'Failed to read image, try another',\n 'err.notImage': 'Please choose an image file',\n 'err.fileType': 'Only image or video files are supported',\n 'err.saveDrive': 'Failed to save to drive',\n 'msg.processing': 'Exporting…',\n 'msg.exportingHint': 'Please wait. The result will be returned automatically when export finishes.',\n 'msg.done': 'Done ✓',\n 'msg.loading': 'Loading media…',\n 'msg.exported': 'Exported: ',\n 'msg.saving': 'Saving…',\n 'msg.saved': 'Saved to drive ✓',\n 'lbl.ratioSection': 'Frame ratio (crop, no distortion)',\n 'lbl.dragToReposition': '↔ Drag the preview to reposition the crop',\n 'lbl.sizeSection': 'Export size (px; cover center-crop when ratios differ)',\n 'lbl.currentOut': 'Output',\n 'lbl.zoomSize': 'Size',\n 'lbl.noScale': '(no scaling)',\n 'lbl.coverNote': '· center-cropped (cover) when ratios differ, no distortion',\n 'lbl.audioTrackHint': '♪ Audio track (+ on the right to add music, mixed with original)',\n 'lbl.volume': 'Volume',\n 'lbl.volNote': '(preview caps at 100%, export uses the set value)',\n 'lbl.music': 'Music',\n 'kbd.fit': '⇧ F',\n 'poster.title': 'Pick a cover frame',\n 'panel.title': 'Media Editor',\n 'panel.subtitle': 'Upload an image / video — crop · filters · text · export',\n 'panel.pick': 'Click to choose an image or video',\n 'panel.pickHint': 'Images via Filerobot · videos: trim/mute/cover',\n};\n\nconst es: Record<string, string> = {\n 'tool.trim': 'Editar',\n 'tool.crop': 'Recortar',\n 'tool.tune': 'Ajustar color',\n 'tool.filter': 'Filtros',\n 'tool.annotate': 'Anotar',\n 'tool.sticker': 'Stickers',\n 'tool.resize': 'Proporción',\n 'tune.brightness': 'Brillo',\n 'tune.contrast': 'Contraste',\n 'tune.saturation': 'Saturación',\n 'tune.gamma': 'Gamma',\n 'overlay.select': 'Seleccionar',\n 'overlay.pen': 'Pincel',\n 'overlay.eraser': 'Borrador',\n 'overlay.line': 'Línea',\n 'overlay.arrow': 'Flecha',\n 'overlay.rect': 'Rectángulo',\n 'overlay.ellipse': 'Elipse',\n 'overlay.text': 'Texto',\n 'overlay.color': 'Color',\n 'overlay.width': 'Grosor',\n 'overlay.copySelected': 'Copiar',\n 'overlay.delSelected': 'Eliminar seleccionado',\n 'overlay.editSelected': 'Editar',\n 'overlay.pickImage': 'Elegir imagen',\n 'overlay.hint': 'Toca un emoji/imagen para añadirlo → arrastra para colocarlo, arrastra el tirador morado para escalar',\n 'overlay.textPlaceholder': 'Escribe texto, Enter para confirmar',\n 'filter.none': 'Original',\n 'filter.bw': 'Blanco y negro',\n 'filter.sepia': 'Sepia',\n 'filter.warm': 'Cálido',\n 'filter.cool': 'Frío',\n 'filter.vivid': 'Intenso',\n 'ratio.orig': 'Original',\n 'ratio.free': 'Libre',\n 'ratio.9:16': 'Vertical 9:16',\n 'ratio.16:9': 'Horizontal 16:9',\n 'ratio.1:1': 'Cuadrado 1:1',\n 'ratio.4:5': 'Vertical 4:5',\n 'act.fit': 'Ajustar',\n 'act.zoomFit': 'Ajustar a pantalla',\n 'act.zoomTo': 'Zoom al {value}%',\n 'act.split': 'Dividir',\n 'act.copy': 'Copiar',\n 'act.delete': 'Eliminar',\n 'act.restore': 'Restablecer',\n 'act.deleteMusic': 'Quitar música',\n 'act.cancel': 'Cancelar',\n 'act.exportPoster': 'Exportar portada',\n 'act.exporting': 'Exportando…',\n 'act.poster': '🖼 Portada',\n 'act.again': 'Descargar de nuevo',\n 'act.saveDrive': 'Guardar en disco',\n 'act.changeImage': '← Cambiar imagen',\n 'act.changeVideo': '← Cambiar archivo',\n 'crop.rotateLeft': '↺ Girar a la izquierda',\n 'crop.flipX': '⇋ Voltear horizontal',\n 'crop.flipY': '⇵ Voltear vertical',\n 'crop.rotateLeftShort': 'Giro',\n 'crop.flipXShort': 'Flip',\n 'crop.flipYShort': 'Flip',\n 'tip.close': 'Cerrar (cambiar archivo)',\n 'tip.undo': 'Deshacer',\n 'tip.redo': 'Rehacer',\n 'tip.resetOpened': 'Restablecer al archivo abierto',\n 'tip.previewZoom': 'Zoom de vista previa',\n 'tip.previewZoomOut': 'Reducir vista previa',\n 'tip.previewZoomIn': 'Ampliar vista previa',\n 'tip.previewZoomFit': 'Ajustar vista previa',\n 'tip.previewPointer': 'Herramienta de puntero',\n 'tip.previewPan': 'Mano: desplazar lienzo',\n 'tip.poster': 'Previsualizar y elegir portada',\n 'tip.keepAudio': 'Activar/desactivar audio original (mezclado con música; la vista previa lo refleja)',\n 'tip.split': 'Dividir el clip actual en el cursor',\n 'tip.zoomOut': 'Reducir línea de tiempo (Ctrl+rueda)',\n 'tip.zoomIn': 'Ampliar línea de tiempo (Ctrl+rueda)',\n 'tip.fit': 'Ajustar al ancho',\n 'tip.addVideo': 'Añadir clip de vídeo',\n 'tip.addAudio': 'Añadir música (archivo de audio o vídeo con sonido para extraer la pista; se mezcla con el original)',\n 'tip.dupClip': 'Duplicar clip (insertar después)',\n 'tip.delClip': 'Eliminar clip',\n 'tip.lockAspect': 'Bloquear proporción',\n 'tip.dblConfirm': 'Doble clic para confirmar recorte',\n 'err.notVideo': 'Elige un archivo de vídeo',\n 'err.maxVideo': 'Máximo {max} vídeos',\n 'err.videoLoad': 'No se pudo cargar el vídeo, prueba con otro archivo',\n 'err.notAudio': 'Elige un audio (mp3/wav/m4a) o un vídeo con sonido (se extrae automáticamente)',\n 'err.maxAudio': 'Máximo {max} audios',\n 'err.audioLoad': 'No se pudo cargar el audio, prueba con otro archivo',\n 'err.processFailed': 'Error de procesamiento',\n 'err.posterFailed': 'No se pudo renderizar la portada',\n 'err.canvas': 'Canvas no disponible',\n 'err.imageRead': 'No se pudo leer la imagen, prueba con otra',\n 'err.notImage': 'Elige un archivo de imagen',\n 'err.fileType': 'Solo se admiten archivos de imagen o vídeo',\n 'err.saveDrive': 'No se pudo guardar en disco',\n 'msg.processing': 'Exportando…',\n 'msg.exportingHint': 'Espera un momento. El resultado se devolverá automáticamente al finalizar.',\n 'msg.done': 'Listo ✓',\n 'msg.loading': 'Cargando medios…',\n 'msg.exported': 'Exportado: ',\n 'msg.saving': 'Guardando…',\n 'msg.saved': 'Guardado en disco ✓',\n 'lbl.ratioSection': 'Proporción de imagen (recorte, sin deformar)',\n 'lbl.dragToReposition': '↔ Arrastra la vista previa para reposicionar el recorte',\n 'lbl.sizeSection': 'Tamaño de exportación (px; recorte cover centrado si la proporción difiere)',\n 'lbl.currentOut': 'Salida',\n 'lbl.zoomSize': 'Tamaño',\n 'lbl.noScale': '(sin escala)',\n 'lbl.coverNote': '· recorte centrado (cover) cuando la proporción difiere, sin deformar',\n 'lbl.audioTrackHint': '♪ Pista de audio (+ a la derecha para añadir música, mezclada con el original)',\n 'lbl.volume': 'Volumen',\n 'lbl.volNote': '(la vista previa limita a 100%, la exportación usa el valor definido)',\n 'lbl.music': 'Música',\n 'kbd.fit': '⇧ F',\n 'poster.title': 'Elegir portada',\n 'panel.title': 'Editor multimedia',\n 'panel.subtitle': 'Sube una imagen / vídeo — recorta · filtros · texto · exporta',\n 'panel.pick': 'Haz clic para elegir una imagen o vídeo',\n 'panel.pickHint': 'Imágenes con Filerobot · vídeos: cortar/silenciar/portada',\n};\n\nconst ZH_HANT_MAP: Record<string, string> = {\n 简: '簡', 体: '體', 图: '圖', 频: '頻', 视: '視', 辑: '輯', 调: '調', 滤: '濾',\n 标: '標', 注: '註', 贴: '貼', 选: '選', 择: '擇', 线: '線', 箭: '箭', 头: '頭',\n 复: '複', 删: '刪', 除: '除', 编: '編', 边: '邊', 输: '輸', 入: '入', 确: '確',\n 认: '認', 饱: '飽', 对: '對', 暖: '暖', 阳: '陽', 冷: '冷', 纵: '縱', 横: '橫',\n 适: '適', 应: '應', 缩: '縮', 实: '實', 际: '際', 导: '導', 出: '出', 封: '封',\n 面: '面', 换: '換', 张: '張', 预: '預', 览: '覽', 动: '動', 声: '聲', 开: '開',\n 关: '關', 与: '與', 乐: '樂', 混: '混', 处: '處', 载: '載', 错: '錯', 误: '誤',\n 读: '讀', 仅: '僅', 终: '終', 稍: '稍', 候: '候', 返回: '返回',\n 当前: '目前', 输出: '輸出', 画: '畫', 变: '變', 音频: '音訊', 音轨: '音軌',\n 添加: '新增', 删除: '刪除', 保存: '儲存', 加载: '載入', 网盘: '網盤',\n};\n\nexport const toHant = (value: string) => {\n let next = value;\n for (const [from, to] of Object.entries(ZH_HANT_MAP).sort((a, b) => b[0].length - a[0].length)) {\n next = next.replaceAll(from, to);\n }\n return next;\n};\n\nconst zhHant: Record<string, string> = Object.fromEntries(\n Object.entries(zh).map(([key, value]) => [key, toHant(value)]),\n) as Record<string, string>;\n\nexport const EDITOR_MESSAGES: Record<EditorLocale, Record<string, string>> = { zh, en, es, 'zh-Hant': zhHant };\n\n/** 取文案;缺 key 兜底显示 key 本身;{name} 插值 */\nexport function tEditor(locale: EditorLocale, key: string, vars?: Record<string, string | number>): string {\n let s = EDITOR_MESSAGES[locale]?.[key] ?? EDITOR_MESSAGES.zh[key] ?? key;\n if (vars) {\n for (const [k, v] of Object.entries(vars)) s = s.replaceAll(`{${k}}`, String(v));\n }\n return s;\n}\n","/**\n * 内置平台发布目标表(SDK 自带默认值)。\n * 原 SocialEcho 仓从 lib/ark-config.ts 的 PUBLISH_TARGETS 派生预设;为让 SDK 自包含、\n * 去掉对宿主 ark-config 的硬依赖,这里内置编辑器预设真正用到的字段子集(15 行)。\n * 宿主仍可调 buildPlatformPresets(自己的 targets) 注入,保持单一真值源。\n */\nexport interface PlatformTarget {\n platform: string; // 'tiktok'\n postType: string; // 'video' | 'post' | 'reels' | ...\n label: string; // 'TikTok Video'\n shortLabel: string; // 'TT·Video'\n ratio: string; // '9:16'\n imageSize: string; // '1440x2560'\n videoRatio?: string; // '9:16'\n videoResolution?: '720p' | '1080p';\n}\n\n/** 默认平台表(与原仓 PUBLISH_TARGETS 同步;升级宿主数据时复核) */\nexport const DEFAULT_PLATFORM_TARGETS: PlatformTarget[] = [\n { platform: 'tiktok', postType: 'video', label: 'TikTok Video', shortLabel: 'TT·Video', ratio: '9:16', imageSize: '1440x2560', videoRatio: '9:16', videoResolution: '720p' },\n { platform: 'instagram', postType: 'post', label: 'Instagram Post', shortLabel: 'IG·Post', ratio: '1:1', imageSize: '2048x2048' },\n { platform: 'instagram', postType: 'reels', label: 'Instagram Reels', shortLabel: 'IG·Reels', ratio: '9:16', imageSize: '1440x2560', videoRatio: '9:16', videoResolution: '720p' },\n { platform: 'instagram', postType: 'story', label: 'Instagram Story', shortLabel: 'IG·Story', ratio: '9:16', imageSize: '1440x2560', videoRatio: '9:16', videoResolution: '720p' },\n { platform: 'facebook', postType: 'post', label: 'Facebook Post', shortLabel: 'FB·Post', ratio: '1:1', imageSize: '2048x2048' },\n { platform: 'facebook', postType: 'reels', label: 'Facebook Reels', shortLabel: 'FB·Reels', ratio: '9:16', imageSize: '1440x2560', videoRatio: '9:16', videoResolution: '720p' },\n { platform: 'youtube', postType: 'video', label: 'YouTube Video', shortLabel: 'YT·Video', ratio: '16:9', imageSize: '2560x1440', videoRatio: '16:9', videoResolution: '1080p' },\n { platform: 'youtube', postType: 'shorts', label: 'YouTube Shorts', shortLabel: 'YT·Shorts', ratio: '9:16', imageSize: '1440x2560', videoRatio: '9:16', videoResolution: '720p' },\n { platform: 'pinterest', postType: 'pin', label: 'Pinterest Pin', shortLabel: 'PIN', ratio: '2:3', imageSize: '1664x2496', videoRatio: '9:16', videoResolution: '720p' },\n { platform: 'x', postType: 'post', label: 'X Post', shortLabel: 'X·Post', ratio: '16:9', imageSize: '2560x1440', videoRatio: '16:9', videoResolution: '720p' },\n { platform: 'linkedin', postType: 'post', label: 'LinkedIn Post', shortLabel: 'LI·Post', ratio: '1:1', imageSize: '2048x2048' },\n { platform: 'linkedin', postType: 'video', label: 'LinkedIn Video', shortLabel: 'LI·Video', ratio: '16:9', imageSize: '2560x1440', videoRatio: '16:9', videoResolution: '1080p' },\n { platform: 'threads', postType: 'post', label: 'Threads Post', shortLabel: 'TH·Post', ratio: '1:1', imageSize: '2048x2048' },\n { platform: 'telegram', postType: 'post', label: 'Telegram Post', shortLabel: 'TG·Post', ratio: '1:1', imageSize: '2048x2048', videoRatio: '9:16', videoResolution: '720p' },\n { platform: 'reddit', postType: 'post', label: 'Reddit Post', shortLabel: 'RD·Post', ratio: '16:9', imageSize: '2560x1440', videoRatio: '16:9', videoResolution: '720p' },\n];\n","/**\n * 编辑器「平台 → 可选裁剪比例 / 输出尺寸」预设。\n * 默认从内置 DEFAULT_PLATFORM_TARGETS 派生(SDK 自包含);\n * 宿主可调 buildImagePlatformPresets/buildVideoSizePresets 传入自己的目标表保持单一真值源。\n */\nimport { DEFAULT_PLATFORM_TARGETS, type PlatformTarget } from './platform-table';\n\nexport interface RatioPreset {\n ratio: string; // '9:16'\n value: number; // 9/16\n label: string; // '竖屏 9:16'\n}\n\nconst RATIO_LABEL: Record<string, string> = {\n '1:1': '方形 1:1',\n '4:5': '竖图 4:5',\n '3:4': '竖图 3:4',\n '9:16': '竖屏 9:16',\n '16:9': '横屏 16:9',\n '2:3': '竖图 2:3',\n '1.91:1': '横幅 1.91:1',\n};\n\nexport function parseRatio(r: string): number {\n const [w, h] = r.split(':').map(Number);\n if (!w || !h) return 1;\n return w / h;\n}\n\nfunction dedupePresets(ratios: string[]): RatioPreset[] {\n const seen = new Set<string>();\n const out: RatioPreset[] = [];\n for (const r of ratios) {\n if (!r || seen.has(r)) continue;\n seen.add(r);\n out.push({ ratio: r, value: parseRatio(r), label: RATIO_LABEL[r] ?? r });\n }\n return out;\n}\n\n/** 图片比例预设:精确 7 项(顺序即 UI 顺序) */\nexport const IMAGE_RATIO_PRESETS: RatioPreset[] = dedupePresets([\n '1:1', '4:5', '3:4', '2:3', '9:16', '16:9', '1.91:1',\n]);\n\n/** 视频比例预设:精确 4 项(顺序即 UI 顺序) */\nexport const VIDEO_RATIO_PRESETS: RatioPreset[] = dedupePresets([\n '9:16', '16:9', '1:1', '4:5',\n]);\n\nexport interface VideoPlatformRatioPreset {\n platform: string;\n postType: string;\n label: string;\n ratio: string;\n value: number;\n}\n\n/** 视频平台比例快捷入口:从目标表 videoRatio 派生,保留平台/类型,按 platform+type+ratio 去重 */\nexport function buildVideoPlatformRatioPresets(targets: PlatformTarget[] = DEFAULT_PLATFORM_TARGETS): VideoPlatformRatioPreset[] {\n const seen = new Set<string>();\n const out: VideoPlatformRatioPreset[] = [];\n for (const t of targets) {\n if (!t.videoRatio) continue;\n const key = `${t.platform}:${t.postType}:${t.videoRatio}`;\n if (seen.has(key)) continue;\n seen.add(key);\n const name = t.label.split(' ').slice(0, -1).join(' ') || t.label;\n out.push({ platform: t.platform, postType: t.postType, label: `${name} ${t.videoRatio}`, ratio: t.videoRatio, value: parseRatio(t.videoRatio) });\n }\n return out;\n}\n\nexport const VIDEO_PLATFORM_RATIO_PRESETS: VideoPlatformRatioPreset[] = buildVideoPlatformRatioPresets();\n\n// ─── 图片平台推荐预设 ──────────────────────────────────────────────\n\nexport interface PlatformPreset {\n platform: string; // 'instagram'\n label: string; // 'Instagram 1:1'\n ratio: string; // '1:1'\n value: number; // 1\n w: number; // 2048\n h: number; // 2048\n}\n\n/** 每平台一条(优先 postType='post',否则取该平台首条);w/h 来自 imageSize */\nexport function buildImagePlatformPresets(targets: PlatformTarget[] = DEFAULT_PLATFORM_TARGETS): PlatformPreset[] {\n const byPlatform = new Map<string, PlatformTarget>();\n for (const t of targets) {\n const cur = byPlatform.get(t.platform);\n if (!cur || (cur.postType !== 'post' && t.postType === 'post')) byPlatform.set(t.platform, t);\n }\n return Array.from(byPlatform.values()).map((t) => {\n const [w, h] = t.imageSize.split('x').map(Number);\n const name = t.label.split(' ').slice(0, -1).join(' ') || t.label;\n return { platform: t.platform, label: `${name} ${t.ratio}`, ratio: t.ratio, value: parseRatio(t.ratio), w, h };\n });\n}\n\n/** 默认图片平台预设(内置表派生) */\nexport const IMAGE_PLATFORM_PRESETS: PlatformPreset[] = buildImagePlatformPresets();\n\n// ─── 视频输出尺寸预设 ──────────────────────────────────────────────\n\nexport interface SizePreset {\n label: string; // 'TikTok 1080×1920'\n w: number;\n h: number;\n}\n\nfunction sizeOf(ratioValue: number, shortSide: number): { w: number; h: number } {\n if (ratioValue >= 1) {\n return { w: Math.round((shortSide * ratioValue) / 2) * 2, h: shortSide };\n }\n return { w: shortSide, h: Math.round(shortSide / ratioValue / 2) * 2 };\n}\n\n/** 视频输出尺寸预设:从目标表派生(平台标签 + 实际像素),按 w×h 去重 */\nexport function buildVideoSizePresets(targets: PlatformTarget[] = DEFAULT_PLATFORM_TARGETS): SizePreset[] {\n const seen = new Set<string>();\n const out: SizePreset[] = [];\n for (const t of targets) {\n if (!t.videoRatio || !t.videoResolution) continue;\n const shortSide = t.videoResolution === '1080p' ? 1080 : 720;\n const { w, h } = sizeOf(parseRatio(t.videoRatio), shortSide);\n const key = `${w}x${h}`;\n if (seen.has(key)) continue;\n seen.add(key);\n out.push({ label: `${t.shortLabel} ${w}×${h}`, w, h });\n }\n return out;\n}\n\n/** 默认视频尺寸预设(内置表派生) */\nexport const VIDEO_SIZE_PRESETS: SizePreset[] = buildVideoSizePresets();\n","/**\n * Filerobot 图片编辑器的标注旋转补偿(纯函数,供 ImageEditor 注入 config.onAnnotationAdd)。\n *\n * 背景:Filerobot 把 rotation 加在整个 Konva DesignLayer 上(DesignLayerWrapper),\n * 新标注挂进同一层会继承父层旋转 → 旋转图片后再贴文字,文字方向跟着转。\n * onAnnotationAdd 是 5.0.0-beta.159 真实存在但未写进 index.d.ts 的 config 钩子:\n * 源码 lib/actions/setAnnotation.js 在「新建标注」时调用 (annotation, 全量state),\n * 把返回的 partial 合并进标注 —— 这里给新标注反向初始 rotation,与父层旋转叠加后视觉正向。\n */\nexport function compensateAnnotationRotation(\n ann: { rotation?: number; isDuplicated?: boolean },\n state: { adjustments?: { rotation?: number } }\n): { rotation?: number } {\n if (ann.isDuplicated) return {}; // 复制体已继承原件 rotation,不得重复补偿\n if ((ann.rotation ?? 0) !== 0) return {}; // 已带角度的(回填/再编辑)不动\n const rot = state.adjustments?.rotation ?? 0;\n return rot ? { rotation: -rot } : {};\n}\n"]}
@@ -0,0 +1,540 @@
1
+ 'use strict';
2
+
3
+ var zod = require('zod');
4
+
5
+ // src/state.ts
6
+ var StrokeCommon = {
7
+ color: zod.z.string().max(32),
8
+ width: zod.z.number().positive().max(200)
9
+ };
10
+ var RotationCommon = {
11
+ rotation: zod.z.number().min(-180).max(180).optional()
12
+ };
13
+ var Overlay = zod.z.discriminatedUnion("type", [
14
+ // 自由画笔:扁平点序列 [x0,y0,x1,y1,...]
15
+ zod.z.object({ type: zod.z.literal("pen"), points: zod.z.array(zod.z.number()).min(4), ...StrokeCommon, ...RotationCommon }),
16
+ zod.z.object({ type: zod.z.literal("line"), x1: zod.z.number(), y1: zod.z.number(), x2: zod.z.number(), y2: zod.z.number(), ...StrokeCommon, ...RotationCommon }),
17
+ zod.z.object({ type: zod.z.literal("arrow"), x1: zod.z.number(), y1: zod.z.number(), x2: zod.z.number(), y2: zod.z.number(), ...StrokeCommon, ...RotationCommon }),
18
+ zod.z.object({ type: zod.z.literal("rect"), x: zod.z.number(), y: zod.z.number(), w: zod.z.number(), h: zod.z.number(), ...StrokeCommon, ...RotationCommon }),
19
+ zod.z.object({ type: zod.z.literal("ellipse"), x: zod.z.number(), y: zod.z.number(), w: zod.z.number(), h: zod.z.number(), ...StrokeCommon, ...RotationCommon }),
20
+ zod.z.object({
21
+ type: zod.z.literal("text"),
22
+ x: zod.z.number(),
23
+ y: zod.z.number(),
24
+ text: zod.z.string().max(500),
25
+ color: zod.z.string().max(32),
26
+ fontSize: zod.z.number().positive().max(512),
27
+ ...RotationCommon
28
+ }),
29
+ // emoji 字符 或 dataURL 图片二选一
30
+ zod.z.object({
31
+ type: zod.z.literal("sticker"),
32
+ x: zod.z.number(),
33
+ y: zod.z.number(),
34
+ w: zod.z.number().positive(),
35
+ h: zod.z.number().positive(),
36
+ emoji: zod.z.string().max(16).optional(),
37
+ src: zod.z.string().optional(),
38
+ ...RotationCommon
39
+ })
40
+ ]);
41
+ var Clip = zod.z.object({
42
+ srcIdx: zod.z.number().int().min(0).max(7),
43
+ in: zod.z.number().min(0),
44
+ out: zod.z.number().min(0)
45
+ });
46
+ var AudioClip = zod.z.object({
47
+ srcIdx: zod.z.number().int().min(0).max(2),
48
+ startAt: zod.z.number().min(0),
49
+ in: zod.z.number().min(0),
50
+ out: zod.z.number().min(0),
51
+ volume: zod.z.number().min(0).max(2)
52
+ });
53
+ var Transition = zod.z.object({
54
+ type: zod.z.enum(["none", "fade", "slide", "wipe", "flip", "clockWipe", "star", "circle", "rectangle"]).default("none"),
55
+ duration: zod.z.number().min(0).max(2).default(0.4)
56
+ });
57
+ var VideoEditState = zod.z.object({
58
+ clips: zod.z.array(Clip).min(1).max(50),
59
+ audioClips: zod.z.array(AudioClip).max(8).default([]),
60
+ /** 输出画布(=首素材分辨率,偶数);全局 crop/rotation 的"源 dims" */
61
+ canvas: zod.z.object({
62
+ w: zod.z.number().int().min(2).max(4096),
63
+ h: zod.z.number().int().min(2).max(4096)
64
+ }),
65
+ crop: zod.z.object({
66
+ x: zod.z.number().min(0),
67
+ y: zod.z.number().min(0),
68
+ width: zod.z.number().positive(),
69
+ height: zod.z.number().positive()
70
+ }).optional(),
71
+ scale: zod.z.object({
72
+ width: zod.z.number().positive(),
73
+ height: zod.z.number().positive(),
74
+ fit: zod.z.enum(["contain", "cover", "force"])
75
+ }).optional(),
76
+ /** 任意角度(度)。UI = 90° 步进按钮 + ±45° 刻度盘叠加 */
77
+ rotation: zod.z.number().min(-180).max(180).default(0),
78
+ flipX: zod.z.boolean().default(false),
79
+ flipY: zod.z.boolean().default(false),
80
+ filters: zod.z.object({
81
+ brightness: zod.z.number().min(-1).max(1),
82
+ contrast: zod.z.number().min(-1).max(1),
83
+ saturation: zod.z.number().min(-1).max(1),
84
+ gamma: zod.z.number().min(-1).max(1).default(0)
85
+ }).default({ brightness: 0, contrast: 0, saturation: 0, gamma: 0 }),
86
+ /** 预设滤镜 id(见 filters.ts);与 filters 手调叠加 */
87
+ filterPreset: zod.z.string().max(32).optional(),
88
+ overlays: zod.z.array(Overlay).max(200).optional(),
89
+ transitions: zod.z.array(Transition).max(49).default([]),
90
+ /** 原视频声音开关(与音乐混音共存) */
91
+ keepAudio: zod.z.boolean().default(true),
92
+ /** 封面时刻 = 输出时间轴 */
93
+ poster: zod.z.object({ time: zod.z.number().min(0) }).optional()
94
+ }).superRefine((s, ctx) => {
95
+ s.clips.forEach((c, i) => {
96
+ if (c.out <= c.in) {
97
+ ctx.addIssue({ code: zod.z.ZodIssueCode.custom, message: `clips[${i}].out \u5FC5\u987B\u5927\u4E8E in`, path: ["clips", i, "out"] });
98
+ }
99
+ });
100
+ s.audioClips?.forEach((a, i) => {
101
+ if (a.out <= a.in) {
102
+ ctx.addIssue({ code: zod.z.ZodIssueCode.custom, message: `audioClips[${i}].out \u5FC5\u987B\u5927\u4E8E in`, path: ["audioClips", i, "out"] });
103
+ }
104
+ });
105
+ if (s.canvas.w % 2 !== 0 || s.canvas.h % 2 !== 0) {
106
+ ctx.addIssue({ code: zod.z.ZodIssueCode.custom, message: "canvas \u5BBD\u9AD8\u5FC5\u987B\u4E3A\u5076\u6570", path: ["canvas"] });
107
+ }
108
+ });
109
+ function defaultVideoEditState() {
110
+ return {
111
+ clips: [],
112
+ audioClips: [],
113
+ canvas: { w: 2, h: 2 },
114
+ rotation: 0,
115
+ flipX: false,
116
+ flipY: false,
117
+ filters: { brightness: 0, contrast: 0, saturation: 0, gamma: 0 },
118
+ transitions: [],
119
+ keepAudio: true
120
+ };
121
+ }
122
+
123
+ // src/history.ts
124
+ var MAX_DEPTH = 100;
125
+ function createHistory(initial) {
126
+ return { past: [], present: initial, future: [] };
127
+ }
128
+ function pushHistory(h, next) {
129
+ if (next === h.present) return h;
130
+ const past = [...h.past, h.present];
131
+ if (past.length > MAX_DEPTH) past.shift();
132
+ return { past, present: next, future: [] };
133
+ }
134
+ function replacePresent(h, next) {
135
+ if (next === h.present) return h;
136
+ return { ...h, present: next };
137
+ }
138
+ function canUndo(h) {
139
+ return h.past.length > 0;
140
+ }
141
+ function canRedo(h) {
142
+ return h.future.length > 0;
143
+ }
144
+ function undo(h) {
145
+ if (!canUndo(h)) return h;
146
+ const past = h.past.slice(0, -1);
147
+ return { past, present: h.past[h.past.length - 1], future: [h.present, ...h.future] };
148
+ }
149
+ function redo(h) {
150
+ if (!canRedo(h)) return h;
151
+ const [next, ...future] = h.future;
152
+ return { past: [...h.past, h.present], present: next, future };
153
+ }
154
+
155
+ // src/timeline.ts
156
+ var MIN_CLIP = 0.1;
157
+ function clipDuration(c) {
158
+ return c.out - c.in;
159
+ }
160
+ function totalDuration(clips) {
161
+ return clips.reduce((s, c) => s + clipDuration(c), 0);
162
+ }
163
+ function locateOutput(clips, t) {
164
+ if (!clips.length || t < 0) return null;
165
+ let acc = 0;
166
+ for (let i = 0; i < clips.length; i++) {
167
+ const d = clipDuration(clips[i]);
168
+ if (t < acc + d) return { idx: i, srcTime: clips[i].in + (t - acc) };
169
+ acc += d;
170
+ }
171
+ if (Math.abs(t - acc) < 1e-9 || t <= acc) {
172
+ const last = clips.length - 1;
173
+ return { idx: last, srcTime: clips[last].out };
174
+ }
175
+ return null;
176
+ }
177
+ function splitAtOutput(clips, t) {
178
+ const loc = locateOutput(clips, t);
179
+ if (!loc) return clips;
180
+ const c = clips[loc.idx];
181
+ if (loc.srcTime < c.in + MIN_CLIP || loc.srcTime > c.out - MIN_CLIP) return clips;
182
+ return [
183
+ ...clips.slice(0, loc.idx),
184
+ { ...c, out: loc.srcTime },
185
+ { ...c, in: loc.srcTime },
186
+ ...clips.slice(loc.idx + 1)
187
+ ];
188
+ }
189
+ function removeClip(clips, idx) {
190
+ if (clips.length <= 1 || !clips[idx]) return clips;
191
+ return clips.filter((_, i) => i !== idx);
192
+ }
193
+ function duplicateClip(clips, idx) {
194
+ const c = clips[idx];
195
+ if (!c) return clips;
196
+ return [...clips.slice(0, idx + 1), { ...c }, ...clips.slice(idx + 1)];
197
+ }
198
+ function reorderClips(clips, from, to) {
199
+ if (from === to || !clips[from] || to < 0 || to >= clips.length) return clips;
200
+ const next = [...clips];
201
+ const [moved] = next.splice(from, 1);
202
+ next.splice(to, 0, moved);
203
+ return next;
204
+ }
205
+ function trimClipEdge(clips, idx, edge, srcT, srcDuration) {
206
+ const c = clips[idx];
207
+ if (!c) return clips;
208
+ const next = clips.map((x) => ({ ...x }));
209
+ if (edge === "in") {
210
+ next[idx].in = Math.min(Math.max(srcT, 0), next[idx].out - MIN_CLIP);
211
+ } else {
212
+ next[idx].out = Math.max(Math.min(srcT, srcDuration), next[idx].in + MIN_CLIP);
213
+ }
214
+ return next;
215
+ }
216
+ function clampAudioClip(a, srcDuration, total) {
217
+ const out = Math.max(Math.min(a.out, srcDuration), MIN_CLIP);
218
+ const inn = Math.min(Math.max(a.in, 0), out - MIN_CLIP);
219
+ const startAt = Math.min(Math.max(a.startAt, 0), Math.max(0, total - MIN_CLIP));
220
+ return { ...a, in: inn, out, startAt };
221
+ }
222
+ function contentDuration(clips, audioClips = []) {
223
+ const video = totalDuration(clips);
224
+ const audioEnd = audioClips.reduce((m, a) => Math.max(m, a.startAt + (a.out - a.in)), 0);
225
+ return Math.max(video, audioEnd);
226
+ }
227
+ function usedVideoSrcIndices(clips) {
228
+ return [...new Set(clips.map((c) => c.srcIdx))].sort((x, y) => x - y);
229
+ }
230
+ function remapSrcIndices(clips, used) {
231
+ const map = new Map(used.map((s, i) => [s, i]));
232
+ return clips.map((c) => ({ ...c, srcIdx: map.get(c.srcIdx) ?? 0 }));
233
+ }
234
+
235
+ // src/engine.ts
236
+ function evenize(n) {
237
+ const v = Math.min(Math.max(Math.round(n), 2), 4096);
238
+ return v % 2 === 0 ? v : v - 1;
239
+ }
240
+ var clampRotation = (deg) => Math.min(Math.max(deg, -180), 180);
241
+ var VideoEditorEngine = class {
242
+ constructor(initial = defaultVideoEditState()) {
243
+ this.videoSources = [];
244
+ this.audioSources = [];
245
+ this.listeners = /* @__PURE__ */ new Set();
246
+ /** 瞬时拖拽序列的起始 base(拖拽前的提交态);null = 不在拖拽中 */
247
+ this.transientBase = null;
248
+ /** useSyncExternalStore 用别名 */
249
+ this.getSnapshot = () => this.history.present;
250
+ this.subscribe = (fn) => {
251
+ this.listeners.add(fn);
252
+ return () => this.listeners.delete(fn);
253
+ };
254
+ this.history = createHistory(initial);
255
+ }
256
+ // ─── 读 / 订阅 ───────────────────────────────────────────────
257
+ /** 当前编辑状态(引用稳定:仅在变更时换新对象,适配 useSyncExternalStore) */
258
+ getState() {
259
+ return this.history.present;
260
+ }
261
+ emit() {
262
+ const s = this.history.present;
263
+ for (const fn of this.listeners) fn(s);
264
+ }
265
+ // ─── 历史 ────────────────────────────────────────────────────
266
+ canUndo() {
267
+ return canUndo(this.history);
268
+ }
269
+ canRedo() {
270
+ return canRedo(this.history);
271
+ }
272
+ undo() {
273
+ this.transientBase = null;
274
+ this.history = undo(this.history);
275
+ this.emit();
276
+ }
277
+ redo() {
278
+ this.transientBase = null;
279
+ this.history = redo(this.history);
280
+ this.emit();
281
+ }
282
+ /**
283
+ * 全部变更的唯一入口。mut 接收「计算基准态」返回新态。
284
+ * 瞬时:基准恒为 transientBase(拖拽前态),replacePresent;
285
+ * 提交:基准为 transientBase ?? present;若刚结束一段瞬时,先把 present 还原回 base 再 push,
286
+ * 使整段拖拽只占一步 undo。
287
+ */
288
+ applyMut(mut, transient = false) {
289
+ if (transient) {
290
+ if (this.transientBase === null) this.transientBase = this.history.present;
291
+ this.history = replacePresent(this.history, mut(this.transientBase));
292
+ } else {
293
+ const base = this.transientBase ?? this.history.present;
294
+ const next = mut(base);
295
+ const h = this.transientBase ? { ...this.history, present: this.transientBase } : this.history;
296
+ this.history = pushHistory(h, next);
297
+ this.transientBase = null;
298
+ }
299
+ this.emit();
300
+ }
301
+ // ─── 源登记(返回新 srcIdx)──────────────────────────────────
302
+ /**
303
+ * 登记一个视频源并入时间轴。首源:用其分辨率初始化 canvas 并重建 history(清空 undo);
304
+ * 后续源:追加整段 clip(pushHistory)。
305
+ */
306
+ registerVideoSource(meta) {
307
+ const srcIdx = this.videoSources.length;
308
+ this.videoSources.push(meta);
309
+ const clip = { srcIdx, in: 0, out: meta.duration };
310
+ if (srcIdx === 0 || this.history.present.clips.length === 0) {
311
+ this.transientBase = null;
312
+ this.history = createHistory({
313
+ ...defaultVideoEditState(),
314
+ clips: [clip],
315
+ canvas: { w: evenize(meta.width), h: evenize(meta.height) },
316
+ poster: { time: Math.min(1, meta.duration / 2) }
317
+ });
318
+ this.emit();
319
+ } else {
320
+ this.applyMut((s) => ({ ...s, clips: [...s.clips, clip] }));
321
+ }
322
+ return srcIdx;
323
+ }
324
+ /** 登记一个音频源并入音轨(整段、volume=1、startAt=0,clamp 后 push) */
325
+ registerAudioSource(meta) {
326
+ const srcIdx = this.audioSources.length;
327
+ this.audioSources.push(meta);
328
+ this.applyMut((s) => {
329
+ const a = clampAudioClip(
330
+ { srcIdx, startAt: 0, in: 0, out: meta.duration, volume: 1 },
331
+ meta.duration,
332
+ totalDuration(s.clips)
333
+ );
334
+ return { ...s, audioClips: [...s.audioClips, a] };
335
+ });
336
+ return srcIdx;
337
+ }
338
+ getVideoSource(idx) {
339
+ return this.videoSources[idx];
340
+ }
341
+ getAudioSource(idx) {
342
+ return this.audioSources[idx];
343
+ }
344
+ // ─── 视频片段 ─────────────────────────────────────────────────
345
+ /** 把已登记源再追加一段整段 clip(同源可多次引用) */
346
+ addClipFromSource(srcIdx) {
347
+ const meta = this.videoSources[srcIdx];
348
+ if (!meta) return;
349
+ this.applyMut((s) => ({ ...s, clips: [...s.clips, { srcIdx, in: 0, out: meta.duration }] }));
350
+ }
351
+ splitAtPlayhead(outputTime) {
352
+ this.applyMut((s) => ({ ...s, clips: splitAtOutput(s.clips, outputTime) }));
353
+ }
354
+ removeClip(idx) {
355
+ this.applyMut((s) => ({ ...s, clips: removeClip(s.clips, idx) }));
356
+ }
357
+ duplicateClip(idx) {
358
+ this.applyMut((s) => ({ ...s, clips: duplicateClip(s.clips, idx) }));
359
+ }
360
+ reorderClips(from, to) {
361
+ this.applyMut((s) => ({ ...s, clips: reorderClips(s.clips, from, to) }));
362
+ }
363
+ /** 拖把手改 in/out 到源时刻 srcT;拖拽中传 {transient:true},松手再调一次提交 */
364
+ trimClip(idx, edge, srcT, opts) {
365
+ this.applyMut((s) => {
366
+ const c = s.clips[idx];
367
+ if (!c) return s;
368
+ const srcDur = this.videoSources[c.srcIdx]?.duration ?? c.out;
369
+ return { ...s, clips: trimClipEdge(s.clips, idx, edge, srcT, srcDur) };
370
+ }, opts?.transient);
371
+ }
372
+ // ─── 音频片段 ─────────────────────────────────────────────────
373
+ moveAudioClip(idx, startAt, opts) {
374
+ this.applyMut((s) => this.patchAudio(s, idx, (a) => ({ ...a, startAt })), opts?.transient);
375
+ }
376
+ trimAudioClip(idx, edge, t, opts) {
377
+ this.applyMut((s) => {
378
+ return this.patchAudio(s, idx, (a) => {
379
+ if (edge === "in") {
380
+ const delta = t - a.in;
381
+ return { ...a, in: t, startAt: a.startAt + delta };
382
+ }
383
+ return { ...a, out: t };
384
+ });
385
+ }, opts?.transient);
386
+ }
387
+ setAudioVolume(idx, volume, opts) {
388
+ this.applyMut((s) => this.patchAudio(s, idx, (a) => ({ ...a, volume }), false), opts?.transient);
389
+ }
390
+ removeAudioClip(idx) {
391
+ this.applyMut((s) => ({ ...s, audioClips: s.audioClips.filter((_, i) => i !== idx) }));
392
+ }
393
+ /** 改一条音频片段并 clamp(volume 改动不需 clamp 几何,clampGeom=false 跳过) */
394
+ patchAudio(s, idx, fn, clampGeom = true) {
395
+ const a = s.audioClips[idx];
396
+ if (!a) return s;
397
+ let next = fn(a);
398
+ if (clampGeom) {
399
+ const srcDur = this.audioSources[a.srcIdx]?.duration ?? a.out;
400
+ next = clampAudioClip(next, srcDur, totalDuration(s.clips));
401
+ }
402
+ return { ...s, audioClips: s.audioClips.map((x, i) => i === idx ? next : x) };
403
+ }
404
+ // ─── 几何:crop / scale / 旋转 / 翻转 ─────────────────────────
405
+ setCrop(crop, opts) {
406
+ this.applyMut((s) => ({ ...s, crop }), opts?.transient);
407
+ }
408
+ clearCrop() {
409
+ this.applyMut((s) => ({ ...s, crop: void 0 }));
410
+ }
411
+ setScale(scale) {
412
+ this.applyMut((s) => ({ ...s, scale }));
413
+ }
414
+ clearScale() {
415
+ this.applyMut((s) => ({ ...s, scale: void 0 }));
416
+ }
417
+ setRotation(deg, opts) {
418
+ this.applyMut((s) => ({ ...s, rotation: clampRotation(deg) }), opts?.transient);
419
+ }
420
+ /** 90° 步进(顺时针正);结果钳到 [-180,180] */
421
+ rotateBy(step) {
422
+ this.applyMut((s) => {
423
+ let r = s.rotation + step;
424
+ if (r > 180) r -= 360;
425
+ if (r < -180) r += 360;
426
+ return { ...s, rotation: clampRotation(r) };
427
+ });
428
+ }
429
+ flipX() {
430
+ this.applyMut((s) => ({ ...s, flipX: !s.flipX }));
431
+ }
432
+ flipY() {
433
+ this.applyMut((s) => ({ ...s, flipY: !s.flipY }));
434
+ }
435
+ // ─── 滤镜 ────────────────────────────────────────────────────
436
+ setFilter(key, value, opts) {
437
+ this.applyMut((s) => ({ ...s, filters: { ...s.filters, [key]: value } }), opts?.transient);
438
+ }
439
+ setFilters(partial, opts) {
440
+ this.applyMut((s) => ({ ...s, filters: { ...s.filters, ...partial } }), opts?.transient);
441
+ }
442
+ setFilterPreset(id) {
443
+ this.applyMut((s) => ({ ...s, filterPreset: id }));
444
+ }
445
+ // ─── 标注 overlays ───────────────────────────────────────────
446
+ addOverlay(o) {
447
+ this.applyMut((s) => ({ ...s, overlays: [...s.overlays ?? [], o] }));
448
+ }
449
+ updateOverlay(idx, patch, opts) {
450
+ this.applyMut((s) => {
451
+ const ovs = s.overlays ?? [];
452
+ if (!ovs[idx]) return s;
453
+ return { ...s, overlays: ovs.map((o, i) => i === idx ? { ...o, ...patch } : o) };
454
+ }, opts?.transient);
455
+ }
456
+ removeOverlay(idx) {
457
+ this.applyMut((s) => ({ ...s, overlays: (s.overlays ?? []).filter((_, i) => i !== idx) }));
458
+ }
459
+ // ─── 杂项 ────────────────────────────────────────────────────
460
+ /**
461
+ * 通用补丁:把 partial 浅合并进状态(UI 一次改多字段,如旋转同时重置 crop)。
462
+ * - `{transient:true}`:拖拽中间帧,基于拖拽前 base 合并、replacePresent,不入栈(= 原 patchLive)。
463
+ * - 默认:一次性提交(= commit(partial))。
464
+ */
465
+ patch(partial, opts) {
466
+ if (opts?.transient) {
467
+ if (this.transientBase === null) this.transientBase = this.history.present;
468
+ this.history = replacePresent(this.history, { ...this.transientBase, ...partial });
469
+ this.emit();
470
+ } else {
471
+ this.commit(partial);
472
+ }
473
+ }
474
+ /**
475
+ * 定格当前态为一步 undo(= 原 commit):保留 present(含拖拽末值),可再合并 partial;
476
+ * 若处于瞬时序列,先把 past 接到拖拽前 base 上,使整段拖拽只占一步。
477
+ */
478
+ commit(partial) {
479
+ const next = partial ? { ...this.history.present, ...partial } : this.history.present;
480
+ const base = this.transientBase;
481
+ this.transientBase = null;
482
+ this.history = base ? pushHistory({ ...this.history, present: base }, next) : pushHistory(this.history, next);
483
+ this.emit();
484
+ }
485
+ setKeepAudio(keep) {
486
+ this.applyMut((s) => ({ ...s, keepAudio: keep }));
487
+ }
488
+ setPoster(time) {
489
+ this.applyMut((s) => ({ ...s, poster: { time: Math.max(0, time) } }));
490
+ }
491
+ // ─── 派生只读 ────────────────────────────────────────────────
492
+ totalDuration() {
493
+ return totalDuration(this.history.present.clips);
494
+ }
495
+ contentDuration() {
496
+ const s = this.history.present;
497
+ return contentDuration(s.clips, s.audioClips);
498
+ }
499
+ /** 输出时刻 → 所属片段与源内时刻(播放头定位) */
500
+ locate(outputTime) {
501
+ return locateOutput(this.history.present.clips, outputTime);
502
+ }
503
+ usedVideoSources() {
504
+ return usedVideoSrcIndices(this.history.present.clips);
505
+ }
506
+ // ─── 导出 ────────────────────────────────────────────────────
507
+ /**
508
+ * 生成导出计划:剔除未引用源、把 clips/audioClips 的 srcIdx 重映射到 [0..n),
509
+ * 返回压缩后的状态与上传槽位顺序(framework 按 order 取 File 上传)。
510
+ */
511
+ getExportPlan() {
512
+ const s = this.history.present;
513
+ const videoSrcOrder = usedVideoSrcIndices(s.clips);
514
+ const audioSrcOrder = [...new Set(s.audioClips.map((a) => a.srcIdx))].sort((x, y) => x - y);
515
+ const audioMap = new Map(audioSrcOrder.map((src, i) => [src, i]));
516
+ return {
517
+ state: {
518
+ ...s,
519
+ clips: remapSrcIndices(s.clips, videoSrcOrder),
520
+ audioClips: s.audioClips.map((a) => ({ ...a, srcIdx: audioMap.get(a.srcIdx) ?? 0 }))
521
+ },
522
+ videoSrcOrder,
523
+ audioSrcOrder
524
+ };
525
+ }
526
+ /** 校验当前(导出)状态是否符合 schema —— 提交前兜底 */
527
+ validate() {
528
+ return VideoEditState.safeParse(this.getExportPlan().state);
529
+ }
530
+ /** 重置为给定状态(清空 history、源登记保留) */
531
+ reset(state = defaultVideoEditState()) {
532
+ this.transientBase = null;
533
+ this.history = createHistory(state);
534
+ this.emit();
535
+ }
536
+ };
537
+
538
+ exports.VideoEditorEngine = VideoEditorEngine;
539
+ //# sourceMappingURL=engine.cjs.map
540
+ //# sourceMappingURL=engine.cjs.map