@baique/pi-web-sky 0.1.39 → 0.1.40

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 (379) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +9 -14
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/react-loadable-manifest.json +51 -51
  6. package/.next/required-server-files.js +1 -1
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +3 -45
  9. package/.next/server/app/_global-error/page.js +2 -2
  10. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/_global-error.html +1 -1
  12. package/.next/server/app/_global-error.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found/page.js +1 -1
  17. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/_not-found.html +1 -1
  19. package/.next/server/app/_not-found.rsc +3 -3
  20. package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  21. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  23. package/.next/server/app/api/agent/[id]/bash-output/route.js +2 -2
  24. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  25. package/.next/server/app/api/agent/[id]/route.js +2 -2
  26. package/.next/server/app/api/agent/new/route.js +1 -1
  27. package/.next/server/app/api/agent/new/route.js.nft.json +1 -1
  28. package/.next/server/app/api/agent/running/route.js +1 -1
  29. package/.next/server/app/api/app-update/route.js +1 -1
  30. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  31. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  32. package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
  33. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  34. package/.next/server/app/api/auth/providers/route.js +1 -1
  35. package/.next/server/app/api/boards/[id]/reconcile/route.js +1 -0
  36. package/.next/server/app/api/boards/[id]/reconcile/route_client-reference-manifest.js +1 -0
  37. package/.next/server/app/api/boards/[id]/route.js +1 -1
  38. package/.next/server/app/api/boards/purge-orphans/route.js +1 -1
  39. package/.next/server/app/api/boards/reorder/route.js +1 -1
  40. package/.next/server/app/api/boards/route.js +1 -1
  41. package/.next/server/app/api/cwd/browse/route.js +1 -1
  42. package/.next/server/app/api/cwd/validate/route.js +2 -2
  43. package/.next/server/app/api/default-cwd/route.js +2 -2
  44. package/.next/server/app/api/file-index/route.js +2 -2
  45. package/.next/server/app/api/files/[...path]/route.js +3 -3
  46. package/.next/server/app/api/files/[...path]/route.js.nft.json +1 -1
  47. package/.next/server/app/api/git/diff/route.js +1 -1
  48. package/.next/server/app/api/git/status/route.js +1 -1
  49. package/.next/server/app/api/home/route.js +1 -1
  50. package/.next/server/app/api/mcp/route.js +1 -1
  51. package/.next/server/app/api/models/route.js +2 -2
  52. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  53. package/.next/server/app/api/models-config/discover/route.js +1 -1
  54. package/.next/server/app/api/models-config/route.js +1 -1
  55. package/.next/server/app/api/models-config/test/route.js +1 -1
  56. package/.next/server/app/api/plugins/route.js +2 -2
  57. package/.next/server/app/api/project-trust/route.js +2 -2
  58. package/.next/server/app/api/quota/route.js +1 -1
  59. package/.next/server/app/api/search/route.js +2 -2
  60. package/.next/server/app/api/sessions/[id]/auto-name/route.js +3 -3
  61. package/.next/server/app/api/sessions/[id]/context/route.js +2 -2
  62. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +2 -2
  63. package/.next/server/app/api/sessions/[id]/export/route.js +2 -2
  64. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  65. package/.next/server/app/api/sessions/[id]/state/route.js +2 -2
  66. package/.next/server/app/api/sessions/[id]/todos/route.js +2 -2
  67. package/.next/server/app/api/sessions/route.js +2 -2
  68. package/.next/server/app/api/skills/check/route.js +1 -1
  69. package/.next/server/app/api/skills/install/route.js +2 -2
  70. package/.next/server/app/api/skills/route.js +1 -1
  71. package/.next/server/app/api/skills/search/route.js +1 -1
  72. package/.next/server/app/api/skills/update/route.js +1 -1
  73. package/.next/server/app/api/task-card-questions/[id]/answer/route.js +1 -1
  74. package/.next/server/app/api/task-card-questions/route.js +1 -1
  75. package/.next/server/app/api/task-cards/[id]/route.js +1 -1
  76. package/.next/server/app/api/task-cards/route.js +1 -1
  77. package/.next/server/app/api/task-scheduler/status/route.js +1 -1
  78. package/.next/server/app/api/tasks/[id]/board/route.js +1 -1
  79. package/.next/server/app/api/tasks/[id]/route.js +1 -1
  80. package/.next/server/app/api/tasks/reorder/route.js +1 -1
  81. package/.next/server/app/api/tasks/route.js +1 -1
  82. package/.next/server/app/api/terminal/[id]/events/route.js +2 -2
  83. package/.next/server/app/api/terminal/[id]/route.js +2 -2
  84. package/.next/server/app/api/terminal/route.js +2 -2
  85. package/.next/server/app/api/worktrees/route.js +2 -2
  86. package/.next/server/app/favicon.ico/route.js +1 -1
  87. package/.next/server/app/index.html +1 -1
  88. package/.next/server/app/index.rsc +5 -5
  89. package/.next/server/app/index.segments/__PAGE__.segment.rsc +5 -5
  90. package/.next/server/app/index.segments/_full.segment.rsc +5 -5
  91. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  92. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  93. package/.next/server/app/page.js +7 -7
  94. package/.next/server/app/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app-paths-manifest.json +9 -14
  96. package/.next/server/chunks/1094.js +2 -2
  97. package/.next/server/chunks/1601.js +1 -1
  98. package/.next/server/chunks/1860.js +1 -1
  99. package/.next/server/chunks/2075.js +1 -1
  100. package/.next/server/chunks/2169.js +1 -1
  101. package/.next/server/chunks/2404.js +1 -1
  102. package/.next/server/chunks/2524.js +1 -0
  103. package/.next/server/chunks/3012.js +1 -1
  104. package/.next/server/chunks/{5760.js → 3379.js} +1 -1
  105. package/.next/server/chunks/3500.js +1 -1
  106. package/.next/server/chunks/4226.js +5 -2
  107. package/.next/server/chunks/4267.js +1 -1
  108. package/.next/server/chunks/4563.js +1 -1
  109. package/.next/server/chunks/5318.js +1 -1
  110. package/.next/server/chunks/542.js +3 -44
  111. package/.next/server/chunks/5794.js +1 -1
  112. package/.next/server/chunks/6052.js +1 -1
  113. package/.next/server/chunks/6253.js +1 -1
  114. package/.next/server/chunks/6288.js +1 -1
  115. package/.next/server/chunks/6366.js +1 -1
  116. package/.next/server/chunks/673.js +1 -1
  117. package/.next/server/chunks/6916.js +2 -2
  118. package/.next/server/chunks/7128.js +43 -0
  119. package/.next/server/chunks/7265.js +2 -2
  120. package/.next/server/chunks/7799.js +1 -1
  121. package/.next/server/chunks/8106.js +1 -1
  122. package/.next/server/chunks/8333.js +1 -1
  123. package/.next/server/chunks/8604.js +1 -1
  124. package/.next/server/chunks/861.js +1 -0
  125. package/.next/server/chunks/8713.js +1 -1
  126. package/.next/server/chunks/8782.js +2 -2
  127. package/.next/server/chunks/898.js +1 -1
  128. package/.next/server/chunks/922.js +2 -2
  129. package/.next/server/chunks/9280.js +6 -6
  130. package/.next/server/chunks/9510.js +1 -1
  131. package/.next/server/instrumentation.js +1 -1
  132. package/.next/server/instrumentation.js.nft.json +1 -1
  133. package/.next/server/middleware-build-manifest.js +1 -1
  134. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  135. package/.next/server/pages/404.html +1 -1
  136. package/.next/server/pages/500.html +1 -1
  137. package/.next/server/server-reference-manifest.json +1 -1
  138. package/.next/static/chunks/{103.23142a67b02246a8.js → 103.6c91a059aa01d92c.js} +2 -2
  139. package/.next/static/chunks/{1032.12b382a9096ab2a4.js → 1032.9e8f793d46f463f8.js} +1 -1
  140. package/.next/static/chunks/{1063.775c442bdbeef08b.js → 1063.470df8a037dc8409.js} +1 -1
  141. package/.next/static/chunks/1a258343.f4fc2c133917ded8.js +2 -0
  142. package/.next/static/chunks/{1ba63609.b2ae90f43319a29e.js → 1ba63609.569928c7234f832c.js} +1 -1
  143. package/.next/static/chunks/{2181.ba21239d3ac39f81.js → 2181.b8dda21843ef5e74.js} +1 -1
  144. package/.next/static/chunks/{2325.23caf22075e51aa5.js → 2325.23e538886331cf64.js} +1 -1
  145. package/.next/static/chunks/{2356.523277bb8c6bf72a.js → 2356.b7312589c345edec.js} +1 -1
  146. package/.next/static/chunks/{268.72794ee2773c2060.js → 268.a1d90aca268be18a.js} +1 -1
  147. package/.next/static/chunks/{2695.6f49435bae1e6f33.js → 2695.5624aa3aae540e87.js} +1 -1
  148. package/.next/static/chunks/{2703.495a65ed14b2f094.js → 2703.097bc88286733740.js} +1 -1
  149. package/.next/static/chunks/{2821.934bcf60fbdc28c6.js → 2821.d2392a93d192fe92.js} +1 -1
  150. package/.next/static/chunks/3308.2cd6f20e6c0f4e92.js +73 -0
  151. package/.next/static/chunks/{3336.a76f9485fe7cb762.js → 3336.9b1dc9ec3507d64f.js} +1 -1
  152. package/.next/static/chunks/3546.779d2c7646aa77cc.js +1 -0
  153. package/.next/static/chunks/{370.8e8f3cf8eb0e29dd.js → 370.cde2a84caa84054f.js} +1 -1
  154. package/.next/static/chunks/{3716.72bf4c9d7325debd.js → 3716.5bac496cea32ca8f.js} +1 -1
  155. package/.next/static/chunks/{3995.eca0f5bef1fc3ae5.js → 3995.cd112debcd64c610.js} +1 -1
  156. package/.next/static/chunks/{4004.74b9bcf5478b1663.js → 4004.a8f79ef62f32aa30.js} +2 -2
  157. package/.next/static/chunks/{4202.8440832386f023c7.js → 4202.96f5b1beb8b3e3f5.js} +1 -1
  158. package/.next/static/chunks/{4238.6f102dcbcf2ae339.js → 4238.28efbf9aa0c82d90.js} +1 -1
  159. package/.next/static/chunks/{4405.7a19458960a1058e.js → 4405.cda46a596a02aef7.js} +1 -1
  160. package/.next/static/chunks/54a60aa6.5e4421e7afde4de8.js +78 -0
  161. package/.next/static/chunks/{6121.eb9023b1cbc78ee2.js → 6121.5e650e714b402b6f.js} +1 -1
  162. package/.next/static/chunks/{6195.1153369f5f8b13a2.js → 6195.1b7f9dc127381bbc.js} +1 -1
  163. package/.next/static/chunks/6380.d148a8e2c701ad78.js +68 -0
  164. package/.next/static/chunks/6582.efef0ed269bacae2.js +1 -0
  165. package/.next/static/chunks/6be7e44c.00d0163f409986f0.js +1 -0
  166. package/.next/static/chunks/{7331.2add3c4e125a2dba.js → 7331.4afa66d6353c8e07.js} +1 -1
  167. package/.next/static/chunks/752.f41a9dcb0e6548eb.js +1 -0
  168. package/.next/static/chunks/{8200.a36b9f8c983c6b9e.js → 8200.350d650649b977eb.js} +1 -1
  169. package/.next/static/chunks/{8885.cf60cac98bf8b70c.js → 8885.2c060cb45c85547b.js} +1 -1
  170. package/.next/static/chunks/{918.6a9bbe564e4a2d0f.js → 918.593eb466d35cb8ad.js} +1 -1
  171. package/.next/static/chunks/{9698.4d09a99b9d99f3e5.js → 9698.758755d0387e0e22.js} +2 -2
  172. package/.next/static/chunks/97.fb73c551e14b3612.js +2 -0
  173. package/.next/static/chunks/{993e5495.8797001fcfcf2889.js → 993e5495.12cdfbc3af5c79e9.js} +1 -1
  174. package/.next/static/chunks/{9974.9a0f79beca65e8c4.js → 9974.5ee982e074ad047e.js} +1 -1
  175. package/.next/static/chunks/app/_global-error/page-bb8f79f321e26750.js +1 -0
  176. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-bb8f79f321e26750.js +1 -0
  177. package/.next/static/chunks/app/api/agent/[id]/events/route-bb8f79f321e26750.js +1 -0
  178. package/.next/static/chunks/app/api/agent/[id]/route-bb8f79f321e26750.js +1 -0
  179. package/.next/static/chunks/app/api/agent/new/route-bb8f79f321e26750.js +1 -0
  180. package/.next/static/chunks/app/api/agent/running/route-bb8f79f321e26750.js +1 -0
  181. package/.next/static/chunks/app/api/app-update/route-bb8f79f321e26750.js +1 -0
  182. package/.next/static/chunks/app/api/auth/all-providers/route-bb8f79f321e26750.js +1 -0
  183. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-bb8f79f321e26750.js +1 -0
  184. package/.next/static/chunks/app/api/auth/login/[provider]/route-bb8f79f321e26750.js +1 -0
  185. package/.next/static/chunks/app/api/auth/logout/[provider]/route-bb8f79f321e26750.js +1 -0
  186. package/.next/static/chunks/app/api/auth/providers/route-bb8f79f321e26750.js +1 -0
  187. package/.next/static/chunks/app/api/boards/[id]/reconcile/route-bb8f79f321e26750.js +1 -0
  188. package/.next/static/chunks/app/api/boards/[id]/route-bb8f79f321e26750.js +1 -0
  189. package/.next/static/chunks/app/api/boards/purge-orphans/route-bb8f79f321e26750.js +1 -0
  190. package/.next/static/chunks/app/api/boards/reorder/route-bb8f79f321e26750.js +1 -0
  191. package/.next/static/chunks/app/api/boards/route-bb8f79f321e26750.js +1 -0
  192. package/.next/static/chunks/app/api/cwd/browse/route-bb8f79f321e26750.js +1 -0
  193. package/.next/static/chunks/app/api/cwd/validate/route-bb8f79f321e26750.js +1 -0
  194. package/.next/static/chunks/app/api/default-cwd/route-bb8f79f321e26750.js +1 -0
  195. package/.next/static/chunks/app/api/file-index/route-bb8f79f321e26750.js +1 -0
  196. package/.next/static/chunks/app/api/files/[...path]/route-bb8f79f321e26750.js +1 -0
  197. package/.next/static/chunks/app/api/git/diff/route-bb8f79f321e26750.js +1 -0
  198. package/.next/static/chunks/app/api/git/status/route-bb8f79f321e26750.js +1 -0
  199. package/.next/static/chunks/app/api/home/route-bb8f79f321e26750.js +1 -0
  200. package/.next/static/chunks/app/api/mcp/route-bb8f79f321e26750.js +1 -0
  201. package/.next/static/chunks/app/api/models/route-bb8f79f321e26750.js +1 -0
  202. package/.next/static/chunks/app/api/models-config/catalog/route-bb8f79f321e26750.js +1 -0
  203. package/.next/static/chunks/app/api/models-config/discover/route-bb8f79f321e26750.js +1 -0
  204. package/.next/static/chunks/app/api/models-config/route-bb8f79f321e26750.js +1 -0
  205. package/.next/static/chunks/app/api/models-config/test/route-bb8f79f321e26750.js +1 -0
  206. package/.next/static/chunks/app/api/plugins/route-bb8f79f321e26750.js +1 -0
  207. package/.next/static/chunks/app/api/project-trust/route-bb8f79f321e26750.js +1 -0
  208. package/.next/static/chunks/app/api/quota/route-bb8f79f321e26750.js +1 -0
  209. package/.next/static/chunks/app/api/search/route-bb8f79f321e26750.js +1 -0
  210. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-bb8f79f321e26750.js +1 -0
  211. package/.next/static/chunks/app/api/sessions/[id]/context/route-bb8f79f321e26750.js +1 -0
  212. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-bb8f79f321e26750.js +1 -0
  213. package/.next/static/chunks/app/api/sessions/[id]/export/route-bb8f79f321e26750.js +1 -0
  214. package/.next/static/chunks/app/api/sessions/[id]/route-bb8f79f321e26750.js +1 -0
  215. package/.next/static/chunks/app/api/sessions/[id]/state/route-bb8f79f321e26750.js +1 -0
  216. package/.next/static/chunks/app/api/sessions/[id]/todos/route-bb8f79f321e26750.js +1 -0
  217. package/.next/static/chunks/app/api/sessions/route-bb8f79f321e26750.js +1 -0
  218. package/.next/static/chunks/app/api/skills/check/route-bb8f79f321e26750.js +1 -0
  219. package/.next/static/chunks/app/api/skills/install/route-bb8f79f321e26750.js +1 -0
  220. package/.next/static/chunks/app/api/skills/route-bb8f79f321e26750.js +1 -0
  221. package/.next/static/chunks/app/api/skills/search/route-bb8f79f321e26750.js +1 -0
  222. package/.next/static/chunks/app/api/skills/update/route-bb8f79f321e26750.js +1 -0
  223. package/.next/static/chunks/app/api/task-card-questions/[id]/answer/route-bb8f79f321e26750.js +1 -0
  224. package/.next/static/chunks/app/api/task-card-questions/route-bb8f79f321e26750.js +1 -0
  225. package/.next/static/chunks/app/api/task-cards/[id]/route-bb8f79f321e26750.js +1 -0
  226. package/.next/static/chunks/app/api/task-cards/route-bb8f79f321e26750.js +1 -0
  227. package/.next/static/chunks/app/api/task-scheduler/status/route-bb8f79f321e26750.js +1 -0
  228. package/.next/static/chunks/app/api/tasks/[id]/board/route-bb8f79f321e26750.js +1 -0
  229. package/.next/static/chunks/app/api/tasks/[id]/route-bb8f79f321e26750.js +1 -0
  230. package/.next/static/chunks/app/api/tasks/reorder/route-bb8f79f321e26750.js +1 -0
  231. package/.next/static/chunks/app/api/tasks/route-bb8f79f321e26750.js +1 -0
  232. package/.next/static/chunks/app/api/terminal/[id]/events/route-bb8f79f321e26750.js +1 -0
  233. package/.next/static/chunks/app/api/terminal/[id]/route-bb8f79f321e26750.js +1 -0
  234. package/.next/static/chunks/app/api/terminal/route-bb8f79f321e26750.js +1 -0
  235. package/.next/static/chunks/app/api/worktrees/route-bb8f79f321e26750.js +1 -0
  236. package/.next/static/chunks/app/{layout-7761e430ed68b347.js → layout-702d3c97d297c42d.js} +1 -1
  237. package/.next/static/chunks/app/manifest.webmanifest/route-bb8f79f321e26750.js +1 -0
  238. package/.next/static/chunks/app/page-fd18462c3c937a50.js +89 -0
  239. package/.next/static/chunks/next/dist/client/components/builtin/app-error-bb8f79f321e26750.js +1 -0
  240. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-bb8f79f321e26750.js +1 -0
  241. package/.next/static/chunks/next/dist/client/components/builtin/not-found-bb8f79f321e26750.js +1 -0
  242. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-bb8f79f321e26750.js +1 -0
  243. package/.next/static/chunks/webpack-d17b4dde91b96c63.js +1 -0
  244. package/.next/static/css/0c7244f7214af81f.css +1 -0
  245. package/.next/static/css/12456255969ac8de.css +31 -0
  246. package/.next/trace +43 -49
  247. package/.next/trace-build +1 -1
  248. package/.next/types/app/api/boards/[id]/{reconcile-task-edges → reconcile}/route.ts +3 -3
  249. package/.next/types/routes.d.ts +2 -7
  250. package/.next/types/validator.ts +3 -48
  251. package/README.md +6 -9
  252. package/THIRD_PARTY_NOTICES.md +10 -82
  253. package/bin/pi-web-sky.js +3 -3
  254. package/lib/board-reconcile-scheduler.ts +56 -0
  255. package/lib/board-reconcile.test.mjs +252 -0
  256. package/lib/board-reconcile.ts +422 -0
  257. package/lib/board-store.test.mjs +26 -4
  258. package/lib/board-store.ts +44 -6
  259. package/lib/i18n/messages/en.ts +1 -1
  260. package/lib/i18n/messages/zh-CN.ts +1 -1
  261. package/lib/session-delete.ts +5 -0
  262. package/lib/sqlite-db.ts +13 -1
  263. package/lib/task-card-store.ts +26 -1
  264. package/lib/task-scheduler.test.mjs +79 -0
  265. package/lib/task-scheduler.ts +195 -21
  266. package/lib/yjs-room-server.mjs +139 -0
  267. package/package.json +12 -9
  268. package/server.mjs +7 -7
  269. package/.next/server/app/api/boards/[id]/canvas/route.js +0 -1
  270. package/.next/server/app/api/boards/[id]/canvas/route_client-reference-manifest.js +0 -1
  271. package/.next/server/app/api/boards/[id]/edges/[eid]/route.js +0 -1
  272. package/.next/server/app/api/boards/[id]/edges/[eid]/route.js.nft.json +0 -1
  273. package/.next/server/app/api/boards/[id]/edges/[eid]/route_client-reference-manifest.js +0 -1
  274. package/.next/server/app/api/boards/[id]/edges/route.js +0 -1
  275. package/.next/server/app/api/boards/[id]/edges/route.js.nft.json +0 -1
  276. package/.next/server/app/api/boards/[id]/edges/route_client-reference-manifest.js +0 -1
  277. package/.next/server/app/api/boards/[id]/nodes/[nid]/route.js +0 -1
  278. package/.next/server/app/api/boards/[id]/nodes/[nid]/route.js.nft.json +0 -1
  279. package/.next/server/app/api/boards/[id]/nodes/[nid]/route_client-reference-manifest.js +0 -1
  280. package/.next/server/app/api/boards/[id]/nodes/route.js +0 -1
  281. package/.next/server/app/api/boards/[id]/nodes/route.js.nft.json +0 -1
  282. package/.next/server/app/api/boards/[id]/nodes/route_client-reference-manifest.js +0 -1
  283. package/.next/server/app/api/boards/[id]/reconcile-task-edges/route.js +0 -1
  284. package/.next/server/app/api/boards/[id]/reconcile-task-edges/route.js.nft.json +0 -1
  285. package/.next/server/app/api/boards/[id]/reconcile-task-edges/route_client-reference-manifest.js +0 -1
  286. package/.next/static/chunks/3308.857c554428b3294e.js +0 -73
  287. package/.next/static/chunks/333.bf0651c789b2eb33.js +0 -1
  288. package/.next/static/chunks/5315.dba7515ae6e139ae.js +0 -4
  289. package/.next/static/chunks/54a60aa6.0e43cde7298ebcb7.js +0 -78
  290. package/.next/static/chunks/7999.879d5a20e8641752.js +0 -259
  291. package/.next/static/chunks/app/_global-error/page-d6f52627eddf9119.js +0 -1
  292. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-d6f52627eddf9119.js +0 -1
  293. package/.next/static/chunks/app/api/agent/[id]/events/route-d6f52627eddf9119.js +0 -1
  294. package/.next/static/chunks/app/api/agent/[id]/route-d6f52627eddf9119.js +0 -1
  295. package/.next/static/chunks/app/api/agent/new/route-d6f52627eddf9119.js +0 -1
  296. package/.next/static/chunks/app/api/agent/running/route-d6f52627eddf9119.js +0 -1
  297. package/.next/static/chunks/app/api/app-update/route-d6f52627eddf9119.js +0 -1
  298. package/.next/static/chunks/app/api/auth/all-providers/route-d6f52627eddf9119.js +0 -1
  299. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-d6f52627eddf9119.js +0 -1
  300. package/.next/static/chunks/app/api/auth/login/[provider]/route-d6f52627eddf9119.js +0 -1
  301. package/.next/static/chunks/app/api/auth/logout/[provider]/route-d6f52627eddf9119.js +0 -1
  302. package/.next/static/chunks/app/api/auth/providers/route-d6f52627eddf9119.js +0 -1
  303. package/.next/static/chunks/app/api/boards/[id]/canvas/route-d6f52627eddf9119.js +0 -1
  304. package/.next/static/chunks/app/api/boards/[id]/edges/[eid]/route-d6f52627eddf9119.js +0 -1
  305. package/.next/static/chunks/app/api/boards/[id]/edges/route-d6f52627eddf9119.js +0 -1
  306. package/.next/static/chunks/app/api/boards/[id]/nodes/[nid]/route-d6f52627eddf9119.js +0 -1
  307. package/.next/static/chunks/app/api/boards/[id]/nodes/route-d6f52627eddf9119.js +0 -1
  308. package/.next/static/chunks/app/api/boards/[id]/reconcile-task-edges/route-d6f52627eddf9119.js +0 -1
  309. package/.next/static/chunks/app/api/boards/[id]/route-d6f52627eddf9119.js +0 -1
  310. package/.next/static/chunks/app/api/boards/purge-orphans/route-d6f52627eddf9119.js +0 -1
  311. package/.next/static/chunks/app/api/boards/reorder/route-d6f52627eddf9119.js +0 -1
  312. package/.next/static/chunks/app/api/boards/route-d6f52627eddf9119.js +0 -1
  313. package/.next/static/chunks/app/api/cwd/browse/route-d6f52627eddf9119.js +0 -1
  314. package/.next/static/chunks/app/api/cwd/validate/route-d6f52627eddf9119.js +0 -1
  315. package/.next/static/chunks/app/api/default-cwd/route-d6f52627eddf9119.js +0 -1
  316. package/.next/static/chunks/app/api/file-index/route-d6f52627eddf9119.js +0 -1
  317. package/.next/static/chunks/app/api/files/[...path]/route-d6f52627eddf9119.js +0 -1
  318. package/.next/static/chunks/app/api/git/diff/route-d6f52627eddf9119.js +0 -1
  319. package/.next/static/chunks/app/api/git/status/route-d6f52627eddf9119.js +0 -1
  320. package/.next/static/chunks/app/api/home/route-d6f52627eddf9119.js +0 -1
  321. package/.next/static/chunks/app/api/mcp/route-d6f52627eddf9119.js +0 -1
  322. package/.next/static/chunks/app/api/models/route-d6f52627eddf9119.js +0 -1
  323. package/.next/static/chunks/app/api/models-config/catalog/route-d6f52627eddf9119.js +0 -1
  324. package/.next/static/chunks/app/api/models-config/discover/route-d6f52627eddf9119.js +0 -1
  325. package/.next/static/chunks/app/api/models-config/route-d6f52627eddf9119.js +0 -1
  326. package/.next/static/chunks/app/api/models-config/test/route-d6f52627eddf9119.js +0 -1
  327. package/.next/static/chunks/app/api/plugins/route-d6f52627eddf9119.js +0 -1
  328. package/.next/static/chunks/app/api/project-trust/route-d6f52627eddf9119.js +0 -1
  329. package/.next/static/chunks/app/api/quota/route-d6f52627eddf9119.js +0 -1
  330. package/.next/static/chunks/app/api/search/route-d6f52627eddf9119.js +0 -1
  331. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-d6f52627eddf9119.js +0 -1
  332. package/.next/static/chunks/app/api/sessions/[id]/context/route-d6f52627eddf9119.js +0 -1
  333. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-d6f52627eddf9119.js +0 -1
  334. package/.next/static/chunks/app/api/sessions/[id]/export/route-d6f52627eddf9119.js +0 -1
  335. package/.next/static/chunks/app/api/sessions/[id]/route-d6f52627eddf9119.js +0 -1
  336. package/.next/static/chunks/app/api/sessions/[id]/state/route-d6f52627eddf9119.js +0 -1
  337. package/.next/static/chunks/app/api/sessions/[id]/todos/route-d6f52627eddf9119.js +0 -1
  338. package/.next/static/chunks/app/api/sessions/route-d6f52627eddf9119.js +0 -1
  339. package/.next/static/chunks/app/api/skills/check/route-d6f52627eddf9119.js +0 -1
  340. package/.next/static/chunks/app/api/skills/install/route-d6f52627eddf9119.js +0 -1
  341. package/.next/static/chunks/app/api/skills/route-d6f52627eddf9119.js +0 -1
  342. package/.next/static/chunks/app/api/skills/search/route-d6f52627eddf9119.js +0 -1
  343. package/.next/static/chunks/app/api/skills/update/route-d6f52627eddf9119.js +0 -1
  344. package/.next/static/chunks/app/api/task-card-questions/[id]/answer/route-d6f52627eddf9119.js +0 -1
  345. package/.next/static/chunks/app/api/task-card-questions/route-d6f52627eddf9119.js +0 -1
  346. package/.next/static/chunks/app/api/task-cards/[id]/route-d6f52627eddf9119.js +0 -1
  347. package/.next/static/chunks/app/api/task-cards/route-d6f52627eddf9119.js +0 -1
  348. package/.next/static/chunks/app/api/task-scheduler/status/route-d6f52627eddf9119.js +0 -1
  349. package/.next/static/chunks/app/api/tasks/[id]/board/route-d6f52627eddf9119.js +0 -1
  350. package/.next/static/chunks/app/api/tasks/[id]/route-d6f52627eddf9119.js +0 -1
  351. package/.next/static/chunks/app/api/tasks/reorder/route-d6f52627eddf9119.js +0 -1
  352. package/.next/static/chunks/app/api/tasks/route-d6f52627eddf9119.js +0 -1
  353. package/.next/static/chunks/app/api/terminal/[id]/events/route-d6f52627eddf9119.js +0 -1
  354. package/.next/static/chunks/app/api/terminal/[id]/route-d6f52627eddf9119.js +0 -1
  355. package/.next/static/chunks/app/api/terminal/route-d6f52627eddf9119.js +0 -1
  356. package/.next/static/chunks/app/api/worktrees/route-d6f52627eddf9119.js +0 -1
  357. package/.next/static/chunks/app/manifest.webmanifest/route-d6f52627eddf9119.js +0 -1
  358. package/.next/static/chunks/app/page-2c87c41e7f848f45.js +0 -89
  359. package/.next/static/chunks/e3e7ddb2.a35db430b3564999.js +0 -1
  360. package/.next/static/chunks/next/dist/client/components/builtin/app-error-d6f52627eddf9119.js +0 -1
  361. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-d6f52627eddf9119.js +0 -1
  362. package/.next/static/chunks/next/dist/client/components/builtin/not-found-d6f52627eddf9119.js +0 -1
  363. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d6f52627eddf9119.js +0 -1
  364. package/.next/static/chunks/webpack-4bbf04891e910713.js +0 -1
  365. package/.next/static/css/80c818c5781fbadc.css +0 -4
  366. package/.next/static/css/d3a2b5077b52c727.css +0 -1
  367. package/.next/types/app/api/boards/[id]/canvas/route.ts +0 -353
  368. package/.next/types/app/api/boards/[id]/edges/[eid]/route.ts +0 -353
  369. package/.next/types/app/api/boards/[id]/edges/route.ts +0 -353
  370. package/.next/types/app/api/boards/[id]/nodes/[nid]/route.ts +0 -353
  371. package/.next/types/app/api/boards/[id]/nodes/route.ts +0 -353
  372. package/lib/board-search.test.mjs +0 -110
  373. package/lib/board-search.ts +0 -63
  374. package/lib/file-explorer-state.test.mjs +0 -63
  375. package/lib/file-explorer-state.ts +0 -36
  376. package/lib/sync-room-server.mjs +0 -137
  377. /package/.next/server/app/api/boards/[id]/{canvas → reconcile}/route.js.nft.json +0 -0
  378. /package/.next/static/{IzmOG04jJst1VpUvr_fr5 → 12RFLqhiUZG8Sj49T1KKQ}/_buildManifest.js +0 -0
  379. /package/.next/static/{IzmOG04jJst1VpUvr_fr5 → 12RFLqhiUZG8Sj49T1KKQ}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[333],{20333:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CanvasStage:()=>m});var s=n(95155);n(66648);var r=n(12115),i=n(23312),o=n(82264),a=n(41264);class l extends i.QVi{static{this.id="note"}static{this.initial="idle"}constructor(...e){super(...e),this.shapeType="sticky-note"}}var d=n(26479);class c extends i.QVi{static{this.id="task-card"}static{this.initial="idle"}constructor(...e){super(...e),this.shapeType="task-card"}}var u=n(94119);let x=new Set(["prerequisite","related"]);function p(){let e=(0,i.hGv)(),t=(0,i.hau)("ctx-selection",()=>e.getSelectedShapes(),[e]).map(e=>e.meta).find(e=>e?.taskLinkLabel!==void 0&&x.has(e.taskLinkLabel)||e?.execLinkLabel!==void 0);if(!t)return(0,s.jsx)(i.HQo,{});let n=t.execLinkLabel?"执行会话连线(自动生成,不可删除)":"依赖连线(自动生成,不可删除)";return(0,s.jsx)(s.Fragment,{children:(0,s.jsx)(i.FUD,{id:"task-link",children:(0,s.jsx)(i.LRd,{id:"task-link-readonly",label:n,disabled:!0,noClose:!0,onSelect:()=>{}})})})}let h=(0,r.memo)(function({children:e,disabled:t=!1}){let n=(0,i.hGv)(),o=(0,i.Bdt)(),{Canvas:a}=(0,i.BSi)(),l=(0,i.hau)("context menu can open",()=>!n.getInstanceState().isCoarsePointer||n.isIn("select"),[n]),d=(0,r.useCallback)(e=>{"Escape"===e.key&&(e.stopPropagation(),n.getContainer().focus())},[n]);(0,r.useEffect)(()=>{let e=n.getContainer().ownerDocument.body;return()=>{e.removeEventListener("keydown",d,{capture:!0})}},[n,d]);let c=(0,r.useRef)(0),x=(0,r.useCallback)(e=>{let t=n.getContainer().ownerDocument.body;if(e){if(t.addEventListener("keydown",d,{capture:!0}),n.getInstanceState().isCoarsePointer){c.current=Date.now()+500;let e=n.getSelectedShapes(),t=n.inputs.getCurrentPagePoint(),s=n.getShapesAtPoint(t);if(!n.getSelectedShapes().length||!s.some(t=>e.includes(t))){let e=s.filter(e=>n.isShapeOrAncestorLocked(e));e.length&&n.select(...e.map(e=>e.id))}}}else{let e=n.getOnlySelectedShape();e&&n.isShapeOrAncestorLocked(e)&&n.setSelectedShapes([]),n.timers.requestAnimationFrame(()=>{t.removeEventListener("keydown",d,{capture:!0})})}},[n,d]),h=(0,i.NFA)(),g=(0,i.jH7)(),[j,f]=(0,i.FxY)("context menu",x),v=e??(0,s.jsx)(p,{});return(0,s.jsxs)(u.bL,{dir:g,open:j,onOpenChange:f,modal:!1,children:[(0,s.jsx)(u.l9,{onContextMenu:l?void 0:i.woC,dir:"ltr",disabled:t||!l,children:a?(0,s.jsx)(a,{}):null}),j&&(0,s.jsx)(u.ZL,{container:h,children:(0,s.jsx)(u.UC,{className:"tlui-menu tlui-scrollable","data-testid":"context-menu","aria-label":o("context-menu.title"),alignOffset:-4,collisionPadding:4,onContextMenu:i.woC,onPointerDownOutside:e=>{Date.now()<c.current&&e.preventDefault()},onInteractOutside:e=>{Date.now()<c.current&&e.preventDefault()},onFocusOutside:e=>{Date.now()<c.current&&e.preventDefault()},children:(0,s.jsx)(i.Cgn,{type:"context-menu",sourceId:"context-menu",children:v})})})]})});var g=n(39247);let j=[...i.Ats,o.V,a.QQ,d.o_],f=[{tools(e,t){let n=t.note;return{...n?{...t,note:{...n,onSelect:t=>{e.setCurrentTool("note"),n.onSelect?.(t)},onDragStart:(t,n)=>(function(e,t){if(e.isIn("select.translating")&&1===e.getSelectedShapeIds().length&&e.getOnlySelectedShape()?.type==="sticky-note")return;let{x:n,y:s}=e.inputs.getCurrentPagePoint(),r=(0,i.n6Y)(),o=e.markHistoryStoppingPoint("drag sticky-note");e.createShape({id:r,type:"sticky-note",x:n,y:s});let a=e.getShape(r);if(!a)return void e.setCurrentTool("select.idle");let l=e.getShapePageBounds(r),d=l?.w??260,c=l?.h??200;e.updateShape({id:r,type:"sticky-note",x:n-d/2,y:s-c/2}),e.select(r),e.setCurrentTool("select.translating",{...t,target:"shape",shape:a,isCreating:!0,creatingMarkId:o,onCreate(){e.setCurrentTool("select.idle"),e.select(r)}})})(e,n)}}:t,"task-card":{id:"task-card",label:"任务卡",icon:(0,s.jsxs)("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,s.jsx)("rect",{x:"3",y:"5",width:"18",height:"14",rx:"2"}),(0,s.jsx)("path",{d:"M3 10h18M8 15h4"})]}),onSelect:()=>{e.setCurrentTool("task-card")},onDragStart:(t,n)=>(function(e,t){if(e.isIn("select.translating")&&1===e.getSelectedShapeIds().length&&e.getOnlySelectedShape()?.type==="task-card")return;let{x:n,y:s}=e.inputs.getCurrentPagePoint(),r=(0,i.n6Y)(),o=e.markHistoryStoppingPoint("drag task-card");e.createShape({id:r,type:"task-card",x:n,y:s});let a=e.getShape(r);if(!a)return void e.setCurrentTool("select.idle");let l=e.getShapePageBounds(r),d=l?.w??380,c=l?.h??270;e.updateShape({id:r,type:"task-card",x:n-d/2,y:s-c/2}),e.select(r),e.setCurrentTool("select.translating",{...t,target:"shape",shape:a,isCreating:!0,creatingMarkId:o,onCreate(){e.setCurrentTool("select.idle"),e.select(r)}})})(e,n)}}}}];function v(){return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.bIq,{}),(0,s.jsx)(i.ikG,{}),(0,s.jsx)(i.fPn,{}),(0,s.jsx)(i.L4x,{}),(0,s.jsx)(i._LY,{}),(0,s.jsx)(i.SDB,{}),(0,s.jsx)(i.l7k,{}),(0,s.jsx)(i.Tme,{tool:"task-card"}),(0,s.jsx)(i.jhL,{}),(0,s.jsx)(i.GN7,{}),(0,s.jsx)(i.foZ,{}),(0,s.jsx)(i.jY,{}),(0,s.jsx)(i.h4e,{}),(0,s.jsx)(i.fnc,{}),(0,s.jsx)(i.jkh,{}),(0,s.jsx)(i.D7F,{}),(0,s.jsx)(i.bKc,{}),(0,s.jsx)(i.Yem,{}),(0,s.jsx)(i.hUo,{}),(0,s.jsx)(i.gPO,{}),(0,s.jsx)(i.Unq,{}),(0,s.jsx)(i.ZCT,{}),(0,s.jsx)(i.P3o,{}),(0,s.jsx)(i.cee,{}),(0,s.jsx)(i.EF7,{}),(0,s.jsx)(i.dEX,{}),(0,s.jsx)(i.RIo,{}),(0,s.jsx)(i.Yby,{}),(0,s.jsx)(i.Gto,{})]})}function S({children:e}){return(0,s.jsx)("div",{className:"tlui-style-panel__section",children:e})}function k(){return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(S,{children:(0,s.jsx)(i.pY9,{})}),(0,s.jsxs)(S,{children:[(0,s.jsx)(i.tJe,{}),(0,s.jsx)(i.Isx,{}),(0,s.jsx)(i.pPo,{})]}),(0,s.jsxs)(S,{children:[(0,s.jsx)(i.$EK,{}),(0,s.jsx)(i.k2C,{}),(0,s.jsx)(i.f1t,{})]}),(0,s.jsxs)(S,{children:[(0,s.jsx)(i.C_T,{}),(0,s.jsx)(i.dGg,{}),(0,s.jsx)(i.JGv,{}),(0,s.jsx)(i.hLL,{})]})]})}function y(e){return(0,s.jsx)("div",{style:{position:"absolute",right:10,bottom:10,zIndex:70,maxHeight:"70%",overflow:"hidden",pointerEvents:"none"},children:(0,s.jsx)(i.Hif,{...e,children:(0,s.jsx)(k,{})})})}function m({board:e,isDark:t}){let{t:n}=(0,g.s)(),[o,a]=(0,r.useState)(!1),d=(0,r.useRef)(null);(0,r.useEffect)(()=>{let t=d.current;if(!t)return;let n=e=>{e.dataTransfer?.types.includes("text/session-id")&&(e.preventDefault(),e.dataTransfer.dropEffect="move",a(!0))},s=()=>a(!1),r=n=>{if(!n.dataTransfer?.types.includes("text/session-id"))return;n.preventDefault(),n.stopPropagation(),a(!1);let s=n.dataTransfer.getData("text/session-id");if(!s)return;let r=t.getBoundingClientRect(),i=n.clientX-r.left,o=n.clientY-r.top;e.addSessionNode(s,i,o)};return t.addEventListener("dragover",n,!0),t.addEventListener("dragleave",s,!0),t.addEventListener("drop",r,!0),()=>{t.removeEventListener("dragover",n,!0),t.removeEventListener("dragleave",s,!0),t.removeEventListener("drop",r,!0)}},[e]);let u=(0,r.useMemo)(()=>({ActionsMenu:null,HelpMenu:null,MainMenu:null,PageMenu:null,SharePanel:null,MenuPanel:null,TopPanel:null,LoadingScreen:null,StylePanel:e=>(0,s.jsx)(y,{...e}),ContextMenu:h,KeyboardShortcutsDialog:null,DebugPanel:null,DebugMenu:null,Toolbar:()=>(0,s.jsx)(i.F0h,{children:(0,s.jsx)(v,{})})}),[]);return(0,s.jsx)("div",{style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",position:"relative"},children:(0,s.jsxs)("div",{ref:d,style:{flex:1,minHeight:0,position:"relative"},children:[(0,s.jsx)("div",{style:{position:"absolute",inset:0,zIndex:0,pointerEvents:"none",background:"var(--board-scrim-bg)",backdropFilter:"var(--board-scrim-filter, none)",WebkitBackdropFilter:"var(--board-scrim-filter, none)"}}),o&&(0,s.jsx)("div",{style:{position:"absolute",inset:0,zIndex:30,display:"flex",alignItems:"center",justifyContent:"center",background:"color-mix(in srgb, var(--accent) 10%, transparent)",border:"2px dashed var(--accent)",borderRadius:10,pointerEvents:"none",color:"var(--accent)",fontSize:13,fontWeight:600},children:n("boards.dropToAdd")}),e.error?(0,s.jsx)("div",{style:{position:"absolute",inset:0,zIndex:30,display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:e.error}):e.loading||!e.syncStore||"synced-remote"!==e.syncStore.status?(0,s.jsx)("div",{style:{position:"absolute",inset:0,zIndex:30,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(8, 14, 30, 0.85)",color:"rgba(255, 255, 255, 0.85)",fontSize:13},children:(0,s.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,s.jsx)("span",{"aria-hidden":!0,style:{width:14,height:14,borderRadius:"50%",border:"2px solid rgba(255, 255, 255, 0.18)",borderTopColor:"rgba(255, 255, 255, 0.9)",animation:"spin 0.8s linear infinite"}}),n("boards.loadingCanvas")]})}):(0,s.jsx)(i.Z1z,{store:e.syncStore.store,options:{maxPages:1},shapeUtils:j,tools:[l,c],overrides:f,onMount:t=>{t.user.updateUserPreferences({isSnapMode:!0}),e.onMount(t),t.focus()},components:u,autoFocus:!1,colorScheme:t?"dark":"light"})]})})}},66648:()=>{}}]);
@@ -1,4 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5315],{15315:(e,t,r)=>{r.r(t),r.d(t,{SessionCanvas:()=>g});var n=r(95155),o=r(12115),i=r(37206),a=r(39247),s=r(96793),l=r(64536),d=r(71309),c=r(34229),u=r(26479),p=r(24456);function h({editor:e,inputRef:t}){let{t:r}=(0,a.s)(),{setHighlight:i}=(0,d.kz)(),[s,l]=(0,o.useState)(""),[c,u]=(0,o.useState)(!1),[p,x]=(0,o.useState)(-1),g=(0,o.useRef)(null),f=t??g,b=(0,o.useMemo)(()=>{var t;let r;return e?(t=function(e){let t=[];for(let r of e.getCurrentPageShapes())if("session-card"===r.type){let e=String(r.props.title??"").trim();e&&t.push({shapeId:r.id,kind:"session-card",text:e})}else if("sticky-note"===r.type){let e=String(r.props.text??"").trim();e&&t.push({shapeId:r.id,kind:"sticky-note",text:e})}return t}(e),0===(r=s.trim().toLowerCase().split(/\s+/).filter(Boolean)).length?[]:t.filter(e=>{let t=e.text.toLowerCase();return r.every(e=>t.includes(e))}).map(e=>({item:e,snippet:function(e,t,r=44){let n=t.trim().toLowerCase(),o=e.toLowerCase().indexOf(n);if(o<0)return e.length>r?`${e.slice(0,r)}…`:e;let i=Math.max(0,o-Math.floor((r-n.length)/2)),a=Math.min(e.length,i+r),s=i>0?"…":"",l=a<e.length?"…":"";return`${s}${e.slice(i,a)}${l}`}(e.text,r[0])}))):[]},[e,s]),v=(0,o.useCallback)(t=>{if(!e)return;let r=b[t];if(!r)return;let n=e.getShape(r.item.shapeId);if(!n)return;let o=e.getShapePageBounds(n.id);o&&(e.centerOnPoint(o.center,{animation:{duration:300}}),e.select(n.id),i(n.id),x(t))},[e,b,i]),y=(0,o.useCallback)(()=>{0!==b.length&&v((p+1)%b.length)},[b,p,v]),m=(0,o.useCallback)(()=>{0!==b.length&&v((p-1+b.length)%b.length)},[b,p,v]),w=(0,o.useCallback)(e=>{"Enter"===e.key||"ArrowDown"===e.key?(e.preventDefault(),y()):"ArrowUp"===e.key?(e.preventDefault(),m()):"Escape"===e.key&&(e.preventDefault(),c?u(!1):(l(""),x(-1),f.current?.blur()))},[c,y,m,f]),k=c&&s.trim().length>0;return(0,n.jsxs)("div",{style:{position:"relative",width:280},"data-testid":"board-search",children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,height:34,padding:"0 8px 0 10px",borderRadius:999,background:"var(--board-card-glass)",backdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",WebkitBackdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)",boxShadow:"0 2px 12px -6px rgba(0,0,0,0.18)"},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",style:{color:"var(--text-dim)",flexShrink:0},children:[(0,n.jsx)("circle",{cx:"11",cy:"11",r:"8"}),(0,n.jsx)("path",{d:"m21 21-4.35-4.35"})]}),(0,n.jsx)("input",{ref:f,value:s,onChange:e=>{l(e.target.value),x(-1),u(!0)},onKeyDown:w,onFocus:()=>{s.trim()&&u(!0)},onBlur:()=>u(!1),onPointerDown:e=>e.stopPropagation(),placeholder:r("boards.searchPlaceholder"),spellCheck:!1,"aria-label":r("boards.searchPlaceholder"),style:{flex:1,minWidth:0,border:"none",outline:"none",background:"transparent",color:"var(--text)",fontSize:12.5,fontFamily:"inherit"}}),s&&(0,n.jsx)("button",{type:"button",title:r("common.close"),onPointerDown:e=>e.stopPropagation(),onClick:()=>{l(""),x(-1),f.current?.focus()},style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:18,height:18,padding:0,border:"none",borderRadius:"50%",background:"color-mix(in srgb, var(--border) 35%, transparent)",color:"var(--text-muted)",cursor:"pointer",fontSize:11,lineHeight:1},children:"\xd7"})]}),k&&(0,n.jsx)("div",{"data-testid":"board-search-dropdown",onPointerDown:e=>e.stopPropagation(),style:{position:"absolute",top:40,left:0,right:0,zIndex:60,maxHeight:320,overflowY:"auto",borderRadius:12,padding:4,background:"var(--board-card-glass)",backdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",WebkitBackdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)",boxShadow:"0 4px 18px -6px rgba(0,0,0,0.28)"},children:0===b.length?(0,n.jsx)("div",{style:{padding:"8px 12px",fontSize:12,color:"var(--text-muted)"},children:r("boards.searchNoResults")}):b.map((e,t)=>{let o=t===p;return(0,n.jsxs)("button",{type:"button",onMouseDown:e=>e.preventDefault(),onClick:()=>v(t),style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 10px",border:"none",borderRadius:8,background:o?"color-mix(in srgb, var(--accent) 14%, transparent)":"transparent",color:"var(--text)",fontSize:12.5,textAlign:"left",cursor:"pointer"},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{flexShrink:0,display:"inline-flex",color:o?"var(--accent)":"var(--text-dim)"},children:"session-card"===e.item.kind?(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})}):(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M15.5 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2V8.5L15.5 3z"}),(0,n.jsx)("path",{d:"M15 3v6h6"})]})}),(0,n.jsx)("span",{style:{minWidth:0,flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.snippet}),(0,n.jsx)("span",{style:{flexShrink:0,fontSize:10,color:"var(--text-dim)"},children:"session-card"===e.item.kind?r("boards.searchSession"):r("boards.searchNote")})]},e.item.shapeId)})})]})}let x=(0,i.default)(()=>Promise.all([r.e(6009),r.e(333)]).then(r.bind(r,20333)).then(e=>e.CanvasStage),{loadableGenerated:{webpack:()=>[20333]},ssr:!1,loading:()=>(0,n.jsx)("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(8, 14, 30, 0.85)",color:"rgba(255, 255, 255, 0.85)",fontSize:13},children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{width:14,height:14,borderRadius:"50%",border:"2px solid rgba(255, 255, 255, 0.18)",borderTopColor:"rgba(255, 255, 255, 0.9)",animation:"spin 0.8s linear infinite"}}),"正在加载画布…"]})})});function g({boardId:e,taskId:t,newSessionCwd:r,onRunningSessionIdsChange:i,wallSettings:b,updateWallSettings:v}){let{t:y}=(0,a.s)(),{isDark:m}=(0,s.D)(),w=(0,l.C6)({boardId:e,taskId:t,newSessionCwd:r}),k=!!(w.board?.taskId??t),j=(0,o.useRef)(null);(0,o.useEffect)(()=>{let e=e=>{if(!(e.ctrlKey||e.metaKey)||"f"!==e.key.toLowerCase())return;let t=document.activeElement;if(t&&t!==j.current){let e=t.tagName;if("INPUT"===e||"TEXTAREA"===e||t.isContentEditable)return}e.preventDefault(),j.current?.focus(),j.current?.select()};return window.addEventListener("keydown",e,!0),()=>window.removeEventListener("keydown",e,!0)},[]);let[S,C]=(0,o.useState)(!1),[R,I]=(0,o.useState)(null);(0,o.useEffect)(()=>{let e=!1,t=async()=>{try{let t=await fetch("/api/task-scheduler/status",{cache:"no-store"});if(!t.ok)return;let r=await t.json();e||I(r.status)}catch{}};t();let r=setInterval(t,5e3);return()=>{e=!0,clearInterval(r)}},[]);let[E,L]=(0,o.useState)(!1),T=(0,o.useCallback)(async()=>{if(!E){L(!0);try{w.loadSessionSummaries(),await w.reloadCanvas()}finally{setTimeout(()=>L(!1),800)}}},[w,E]);return(0,o.useEffect)(()=>{i?.(new Set(w.running?.runningSessionIds??[]))},[w.running,i]),(0,n.jsx)("div",{"data-glass-scope":"board",style:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden",position:"relative"},children:(0,n.jsx)(c.I,{value:"board",children:(0,n.jsx)(u.Nc.Provider,{value:{boardId:w.board?.id??null,defaultCwd:r??null},children:(0,n.jsxs)(d.eR,{children:[!w.loading&&w.board?.name&&(0,n.jsxs)("div",{style:{position:"absolute",top:12,left:12,zIndex:40,display:"flex",alignItems:"center",gap:6,maxWidth:300,height:34,padding:"0 8px 0 12px",borderRadius:999,background:"var(--board-card-glass)",backdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",WebkitBackdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)",boxShadow:"0 2px 12px -6px rgba(0,0,0,0.18)",color:"var(--text)"},title:w.board.name,children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",style:{flexShrink:0,opacity:.7},children:[(0,n.jsx)("rect",{x:"3",y:"3",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("rect",{x:"14",y:"3",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("rect",{x:"3",y:"14",width:"7",height:"7",rx:"1.5"}),(0,n.jsx)("rect",{x:"14",y:"14",width:"7",height:"7",rx:"1.5"})]}),(0,n.jsx)("span",{style:{fontSize:12.5,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:w.board.name}),(0,n.jsx)("button",{type:"button",onClick:()=>void T(),title:y("boards.reloadCanvas"),"aria-label":y("boards.reloadCanvas"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,padding:0,flexShrink:0,border:"none",background:"transparent",color:"var(--text-muted)",cursor:E?"default":"pointer",borderRadius:999,transition:"background 0.12s, color 0.12s"},children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",style:{animation:E?"spin 0.8s linear infinite":void 0},children:[(0,n.jsx)("path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"}),(0,n.jsx)("path",{d:"M21 3v5h-5"})]})})]}),!w.loading&&R&&R.running.length>0&&(0,n.jsxs)("div",{title:`调度器正在执行 ${R.running.length} 个任务`,style:{position:"absolute",top:52,left:12,zIndex:40,display:"flex",alignItems:"center",gap:6,maxWidth:260,padding:"3px 10px",borderRadius:999,background:"color-mix(in srgb, var(--board-card-glass) 85%, transparent)",border:"1px solid color-mix(in srgb, var(--border) 45%, transparent)",color:"var(--text-muted)",fontSize:10.5,lineHeight:1.4,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{flexShrink:0,width:7,height:7,borderRadius:"50%",background:"#10b981",boxShadow:"0 0 6px 1px rgba(16,185,129,0.6)",animation:"pulse 1.6s ease-in-out infinite"}}),(0,n.jsxs)("span",{style:{overflow:"hidden",textOverflow:"ellipsis"},children:["正在运行 ",R.running.map(e=>`#${e.number} ${e.name}`).join("、")]})]}),!w.loading&&(0,n.jsx)("div",{style:{position:"absolute",top:12,left:"50%",transform:"translateX(-50%)",zIndex:40},children:(0,n.jsx)(h,{editor:w.editor,inputRef:j})}),(0,n.jsxs)("div",{style:{position:"absolute",top:10,right:10,zIndex:30,display:"flex",flexDirection:"column",alignItems:"flex-end",gap:6},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,padding:4,borderRadius:10,background:"var(--board-card-glass)",backdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",WebkitBackdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)",boxShadow:"0 2px 12px -6px rgba(0,0,0,0.18)"},children:[(0,n.jsx)("button",{type:"button",onClick:()=>w.addNewSessionCard(),title:y("boards.newSession"),style:{...f,color:"var(--accent)"},children:(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),(0,n.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]})}),(0,n.jsx)("button",{type:"button",disabled:!0,title:y("boards.autoLayoutDesc"),"aria-label":y("boards.autoLayout"),style:{...f,color:"var(--text-dim)",opacity:.55,cursor:"not-allowed"},children:(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"3",y:"3",width:"7",height:"7",rx:"1"}),(0,n.jsx)("rect",{x:"14",y:"3",width:"7",height:"7",rx:"1"}),(0,n.jsx)("rect",{x:"3",y:"14",width:"7",height:"7",rx:"1"}),(0,n.jsx)("rect",{x:"14",y:"14",width:"7",height:"7",rx:"1"})]})}),(0,n.jsx)("button",{type:"button",onClick:()=>C(e=>!e),title:y("boards.scrimTitle"),"aria-expanded":S,style:{...f,color:S?"var(--accent)":"var(--text-muted)",background:S?"color-mix(in srgb, var(--accent) 12%, transparent)":"transparent"},children:(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M12 3v2"}),(0,n.jsx)("path",{d:"M12 19v2"}),(0,n.jsx)("path",{d:"M5 7l1.5 1.5"}),(0,n.jsx)("path",{d:"M17.5 15.5L19 17"}),(0,n.jsx)("path",{d:"M3 12h2"}),(0,n.jsx)("path",{d:"M19 12h2"}),(0,n.jsx)("path",{d:"M5 17l1.5-1.5"}),(0,n.jsx)("path",{d:"M17.5 8.5L19 7"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})}),(0,n.jsx)("button",{type:"button",onClick:()=>{(0,p.l)({message:k?y("boards.clearTaskConfirm"):y("boards.clearConfirm"),confirmText:y("boards.clear")}).then(e=>{e&&w.clearBoard()})},title:k?y("boards.clearTaskBoardDesc"):y("boards.clearDesc"),style:f,children:(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M18 6 6 18"}),(0,n.jsx)("path",{d:"m6 6 12 12"})]})})]}),S&&(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:6,padding:"8px 10px",borderRadius:10,background:"var(--board-card-glass)",backdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",WebkitBackdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)",boxShadow:"0 2px 12px -6px rgba(0,0,0,0.18)",color:"var(--text)",fontSize:12.5,whiteSpace:"nowrap"},children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,n.jsx)("span",{style:{width:14,flexShrink:0,textAlign:"center",fontSize:12},children:"❄"}),(0,n.jsx)("span",{style:{flexShrink:0},children:y("boards.scrimBlur")}),(0,n.jsx)("input",{type:"range",min:0,max:30,value:b.scrimBlur,onChange:e=>v({scrimBlur:Number(e.target.value)}),style:{flex:1,minWidth:120,accentColor:"var(--accent)",cursor:"pointer"},"aria-label":y("boards.scrimBlur")}),(0,n.jsxs)("span",{style:{width:30,flexShrink:0,textAlign:"right",fontSize:11,color:"var(--text)"},children:[b.scrimBlur,"px"]})]})})]}),(0,n.jsx)(x,{board:w,isDark:m})]})})})})}let f={display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,padding:0,border:"none",background:"transparent",color:"var(--text-muted)",cursor:"pointer",borderRadius:7,transition:"background 0.12s, color 0.12s"}},24456:(e,t,r)=>{r.d(t,{l:()=>c});var n=r(95155),o=r(12115),i=r(12669);let a=null,s=null,l=null;function d(e){a?.(e),a=null,l?.unmount(),s?.remove(),l=null,s=null}function c(e){return new Promise(t=>{a&&d(!1),a=t;let r=s;r||(r=document.createElement("div"),document.body.appendChild(r),s=r);let o=l;o||(l=o=(0,i.createRoot)(r)),o.render((0,n.jsx)(u,{opts:e,onClose:d}))})}function u({opts:e,onClose:t}){let[r]=(0,o.useState)(!1);return(0,n.jsx)("div",{role:"alertdialog","aria-modal":"true",onPointerDown:()=>t(!1),style:{position:"fixed",inset:0,zIndex:2e3,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.35)"},children:(0,n.jsxs)("div",{onPointerDown:e=>e.stopPropagation(),style:{width:360,maxWidth:"calc(100vw - 48px)",borderRadius:"var(--bubble-radius, 14px)",background:"var(--board-card-glass)",backdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",WebkitBackdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)",boxShadow:"0 10px 40px -12px rgba(0,0,0,0.4)",color:"var(--text)",padding:"16px 18px",display:"flex",flexDirection:"column",gap:10},children:[e.title&&(0,n.jsx)("div",{style:{fontSize:14,fontWeight:600},children:e.title}),(0,n.jsx)("div",{style:{fontSize:12.5,lineHeight:1.6,color:"var(--text-muted)",whiteSpace:"pre-wrap"},children:e.message}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:6},children:[(0,n.jsx)("button",{type:"button",onClick:()=>t(!1),style:{border:"none",background:"color-mix(in srgb, var(--border) 30%, transparent)",color:"var(--text-muted)",borderRadius:6,padding:"5px 14px",fontSize:12,cursor:"pointer"},children:e.cancelText??"取消"}),(0,n.jsx)("button",{type:"button",disabled:r,onClick:()=>t(!0),style:{border:"none",background:!1===e.danger?"var(--accent)":"color-mix(in srgb, #ef4444 85%, transparent)",color:"#fff",borderRadius:6,padding:"5px 14px",fontSize:12,fontWeight:600,cursor:"pointer"},children:e.confirmText??"删除"})]})]})})}},26479:(e,t,r)=>{r.d(t,{Nc:()=>g,o_:()=>v});var n=r(95155),o=r(12115),i=r(23312),a=r(15934);function s(e,t){return(e??[]).filter(e=>e.kind===t).map(e=>e.targetCardId)}var l=r(20985);function d({value:e,options:t,onChange:r,width:i="100%"}){let[a,s]=(0,o.useState)(!1),[c,u]=(0,o.useState)(!1),p=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(!a)return;let e=e=>{p.current&&!p.current.contains(e.target)&&s(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[a]);let h=t.find(t=>t.value===e);return(0,n.jsxs)("div",{ref:p,style:{position:"relative",width:i},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>s(e=>!e),onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),style:{width:"100%",height:28,boxSizing:"border-box",display:"flex",alignItems:"center",gap:6,padding:"0 8px",background:a?"var(--side-active)":c?"var(--side-hover)":"transparent",border:"1px solid var(--border)",borderRadius:5,cursor:"pointer",fontSize:11,color:"var(--text)",textAlign:"left",transition:"background 0.12s"},children:[(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:h?.label??""}),(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:"var(--text-dim)"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),a&&(0,n.jsx)(l.f,{open:!0,style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:120,minWidth:120,maxHeight:200,overflowY:"auto",background:"var(--popover-glass)",border:"1px solid var(--border)",borderRadius:6,boxShadow:"0 6px 20px -6px rgba(0,0,0,0.35)",padding:4},children:t.map(t=>(0,n.jsx)("button",{type:"button",onClick:()=>{r(t.value),s(!1)},style:{display:"block",width:"100%",boxSizing:"border-box",padding:"5px 8px",border:"none",borderRadius:4,background:t.value===e?"var(--side-active)":"transparent",color:"var(--text)",fontSize:11,textAlign:"left",cursor:"pointer"},onMouseEnter:e=>{e.currentTarget.style.background="var(--side-hover)"},onMouseLeave:r=>{r.currentTarget.style.background=t.value===e?"var(--side-active)":"transparent"},children:t.label},t.value))})]})}var c=r(87278);function u({candidates:e,selected:t,onChange:r,placeholder:i="选择任务卡…",excludeId:a,width:s="100%"}){let[d,c]=(0,o.useState)(!1),[p,h]=(0,o.useState)(!1),x=(0,o.useRef)(null),g=e.filter(e=>e.id!==a),f=new Set(t);(0,o.useEffect)(()=>{if(!d)return;let e=e=>{x.current&&!x.current.contains(e.target)&&c(!1)},t=e=>{"Escape"===e.key&&c(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[d]);let b=g.filter(e=>f.has(e.id)),v=b.length>3?b.length-3:0,y=b.slice(0,3);return(0,n.jsxs)("div",{ref:x,style:{position:"relative",width:s},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>c(e=>!e),onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),style:{width:"100%",height:28,boxSizing:"border-box",display:"flex",alignItems:"center",gap:4,padding:"0 6px",background:d?"var(--side-active)":p?"var(--side-hover)":"transparent",border:"1px solid var(--border)",borderRadius:5,cursor:"pointer",fontSize:11,color:"var(--text)",textAlign:"left",transition:"background 0.12s"},children:[y.length>0?(0,n.jsxs)(n.Fragment,{children:[y.map(e=>(0,n.jsxs)("span",{style:{flexShrink:0,display:"inline-flex",alignItems:"center",gap:3,padding:"1px 5px",borderRadius:999,background:"var(--side-selected)",color:"var(--accent)",fontFamily:"var(--font-mono)",fontSize:10},children:["#",e.number]},e.id)),v>0&&(0,n.jsxs)("span",{style:{flexShrink:0,color:"var(--text-muted)",fontSize:10},children:["+",v]})]}):(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-dim)"},children:i}),(0,n.jsx)("span",{style:{flex:1}}),(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:"var(--text-dim)"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),d&&(0,n.jsx)(l.f,{open:!0,style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:120,minWidth:160,maxHeight:180,overflowY:"auto",background:"var(--popover-glass)",border:"1px solid var(--border)",borderRadius:6,boxShadow:"0 6px 20px -6px rgba(0,0,0,0.35)",padding:4},children:0===g.length?(0,n.jsx)("div",{style:{padding:"8px",color:"var(--text-dim)",fontSize:11},children:"本看板无其他任务卡"}):g.map(e=>{let o=f.has(e.id);return(0,n.jsxs)("button",{type:"button",onClick:n=>{var o;n.stopPropagation(),o=e.id,r(f.has(o)?t.filter(e=>e!==o):[...t,o])},style:{display:"flex",alignItems:"center",gap:7,width:"100%",boxSizing:"border-box",padding:"5px 8px",border:"none",borderRadius:4,background:o?"var(--side-selected)":"transparent",color:"var(--text)",fontSize:11,textAlign:"left",cursor:"pointer"},onMouseEnter:e=>{o||(e.currentTarget.style.background="var(--side-hover)")},onMouseLeave:e=>{e.currentTarget.style.background=o?"var(--side-selected)":"transparent"},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{flexShrink:0,width:12,height:12,borderRadius:3,border:"1px solid var(--border)",background:o?"var(--accent)":"transparent",display:"inline-flex",alignItems:"center",justifyContent:"center",color:"var(--accent-contrast, #fff)"},children:o&&(0,n.jsx)("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"1.5 5 3.5 7 8.5 2"})})}),(0,n.jsxs)("span",{style:{fontFamily:"var(--font-mono)",color:"var(--text-muted)",flexShrink:0},children:["#",e.number]}),(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]},e.id)})})]})}var p=r(91897),h=r(29608);function x({cwd:e,value:t,onChange:r}){let[i,a]=(0,o.useState)(null),[s,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(!1),[p,h]=(0,o.useState)(""),[g,f]=(0,o.useState)(!1),[b,v]=(0,o.useState)(null),y=(0,o.useRef)(null),m=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(!e)return void a(null);let t=!1;return(async()=>{try{let r=await fetch(`/api/worktrees?cwd=${encodeURIComponent(e)}`,{cache:"no-store"});if(!r.ok)return;let n=await r.json();if(t)return;a({forCwd:e,projectRoot:n.projectRoot??e,isGit:n.isGit??!1,currentWorktreePath:n.currentWorktreePath??null,worktrees:(n.worktrees??[]).map(e=>({path:e.path,branch:e.branch??null,isMain:!!e.isMain}))})}catch{t||a(null)}})(),()=>{t=!0}},[e]);let w=i?.worktrees.find(e=>e.path===t)??i?.worktrees.find(t=>t.path===e)??(i?.currentWorktreePath?i.worktrees.find(e=>e.path===i.currentWorktreePath):void 0)??i?.worktrees.find(e=>e.isMain)??null,k=async()=>{let e=p.trim();if(e&&!g&&i){f(!0),v(null);try{let t=await fetch("/api/worktrees",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:i.projectRoot,branch:e})}),n=await t.json().catch(()=>({}));if(!t.ok||!n.path){v(n.error??"创建失败"),f(!1);return}h(""),u(!1),d(!1),r(n.path)}catch(e){v(e instanceof Error?e.message:String(e))}f(!1)}};(0,o.useEffect)(()=>{if(!s)return;let e=e=>{y.current&&!y.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[s]);let j=w?w.isMain?`主 checkout(${w.branch??""})`:w.branch??w.path:i?.isGit?"选择工作区…":"非 git 项目";return(0,n.jsxs)("div",{ref:y,style:{position:"relative"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>{d(e=>!e),v(null)},style:{width:"100%",height:28,boxSizing:"border-box",display:"flex",alignItems:"center",gap:6,padding:"0 8px",background:s?"var(--side-active)":"transparent",border:"1px solid var(--border)",borderRadius:5,cursor:"pointer",fontSize:11,color:"var(--text)",textAlign:"left",fontFamily:"var(--font-mono)"},title:w?.path??void 0,children:[(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:w&&!w.isMain?"var(--accent)":"var(--text-dim)"},children:[(0,n.jsx)("line",{x1:"6",y1:"3",x2:"6",y2:"15"}),(0,n.jsx)("circle",{cx:"18",cy:"6",r:"3"}),(0,n.jsx)("circle",{cx:"6",cy:"18",r:"3"}),(0,n.jsx)("path",{d:"M18 9a9 9 0 0 1-9 9"})]}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:j}),(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:"var(--text-dim)"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),(0,n.jsxs)(l.f,{open:s,style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:120,minWidth:200,background:"var(--popover-glass)",border:"1px solid var(--border)",borderRadius:6,boxShadow:"0 6px 20px -6px rgba(0,0,0,0.35)",overflow:"hidden"},children:[(0,n.jsx)("div",{style:{maxHeight:"min(40vh, 260px)",overflowY:"auto",padding:4},children:0===(i?.worktrees??[]).length?(0,n.jsx)("div",{style:{padding:"8px 10px",fontSize:11,color:"var(--text-dim)"},children:i?.isGit===!1?"非 git 项目,无法创建工作区":"暂无工作区"}):(i?.worktrees??[]).map(e=>{let o=e.path===(w?.path??t);return(0,n.jsxs)("button",{type:"button",onClick:()=>{r(e.path),d(!1),v(null)},title:e.path,style:{display:"block",width:"100%",boxSizing:"border-box",padding:"6px 8px",border:"none",borderRadius:4,background:o?"var(--side-active)":"transparent",color:"var(--text)",fontSize:11,textAlign:"left",cursor:"pointer",fontFamily:"var(--font-mono)"},onMouseEnter:e=>{o||(e.currentTarget.style.background="var(--side-hover)")},onMouseLeave:e=>{o||(e.currentTarget.style.background="transparent")},children:[(0,n.jsx)("span",{style:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.isMain?`主 checkout(${e.branch??""})`:e.branch??e.path}),(0,n.jsx)("span",{style:{display:"block",fontSize:9.5,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.path})]},e.path)})}),c?(0,n.jsxs)("div",{style:{padding:"6px 8px",borderTop:"1px solid var(--bubble-hairline)"},children:[(0,n.jsx)("input",{ref:m,value:p,onChange:e=>{h(e.target.value),v(null)},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),k()),"Escape"===e.key&&(u(!1),h(""),v(null))},placeholder:"新分支名",style:{width:"100%",fontSize:11,fontFamily:"var(--font-mono)",padding:"5px 8px",border:"1px solid var(--accent)",borderRadius:5,outline:"none",background:"var(--side-input)",color:"var(--text)",boxSizing:"border-box"}}),(0,n.jsxs)("div",{style:{display:"flex",gap:5,marginTop:5},children:[(0,n.jsx)("button",{type:"button",onClick:()=>void k(),disabled:g||!p.trim(),style:{flex:1,padding:"4px 0",background:"var(--accent)",border:"none",borderRadius:5,color:"var(--accent-contrast, #fff)",fontSize:11,fontWeight:600,cursor:g||!p.trim()?"not-allowed":"pointer",opacity:g||!p.trim()?.65:1},children:g?"创建中…":"创建"}),(0,n.jsx)("button",{type:"button",onClick:()=>{u(!1),h(""),v(null)},style:{flex:1,padding:"4px 0",background:"transparent",border:"1px solid var(--border)",borderRadius:5,color:"var(--text-muted)",fontSize:11,cursor:"pointer"},children:"取消"})]})]}):(0,n.jsxs)("button",{type:"button",onClick:e=>{e.stopPropagation(),u(!0),v(null),setTimeout(()=>m.current?.focus(),0)},style:{display:"flex",alignItems:"center",gap:7,width:"100%",padding:"7px 10px",background:"none",border:"none",borderTop:"1px solid var(--bubble-hairline)",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11},children:[(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.1",strokeLinecap:"round",style:{flexShrink:0},children:[(0,n.jsx)("line",{x1:"5",y1:"1",x2:"5",y2:"9"}),(0,n.jsx)("line",{x1:"1",y1:"5",x2:"9",y2:"5"})]}),(0,n.jsx)("span",{children:"新建工作区"})]}),b&&(0,n.jsx)("div",{style:{padding:"5px 10px 8px",color:"#dc2626",fontSize:11,lineHeight:1.35,overflowWrap:"anywhere"},children:b})]})]})}let g=(0,o.createContext)(null),f={cardId:i.T.string,number:i.T.number,name:i.T.string,description:i.T.string.optional(),readyStatus:i.T.string,execStatus:i.T.string,priority:i.T.number,due:i.T.number.nullable().optional(),expanded:i.T.boolean,w:i.T.number,h:i.T.number,expandedW:i.T.number,expandedH:i.T.number,collapsedW:i.T.number,collapsedH:i.T.number},b={not_started:{color:"#9ca3af",label:"未开始"},running:{color:"#10b981",label:"进行中"},review:{color:"#f59e0b",label:"待审核"},done:{color:"#10b981",label:"完成"},failed:{color:"#ef4444",label:"失败"},abandoned:{color:"#9ca3af",label:"放弃"},waiting_reply:{color:"#3184f8",label:"等回复"}};class v extends i.A8{static{this.type="task-card"}static{this.props=f}getDefaultProps(){return{cardId:"",number:0,name:"新建任务",description:"",readyStatus:"draft",execStatus:"not_started",priority:0,expanded:!1,w:380,h:270,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}}canEdit(){return!0}canResize(){return!0}canScroll(){return!0}hideRotateHandle(){return!0}onDoubleClick(e){var t;return{id:e.id,type:"task-card",props:(t=e).props.expanded?{expanded:!1,expandedW:t.props.w,expandedH:t.props.h,w:t.props.collapsedW||380,h:t.props.collapsedH||270}:{expanded:!0,collapsedW:t.props.w,collapsedH:t.props.h,w:t.props.expandedW||760,h:t.props.expandedH||600}}}onResize(e,t){let r=e.props.expanded;return(0,i.mfH)(e,t,{minWidth:r?480:380,minHeight:r?400:240})}getIndicatorPath(e){let{w:t,h:r}=e.props,n=new Path2D;return n.roundRect(0,0,t,r,12),n}component(e){return(0,n.jsx)(y,{shape:e})}}function y({shape:e}){return(0,n.jsx)(k,{shape:e})}let m={width:"100%",boxSizing:"border-box",border:"1px solid var(--border)",borderRadius:6,background:"transparent",color:"var(--text)",fontSize:12,padding:"4px 8px",outline:"none"},w={display:"block",fontSize:10,color:"var(--text)",fontWeight:600,margin:"8px 0 3px"};function k({shape:e}){let{cardId:t,w:r,h:l,expanded:f}=e.props,v=(0,i.hGv)(),y=(0,o.useContext)(g)?.boardId??null,R=(0,o.useContext)(g)?.defaultCwd??null,{detail:I,candidates:E,loading:L,error:T,reload:W,createCard:z,saveCard:P}=function(e,t){let[r,n]=(0,o.useState)(null),[i,s]=(0,o.useState)([]),[l,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(null),p=(0,o.useRef)(null);p.current=r;let h=(0,o.useCallback)(async(t=!1)=>{if(!e)return void n(null);t||d(!0);try{let t=await fetch(`/api/task-cards/${encodeURIComponent(e)}`,{cache:"no-store"});if(!t.ok){if(404===t.status)return void n(null);throw Error(`HTTP ${t.status}`)}let r=await t.json();n(r)}catch(e){t||u(e instanceof Error?e.message:String(e))}finally{t||d(!1)}},[e]),x=(0,o.useCallback)(()=>h(!1),[h]);(0,o.useEffect)(()=>{x()},[x]),(0,o.useEffect)(()=>{if(!t)return;let e=!1;return(async()=>{try{let r=await fetch(`/api/task-cards?boardId=${encodeURIComponent(t)}`,{cache:"no-store"});if(!r.ok)return;let n=await r.json();e||s(n.cards)}catch{}})(),()=>{e=!0}},[t]);let g=(0,o.useCallback)(async e=>{try{let t=await fetch("/api/task-cards",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`HTTP ${t.status}`)}let r=await t.json();return"number"==typeof r.updated&&(0,a.D2)(e.boardId,r.updated),r.card}catch(e){return u(e instanceof Error?e.message:String(e)),null}},[]),f=(0,o.useCallback)(async t=>{if(!e)return!1;try{let r=await fetch(`/api/task-cards/${encodeURIComponent(e)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error??`HTTP ${r.status}`)}let n=await r.json();return"number"==typeof n.updated&&p.current?.card.boardId&&(0,a.D2)(p.current.card.boardId,n.updated),await x(),!0}catch(e){return u(e instanceof Error?e.message:String(e)),!1}},[e,x]);return{detail:r,candidates:i,loading:l,error:c,reload:x,createCard:g,saveCard:f}}(t||null,y),M=(0,c.G)(v,e.id,"var(--assistant-card-glass)"),D=!t,$=I?.card.sessionId??null;(0,o.useEffect)(()=>{f&&!D&&W()},[f,D,W]);let H=(0,o.useCallback)(()=>{if($)for(let e of v.getCurrentPageShapes()){if("session-card"!==e.type)continue;let t=e.props;if(t.sessionId!==$)continue;let r={x:e.x+(t.w??0)/2,y:e.y+(t.h??0)/2};v.centerOnPoint(r),v.select(e.id);return}},[v,$]),A=(0,i.hau)("execStatus",()=>{let t=v.getShape(e.id);return t?.props?.execStatus??null},[v,e.id]);(0,o.useEffect)(()=>{A&&O&&O.execStatus!==A&&ed("execStatus",A)},[A]);let B=(0,i.hau)("remoteName",()=>{let t=v.getShape(e.id),r=t?.props,n=r?.name;return n&&"新建任务"!==n?n:""},[v,e.id]),F=(0,i.hau)("remoteDescription",()=>{let t=v.getShape(e.id);return t?.props?.description??""},[v,e.id]),N=(0,o.useRef)(!1);(0,o.useEffect)(()=>{!O||N.current||void 0!==B&&B!==O.name&&U(e=>e?{...e,name:B}:e)},[B]),(0,o.useEffect)(()=>{!O||N.current||void 0!==F&&F!==O.description&&U(e=>e?{...e,description:F}:e)},[F]);let[O,U]=(0,o.useState)(()=>D?{id:"",boardId:"",projectKey:"",number:0,name:"新建任务"===e.props.name?"":e.props.name,description:e.props.description??"",readyStatus:"draft",execStatus:"not_started",priority:0,due:null,attachments:[],cwd:R,useWorktree:!1,maxRetries:3,retryCount:0,sessionId:null,dispatchToken:null,created:0,updated:0}:null);(0,o.useEffect)(()=>{!D&&I?.card&&!O&&U({...I.card})},[D,I,O]);let[_,Y]=(0,o.useState)([]),[K,G]=(0,o.useState)([]),q=(0,o.useRef)(!1);(0,o.useEffect)(()=>{I&&!q.current&&(q.current=!0,Y(s(I.links,"prerequisite")),G(s(I.links,"related")))},[I]);let[J,V]=(0,o.useState)(!1),X=(0,o.useRef)(!1),[Q,Z]=(0,o.useState)(null),[ee,et]=(0,o.useState)(null),[er,en]=(0,o.useState)(!1);(0,o.useEffect)(()=>{en(f)},[f]);let[eo,ei]=(0,o.useState)(!1),[ea,es]=(0,o.useState)(null),el=(0,o.useRef)(null),ed=(t,r)=>{U(n=>{let o=n?{...n,[t]:r}:n;return o&&("name"===t||"description"===t)&&v.updateShape({id:e.id,type:"task-card",props:{name:"name"===t?r:o.name,description:"description"===t?r:o.description??""}}),o})};(0,o.useEffect)(()=>{let e=el.current;if(!e)return;let t=t=>{if(t.ctrlKey||t.metaKey)return;let r=t.target;r instanceof Node&&e.contains(r)&&function(e,t){let r=e instanceof Element?e:e.parentElement;for(;r&&r instanceof HTMLElement&&r!==t;){let e=r.scrollHeight>r.clientHeight,t=r.scrollWidth>r.clientWidth;if(e||t){let n=getComputedStyle(r),o=n.overflowY,i=n.overflowX;if(e&&("auto"===o||"scroll"===o||"overlay"===o)||t&&("auto"===i||"scroll"===i||"overlay"===i))return!0}r=r.parentElement}return!1}(r,e)&&t.stopPropagation()};return e.addEventListener("wheel",t),()=>e.removeEventListener("wheel",t)});let ec=async()=>{if(!y)return void Z("缺少看板上下文,无法创建");if(!O?.name.trim())return void et("请填写任务名称");if(V(!0),Z(null),X.current)return;X.current=!0;let t=await z({boardId:y,name:O.name,description:O.description,readyStatus:"todo",priority:O.priority,due:O.due??null,cwd:O.cwd??void 0,useWorktree:O.useWorktree,maxRetries:O.maxRetries,attachments:O.attachments,prerequisites:_,related:K});X.current=!1,V(!1),t&&(v.updateShape({id:e.id,type:"task-card",props:{cardId:t.id,number:t.number,name:t.name,readyStatus:t.readyStatus,execStatus:t.execStatus,priority:t.priority,due:t.due??void 0}}),U(e=>e?{...e,...t,sessionId:t.sessionId}:e),W())},eu=async()=>{if(!O?.name.trim())return void et("请填写任务名称");if(X.current)return;V(!0),X.current=!0,Z(null);let t=await P({name:O.name,description:O.description,readyStatus:O.readyStatus,priority:O.priority,due:O.due??null,attachments:O.attachments,cwd:O.cwd??null,useWorktree:O.useWorktree,maxRetries:O.maxRetries,prerequisites:_,related:K});X.current=!1,V(!1),t?v.updateShape({id:e.id,type:"task-card",props:{name:O.name,description:O.description??"",readyStatus:O.readyStatus,priority:O.priority,due:O.due??void 0}}):Z(T??"保存失败")},ep=(0,o.useMemo)(()=>{if(D||!I?.card||!O)return!1;let e=I.card;return O.name!==e.name||O.description!==e.description||O.priority!==e.priority||O.due!==e.due||O.cwd!==e.cwd||O.useWorktree!==e.useWorktree||O.maxRetries!==e.maxRetries||JSON.stringify(O.attachments??[])!==JSON.stringify(e.attachments??[])||JSON.stringify([..._].sort())!==JSON.stringify(s(I.links,"prerequisite").sort())||JSON.stringify([...K].sort())!==JSON.stringify(s(I.links,"related").sort())},[D,I,O,_,K]),eh=(0,i.hau)("selected",()=>v.getSelectedShapeIds().includes(e.id),[v,e.id]),ex=(0,o.useRef)(eh),eg=(0,o.useRef)(ep);eg.current=ep;let ef=(0,o.useRef)(eu);ef.current=eu,(0,o.useEffect)(()=>{let e=ex.current;ex.current=eh,e&&!eh&&!D&&eg.current&&ef.current()},[eh,D]);let eb=O?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("label",{style:w,children:"任务名称 *"}),(0,n.jsx)("input",{style:{...m,...ee?{borderColor:"#f87171",boxShadow:"0 0 0 1px #f87171"}:{}},value:O.name,onChange:e=>{ed("name",e.target.value),ee&&et(null)},onFocus:()=>{N.current=!0},onBlur:()=>{N.current=!1},placeholder:"任务名称"}),ee&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:11,marginTop:3},children:ee}),(0,n.jsx)("label",{style:w,children:"需求说明"}),(0,n.jsx)("textarea",{style:{...m,flex:1,minHeight:70,resize:"none",fontFamily:"var(--font-mono)",fontSize:11},value:O.description,onChange:e=>ed("description",e.target.value),onFocus:()=>{N.current=!0},onBlur:()=>{N.current=!1},placeholder:"任务描述",spellCheck:!1}),(0,n.jsxs)(S,{title:"高级",open:er,onToggle:()=>en(e=>!e),children:[(0,n.jsx)("label",{style:w,children:"工作目录"}),(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)("input",{style:{...m,flex:1},value:O.cwd??"",onChange:e=>ed("cwd",e.target.value||null),placeholder:"默认项目根目录",readOnly:!0}),(0,n.jsx)("button",{type:"button",style:j,onClick:()=>ei(!0),children:"选择目录"})]}),eo&&O&&(0,n.jsx)(h.K,{onCancel:()=>ei(!1),onSelect:e=>{ed("cwd",e),ei(!1)}}),(0,n.jsx)("label",{style:w,children:"工作区"}),(0,n.jsx)(x,{cwd:O.cwd,value:ea,onChange:e=>{es(e),ed("cwd",e)}}),(0,n.jsx)("label",{style:w,children:"预计截止"}),(0,n.jsx)(C,{due:O.due??null,onChange:e=>ed("due",e)}),(0,n.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,n.jsxs)("div",{style:{flex:1},children:[(0,n.jsx)("label",{style:w,children:"优先级"}),(0,n.jsx)(d,{value:String(O.priority),onChange:e=>ed("priority",Number(e)),options:[{value:"1",label:"高"},{value:"0",label:"中"},{value:"-1",label:"低"}]})]}),(0,n.jsxs)("div",{style:{flex:1},children:[(0,n.jsx)("label",{style:w,children:"最大重试次数"}),(0,n.jsx)("input",{style:m,type:"number",min:0,value:O.maxRetries,onChange:e=>ed("maxRetries",Math.max(0,Number(e.target.value)||0))})]})]}),(0,n.jsx)("label",{style:w,children:"前置任务(可多选)"}),(0,n.jsx)(u,{candidates:E,selected:_,onChange:Y,excludeId:t,placeholder:"本看板内选择前置任务…"}),(0,n.jsx)("label",{style:w,children:"关联任务(可多选)"}),(0,n.jsx)(u,{candidates:E,selected:K,onChange:G,excludeId:t,placeholder:"本看板内选择关联任务…"}),(0,n.jsx)("label",{style:w,children:"附件(引用文件路径,每行一个)"}),(0,n.jsx)("textarea",{style:{...m,minHeight:46,resize:"vertical",fontFamily:"var(--font-mono)",fontSize:11},value:(O.attachments??[]).join("\n"),onChange:e=>ed("attachments",e.target.value.split("\n").map(e=>e.trim()).filter(Boolean)),placeholder:"/path/to/file",spellCheck:!1})]}),(Q||T)&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:11,marginTop:6},children:Q??T})]}):L?(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontSize:12,padding:20,textAlign:"center"},children:"加载中…"}):(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontSize:12,padding:20,textAlign:"center"},children:"未找到任务卡"});return(0,n.jsx)(i.hDc,{"data-testid":`task-card-${e.id}`,onPointerDown:()=>v.bringToFront([e.id]),style:{width:r,height:l,pointerEvents:"none"},children:(0,n.jsxs)("div",{ref:e=>{el.current=e,M(e)},style:{position:"relative",width:r,height:l,borderRadius:"var(--bubble-radius, 12px)",border:"1px solid var(--bubble-border)",background:"transparent",boxShadow:"0 2px 10px -6px rgba(0,0,0,0.2)",color:"var(--text)",display:"flex",flexDirection:"column",overflow:"hidden",pointerEvents:"all",userSelect:"none"},children:[(0,n.jsxs)("div",{style:{flexShrink:0,height:36,display:"flex",alignItems:"center",gap:6,padding:"0 10px",borderBottom:"1px solid var(--bubble-hairline)",cursor:"grab",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)("span",{title:`执行状态:${(b[O?.execStatus??"not_started"]??b.not_started).label}`,style:{display:"flex",alignItems:"center",gap:4,flexShrink:0},children:(0,n.jsx)(p.i,{kind:"task",color:(b[O?.execStatus??"not_started"]??b.not_started).color})}),(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:12.5,fontWeight:600,color:"var(--text)"},children:O?.name||(D?"新建任务卡":"任务卡")}),O?.number?(0,n.jsxs)("span",{style:{flexShrink:0,fontSize:12.5,fontWeight:600,color:"var(--text)",marginLeft:4},children:["#",O.number]}):null,(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,flexShrink:0},onPointerDown:e=>e.stopPropagation(),children:[D?(0,n.jsx)("button",{type:"button",style:j,disabled:J||!y,onClick:()=>void ec(),title:"创建任务并派发(转待办,调度器可执行)",children:J?"创建中…":"派发"}):O?.readyStatus==="draft"?(0,n.jsx)("button",{type:"button",style:j,disabled:J,onClick:()=>{ed("readyStatus","todo"),!D&&t&&P({readyStatus:"todo"})},title:"派发(转待办,调度器可执行)",children:J?"派发中…":"派发"}):O?.readyStatus==="todo"?(0,n.jsxs)("span",{title:`执行状态:${(b[O?.execStatus??"not_started"]??b.not_started).label}`,style:{display:"flex",alignItems:"center",gap:4,fontSize:11,fontWeight:600,color:(b[O?.execStatus??"not_started"]??b.not_started).color,whiteSpace:"nowrap"},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{width:8,height:8,borderRadius:"50%",background:(b[O?.execStatus??"not_started"]??b.not_started).color,...O?.execStatus==="running"?{animation:"pulse-dot 1.6s ease-in-out infinite"}:{}}}),(b[O?.execStatus??"not_started"]??b.not_started).label]}):null,$&&(0,n.jsx)("button",{type:"button",style:j,onClick:H,title:"定位到该任务的执行会话卡",children:"会话"}),D?null:ep?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",style:j,onClick:()=>{I&&(U({...I.card}),Y(s(I.links,"prerequisite")),G(s(I.links,"related")),es(null),Z(null),et(null))},title:"撤销本次编辑",children:"取消"}),(0,n.jsx)("button",{type:"button",style:j,disabled:J,onClick:()=>void eu(),title:"完成(保存)",children:J?"保存中…":"完成"})]}):null]})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:0,display:"flex"},children:(0,n.jsx)("div",{className:"[scrollbar-width:none]",style:{flex:"1 1 auto",minWidth:0,overflowY:"auto",padding:"10px 12px",display:"flex",flexDirection:"column"},onPointerDown:e=>{0===e.button&&e.stopPropagation()},onPointerUp:e=>{0===e.button&&e.stopPropagation()},onClick:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:eb})})]})})}let j={border:"none",background:"color-mix(in srgb, var(--border) 30%, transparent)",color:"var(--text-muted)",borderRadius:5,padding:"2px 10px",fontSize:11,cursor:"pointer",whiteSpace:"nowrap"};function S({title:e,open:t,onToggle:r,children:o}){return(0,n.jsxs)("div",{children:[(0,n.jsxs)("button",{type:"button",onClick:r,style:{display:"flex",alignItems:"center",gap:4,width:"100%",marginTop:10,padding:"5px 0 3px",border:"none",borderTop:"1px solid var(--bubble-hairline)",background:"transparent",color:"var(--text-muted)",fontSize:11,fontWeight:600,cursor:"pointer",textAlign:"left"},children:[(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,transform:t?"rotate(90deg)":"none",transition:"transform 0.12s"},children:(0,n.jsx)("polyline",{points:"3 2 6.5 5 3 8"})}),e]}),t&&(0,n.jsx)("div",{children:o})]})}function C({due:e,onChange:t}){let r=new Date,o=e?new Date(e):r,[i,a,s]=[o.getFullYear(),o.getMonth()+1,o.getDate()],l=[];for(let e=r.getFullYear()-2;e<=r.getFullYear()+3;e++)l.push(String(e));let c=Array.from({length:12},(e,t)=>String(t+1)),u=new Date(i,a,0).getDate(),p=Array.from({length:u},(e,t)=>String(t+1)),h=(e,r,n)=>{let o=new Date(e,r-1,n,0,0,0,0).getTime();t(Number.isNaN(o)?null:o)};return(0,n.jsxs)("div",{style:{display:"flex",gap:4},children:[(0,n.jsx)("div",{style:{flex:1.4,minWidth:0},children:(0,n.jsx)(d,{value:String(i),options:l.map(e=>({value:e,label:e})),onChange:e=>h(Number(e),a,Math.min(s,u))})}),(0,n.jsx)("div",{style:{flex:1,minWidth:0},children:(0,n.jsx)(d,{value:String(a),options:c.map(e=>({value:e,label:`${e}月`})),onChange:e=>h(i,Number(e),Math.min(s,new Date(i,Number(e),0).getDate()))})}),(0,n.jsx)("div",{style:{flex:1,minWidth:0},children:(0,n.jsx)(d,{value:String(s),options:p.map(e=>({value:e,label:e})),onChange:e=>h(i,a,Number(e))})})]})}},41264:(e,t,r)=>{r.d(t,{QQ:()=>h});var n=r(95155),o=r(12115),i=r(23312),a=r(32316),s=r(71309),l=r(91897),d=r(87278);let c={blue:"#3184f8",green:"#10b981",red:"#ef4444",yellow:"#f59e0b",purple:"#8b5cf6"},u={blue:"蓝",green:"绿",red:"红",yellow:"黄",purple:"紫"},p={text:i.T.string,w:i.T.number,h:i.T.number,badge:i.T.string.optional(),createdAt:i.T.number.optional()};class h extends i.A8{static{this.type="sticky-note"}static{this.props=p}getDefaultProps(){return{text:"",w:338,h:230,badge:"blue",createdAt:Date.now()}}canEdit(){return!0}canResize(){return!0}canScroll(){return!0}hideRotateHandle(){return!0}onResize(e,t){return(0,i.mfH)(e,t,{minWidth:182,minHeight:115})}getIndicatorPath(e){let{w:t,h:r}=e.props,n=new Path2D;return n.roundRect(0,0,t,r,12),n}component(e){return(0,n.jsx)(x,{shape:e})}}function x({shape:e}){let t,r,{w:p,h,text:f}=e.props,b=(0,i.hGv)(),v=(0,d.G)(b,e.id,"var(--assistant-card-glass)"),{highlightId:y}=(0,s.kz)(),m=y===e.id,w=(0,i.hau)("editing",()=>b.getEditingShapeId()===e.id,[b,e.id]),k=(0,o.useCallback)(e=>{0===e.button&&e.stopPropagation()},[]),j=(0,o.useCallback)(t=>{t.stopPropagation(),b.getEditingShapeId()!==e.id&&b.select(e.id)},[b,e.id]),S=(0,o.useCallback)(t=>{t.stopPropagation(),b.setEditingShape(e.id)},[b,e.id]),[C]=(0,o.useState)(()=>e.props.createdAt??Date.now()),R=e.props.badge??"blue",[I,E]=(0,o.useState)(f),L=(0,o.useRef)(f),[T,W]=(0,o.useState)(R),z=(0,o.useRef)(null),P=(0,o.useRef)(null),M=(0,o.useRef)(!1),D=(0,o.useRef)(!1),[$,H]=(0,o.useState)(!1),A=(0,o.useRef)(null);(0,o.useEffect)(()=>{let e=e=>{if(!e)return;let t=t=>{t.ctrlKey||t.metaKey||e.scrollHeight>e.clientHeight&&t.stopPropagation()};return e.addEventListener("wheel",t),()=>e.removeEventListener("wheel",t)},t=e(z.current),r=e(P.current);return()=>{t?.(),r?.()}}),(0,o.useEffect)(()=>{let e=P.current;if(!e)return;let t=e=>{let t=window.getSelection();t&&t.toString().length>0&&e.stopPropagation()};return e.addEventListener("copy",t),()=>e.removeEventListener("copy",t)});let B=(0,o.useCallback)(t=>{t.stopPropagation();let r=P.current?.querySelector(".markdown-body")?.innerText??e.props.text;navigator.clipboard.writeText(r).then(()=>{H(!0),A.current&&clearTimeout(A.current),A.current=setTimeout(()=>H(!1),1200)}).catch(()=>{try{let e=document.createElement("textarea");e.value=r,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),H(!0),A.current&&clearTimeout(A.current),A.current=setTimeout(()=>H(!1),1200)}catch{}})},[e.props.text]);(0,o.useEffect)(()=>()=>{A.current&&clearTimeout(A.current)},[]),(0,o.useEffect)(()=>{w&&(E(f),L.current=f,W(R),requestAnimationFrame(()=>z.current?.focus()))},[w,f,R]);let F=(0,o.useCallback)(()=>{let t=L.current;(t!==e.props.text||T!==R)&&b.updateShapes([{id:e.id,type:"sticky-note",props:{text:t,badge:T}}])},[b,e.id,e.props.text,R,T]);(0,o.useEffect)(()=>{w||!D.current||M.current||F(),M.current=!1,D.current=w},[w,F]);let N=(0,o.useCallback)(()=>{b.setEditingShape(null)},[b]),O=(0,o.useCallback)(()=>{M.current=!0,b.setEditingShape(null)},[b]),U={position:"relative",width:p,height:h,borderRadius:"var(--bubble-radius, 12px)",border:m?"2px solid var(--accent)":"1px solid var(--bubble-border)",background:"transparent",boxShadow:m?s.u:"0 2px 10px -6px rgba(0,0,0,0.2)",animation:m?"board-search-glow 1.8s ease-out forwards":void 0,color:"var(--text)",display:"flex",flexDirection:"column",overflow:"hidden",fontSize:13,lineHeight:1.5,pointerEvents:"all",userSelect:"none"};return w?(0,n.jsx)(i.hDc,{"data-testid":`sticky-note-${e.id}`,style:{width:p,height:h,pointerEvents:"none"},children:(0,n.jsxs)("div",{ref:v,style:U,children:[(0,n.jsxs)("div",{onPointerDown:e=>e.stopPropagation(),style:{flexShrink:0,height:32,display:"flex",alignItems:"center",gap:6,padding:"0 var(--bubble-pad-x, 12px)",fontSize:10,color:"var(--text-muted)",boxSizing:"border-box"},children:[(0,n.jsx)(l.i,{kind:"note",color:c[T]??c.blue}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:5},children:Object.entries(c).map(([e,t])=>(0,n.jsx)("button",{type:"button",title:`徽记\xb7${u[e]??e}`,onClick:t=>{t.stopPropagation(),W(e)},style:{width:14,height:14,padding:0,border:"none",borderRadius:"50%",background:t,cursor:"pointer",boxShadow:T===e?`0 0 0 2px var(--bg-panel), 0 0 0 3.5px ${t}`:`0 0 0 1px color-mix(in srgb, ${t} 45%, transparent)`,opacity:T===e?1:.72}},e))}),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),O()},style:g,title:"放弃变更 (Esc)",children:"取消"}),(0,n.jsx)("button",{type:"button",onPointerDown:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),N()},style:g,title:"完成 (Ctrl+Enter)",children:"完成"})]}),(0,n.jsx)("textarea",{ref:z,value:I,onChange:e=>{E(e.target.value),L.current=e.target.value},onKeyDown:e=>{e.stopPropagation(),"Enter"===e.key&&(e.ctrlKey||e.metaKey)?(e.preventDefault(),N()):"Escape"===e.key&&(e.preventDefault(),O())},onPointerDown:e=>{0===e.button&&e.stopPropagation()},spellCheck:!1,placeholder:"Markdown 便笺…",className:"sticky-note-input",style:{flex:1,minHeight:0,resize:"none",border:"none",outline:"none",background:"transparent",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:14,lineHeight:1.7,padding:"var(--bubble-pad-y, 8px) var(--bubble-pad-x, 12px)"}})]})}):(0,n.jsx)(i.hDc,{"data-testid":`sticky-note-${e.id}`,onPointerDown:()=>b.bringToFront([e.id]),style:{width:p,height:h,pointerEvents:"none"},children:(0,n.jsxs)("div",{ref:v,style:U,children:[(0,n.jsxs)("div",{style:{flexShrink:0,height:32,display:"flex",alignItems:"center",gap:6,padding:"0 var(--bubble-pad-x, 12px)",fontSize:10,color:"var(--text-muted)",cursor:"grab",boxSizing:"border-box"},children:[(0,n.jsx)(l.i,{kind:"note",color:c[R]??c.blue}),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",whiteSpace:"nowrap"},children:(t=new Date(C),r=new Date,t.getFullYear()===r.getFullYear()&&t.getMonth()===r.getMonth()&&t.getDate()===r.getDate()?t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):`${t.getMonth()+1}/${t.getDate()}`)}),(0,n.jsx)("button",{type:"button",title:$?"已复制":"复制内容",onClick:B,onPointerDown:e=>e.stopPropagation(),style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:22,height:20,padding:0,border:"none",borderRadius:5,background:"transparent",color:$?"var(--accent)":"var(--text-dim)",cursor:"pointer",pointerEvents:"all"},children:$?(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M20 6L9 17l-5-5"})}):(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),(0,n.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]}),(0,n.jsx)("div",{ref:P,style:{flex:1,minHeight:0,overflowY:"auto",padding:"4px var(--bubble-pad-x, 12px) var(--bubble-pad-y, 8px)",textAlign:"left"},children:f.trim()?(0,n.jsx)("div",{className:"markdown-body",onPointerDown:k,onPointerUp:k,onClick:j,onDoubleClick:S,style:{wordBreak:"break-word",cursor:"text"},children:(0,n.jsx)(a.oz,{children:f})}):(0,n.jsx)("div",{onClick:j,onDoubleClick:S,style:{color:"var(--text-dim)",fontSize:12,cursor:"text"},children:"双击编辑 markdown"})})]})})}let g={border:"none",background:"color-mix(in srgb, var(--border) 30%, transparent)",color:"var(--text-muted)",borderRadius:5,padding:"2px 10px",fontSize:11,cursor:"pointer"}},64536:(e,t,r)=>{r.d(t,{C6:()=>b,ZI:()=>h,eo:()=>x});var n=r(12115),o=r(23312),i=r(17357),a=r(93647),s=r(15934),l=r(24456),d=r(82264),c=r(41264),u=r(26479),p=r(41463);let h=340,x=160,g=p.env.NEXT_PUBLIC_SYNC_WS??`${"https:"===window.location.protocol?"wss":"ws"}://${window.location.host}`,f=[...o.Ats,d.V,c.QQ,u.o_];function b({boardId:e,taskId:t,newSessionCwd:r}){let[d,c]=(0,n.useState)(null),[u,p]=(0,n.useState)(null),[y,m]=(0,n.useState)(!1),w=(0,n.useRef)(null),k=(0,n.useRef)(e);k.current=e;let j=d?.taskId??null,S=t??j,C=(0,n.useRef)(S);C.current=S;let R=(0,n.useRef)(r);R.current=r;let I=(0,n.useMemo)(()=>`${g}/connect/${encodeURIComponent(e)}`,[e]),E=(0,i.pX)({uri:I,assets:a.AWg,shapeUtils:f}),L=(0,n.useCallback)(async()=>{try{let t=await fetch(`/api/boards/${encodeURIComponent(e)}`,{cache:"no-store"});if(!t.ok)return void p(`HTTP ${t.status}`);let r=await t.json();c(r.board)}catch(e){p(e instanceof Error?e.message:String(e))}},[e]);(0,n.useEffect)(()=>{L()},[L]);let[T,W]=(0,n.useState)(()=>globalThis.__piRunningSnapshot??null),z=(0,n.useCallback)(e=>{globalThis.__piRunningSnapshot=e,W(e)},[]),P=(0,n.useRef)(!1),M=(0,n.useRef)(0),D=(0,n.useRef)(new Set),$=(0,n.useRef)(async()=>{});(0,n.useEffect)(()=>{let e=!1,t=null,r=async()=>{if(!e&&!P.current&&"visible"===document.visibilityState){P.current=!0;try{let t=await fetch("/api/agent/running",{cache:"no-store"});if(!t.ok)return;let r=await t.json();if(e)return;z(r);let n=w.current;if(!n)return;let o=[];for(let e of n.getCurrentPageShapes())if("session-card"===e.type){let t=e.props;if(!t.sessionId)continue;let n=r.states[t.sessionId],i=r.runningSessionIds.includes(t.sessionId);if(i&&n){let r=n.phase??"waiting_model",i=n.startedAt?Date.now()-n.startedAt:0;(t.phase!==r||t.runningMs!==i||0!==t.endedAt)&&o.push({id:e.id,type:"session-card",props:{phase:r,runningMs:i,endedAt:0}})}else i||"idle"===t.phase||o.push({id:e.id,type:"session-card",props:{phase:"idle",runningMs:0,endedAt:0}})}else if("task-card"===e.type){let t=e.props;if(!t.cardId)continue;let n=r.taskCards?.find(e=>e.cardId===t.cardId&&e.boardId===k.current);n&&n.execStatus!==t.execStatus&&o.push({id:e.id,type:"task-card",props:{execStatus:n.execStatus}})}o.length>0&&n.updateShapes(o);let i=D.current,a=(r.taskCards??[]).some(e=>e.boardId===k.current&&"running"===e.execStatus&&!i.has(e.cardId));for(let e of r.taskCards??[])i.add(e.cardId);a&&Date.now()-M.current>2e3&&(M.current=Date.now(),$.current())}catch{}finally{P.current=!1}}},n=()=>{e||(t=setTimeout(async()=>{await r(),n()},2500))};r(),n();let o=()=>{"visible"===document.visibilityState&&r()};return document.addEventListener("visibilitychange",o),()=>{e=!0,t&&clearTimeout(t),document.removeEventListener("visibilitychange",o)}},[z]);let[H,A]=(0,n.useState)({}),B=(0,n.useRef)({});B.current=H;let F=(0,n.useRef)(!1),N=(0,n.useCallback)(async()=>{if(!F.current){F.current=!0;try{let e=await fetch("/api/sessions",{cache:"no-store"});if(!e.ok)return;let t=await e.json(),r={};for(let e of t.sessions)r[e.id]={title:e.name??e.firstMessage??"Untitled",messageCount:e.messageCount??0,projectName:e.projectKey??e.projectRoot??"",lastReply:e.lastReply??"",lastActivityAt:e.modified?Date.parse(e.modified):0};A(r)}catch{}finally{F.current=!1}}},[]);(0,n.useEffect)(()=>{let e,t=!1,r=async()=>{await N(),t||(e=setTimeout(r,1e4))};r();let n=()=>{"visible"===document.visibilityState&&(e&&clearTimeout(e),r())};return document.addEventListener("visibilitychange",n),()=>{t=!0,e&&clearTimeout(e),document.removeEventListener("visibilitychange",n)}},[N]),(0,n.useEffect)(()=>{let e=w.current;if(!e||!y||0===Object.keys(H).length)return;let t=[];for(let r of e.getCurrentPageShapes()){if("session-card"!==r.type)continue;let e=r.props,n=H[e.sessionId];n&&(e.title!==n.title||e.lastReply!==n.lastReply||e.messageCount!==n.messageCount||e.lastActivityAt!==n.lastActivityAt)&&t.push({id:r.id,type:"session-card",props:{title:n.title,lastReply:n.lastReply,messageCount:n.messageCount,lastActivityAt:n.lastActivityAt}})}t.length>0&&e.updateShapes(t)},[H,y]);let O=(0,n.useCallback)(e=>{w.current=e,m(!0);let t=e.deleteShapes.bind(e);e.deleteShapes=r=>{let n=Array.isArray(r)?r:[r],o=[],i=[],a=[];for(let t of n){let r="string"==typeof t?t:t.id,n=e.getShape(r);if(!n){o.push(r);continue}if("arrow"===n.type){let e=n.meta;if(e?.taskLinkLabel||e?.execLinkLabel)continue;o.push(r);continue}if("session-card"===n.type){let e=n.props;e.sessionId&&!e.cwd?i.push({sid:e.sessionId,shapeId:r}):o.push(r);continue}if("task-card"===n.type){let e=n.props.cardId;e?a.push({cid:e,shapeId:r}):o.push(r);continue}o.push(r)}if(i.length>0||a.length>0){let t;return t=i.length>0&&a.length>0?`删除 ${i.length} 个会话和 ${a.length} 张任务卡?
2
- 将同时清理画布卡片与关联关系。此操作不可撤销。`:i.length>1?`删除 ${i.length} 个会话?
3
- 将同时删除画布卡片并断开任务卡关联。此操作不可撤销。`:1===i.length?"删除该会话?\n将同时删除画布卡片并断开任务卡关联。此操作不可撤销。":a.length>1?`删除 ${a.length} 张任务卡?
4
- 将删除卡/依赖线/执行会话连线;关联的执行会话保留。`:"删除该任务卡?\n将删除任务卡、依赖线与执行会话连线;关联的执行会话保留。此操作不可撤销。",(0,l.l)({message:t}).then(t=>{if(!t)return;let r=[...i.map(e=>e.shapeId),...a.map(e=>e.shapeId)],n=new Set;for(let t of r)for(let r of e.getBindingsInvolvingShape(t,"arrow"))n.add(r.fromId);for(let t of(e.store.remove([...r,...n,...o]),i))fetch(`/api/sessions/${encodeURIComponent(t.sid)}`,{method:"DELETE"}).then(()=>(0,s.Qp)(t.sid)).catch(e=>console.warn(`[board] 删除会话 ${t.sid} 异常`,e));for(let e of a)fetch(`/api/task-cards/${encodeURIComponent(e.cid)}`,{method:"DELETE"}).catch(t=>console.warn(`[board] 删除任务卡 ${e.cid} 异常`,t))}),e}return o.length>0&&t(o),e}},[]),U=(0,n.useCallback)(e=>{let t=e.getCurrentPageShapes().filter(e=>"session-card"===e.type).map(e=>({x:e.x,y:e.y,w:e.props.w||h,h:e.props.h||x})),r=(e,r)=>t.some(t=>e<t.x+t.w+24&&e+h+24>t.x&&r<t.y+t.h+24&&r+x+24>t.y),n=60,o=0;for(;o<2e3;){for(let e=0;e<4;e+=1){let t=60+e*(h+24);if(!r(t,n))return{x:t,y:n}}n+=x+24,o+=1}return{x:60+120*Math.random(),y:60+120*Math.random()}},[]),_=(0,n.useCallback)((e,t)=>{let r=x+24,n=h+24,o=e.getCurrentPageShapes().filter(e=>"arrow"!==e.type&&e.id!==t.id).map(e=>({x:e.x,y:e.y,w:e.props.w??h,h:e.props.h??x})),i=(e,t)=>o.some(r=>e<r.x+r.w+24&&e+h+24>r.x&&t<r.y+r.h+24&&t+x+24>r.y),a=t.x+t.w+24;for(let e=0;e<80;e+=1){let n=t.y+e*r;if(!i(a,n))return{x:a,y:n}}let s=t.y+t.h+24;for(let e=0;e<40;e+=1){let r=t.x+e*n;if(!i(r,s))return{x:r,y:s}}return{x:t.x+t.w+24,y:t.y+t.h+24}},[]),Y=(0,n.useRef)(!1),K=(0,n.useCallback)(async()=>{let e=w.current;if(!e||Y.current)return;let t=C.current,r=k.current;if(t){Y.current=!0;try{var n,i,a,s,l,d,c,u,p;let[g,f]=await Promise.all([fetch(`/api/tasks/${encodeURIComponent(t)}`,{cache:"no-store"}).catch(()=>null),fetch(`/api/task-cards?boardId=${encodeURIComponent(r)}`,{cache:"no-store"}).catch(()=>null)]);if(!g?.ok||!f?.ok)return;let b=await g.json(),y=await f.json(),m=e.getCurrentPageShapes(),w=new Map,k=new Map;for(let e of m){if("session-card"!==e.type)continue;let t=e.props.sessionId;t&&(w.set(t,e.id),k.set(t,e.id))}let j=new Set(b.task?.sessionIds??[]),S=[];for(let[t,r]of w){if(j.has(t))continue;let n=e.getShape(r);n&&n.props.cwd||S.push(r)}if(S.length>0&&e.store.remove(S),!m.some(e=>"session-card"===e.type&&e.props.cwd&&e.props.taskId===t)){let t=(()=>{for(let e of m)if("task-card"===e.type&&e.props.cardId){let t=e.props;return{id:e.id,x:e.x,y:e.y,w:t.w??380,h:t.h??240}}return null})();for(let r of j){if(w.has(r))continue;let n=B.current[r],i=t?_(e,t)??U(e):U(e);e.createShape({id:(0,o.n6Y)(`session-${r}`),type:"session-card",x:i.x,y:i.y,props:{sessionId:r,title:n?.title??"Untitled",projectName:n?.projectName??"",messageCount:n?.messageCount??0,lastReply:n?.lastReply??"",lastActivityAt:n?.lastActivityAt??0,phase:"idle",runningMs:0,endedAt:0,stale:!1,expanded:!1,w:h,h:x}})}}let C=new Map;for(let e of m)if("task-card"===e.type){let t=e.props.cardId;t&&C.set(t,e.id)}let R=new Map;for(let t of m){if("arrow"!==t.type)continue;let r=t.meta;if(!r?.execLinkLabel)continue;let n=e.getBindingsInvolvingShape(t.id,"arrow"),o="",i="";for(let e of n){let t=e.props.terminal;"start"===t&&(o=e.toId),"end"===t&&(i=e.toId)}if(o){let e=R.get(o)??[];e.push({to:i,arrowId:t.id}),R.set(o,e)}}for(let t of y.cards){let r=C.get(t.id);if(!r)continue;let o=t.sessionId?k.get(t.sessionId):null,d=R.get(r)??[];for(let t of d)t.to!==o&&e.deleteShapes([t.arrowId]);!o||d.some(e=>e.to===o)||(n=e,i=r,a=o,s=t.id,l=t.sessionId,v(n,i,a,`exec-${s}-${l}`,{execLinkLabel:"exec"},!0))}let I=new Map;for(let t of m){if("arrow"!==t.type)continue;let r=t.meta;if(!r?.taskLinkLabel)continue;let n=e.getBindingsInvolvingShape(t.id,"arrow"),o="",i="";for(let e of n){let t=e.props.terminal;"start"===t&&(o=e.toId),"end"===t&&(i=e.toId)}o&&i&&I.set(`${o}->${i}:${r.taskLinkLabel}`,t.id)}let E=new Set;for(let t of y.cards){let r=C.get(t.id);if(r)for(let n of t.links??[]){let t=C.get(n.targetCardId);if(!t)continue;let o=`${r}->${t}:${n.kind}`;E.add(o),I.has(o)||(d=e,c=r,u=t,p=n.kind,v(d,c,u,`link-${c}-${u}-${p}`,{taskLinkLabel:p},!1))}}for(let[t,r]of I)E.has(t)||e.deleteShapes([r])}catch{}finally{Y.current=!1}}},[U,_]);(0,n.useEffect)(()=>{$.current=K},[K]),(0,n.useEffect)(()=>{let e;if(!S)return;let t=!1,r=async()=>{await K(),t||(e=setTimeout(r,1e4))},n=setTimeout(()=>void r(),1200),o=()=>{"visible"===document.visibilityState&&(e&&clearTimeout(e),r())};return document.addEventListener("visibilitychange",o),()=>{t=!0,e&&clearTimeout(e),clearTimeout(n),document.removeEventListener("visibilitychange",o)}},[S,y,K]);let G=(0,n.useRef)(0),q=(0,n.useCallback)(()=>{let e=w.current;if(!e)return;let t=e.getViewportPageBounds(),r=t.minX+(t.width-840)/2,n=t.minY+(t.height-600)/2;600>t.height&&(n=t.minY+16),840>t.width&&(r=t.minX+16);let i=G.current%3*24;G.current+=1;let a=crypto.randomUUID();e.createShape({id:(0,o.n6Y)(),type:"session-card",x:r+i,y:n+i,props:{sessionId:a,title:"",projectName:"",messageCount:0,lastReply:"",phase:"idle",runningMs:0,endedAt:0,lastActivityAt:0,stale:!1,expanded:!0,cwd:R.current??"",taskId:C.current??"",w:840,h:600}})},[]),J=(0,n.useCallback)((e,t,r)=>{let n=w.current;if(!n)return;let i=B.current[e];n.createShape({id:(0,o.n6Y)(`session-${e}`),type:"session-card",x:t,y:r,props:{sessionId:e,title:i?.title??"Untitled",projectName:i?.projectName??"",messageCount:i?.messageCount??0,lastReply:i?.lastReply??"",lastActivityAt:i?.lastActivityAt??0,phase:"idle",runningMs:0,endedAt:0,stale:!1,expanded:!1,w:h,h:x}})},[]),V=(0,n.useCallback)(async()=>{let e=w.current;if(!e)return;let t=!!C.current,r=e.getCurrentPageShapes(),n=t?r.filter(e=>"session-card"!==e.type).map(e=>e.id):r.map(e=>e.id);n.length>0&&e.deleteShapes(n),t&&K()},[K]),X="synced-remote"!==E.status;return(0,n.useMemo)(()=>({board:d,loading:X,error:u,running:T,runningCount:T?.runningSessionIds.length??0,editor:y?w.current:null,syncStore:E,onMount:O,addSessionNode:J,addNewSessionCard:q,clearBoard:V,sessionTitles:H,loadSessionSummaries:N,reloadCanvas:L}),[d,X,u,T,y,E,O,J,q,V,H,N,L])}function v(e,t,r,n,i,a){let s=(0,o.n6Y)(n);e.createShape({id:s,type:"arrow",x:0,y:0,meta:i,props:{start:{x:0,y:0},end:{x:0,y:0},color:"blue",fill:"none",dash:a?"dashed":"solid",arrowheadStart:"none",arrowheadEnd:"arrow",labelColor:"black",font:"sans",richText:{type:"doc",content:[]},scale:1,size:"m",bend:0,kind:"elbow",labelPosition:.5,elbowMidPoint:.5}}),e.createBindings([{type:"arrow",fromId:s,toId:t,props:{terminal:"start",isPrecise:!1,isExact:!1,normalizedAnchor:{x:.5,y:.5},snap:"none"}},{type:"arrow",fromId:s,toId:r,props:{terminal:"end",isPrecise:!1,isExact:!1,normalizedAnchor:{x:.5,y:.5},snap:"none"}}])}},71309:(e,t,r)=>{r.d(t,{eR:()=>s,kz:()=>l,u:()=>i});var n=r(95155),o=r(12115);let i="0 0 0 3px var(--accent), 0 0 24px color-mix(in srgb, var(--accent) 45%, transparent)",a=(0,o.createContext)(null);function s({children:e}){let[t,r]=(0,o.useState)(null),i=(0,o.useRef)(null),l=(0,o.useCallback)(e=>{i.current&&clearTimeout(i.current),i.current=null,r(e),e&&(i.current=setTimeout(()=>r(null),1800))},[]);return(0,o.useEffect)(()=>()=>{i.current&&clearTimeout(i.current)},[]),(0,n.jsx)(a.Provider,{value:{highlightId:t,setHighlight:l},children:e})}function l(){let e=(0,o.useContext)(a);return e||{highlightId:null,setHighlight:()=>{}}}},82264:(e,t,r)=>{r.d(t,{V:()=>E});var n=r(95155),o=r(23312),i=r(12115),a=r(47650),s=r(60015),l=r(39247);function d({stats:e,contextUsage:t}){if(!e)return null;let r=e.tokens,o=e.cost??0,i=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e),a=o>0?o>=.01?`$${o.toFixed(2)}`:"<$0.01":null,s="var(--text-muted)",l=null;if(t?.contextWindow){let e=t.percent;null!==e&&e>90?s="#ef4444":null!==e&&e>70&&(s="rgba(234,179,8,0.95)"),l=null!==e?`${e.toFixed(0)}% / ${i(t.contextWindow)}`:`? / ${i(t.contextWindow)}`}let c={display:"flex",alignItems:"center",gap:4,flexShrink:0};return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,minWidth:0,fontSize:11,color:"var(--text-muted)",whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"},children:[r.input>0&&(0,n.jsxs)("span",{style:c,children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"5",y1:"8.5",x2:"5",y2:"1.5"}),(0,n.jsx)("polyline",{points:"2 4 5 1.5 8 4"})]}),i(r.input)]}),r.output>0&&(0,n.jsxs)("span",{style:c,children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"5",y1:"1.5",x2:"5",y2:"8.5"}),(0,n.jsx)("polyline",{points:"2 6 5 8.5 8 6"})]}),i(r.output)]}),r.cacheRead>0&&(0,n.jsxs)("span",{style:c,children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M8.5 5a3.5 3.5 0 1 1-1-2.45"}),(0,n.jsx)("polyline",{points:"6.5 1.5 8.5 2.5 7.5 4.5"})]}),i(r.cacheRead)]}),a&&(0,n.jsx)("span",{style:{display:"flex",alignItems:"center",color:"var(--text)",fontWeight:500,flexShrink:0},children:a}),l&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,color:s,flexShrink:0},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M1 9 L1 5 Q1 1 5 1 Q9 1 9 5 L9 9"}),(0,n.jsx)("line",{x1:"1",y1:"9",x2:"9",y2:"9"})]}),l]})]})}let c=(0,i.forwardRef)(function({sessionId:e,stats:t,contextUsage:r,todos:o},a){let{t:s}=(0,l.s)(),[d,c]=(0,i.useState)(!1),[y,m]=(0,i.useState)(!1),w=(0,i.useRef)(null),k=(0,i.useRef)(null),j=(0,i.useRef)(null);(0,i.useImperativeHandle)(a,()=>({openStats:()=>{c(!0),m(!1)}}),[]);let S=e=>{c("stats"===e),m("todo"===e)},C=(0,i.useCallback)(()=>{window.open(`/api/sessions/${encodeURIComponent(e)}/export?inline=1`,"_blank","noopener,noreferrer")},[e]),R=r?.contextWindow&&null!==r.percent?`${r.percent.toFixed(0)}% / ${f(r.contextWindow)}`:s("nav.stats"),I=o.filter(e=>"completed"!==e.status).length,E=(0,i.useCallback)(()=>{let e=w.current?.closest("[data-session-titlebar]"),t=e?.getBoundingClientRect().width;return t||(w.current?.closest(".tl-html-container")?.getBoundingClientRect().width??300)},[]),L=d||y;return(0,i.useEffect)(()=>{if(!L)return;let e=e=>{let t=e.target;t instanceof Node&&(w.current?.contains(t)||document.querySelector("[data-session-nav-popover]")?.contains(t)||document.querySelector("[data-session-nav-todo]")?.contains(t)||document.querySelector(".glass-top-panel")?.contains(t))||(c(!1),m(!1))},t=e=>{"Escape"===e.key&&(c(!1),m(!1))};return document.addEventListener("pointerdown",e,!0),document.addEventListener("keydown",t,!0),()=>{document.removeEventListener("pointerdown",e,!0),document.removeEventListener("keydown",t,!0)}},[L]),(0,n.jsxs)("div",{ref:w,style:{display:"flex",alignItems:"center",gap:2,padding:"0 4px",position:"relative",pointerEvents:"all",height:"100%"},children:[(0,n.jsxs)("button",{type:"button",onClick:C,title:s("history.full"),"aria-label":s("history.full"),style:u,onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.background=x},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="transparent"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M3 12a9 9 0 1 0 3-6.7L3 8"}),(0,n.jsx)("path",{d:"M3 3v5h5"}),(0,n.jsx)("path",{d:"M12 7v5l3 2"})]}),(0,n.jsx)("span",{style:p,children:s("history.full")})]}),(0,n.jsx)("span",{style:h}),(0,n.jsxs)("button",{ref:k,type:"button",onClick:()=>S(d?"none":"stats"),title:s("session.title"),"aria-label":s("session.title"),"aria-expanded":d,style:{...u,background:d?g:"transparent",color:d?"var(--accent)":"var(--text-muted)"},onMouseEnter:e=>{d||(e.currentTarget.style.color="var(--text)",e.currentTarget.style.background=x)},onMouseLeave:e=>{d||(e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="transparent")},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"12",y1:"20",x2:"12",y2:"10"}),(0,n.jsx)("line",{x1:"18",y1:"20",x2:"18",y2:"4"}),(0,n.jsx)("line",{x1:"6",y1:"20",x2:"6",y2:"16"})]}),(0,n.jsx)("span",{style:p,children:R})]}),o.length>0&&(0,n.jsxs)("button",{ref:j,type:"button",onClick:()=>S(y?"none":"todo"),title:s("todo.title"),"aria-label":s("todo.title"),"aria-expanded":y,style:{...u,background:y?g:"transparent",color:y?"var(--accent)":"var(--text-muted)"},onMouseEnter:e=>{y||(e.currentTarget.style.color="var(--text)",e.currentTarget.style.background=x)},onMouseLeave:e=>{y||(e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="transparent")},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"3",y:"4",width:"18",height:"16",rx:"3"}),(0,n.jsx)("path",{d:"M8 9h8M8 13h5"})]}),(0,n.jsx)("span",{style:p,children:s("nav.todo")}),(0,n.jsx)("span",{style:{fontSize:10,fontWeight:700,color:"var(--text-muted)"},children:I>0?I:"✓"})]}),d&&t&&(0,n.jsx)(b,{navRef:w,navWidth:E(),stats:t,contextUsage:r,onClose:()=>c(!1)}),y&&o.length>0&&(0,n.jsx)(v,{navRef:w,navWidth:E(),todos:o,onClose:()=>m(!1)})]})}),u={flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",gap:4,width:"auto",height:26,padding:"0 6px",border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:"pointer",transition:"color 0.12s, background 0.12s"},p={fontSize:11,fontWeight:600,lineHeight:1,whiteSpace:"nowrap"},h={flexShrink:0,width:1,height:16,alignSelf:"center",background:"color-mix(in srgb, var(--border) 70%, transparent)",margin:"0 3px"},x="color-mix(in srgb, var(--glass-bg-strong) 40%, transparent)",g="color-mix(in srgb, var(--glass-bg-strong) 60%, transparent)";function f(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e)}function b({navRef:e,navWidth:t,stats:r,contextUsage:o,onClose:s}){let{t:c}=(0,l.s)(),[u,p]=(0,i.useState)(null),h=(0,i.useRef)(null);if((0,i.useEffect)(()=>{let r=()=>{let r=e.current;if(!r)return;let n=r.getBoundingClientRect(),o=r.closest("[data-session-titlebar]"),i=o?.getBoundingClientRect(),a=i?i.left:Math.min(n.right-t,Math.max(8,n.left));p({top:i?i.bottom:n.bottom,left:a})};r();let n=new ResizeObserver(r);return e.current&&n.observe(e.current),e.current?.closest("[data-session-titlebar]")&&n.observe(e.current.closest("[data-session-titlebar]")),window.addEventListener("resize",r),()=>{n.disconnect(),window.removeEventListener("resize",r)}},[e,t]),(0,i.useEffect)(()=>{let t=t=>{let r=t.target;h.current?.contains(r)||e.current?.contains(r)||s()};return document.addEventListener("pointerdown",t,!0),()=>document.removeEventListener("pointerdown",t,!0)},[e,s]),!u)return null;let x=r.totalActiveMs??0,g=[...r.sessionName?[{label:c("session.name"),value:r.sessionName}]:[],{label:c("session.id"),value:r.sessionId},...x>0?[{label:c("session.totalActive"),value:(e=>{if(e<=0)return"0s";let t=Math.floor(e/1e3),r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=t%60;return r>0?`${r}h ${n}m`:n>0?`${n}m ${o}s`:`${o}s`})(x)}]:[]],v=[[c("session.user"),r.userMessages.toLocaleString()],[c("session.assistant"),r.assistantMessages.toLocaleString()],[c("session.toolCalls"),r.toolCalls.toLocaleString()],[c("session.toolResults"),r.toolResults.toLocaleString()],[c("session.total"),r.totalMessages.toLocaleString()]],y=[[c("session.input"),r.tokens.input.toLocaleString()],[c("session.output"),r.tokens.output.toLocaleString()],...r.tokens.cacheRead>0?[[c("session.cacheRead"),r.tokens.cacheRead.toLocaleString()]]:[],...r.tokens.cacheWrite>0?[[c("session.cacheWrite"),r.tokens.cacheWrite.toLocaleString()]]:[],[c("session.total"),r.tokens.total.toLocaleString()],...r.cost>0?[[c("session.cost"),`$${r.cost.toFixed(4)}`]]:[],...r.contextUsage?.contextWindow?[[c("session.context"),`${null!==r.contextUsage.percent?`${r.contextUsage.percent.toFixed(1)}%`:"?"} / ${f(r.contextUsage.contextWindow)}`]]:[]],m=(e,t,r="left",o=!1)=>(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--text)",marginBottom:6},children:e}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:o?"max-content minmax(0, 1fr)":"auto minmax(0, 1fr)",columnGap:o?14:12,rowGap:4,justifyContent:o?"start":void 0},children:t.map(([t,o])=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-meta)",whiteSpace:"nowrap"},children:t}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:"anywhere",textAlign:r,whiteSpace:"normal"},children:o})]},`${e}:${t}`))})]}),w=(0,n.jsx)("div",{ref:h,"data-session-nav-popover":!0,role:"dialog","aria-label":c("session.title"),className:"glass-panel",style:{position:"fixed",top:u.top,left:u.left,width:t,maxHeight:"min(560px, calc(100dvh - 44px))",overflowY:"auto",zIndex:1200,padding:"12px 16px",fontSize:12,lineHeight:1.5,fontFamily:"var(--font-mono)",borderRadius:12,border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)"},children:(0,n.jsxs)("div",{style:{display:"grid",gap:16,fontSize:12,lineHeight:1.5,fontFamily:"var(--font-mono)"},children:[(0,n.jsx)(d,{stats:r,contextUsage:o}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"auto minmax(0, 1fr)",columnGap:12,rowGap:8,alignItems:"start"},children:g.map(e=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-meta)",whiteSpace:"nowrap"},children:e.label}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"},children:e.value})]},e.label))}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(160px, 0.5fr) minmax(240px, 0.7fr)",gap:24},children:[m(c("session.messages"),v),m(c("session.tokens"),y,"right",!0)]})]})});return(0,a.createPortal)(w,document.body)}function v({navRef:e,navWidth:t,todos:r,onClose:o}){let{t:s}=(0,l.s)(),[d,c]=(0,i.useState)(null),u=(0,i.useRef)(null);if((0,i.useEffect)(()=>{let r=()=>{let r=e.current;if(!r)return;let n=r.getBoundingClientRect(),o=r.closest("[data-session-titlebar]"),i=o?.getBoundingClientRect(),a=i?i.left:Math.min(n.right-t,Math.max(8,n.left));c({top:i?i.bottom:n.bottom,left:a})};r();let n=new ResizeObserver(r);return e.current&&n.observe(e.current),e.current?.closest("[data-session-titlebar]")&&n.observe(e.current.closest("[data-session-titlebar]")),window.addEventListener("resize",r),()=>{n.disconnect(),window.removeEventListener("resize",r)}},[e,t]),(0,i.useEffect)(()=>{let t=t=>{let r=t.target;u.current?.contains(r)||e.current?.contains(r)||o()};return document.addEventListener("pointerdown",t,!0),()=>document.removeEventListener("pointerdown",t,!0)},[e,o]),!d)return null;let p=(0,n.jsxs)("div",{ref:u,"data-session-nav-todo":!0,role:"menu","aria-label":s("todo.title"),className:"glass-panel",style:{position:"fixed",top:d.top,left:d.left,width:t,maxHeight:"min(440px, calc(100dvh - 44px))",overflowY:"auto",zIndex:1200,fontFamily:"inherit",borderRadius:12,border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"9px 12px",borderBottom:"1px solid color-mix(in srgb, var(--border) 70%, transparent)",fontSize:12,fontWeight:650,color:"var(--text)"},children:[s("todo.title"),(0,n.jsxs)("span",{style:{marginLeft:"auto",fontSize:11,color:"var(--text-meta)",fontWeight:500},children:[r.filter(e=>"completed"===e.status).length,"/",r.length," ",s("todo.completed")]})]}),0===r.length?(0,n.jsx)("div",{style:{padding:"12px 14px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:s("todo.empty")}):(0,n.jsx)("div",{style:{maxHeight:330,overflowY:"auto"},children:r.map(e=>{let t="completed"===e.status,r="high"===e.priority?"#ef4444":"medium"===e.priority?"rgba(234,179,8,0.9)":"var(--text-meta)";return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:8,padding:"7px 12px",borderBottom:"1px solid color-mix(in srgb, var(--border) 45%, transparent)"},children:[(0,n.jsx)("span",{"aria-hidden":"true",style:{flexShrink:0,marginTop:2,width:13,height:13,borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center",fontSize:10,fontWeight:800,lineHeight:1,color:t?"#fff":"transparent",background:t?"#16a34a":"color-mix(in srgb, var(--border) 70%, transparent)",border:t?"none":"1px solid color-mix(in srgb, var(--border) 80%, transparent)"},children:"✓"}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,fontSize:12,lineHeight:1.4,color:t?"var(--text-meta)":"var(--text)",textDecoration:t?"line-through":"none",wordBreak:"break-word"},children:e.content}),(0,n.jsx)("span",{"aria-hidden":"true",style:{flexShrink:0,marginTop:5,width:7,height:7,borderRadius:"50%",background:r}})]},e.id??e.content)})})]});return(0,a.createPortal)(p,document.body)}var y=r(32782),m=r(15934);function w({sessionId:e,cwd:t,taskId:r}){let{t:d}=(0,l.s)(),{soundEnabled:u,onSoundToggle:p,playDoneSound:h,unlockAudio:x}=(0,y.G)(),g=(0,o.hGv)(),[f,b]=(0,i.useState)(null),[v,j]=(0,i.useState)(null),[S,C]=(0,i.useState)(0),R=(0,i.useRef)(null),I=(0,i.useRef)(null),E=(0,i.useRef)(null),L=!!t,T=(0,i.useRef)(null);T.current=L&&r?{taskId:r}:null;let W=(0,i.useRef)(e),z=(0,i.useRef)(t??null),P=(0,i.useRef)(L),M=(0,i.useRef)(!1),D=(0,i.useRef)(t);(0,i.useEffect)(()=>{let e=D.current;D.current=t,!e||t||P.current&&!M.current&&(P.current=!1,C(e=>e+1))},[t]);let[$,H]=(0,i.useState)(null);(0,i.useEffect)(()=>{let e=R.current?.closest(".tl-html-container"),t=e?.querySelector("[data-session-navbar-slot]")??null;H(e=>e===t?e:t)});let[A,B]=(0,i.useState)(null),[F,N]=(0,i.useState)(null),[O,U]=(0,i.useState)([]),_=(0,i.useCallback)(e=>{B(e)},[]),Y=(0,i.useCallback)(()=>{E.current?.openStats()},[]),K=(0,i.useCallback)(e=>{N(e)},[]),G=(0,i.useCallback)(e=>{U(e)},[]),q=(0,i.useCallback)(e=>{if(!e?.id)return;M.current=!0;let t=R.current?.closest(".tl-html-container"),r=t?.getAttribute("data-node-id");r&&g.updateShapes([{id:`shape:${r}`,type:"session-card",props:{cwd:""}}]),(0,m.PH)(e.id)},[g]),J=(0,i.useCallback)(t=>{(0,m.PK)(e,t)},[e]),V=(0,i.useCallback)(t=>{(0,m.Wd)(e,t)},[e]),X=(0,i.useCallback)(()=>{(0,m.Ho)(e,f?.name)},[e,f?.name]),Q=(0,i.useCallback)(t=>{(0,m.sV)(e,{title:"custom"===t.method?void 0:t.title,method:t.method})},[e]);return((0,i.useEffect)(()=>{let e=R.current;if(!e)return;let t=t=>{if(t.ctrlKey||t.metaKey)return;let r=t.target;r instanceof Node&&e.contains(r)&&function(e,t){let r=e instanceof Element?e:e.parentElement;for(;r&&r instanceof HTMLElement&&r!==t;){let e=r.scrollHeight>r.clientHeight,t=r.scrollWidth>r.clientWidth;if(e||t){let n=getComputedStyle(r),o=n.overflowY,i=n.overflowX;if(e&&("auto"===o||"scroll"===o||"overlay"===o)||t&&("auto"===i||"scroll"===i||"overlay"===i))return!0}r=r.parentElement}return!1}(r,e)&&t.stopPropagation()};return e.addEventListener("wheel",t),()=>{e.removeEventListener("wheel",t)}}),(0,i.useEffect)(()=>{let e=R.current;if(!e)return;let t=e=>{let t=window.getSelection();t&&t.toString().length>0&&e.stopPropagation()};return e.addEventListener("copy",t),()=>e.removeEventListener("copy",t)}),(0,i.useEffect)(()=>{if(L)return;let t=!1;return P.current?(j(null),(async()=>{try{let r=await fetch("/api/sessions",{cache:"no-store"});if(!r.ok)throw Error(`HTTP ${r.status}`);let n=(await r.json()).sessions.find(t=>t.id===e);if(t)return;n&&b(n)}catch(e){console.warn("new session metadata load failed:",e)}})(),()=>{t=!0}):(b(null),j(null),(async()=>{try{let r=await fetch("/api/sessions",{cache:"no-store"});if(!r.ok)throw Error(`HTTP ${r.status}`);let n=(await r.json()).sessions.find(t=>t.id===e);if(t)return;if(!n)return void j(d("boards.sessionMissing"));b(n),C(e=>e+1)}catch(e){t||j(e instanceof Error?e.message:String(e))}})(),()=>{t=!0})},[e,d,L]),v)?(0,n.jsx)("div",{style:k,children:(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:v})}):f||L||P.current?(0,n.jsxs)("div",{ref:R,className:"board-workbench",style:k,onPointerDown:e=>{0===e.button&&e.stopPropagation()},onPointerUp:e=>{0===e.button&&e.stopPropagation()},onClick:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:[$&&f&&(0,a.createPortal)((0,n.jsx)(c,{ref:E,sessionId:f.id,stats:A,contextUsage:F,todos:O}),$),(0,n.jsx)(s.l,{session:L||P.current?null:f,newSessionCwd:L||P.current?z.current??null:null,newSessionDraftKey:L||P.current?W.current:null,pendingNewSessionTaskRef:L||P.current?T:void 0,chatInputRef:I,inWorkbench:!0,onSessionStatsChange:_,onContextUsageChange:K,onSessionStatsPanelOpen:Y,onTodosChange:G,onOpenFile:J,onSessionCreated:L?e=>q(e):void 0,onSessionForked:V,onAgentEnd:X,onAttentionNeeded:Q,soundEnabled:u,onSoundToggle:p,playDoneSound:h,unlockAudio:x},S)]}):(0,n.jsx)("div",{style:k,children:(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:d("boards.loadingSession")})})}let k={display:"flex",flexDirection:"column",width:"100%",height:"100%",overflow:"visible",color:"var(--text)"};var j=r(64536),S=r(87278),C=r(71309),R=r(91897);let I={sessionId:o.T.string,title:o.T.string,projectName:o.T.string,messageCount:o.T.number,lastReply:o.T.string,phase:o.T.string,runningMs:o.T.number,endedAt:o.T.number,lastActivityAt:o.T.number,stale:o.T.boolean,expanded:o.T.boolean,cwd:o.T.string,taskId:o.T.string,w:o.T.number,h:o.T.number,expandedW:o.T.number,expandedH:o.T.number,collapsedW:o.T.number,collapsedH:o.T.number};class E extends o.A8{static{this.type="session-card"}static{this.props=I}getDefaultProps(){return{sessionId:"",title:"Untitled session",projectName:"",messageCount:0,lastReply:"",phase:"idle",runningMs:0,endedAt:0,lastActivityAt:0,stale:!1,expanded:!1,cwd:"",taskId:"",w:280,h:120,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}}component(e){return(0,n.jsx)(W,{shape:e})}getIndicatorPath(e){let{w:t,h:r}=e.props,n=new Path2D;return n.roundRect(0,0,t,r,14),n}canResize(){return!0}canScroll(){return!0}hideRotateHandle(){return!0}onResize(e,t){let r=e.props.expanded,n=r?600:j.ZI,i=r?500:j.eo;return(0,o.mfH)(e,t,{minWidth:n,minHeight:i})}onDoubleClick(e){return{id:e.id,type:"session-card",props:L(e)}}}function L(e){return e.props.expanded?{expanded:!1,expandedW:e.props.w,expandedH:e.props.h,w:e.props.collapsedW||j.ZI,h:e.props.collapsedH||j.eo}:{expanded:!0,collapsedW:e.props.w,collapsedH:e.props.h,w:e.props.expandedW||840,h:e.props.expandedH||600}}let T={waiting_model:{dot:"var(--accent)",label:"thinking"},running_tools:{dot:"#f59e0b",label:"tools"},running_command:{dot:"#f59e0b",label:"command"},waiting_input:{dot:"var(--text)",label:"waiting"},idle:{dot:"var(--text-dim)",label:"idle"},"just-ended":{dot:"#10b981",label:"done"}};function W({shape:e}){let{w:t,h:r,title:a,projectName:s,messageCount:l,phase:d,runningMs:c,endedAt:u,lastActivityAt:p,stale:h,sessionId:x,expanded:g,lastReply:f,cwd:b,taskId:v}=e.props,y=(0,o.hGv)(),k=(0,S.G)(y,e.id,"var(--board-card-glass)"),{highlightId:j}=(0,C.kz)(),I=j===e.id,E=!!b,z=(0,i.useRef)(null);(0,i.useEffect)(()=>{let e=z.current;if(!e)return;let t=t=>{t.ctrlKey||t.metaKey||e.scrollHeight>e.clientHeight&&t.stopPropagation()};return e.addEventListener("wheel",t),()=>e.removeEventListener("wheel",t)}),(0,i.useEffect)(()=>{let e=z.current;if(!e)return;let t=e=>{let t=window.getSelection();t&&t.toString().length>0&&e.stopPropagation()};return e.addEventListener("copy",t),()=>e.removeEventListener("copy",t)});let[P,M]=(0,i.useState)(!1),[D,$]=(0,i.useState)(""),H=(0,i.useRef)(null),A=e=>{e.stopPropagation(),$(a||""),M(!0),requestAnimationFrame(()=>{let e=H.current;e&&(e.focus(),e.select())})},B=async()=>{if(!x)return;let t=D.trim();if(M(!1),t&&t!==a){y?.updateShapes([{id:e.id,type:"session-card",props:{title:t}}]);try{(await fetch(`/api/sessions/${encodeURIComponent(x)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})})).ok?(0,m.z6)(x,t):y?.updateShapes([{id:e.id,type:"session-card",props:{title:a}}])}catch{y?.updateShapes([{id:e.id,type:"session-card",props:{title:a}}])}}},F=()=>{y?.bringToFront([e.id])},N=t=>{(t.stopPropagation(),E)?y?.deleteShapes([e.id]):y?.updateShapes([{id:e.id,type:"session-card",props:L(e)}])};if(g)return(0,n.jsxs)("div",{style:{position:"relative",width:t,height:r,zIndex:0},children:[(0,n.jsx)("div",{ref:k,style:{position:"absolute",inset:0,overflow:"hidden",borderRadius:18,pointerEvents:"none",zIndex:-1}}),(0,n.jsxs)(o.hDc,{"data-testid":`session-card-${x}`,"data-node-id":e.id.replace("shape:",""),onPointerDown:F,style:{width:t,height:r,overflow:"visible",borderRadius:18,border:I?"2px solid var(--accent)":`1px solid ${h?"color-mix(in srgb, var(--border) 80%, transparent)":"color-mix(in srgb, var(--border) 60%, transparent)"}`,background:"transparent",boxShadow:I?C.u:"0 2px 12px -6px rgba(0,0,0,0.18)",animation:I?"board-search-glow 1.8s ease-out forwards":void 0,opacity:h?.55:1,pointerEvents:"all",display:"flex",flexDirection:"column",color:"var(--text)",userSelect:"none",padding:8},children:[(0,n.jsxs)("div",{"data-session-titlebar":!0,style:{flexShrink:0,display:"flex",alignItems:"center",gap:6,padding:"0 10px",height:"calc(36px + env(safe-area-inset-top))",borderTopLeftRadius:12,borderTopRightRadius:12,pointerEvents:"none",cursor:"grab",position:"relative"},children:[(0,n.jsx)(R.i,{kind:"session",color:T[d]?.dot??"var(--text-dim)"}),P?(0,n.jsx)("input",{ref:H,value:D,onChange:e=>$(e.target.value),onKeyDown:e=>{"Enter"===e.key&&B(),"Escape"===e.key&&M(!1)},onBlur:()=>void B(),onPointerDown:e=>e.stopPropagation(),style:{flex:1,minWidth:0,fontSize:12.5,fontWeight:600,padding:"2px 6px",border:"1px solid var(--accent)",borderRadius:5,outline:"none",background:"var(--side-input)",color:"var(--text)"}}):(0,n.jsx)("span",{style:{fontSize:12.5,fontWeight:600,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text)"},children:E?"New session":a||"Untitled"}),!E&&!P&&(0,n.jsx)("button",{type:"button",onClick:A,onPointerDown:e=>e.stopPropagation(),title:"Rename","aria-label":"Rename",style:{flexShrink:0,pointerEvents:"all",display:"flex",alignItems:"center",justifyContent:"center",width:20,height:20,padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-dim)",cursor:"pointer"},children:(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})})}),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("div",{"data-session-navbar-slot":!0,style:{display:"flex",alignItems:"center",pointerEvents:"all"}}),(0,n.jsx)("button",{type:"button",onClick:N,onPointerDown:e=>e.stopPropagation(),title:E?"Discard":"Collapse",style:{flexShrink:0,pointerEvents:"all",display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-dim)",cursor:"pointer"},children:E?(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("polyline",{points:"3 6 5 6 21 6"}),(0,n.jsx)("path",{d:"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"}),(0,n.jsx)("path",{d:"M10 11v6M14 11v6"}),(0,n.jsx)("path",{d:"M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"})]}):(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M18 15l-6-6-6 6"})})})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:0,padding:"0 4px 0",pointerEvents:"all"},children:(0,n.jsx)(w,{sessionId:x,cwd:b,taskId:v})})]})]});let O=T[d]??T.idle;return(0,n.jsxs)("div",{style:{position:"relative",width:t,height:r,zIndex:0},children:[(0,n.jsx)("div",{ref:k,style:{position:"absolute",inset:0,overflow:"hidden",borderRadius:14,pointerEvents:"none",zIndex:-1}}),(0,n.jsxs)(o.hDc,{"data-testid":`session-card-${x}`,onPointerDown:F,style:{width:t,height:r,overflow:"visible",borderRadius:14,border:I?"2px solid var(--accent)":`1px solid ${h?"color-mix(in srgb, var(--border) 80%, transparent)":"color-mix(in srgb, var(--border) 60%, transparent)"}`,background:"transparent",boxShadow:I?C.u:"0 2px 12px -6px rgba(0,0,0,0.18)",animation:I?"board-search-glow 1.8s ease-out forwards":void 0,opacity:h?.55:1,pointerEvents:"all",display:"flex",flexDirection:"column",padding:"8px 10px 6px",color:"var(--text)",userSelect:"none",cursor:"grab"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,minHeight:20,flexShrink:0},children:[(0,n.jsx)(R.i,{kind:"session",color:O.dot}),P?(0,n.jsx)("input",{ref:H,value:D,onChange:e=>$(e.target.value),onKeyDown:e=>{"Enter"===e.key&&B(),"Escape"===e.key&&M(!1)},onBlur:()=>void B(),onPointerDown:e=>e.stopPropagation(),style:{flex:1,minWidth:0,fontSize:12,fontWeight:600,padding:"2px 6px",border:"1px solid var(--accent)",borderRadius:5,outline:"none",background:"var(--side-input)",color:"var(--text)"}}):(0,n.jsx)("span",{style:{fontSize:12.5,fontWeight:600,minWidth:0,flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text)"},children:a||"Untitled"}),!E&&!P&&(0,n.jsx)("button",{type:"button",onClick:A,onPointerDown:e=>e.stopPropagation(),title:"Rename","aria-label":"Rename",style:{flexShrink:0,pointerEvents:"all",display:"flex",alignItems:"center",justifyContent:"center",width:20,height:20,padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-dim)",cursor:"pointer",opacity:.65},children:(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})})}),h&&(0,n.jsx)("span",{style:{flexShrink:0,fontSize:9.5,color:"var(--text-dim)",border:"1px solid color-mix(in srgb, var(--border) 70%, transparent)",borderRadius:4,padding:"0 4px"},children:"stale"}),(0,n.jsx)("button",{type:"button",onClick:N,onPointerDown:e=>e.stopPropagation(),title:"Expand",style:{flexShrink:0,pointerEvents:"all",display:"flex",alignItems:"center",justifyContent:"center",width:20,height:20,padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-dim)",cursor:"pointer"},children:(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M6 9l6 6 6-6"})})})]}),(0,n.jsx)("div",{ref:z,style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",alignItems:"flex-start",justifyContent:"flex-start",gap:2,overflowY:"auto",overflowX:"hidden",padding:"2px 2px 2px 0",scrollbarWidth:"thin",scrollbarColor:"color-mix(in srgb, var(--border) 70%, transparent) transparent"},children:f?(0,n.jsx)("div",{style:{fontSize:11.5,lineHeight:1.45,color:"var(--text-muted)",wordBreak:"break-word",overflowWrap:"anywhere",whiteSpace:"pre-wrap",maxWidth:"100%",userSelect:"text"},children:f}):(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,fontSize:10.5,color:"var(--text-dim)"},children:[s&&(0,n.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flexShrink:1},children:s}),l>0&&(0,n.jsxs)("span",{style:{flexShrink:0,whiteSpace:"nowrap"},children:[l," msgs"]})]})}),(0,n.jsxs)("div",{style:{flexShrink:0,display:"flex",alignItems:"center",gap:6,fontSize:10,color:"var(--text-dim)",borderTop:"1px solid color-mix(in srgb, var(--border) 50%, transparent)",paddingTop:3},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{flexShrink:0},children:"\uD83D\uDD52"}),(0,n.jsx)("span",{children:function(e){if(e<=0)return"";let t=new Date(e),r=new Date;return t.getFullYear()===r.getFullYear()&&t.getMonth()===r.getMonth()&&t.getDate()===r.getDate()?t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):`${t.getMonth()+1}/${t.getDate()} ${t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}`}(p)}),(0,n.jsx)("div",{style:{flex:1}}),c>0&&"idle"!==d&&(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",whiteSpace:"nowrap",flexShrink:0},children:function(e){let t=Math.max(1,Math.round(e/1e3));if(t<60)return`${t}s`;let r=Math.floor(t/60);if(r<60)return`${r}m${t%60}s`;let n=Math.floor(r/60);return`${n}h${r%60}m`}(c)})]})]})]})}},87278:(e,t,r)=>{r.d(t,{G:()=>i});var n=r(12115),o=r(23312);function i(e,t,r){let i=(0,n.useRef)(null),a=()=>{let r=i.current;if(!r||!e?.getShape(t)||!e)return;let n=e.getZoomLevel(),a=e.getShapePageTransform(t);if(!a)return;let s=o.V8r.Point(a),l=e.pageToScreen({x:s.x,y:s.y});r.style.width=`${window.innerWidth/n}px`,r.style.height=`${window.innerHeight/n}px`,r.style.transform=`translate(${-l.x/n}px, ${-l.y/n}px)`};return(0,n.useEffect)(()=>{if(!e)return;let t=0,r=()=>{t||(t=requestAnimationFrame(()=>{t=0,a()}))},n=()=>r();return r(),e.on("change",n),()=>{e.off("change",n),t&&cancelAnimationFrame(t)}},[e,t]),e=>{if(!e)return;let t=e.querySelector("[data-glass-layer]");if(t){i.current=t,a();return}let n=document.createElement("div");n.dataset.glassLayer="1",n.style.cssText=`position:absolute;left:0;top:0;pointer-events:none;z-index:-1;will-change:transform;background-image:linear-gradient(${r}, ${r}), var(--glass-bg-image, none);background-repeat:no-repeat,no-repeat;background-size:100% 100%,100% 100%;`,e.prepend(n),i.current=n,a()}}},91897:(e,t,r)=>{r.d(t,{i:()=>i});var n=r(95155);let o={session:"会话",note:"便笺",task:"任务"};function i({kind:e,color:t}){return(0,n.jsxs)("span",{title:`${o[e]} \xb7 状态由圆点颜色表示`,style:{display:"flex",alignItems:"center",gap:4,flexShrink:0,lineHeight:1},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{width:8,height:8,borderRadius:"50%",background:t,flexShrink:0}}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)",whiteSpace:"nowrap"},children:o[e]})]})}}}]);
@@ -1,78 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[277],{82159:(e,t,n)=>{n.d(t,{AB:()=>tW,BQ:()=>tn,CU:()=>tX,Ce:()=>nm,Dd:()=>tJ,Df:()=>eQ,FF:()=>e0,H_:()=>e3,JJ:()=>ng,J_:()=>e5,KE:()=>nd,KV:()=>ez,Nx:()=>eT,OX:()=>nf,Op:()=>tt,Pg:()=>k,QN:()=>e7,T7:()=>eO,XO:()=>ni,YY:()=>t3,Zc:()=>nb,Zx:()=>eq,_n:()=>t0,_w:()=>eH,bP:()=>nv,fV:()=>tG,fl:()=>e2,gk:()=>eR,gu:()=>eX,hO:()=>e1,hs:()=>tH,iI:()=>eA,kj:()=>tZ,rU:()=>ed,tG:()=>ny,ve:()=>D,yQ:()=>eJ,zU:()=>eL});var r=n(89908),o=n(8242),i=n(97144),s=n(76865),a=n(27050),l=n(42080),d=n(63197),c=n(12894),u=n(41463);function p(e){let{state:t,transaction:n}=e,{selection:r}=n,{doc:o}=n,{storedMarks:i}=n;return{...t,apply:t.apply.bind(t),applyTransaction:t.applyTransaction.bind(t),plugins:t.plugins,schema:t.schema,reconfigure:t.reconfigure.bind(t),toJSON:t.toJSON.bind(t),get storedMarks(){return i},get selection(){return r},get doc(){return o},get tr(){return r=n.selection,o=n.doc,i=n.storedMarks,n}}}var h=class e{constructor(e){this.editor=e.editor,this.rawCommands=this.editor.extensionManager.commands,this.customState=e.state}get hasCustomState(){return!!this.customState}get state(){return this.customState||this.editor.state}get commands(){let{rawCommands:e,editor:t,state:n}=this,{view:r}=t,{tr:o}=n,i=this.buildProps(o);return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,(...e)=>{let n=t(...e)(i);return o.getMeta("preventDispatch")||this.hasCustomState||r.dispatch(o),n}]))}get chain(){return()=>this.createChain()}get can(){return()=>this.createCan()}createChain(e,t=!0){let{rawCommands:n,editor:r,state:o}=this,{view:i}=r,s=[],a=!!e,l=e||o.tr,d=()=>(a||!t||l.getMeta("preventDispatch")||this.hasCustomState||i.dispatch(l),s.every(e=>!0===e)),c={...Object.fromEntries(Object.entries(n).map(([e,n])=>[e,(...e)=>{let r=this.buildProps(l,t),o=n(...e)(r);return s.push(o),c}])),run:d};return c}static createFakeChain(){let e=new Proxy({},{get:(t,n)=>{if("then"!==n)return"run"===n?()=>!1:()=>e}});return e}createCan(e){let{rawCommands:t,state:n}=this,r=e||n.tr,o=this.buildProps(r,!1);return{...Object.fromEntries(Object.entries(t).map(([e,t])=>[e,(...e)=>t(...e)({...o,dispatch:void 0})])),chain:()=>this.createChain(r,!1)}}static createFallbackCan(){let t=e.createFakeChain();return new Proxy({chain:()=>t},{get:(e,t)=>{if("then"!==t)return"chain"===t?e.chain:()=>!1}})}buildProps(e,t=!0){let{rawCommands:n,editor:r,state:o}=this,{view:i}=r,s={tr:e,editor:r,view:i,state:p({state:o,transaction:e}),dispatch:t?()=>void 0:void 0,chain:()=>this.createChain(e,t),can:()=>this.createCan(e),get commands(){return Object.fromEntries(Object.entries(n).map(([e,t])=>[e,(...e)=>t(...e)(s)]))}};return s}};let f=()=>({editor:e,view:t})=>(requestAnimationFrame(()=>{if(!e.isDestroyed){var n;t.dom.blur(),null==(n=window)||null==(n=n.getSelection())||n.removeAllRanges()}}),!0),m=(e=!0)=>({commands:t})=>t.setContent("",{emitUpdate:e}),g=()=>({state:e,tr:t,dispatch:n})=>{let{selection:r}=t,{ranges:i}=r;return!n||(i.forEach(({$from:n,$to:r})=>{e.doc.nodesBetween(n.pos,r.pos,(e,n)=>{if(e.type.isText)return;let{doc:r,mapping:i}=t,s=r.resolve(i.map(n)),a=r.resolve(i.map(n+e.nodeSize)),l=s.blockRange(a);if(!l)return;let d=(0,o.jP)(l);if(e.type.isTextblock){let{defaultType:e}=s.parent.contentMatchAt(s.index());t.setNodeMarkup(l.start,e)}(d||0===d)&&t.lift(l,d)})}),!0)},y=e=>t=>e(t),v=()=>({state:e,dispatch:t})=>(0,i.Z1)(e,t),b=(e,t)=>({editor:n,tr:r})=>{let{state:o}=n,i=o.doc.slice(e.from,e.to);r.deleteRange(e.from,e.to);let a=r.mapping.map(t);return r.insert(a,i.content),r.setSelection(new s.U3(r.doc.resolve(Math.max(a-1,0)))),!0},w=()=>({tr:e,dispatch:t})=>{let{selection:n}=e,r=n.$anchor.node();if(r.content.size>0)return!1;let o=e.selection.$anchor;for(let n=o.depth;n>0;n-=1)if(o.node(n).type===r.type){if(t){let t=o.before(n),r=o.after(n);e.delete(t,r).scrollIntoView()}return!0}return!1};function k(e,t){if("string"==typeof e){if(!t.nodes[e])throw Error(`There is no node type named '${e}'. Maybe you forgot to add the extension?`);return t.nodes[e]}return e}let x=e=>({tr:t,state:n,dispatch:r})=>{let o=k(e,n.schema),i=t.selection.$anchor;for(let e=i.depth;e>0;e-=1)if(i.node(e).type===o){if(r){let n=i.before(e),r=i.after(e);t.delete(n,r).scrollIntoView()}return!0}return!1},M=e=>({tr:t,dispatch:n})=>{let{from:r,to:o}=e;return n&&t.delete(r,o),!0},S=(e,t,n)=>{var r;return!e.parent.isInline||"left"===n&&e.pos>e.start()||"right"===n&&e.pos<e.end()?e.pos:(r=t.nodes[e.parent.type.name].spec).content&&/^text(\*|\+)/.test(r.content)?"left"===n?e.start()-1:e.end()+1:e.pos},E=()=>({state:e,dispatch:t})=>{if(e.selection.empty)return!1;if(t){let n=e.tr,{ranges:r}=e.selection,o=n.steps.length;r.forEach(t=>{let r,i=n.mapping.slice(o),s=n.doc.resolve(i.map(t.$from.pos)),a=n.doc.resolve(i.map(t.$to.pos)),{from:l,to:d}={from:S(s,r=e.schema,"left"),to:S(a,r,"right")};n.deleteRange(l,d)}),n.selection.empty||n.setSelection(s.U3.near(n.doc.resolve(n.selection.from))),n.scrollIntoView(),t(n)}return!0},C=()=>({commands:e})=>e.keyboardShortcut("Enter"),O=()=>({state:e,dispatch:t})=>(0,i.I$)(e,t);function T(e){return"[object RegExp]"===Object.prototype.toString.call(e)}function P(e,t,n={strict:!0}){let r=Object.keys(t);return!r.length||r.every(r=>n.strict?t[r]===e[r]:T(t[r])?t[r].test(e[r]):t[r]===e[r])}function A(e,t,n={}){return e.find(e=>e.type===t&&P(Object.fromEntries(Object.keys(n).map(t=>[t,e.attrs[t]])),n))}function $(e,t,n={}){return!!A(e,t,n)}function D(e,t,n){if(!e||!t)return;let r=e.parent.childAfter(e.parentOffset);if(r.node&&r.node.marks.some(e=>e.type===t)||(r=e.parent.childBefore(e.parentOffset)),!r.node||!r.node.marks.some(e=>e.type===t))return;if(!n){let e=r.node.marks.find(e=>e.type===t);e&&(n=e.attrs)}if(!A([...r.node.marks],t,n))return;let o=r.index,i=e.start()+r.offset,s=o+1,a=i+r.node.nodeSize;for(;o>0&&$([...e.parent.child(o-1).marks],t,n);)o-=1,i-=e.parent.child(o).nodeSize;for(;s<e.parent.childCount&&$([...e.parent.child(s).marks],t,n);)a+=e.parent.child(s).nodeSize,s+=1;return{from:i,to:a}}function j(e,t){if("string"==typeof e){if(!t.marks[e])throw Error(`There is no mark type named '${e}'. Maybe you forgot to add the extension?`);return t.marks[e]}return e}let R=(e,t)=>({tr:n,state:r,dispatch:o})=>{let i=j(e,r.schema),{doc:a,selection:l}=n,{$from:d,from:c,to:u}=l;if(o){let e=D(d,i,t);if(e&&e.from<=c&&e.to>=u){let t=s.U3.create(a,e.from,e.to);n.setSelection(t)}}return!0},I=e=>t=>{let n="function"==typeof e?e(t):e;for(let e=0;e<n.length;e+=1)if(n[e](t))return!0;return!1};function N(e){return e instanceof s.U3}function B(e=0,t=0,n=0){return Math.min(Math.max(e,t),n)}function z(e,t=null){if(!t)return null;let n=s.LN.atStart(e),r=s.LN.atEnd(e);if("start"===t||!0===t)return n;if("end"===t)return r;let o=n.from,i=r.to;return"all"===t?s.U3.create(e,B(0,o,i),B(e.content.size,o,i)):s.U3.create(e,B(t,o,i),B(t,o,i))}function L(){return["Android"].includes(navigator.platform)||/android/i.test(navigator.userAgent)}function F(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document}let V=(e=null,t={})=>({editor:n,view:r,tr:o,dispatch:i})=>{t={scrollIntoView:!0,...t};let s=()=>{(F()||L())&&r.dom.focus(),"u">typeof navigator&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&!F()&&!L()&&r.dom.focus({preventScroll:!0}),requestAnimationFrame(()=>{!n.isDestroyed&&(r.focus(),(null==t?void 0:t.scrollIntoView)&&n.commands.scrollIntoView())})};try{if(r.hasFocus()&&null===e||!1===e)return!0}catch{return!1}if(i&&null===e&&!N(n.state.selection))return s(),!0;let a=z(o.doc,e)||n.state.selection,l=n.state.selection.eq(a);return i&&(l||o.setSelection(a),l&&o.storedMarks&&o.setStoredMarks(o.storedMarks),s()),!0},_=(e,t)=>n=>e.every((e,r)=>t(e,{...n,index:r})),K=(e,t)=>({tr:n,commands:r})=>r.insertContentAt({from:n.selection.from,to:n.selection.to},e,t),U=e=>{let t=e.childNodes;for(let n=t.length-1;n>=0;n-=1){let r=t[n];3===r.nodeType&&r.nodeValue&&/^(\n\s\s|\n)$/.test(r.nodeValue)?e.removeChild(r):1===r.nodeType&&U(r)}return e};function W(e){if("u"<typeof window)throw Error("[tiptap error]: there is no window object available, so this function cannot be used");let t=`<body>${e}</body>`;return U(new window.DOMParser().parseFromString(t,"text/html").body)}function H(e){return"function"==typeof(null==e?void 0:e.nodesBetween)}function q(e,t,n){if(H(e))return e;let r="object"==typeof e&&null!==e;n={slice:!0,parseOptions:{},...n};let o="string"==typeof e;if(r)try{if(Array.isArray(e)&&e.length>0)return a.FK.fromArray(e.map(e=>t.nodeFromJSON(e)));let r=t.nodeFromJSON(e);return n.errorOnInvalidContent&&r.check(),r}catch(r){if(n.errorOnInvalidContent)throw Error("[tiptap error]: Invalid JSON content",{cause:r});return console.warn("[tiptap warn]: Invalid content.","Passed value:",e,"Error:",r),q("",t,n)}if(o){if(n.errorOnInvalidContent){let r=!1,o="",i=new a.Sj({topNode:t.spec.topNode,marks:t.spec.marks,nodes:t.spec.nodes.append({__tiptap__private__unknown__catch__all__node:{content:"inline*",group:"block",parseDOM:[{tag:"*",getAttrs:e=>(r=!0,o="string"==typeof e?e:e.outerHTML,null)}]}})});if(n.slice?a.S4.fromSchema(i).parseSlice(W(e),n.parseOptions):a.S4.fromSchema(i).parse(W(e),n.parseOptions),n.errorOnInvalidContent&&r)throw Error("[tiptap error]: Invalid HTML content",{cause:Error(`Invalid element found: ${o}`)})}let r=a.S4.fromSchema(t);return n.slice?r.parseSlice(W(e),n.parseOptions).content:r.parse(W(e),n.parseOptions)}return q("",t,n)}function J(e){return!("type"in e)}function Z(e,t,n){let r=e.steps.length-1;if(r<t)return;let i=e.steps[r];if(!(i instanceof o.Ln||i instanceof o.Wg))return;let a=e.mapping.maps[r],l=0;a.forEach((e,t,n,r)=>{0===l&&(l=r)}),e.setSelection(s.LN.near(e.doc.resolve(l),n))}let G=(e,t,n)=>({tr:r,dispatch:o,editor:i})=>{if(o){let o,l;n={parseOptions:i.options.parseOptions,updateSelection:!0,applyInputRules:!1,applyPasteRules:!1,...n};let d=e=>{i.emit("contentError",{editor:i,error:e,disableCollaboration:()=>{"collaboration"in i.storage&&"object"==typeof i.storage.collaboration&&i.storage.collaboration&&(i.storage.collaboration.isDisabled=!0)}})},c={preserveWhitespace:"full",...n.parseOptions};if(!n.errorOnInvalidContent&&!i.options.enableContentCheck&&i.options.emitContentError)try{q(t,i.schema,{parseOptions:c,errorOnInvalidContent:!0})}catch(e){d(e)}try{var s;o=q(t,i.schema,{parseOptions:c,errorOnInvalidContent:null!=(s=n.errorOnInvalidContent)?s:i.options.enableContentCheck})}catch(e){return d(e),!1}let{from:u,to:p}="number"==typeof e?{from:e,to:e}:{from:e.from,to:e.to},h=!0,f=!0,m=J(o)?o.content:[o];if(m.forEach(e=>{e.check(),h=!!h&&e.isText&&0===e.marks.length,f=!!f&&e.isBlock}),u===p&&f){let{parent:e}=r.doc.resolve(u);!e.isTextblock||e.type.spec.code||e.childCount||(u-=1,p+=1)}if(h)l=Array.isArray(t)?t.map(e=>e.text||"").join(""):H(t)?m.map(e=>{var t;return null!=(t=e.text)?t:""}).join(""):"object"==typeof t&&t&&t.text?t.text:t,r.insertText(l,u,p);else{l=a.FK.from(m);let e=r.doc.resolve(u),t=e.node(),n=0===e.parentOffset,o=t.isText||t.isTextblock,i=t.content.size>0;n&&o&&i&&f&&(u=Math.max(0,u-1)),r.replaceWith(u,p,m)}n.updateSelection&&Z(r,r.steps.length-1,-1),n.applyInputRules&&r.setMeta("applyInputRules",{from:u,text:l}),n.applyPasteRules&&r.setMeta("applyPasteRules",{from:u,text:l})}return!0};function Y(e){for(let t=0;t<e.edgeCount;t+=1){let{type:n}=e.edge(t);if(n.isTextblock&&!n.hasRequiredAttrs())return n}return null}let Q=(e={})=>({tr:t,dispatch:n,editor:r})=>{let o,i,{pos:s,attrs:a,content:l,updateSelection:d=!0}=e,c=Y((o="number"==typeof s?t.doc.resolve(s):s||t.selection.$from).parent.contentMatchAt(o.index()));if(!c)return!1;let u=Object.keys(c.spec.attrs||{}),p=a?Object.fromEntries(Object.entries(a).filter(([e])=>u.includes(e))):{};if(l){let e=q(l,r.schema);i=c.createAndFill(p,e)}else i=c.createAndFill(p);return!!i&&(n&&(t.insert(o.pos,i),d&&Z(t,t.steps.length-1,-1)),!0)},X=()=>({state:e,dispatch:t})=>(0,i.G2)(e,t),ee=()=>({state:e,dispatch:t})=>(0,i.bh)(e,t),et=()=>({state:e,dispatch:t})=>(0,i.Qv)(e,t),en=()=>({state:e,dispatch:t})=>(0,i.eT)(e,t),er=()=>({state:e,dispatch:t,tr:n})=>{try{let r=(0,o.N0)(e.doc,e.selection.$from.pos,-1);if(null==r)return!1;return n.join(r,2),t&&t(n),!0}catch{return!1}},eo=()=>({state:e,dispatch:t,tr:n})=>{try{let r=(0,o.N0)(e.doc,e.selection.$from.pos,1);if(null==r)return!1;return n.join(r,2),t&&t(n),!0}catch{return!1}},ei=()=>({state:e,dispatch:t})=>(0,i.eB)(e,t),es=()=>({state:e,dispatch:t})=>(0,i._G)(e,t);function ea(){return"u">typeof navigator&&/Mac/.test(navigator.platform)}let el=e=>({editor:t,view:n,tr:r,dispatch:o})=>{let i=(function(e){let t,n,r,o,i=e.split(/-(?!$)/),s=i[i.length-1];"Space"===s&&(s=" ");for(let e=0;e<i.length-1;e+=1){let s=i[e];if(/^(cmd|meta|m)$/i.test(s))o=!0;else if(/^a(lt)?$/i.test(s))t=!0;else if(/^(c|ctrl|control)$/i.test(s))n=!0;else if(/^s(hift)?$/i.test(s))r=!0;else if(/^mod$/i.test(s))F()||ea()?o=!0:n=!0;else throw Error(`Unrecognized modifier name: ${s}`)}return t&&(s=`Alt-${s}`),n&&(s=`Ctrl-${s}`),o&&(s=`Meta-${s}`),r&&(s=`Shift-${s}`),s})(e).split(/-(?!$)/),s=i.find(e=>!["Alt","Ctrl","Meta","Shift"].includes(e)),a=new KeyboardEvent("keydown",{key:"Space"===s?" ":s,altKey:i.includes("Alt"),ctrlKey:i.includes("Ctrl"),metaKey:i.includes("Meta"),shiftKey:i.includes("Shift"),bubbles:!0,cancelable:!0}),l=t.captureTransaction(()=>{n.someProp("handleKeyDown",e=>e(n,a))});return null==l||l.steps.forEach(e=>{let t=e.map(r.mapping);t&&o&&r.maybeStep(t)}),!0};function ed(e,t,n={}){let{from:r,to:o,empty:i}=e.selection,s=t?k(t,e.schema):null,a=[];e.doc.nodesBetween(r,o,(e,t)=>{if(e.isText)return;let n=Math.max(r,t),i=Math.min(o,t+e.nodeSize);a.push({node:e,from:n,to:i})});let l=o-r,d=a.filter(e=>!s||s.name===e.node.type.name).filter(e=>P(e.node.attrs,n,{strict:!1}));return i?!!d.length:d.reduce((e,t)=>e+t.to-t.from,0)>=l}let ec=(e,t={})=>({state:n,dispatch:r})=>!!ed(n,k(e,n.schema),t)&&(0,i.yY)(n,r),eu=()=>({state:e,dispatch:t})=>(0,i.iz)(e,t),ep=e=>({state:t,dispatch:n})=>{let r=k(e,t.schema);return(0,l.T2)(r)(t,n)},eh=()=>({state:e,dispatch:t})=>(0,i.pC)(e,t);function ef(e,t){return t.nodes[e]?"node":t.marks[e]?"mark":null}function em(e,t){let n="string"==typeof t?[t]:t;return Object.keys(e).reduce((t,r)=>(n.includes(r)||(t[r]=e[r]),t),{})}let eg=(e,t)=>({tr:n,state:r,dispatch:o})=>{let i=null,s=null,a=ef("string"==typeof e?e:e.name,r.schema);if(!a)return!1;"node"===a&&(i=k(e,r.schema)),"mark"===a&&(s=j(e,r.schema));let l=!1;return n.selection.ranges.forEach(e=>{r.doc.nodesBetween(e.$from.pos,e.$to.pos,(e,r)=>{i&&i===e.type&&(l=!0,o&&n.setNodeMarkup(r,void 0,em(e.attrs,t))),s&&e.marks.length&&e.marks.forEach(i=>{s===i.type&&(l=!0,o&&n.addMark(r,r+e.nodeSize,s.create(em(i.attrs,t))))})})}),l},ey=()=>({tr:e,dispatch:t})=>(t&&e.scrollIntoView(),!0),ev=()=>({tr:e,dispatch:t})=>{if(t){let t=new s.i5(e.doc);e.setSelection(t)}return!0},eb=()=>({state:e,dispatch:t})=>(0,i._e)(e,t),ew=()=>({state:e,dispatch:t})=>(0,i.Sd)(e,t),ek=()=>({state:e,dispatch:t})=>(0,i.hy)(e,t),ex=()=>({state:e,dispatch:t})=>(0,i.ec)(e,t),eM=()=>({state:e,dispatch:t})=>(0,i.$f)(e,t);function eS(e,t,n={},r={}){return q(e,t,{slice:!1,parseOptions:n,errorOnInvalidContent:r.errorOnInvalidContent})}let eE=(e,{errorOnInvalidContent:t,emitUpdate:n=!0,parseOptions:r={}}={})=>({editor:o,tr:i,dispatch:s,commands:a})=>{let{doc:l}=i;if("full"!==r.preserveWhitespace){let a=eS(e,o.schema,r,{errorOnInvalidContent:null!=t?t:o.options.enableContentCheck});if(s){let e=J(a)?a.content:[a];i.replaceWith(0,l.content.size,e).setMeta("preventUpdate",!n)}return!0}return s&&i.setMeta("preventUpdate",!n),a.insertContentAt({from:0,to:l.content.size},e,{parseOptions:r,errorOnInvalidContent:null!=t?t:o.options.enableContentCheck})};function eC(e,t){let n=j(t,e.schema),{from:r,to:o,empty:i}=e.selection,s=[];i?(e.storedMarks&&s.push(...e.storedMarks),s.push(...e.selection.$head.marks())):e.doc.nodesBetween(r,o,e=>{s.push(...e.marks)});let a=s.find(e=>e.type.name===n.name);return a?{...a.attrs}:{}}function eO(e,t){let n=new o.dL(e);return t.forEach(e=>{e.steps.forEach(e=>{n.step(e)})}),n}function eT(e,t,n){let r=[];return e.nodesBetween(t.from,t.to,(e,t)=>{n(e)&&r.push({node:e,pos:t})}),r}function eP(e){return t=>(function(e,t){for(let n=e.depth;n>0;n-=1){let r=e.node(n);if(t(r))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:r}}})(t.$from,e)}function eA(e,t,n){return void 0===e.config[t]&&e.parent?eA(e.parent,t,n):"function"==typeof e.config[t]?e.config[t].bind({...n,parent:e.parent?eA(e.parent,t,n):null}):e.config[t]}function e$(e){return e.map(e=>{let t=eA(e,"addExtensions",{name:e.name,options:e.options,storage:e.storage});return t?[e,...e$(t())]:e}).flat(10)}function eD(e,t){let n=a.ZF.fromSchema(t).serializeFragment(e),r=document.implementation.createHTMLDocument().createElement("div");return r.appendChild(n),r.innerHTML}function ej(e){return"function"==typeof e}function eR(e,t,...n){return ej(e)?t?e.bind(t)(...n):e(...n):e}function eI(e){return{baseExtensions:e.filter(e=>"extension"===e.type),nodeExtensions:e.filter(e=>"node"===e.type),markExtensions:e.filter(e=>"mark"===e.type)}}function eN(e){let t=[],{nodeExtensions:n,markExtensions:r}=eI(e),o=[...n,...r],i={default:null,validate:void 0,rendered:!0,renderHTML:null,parseHTML:null,keepOnSplit:!0,isRequired:!1},s=n.filter(e=>"text"!==e.name).map(e=>e.name),a=r.map(e=>e.name),l=[...s,...a];return e.forEach(e=>{let n=eA(e,"addGlobalAttributes",{name:e.name,options:e.options,storage:e.storage,extensions:o});n&&n().forEach(e=>{(Array.isArray(e.types)?e.types:"*"===e.types?l:"nodes"===e.types?s:"marks"===e.types?a:[]).forEach(n=>{Object.entries(e.attributes).forEach(([e,r])=>{t.push({type:n,name:e,attribute:{...i,...r}})})})})}),o.forEach(e=>{let n=eA(e,"addAttributes",{name:e.name,options:e.options,storage:e.storage});n&&Object.entries(n()).forEach(([n,r])=>{let o={...i,...r};"function"==typeof(null==o?void 0:o.default)&&(o.default=o.default()),(null==o?void 0:o.isRequired)&&(null==o?void 0:o.default)===void 0&&delete o.default,t.push({type:e.name,name:n,attribute:o})})}),t}function eB(e){let t=[],n=function(e){let t=[],n="",r=!1,o=!1,i=0,s=e.length;for(let a=0;a<s;a+=1){let s=e[a];if("'"===s&&!o){r=!r,n+=s;continue}if('"'===s&&!r){o=!o,n+=s;continue}if(!r&&!o){if("("===s){i+=1,n+=s;continue}if(")"===s&&i>0){i-=1,n+=s;continue}if(";"===s&&0===i){t.push(n),n="";continue}}n+=s}return n&&t.push(n),t}(e||""),r=n.length;for(let e=0;e<r;e+=1){let r=n[e],o=r.indexOf(":");if(-1===o)continue;let i=r.slice(0,o).trim(),s=r.slice(o+1).trim();i&&s&&t.push([i,s])}return t}function ez(...e){return e.filter(e=>!!e).reduce((e,t)=>{let n={...e};return Object.entries(t).forEach(([e,t])=>{if("__proto__"===e)return void Object.defineProperty(n,e,{configurable:!0,enumerable:!0,value:t,writable:!0});if(!n[e]){n[e]=t;return}if("class"===e){let r=t?String(t).split(" "):[],o=n[e]?n[e].split(" "):[],i=r.filter(e=>!o.includes(e));n[e]=[...o,...i].join(" ")}else if("style"===e){let r=new Map([...eB(n[e]),...eB(t)]);n[e]=Array.from(r.entries()).map(([e,t])=>`${e}: ${t}`).join("; ")}else n[e]=t}),n},{})}function eL(e,t){return t.filter(t=>t.type===e.type.name).filter(e=>e.attribute.rendered).map(t=>t.attribute.renderHTML?t.attribute.renderHTML(e.attrs)||{}:{[t.name]:e.attrs[t.name]}).reduce((e,t)=>ez(e,t),{})}function eF(e,t){return"style"in e?e:{...e,getAttrs:n=>{let r=e.getAttrs?e.getAttrs(n):e.attrs;if(!1===r)return!1;let o=t.reduce((e,t)=>{var r;let o=t.attribute.parseHTML?t.attribute.parseHTML(n):"string"!=typeof(r=n.getAttribute(t.name))?r:r.match(/^[+-]?(?:\d*\.)?\d+$/)?Number(r):"true"===r||"false"!==r&&r;return null==o?e:{...e,[t.name]:o}},{});return{...r,...o}}}}function eV(e){return Object.fromEntries(Object.entries(e).filter(([e,t])=>!("attrs"===e&&function(e={}){return 0===Object.keys(e).length&&e.constructor===Object}(t))&&null!=t))}function e_(e){var t,n;let r={};return!(null==e||null==(t=e.attribute)?void 0:t.isRequired)&&"default"in((null==e?void 0:e.attribute)||{})&&(r.default=e.attribute.default),(null==e||null==(n=e.attribute)?void 0:n.validate)!==void 0&&(r.validate=e.attribute.validate),[e.name,r]}function eK(e,t){var n;let r=eN(e),{nodeExtensions:o,markExtensions:i}=eI(e),s=null==(n=o.find(e=>eA(e,"topNode")))?void 0:n.name,l=Object.fromEntries(o.map(n=>{let o=r.filter(e=>e.type===n.name),i={name:n.name,options:n.options,storage:n.storage,editor:t},s=eV({...e.reduce((e,t)=>{let r=eA(t,"extendNodeSchema",i);return{...e,...r?r(n):{}}},{}),content:eR(eA(n,"content",i)),marks:eR(eA(n,"marks",i)),group:eR(eA(n,"group",i)),inline:eR(eA(n,"inline",i)),atom:eR(eA(n,"atom",i)),selectable:eR(eA(n,"selectable",i)),draggable:eR(eA(n,"draggable",i)),code:eR(eA(n,"code",i)),whitespace:eR(eA(n,"whitespace",i)),linebreakReplacement:eR(eA(n,"linebreakReplacement",i)),defining:eR(eA(n,"defining",i)),isolating:eR(eA(n,"isolating",i)),attrs:Object.fromEntries(o.map(e_))}),a=eR(eA(n,"parseHTML",i));a&&(s.parseDOM=a.map(e=>eF(e,o)));let l=eA(n,"renderHTML",i);l&&(s.toDOM=e=>l({node:e,HTMLAttributes:eL(e,o)}));let d=eA(n,"renderText",i);return d&&(s.toText=d),[n.name,s]})),d=Object.fromEntries(i.map(n=>{let o=r.filter(e=>e.type===n.name),i={name:n.name,options:n.options,storage:n.storage,editor:t},s=eV({...e.reduce((e,t)=>{let r=eA(t,"extendMarkSchema",i);return{...e,...r?r(n):{}}},{}),inclusive:eR(eA(n,"inclusive",i)),excludes:eR(eA(n,"excludes",i)),group:eR(eA(n,"group",i)),spanning:eR(eA(n,"spanning",i)),code:eR(eA(n,"code",i)),attrs:Object.fromEntries(o.map(e_))}),a=eR(eA(n,"parseHTML",i));a&&(s.parseDOM=a.map(e=>eF(e,o)));let l=eA(n,"renderHTML",i);return l&&(s.toDOM=e=>l({mark:e,HTMLAttributes:eL(e,o)})),[n.name,s]}));return new a.Sj({topNode:s,nodes:l,marks:d})}function eU(e){return e.sort((e,t)=>{let n=eA(e,"priority")||100,r=eA(t,"priority")||100;return n>r?-1:+(n<r)})}function eW(e){var t;let n=eU(e$(e)),r=Array.from(new Set((t=n.map(e=>e.name)).filter((e,n)=>t.indexOf(e)!==n)));return r.length&&console.warn(`[tiptap warn]: Duplicate extension names found: [${r.map(e=>`'${e}'`).join(", ")}]. This can lead to issues.`),n}function eH(e,t){return eK(eW(e),t)}function eq(e,t){let n=eH(t);return eD(a.bP.fromJSON(n,e).content,n)}function eJ(e,t){let n=eH(t),r=W(e);return a.S4.fromSchema(n).parse(r).toJSON()}function eZ(e,t,n){let{from:r,to:o}=t,{blockSeparator:i="\n\n",textSerializers:s={}}=n||{},a="";return e.nodesBetween(r,o,(e,n,l,d)=>{e.isBlock&&n>r&&(a+=i);let c=null==s?void 0:s[e.type.name];if(c)return l&&(a+=c({node:e,pos:n,parent:l,index:d,range:t})),!1;if(e.isText){var u;a+=null==e||null==(u=e.text)?void 0:u.slice(Math.max(r,n)-n,o-n)}}),a}function eG(e,t){return eZ(e,{from:0,to:e.content.size},t)}function eY(e){return Object.fromEntries(Object.entries(e.nodes).filter(([,e])=>e.spec.toText).map(([e,t])=>[e,t.spec.toText]))}function eQ(e,t,n){let{blockSeparator:r="\n\n",textSerializers:o={}}=n||{},i=eH(t);return eG(a.bP.fromJSON(i,e),{blockSeparator:r,textSerializers:{...eY(i),...o}})}function eX(e,t){let n=ef("string"==typeof t?t:t.name,e.schema);return"node"===n?function(e,t){let n=k(t,e.schema),{from:r,to:o}=e.selection,i=[];e.doc.nodesBetween(r,o,e=>{i.push(e)});let s=i.reverse().find(e=>e.type.name===n.name);return s?{...s.attrs}:{}}(e,t):"mark"===n?eC(e,t):{}}function e0(e){let t,{mapping:n,steps:r}=e,o=[];return n.maps.forEach((e,t)=>{let i=[];if(e.ranges.length)e.forEach((e,t)=>{i.push({from:e,to:t})});else{let{from:e,to:n}=r[t];if(void 0===e||void 0===n)return;i.push({from:e,to:n})}i.forEach(({from:e,to:r})=>{let i=n.slice(t).map(e,-1),s=n.slice(t).map(r),a=n.invert().map(i,-1),l=n.invert().map(s);o.push({oldRange:{from:a,to:l},newRange:{from:i,to:s}})})}),1===(t=function(e,t=JSON.stringify){let n={};return e.filter(e=>{let r=t(e);return!Object.prototype.hasOwnProperty.call(n,r)&&(n[r]=!0)})}(o)).length?t:t.filter((e,n)=>!t.filter((e,t)=>t!==n).some(t=>e.oldRange.from>=t.oldRange.from&&e.oldRange.to<=t.oldRange.to&&e.newRange.from>=t.newRange.from&&e.newRange.to<=t.newRange.to))}function e1(e,t,n){let r=[];return e===t?n.resolve(e).marks().forEach(t=>{let o=D(n.resolve(e),t.type);o&&r.push({mark:t,...o})}):n.nodesBetween(e,t,(e,t)=>{e&&(null==e?void 0:e.nodeSize)!==void 0&&r.push(...e.marks.map(n=>({from:t,to:t+e.nodeSize,mark:n})))}),r}let e2=(e,t,n,r=20)=>{let o=e.doc.resolve(n),i=r,s=null;for(;i>0&&null===s;){let e=o.node(i);(null==e?void 0:e.type.name)===t?s=e:i-=1}return[s,i]},e3=e=>{let t=e.depth-1;if(t<0)return null;let n=e.index(t);return 0===n?null:e.node(t).child(n-1)};function e4(e,t){return t.nodes[e]||t.marks[e]||null}function e9(e,t,n){return Object.fromEntries(Object.entries(n).filter(([n])=>{let r=e.find(e=>e.type===t&&e.name===n);return!!r&&r.attribute.keepOnSplit}))}function e8(e,t,n={}){let{empty:r,ranges:o}=e.selection,i=t?j(t,e.schema):null;if(r)return!!(e.storedMarks||e.selection.$from.marks()).filter(e=>!i||i.name===e.type.name).find(e=>P(e.attrs,n,{strict:!1}));let s=0,a=[];if(o.forEach(({$from:t,$to:n})=>{let r=t.pos,o=n.pos;e.doc.nodesBetween(r,o,(e,t)=>{if(i&&e.inlineContent&&!e.type.allowsMarkType(i))return!1;if(!e.isText&&!e.marks.length)return;let n=Math.max(r,t),l=Math.min(o,t+e.nodeSize);s+=l-n,a.push(...e.marks.map(e=>({mark:e,from:n,to:l})))})}),0===s)return!1;let l=a.filter(e=>!i||i.name===e.mark.type.name).filter(e=>P(e.mark.attrs,n,{strict:!1})).reduce((e,t)=>e+t.to-t.from,0),d=a.filter(e=>!i||e.mark.type!==i&&e.mark.type.excludes(i)).reduce((e,t)=>e+t.to-t.from,0);return(l>0?l+d:l)>=s}let e7=(e,t)=>{let{$from:n,$to:r,$anchor:o}=e.selection;if(t){let n=eP(e=>e.type.name===t)(e.selection);if(!n)return!1;let r=e.doc.resolve(n.pos+1);return o.pos+1===r.end()}return!(r.parentOffset<r.parent.nodeSize-2)&&n.pos===r.pos},e5=e=>{let{$from:t,$to:n}=e.selection;return!(t.parentOffset>0)&&t.pos===n.pos};function e6(e,t){return Array.isArray(t)?t.some(t=>("string"==typeof t?t:t.name)===e.name):t}function te(e,t){let{nodeExtensions:n}=eI(t),r=n.find(t=>t.name===e);if(!r)return!1;let o=eR(eA(r,"group",{name:r.name,options:r.options,storage:r.storage}));return"string"==typeof o&&o.split(" ").includes("list")}function tt(e,{checkChildren:t=!0,ignoreWhitespace:n=!1}={}){if(n){if("hardBreak"===e.type.name)return!0;if(e.isText){var r;return!/\S/.test(null!=(r=e.text)?r:"")}}if(e.isText)return!e.text;if(e.isAtom||e.isLeaf)return!1;if(0===e.content.childCount)return!0;if(t){let r=!0;return e.content.forEach(e=>{!1!==r&&(tt(e,{ignoreWhitespace:n,checkChildren:t})||(r=!1))}),r}return!1}function tn(e){return e instanceof s.nh}var tr=class e{constructor(e){this.position=e}static fromJSON(t){return new e(t.position)}toJSON(){return{position:this.position}}};function to(e,t){let n=t.mapping.mapResult(e.position);return{position:new tr(n.pos),mapResult:n}}function ti(e){return new tr(e)}let ts=(e,t={})=>({tr:n,state:r,dispatch:o})=>{let{selection:i}=n,{empty:s,ranges:a}=i,l=j(e,r.schema);if(o)if(s){let e=eC(r,l);n.addStoredMark(l.create({...e,...t}))}else a.forEach(e=>{let o=e.$from.pos,i=e.$to.pos;r.doc.nodesBetween(o,i,(e,r)=>{let s=Math.max(r,o),a=Math.min(r+e.nodeSize,i);e.marks.find(e=>e.type===l)?e.marks.forEach(e=>{l===e.type&&n.addMark(s,a,l.create({...e.attrs,...t}))}):n.addMark(s,a,l.create(t))})});return function(e,t,n){let{selection:r}=t,o=null;if(N(r)&&(o=r.$cursor),o){var i;let t=null!=(i=e.storedMarks)?i:o.marks();return o.parent.type.allowsMarkType(n)&&(!!n.isInSet(t)||!t.some(e=>e.type.excludes(n)))}let{ranges:s}=r;return s.some(({$from:t,$to:r})=>{let o=0===t.depth&&e.doc.inlineContent&&e.doc.type.allowsMarkType(n);return e.doc.nodesBetween(t.pos,r.pos,(e,t,r)=>{if(o)return!1;if(e.isInline){let t=!r||r.type.allowsMarkType(n),i=!!n.isInSet(e.marks)||!e.marks.some(e=>e.type.excludes(n));o=t&&i}return!o}),o})}(r,n,l)},ta=(e,t)=>({tr:n})=>(n.setMeta(e,t),!0),tl=(e,t={})=>({state:n,dispatch:r,chain:o})=>{let s,a=k(e,n.schema);return(n.selection.$anchor.sameParent(n.selection.$head)&&(s=n.selection.$anchor.parent.attrs),a.isTextblock)?o().command(({commands:e})=>!!(0,i.y_)(a,{...s,...t})(n)||e.clearNodes()).command(({state:e})=>(0,i.y_)(a,{...s,...t})(e,r)).run():(console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.'),!1)},td=e=>({tr:t,dispatch:n})=>{if(n){let{doc:n}=t,r=B(e,0,n.content.size),o=s.nh.create(n,r);t.setSelection(o)}return!0},tc=(e,t)=>({tr:n,state:r,dispatch:o})=>{let i,s,{selection:a}=r;return"number"==typeof t?(i=t,s=t):t&&"from"in t&&"to"in t?(i=t.from,s=t.to):(i=a.from,s=a.to),o&&n.doc.nodesBetween(i,s,(t,r)=>{t.isText||n.setNodeMarkup(r,void 0,{...t.attrs,dir:e})}),!0},tu=e=>({tr:t,dispatch:n})=>{if(n){let{doc:n}=t,{from:r,to:o}="number"==typeof e?{from:e,to:e}:e,i=s.U3.atStart(n).from,a=s.U3.atEnd(n).to,l=B(r,i,a),d=B(o,i,a),c=s.U3.create(n,l,d);t.setSelection(c)}return!0},tp=e=>({state:t,dispatch:n})=>{let r=k(e,t.schema);return(0,l.$B)(r)(t,n)};function th(e,t){let n=e.storedMarks||e.selection.$to.parentOffset&&e.selection.$from.marks();if(n){let r=n.filter(e=>null==t?void 0:t.includes(e.type.name));e.tr.ensureMarks(r)}}let tf=({keepMarks:e=!0}={})=>({tr:t,state:n,dispatch:r,editor:i})=>{let{selection:a,doc:l}=t,{$from:d,$to:c}=a,u=e9(i.extensionManager.attributes,d.node().type.name,d.node().attrs);if(a instanceof s.nh&&a.node.isBlock)return!!d.parentOffset&&!!(0,o.zy)(l,d.pos)&&(r&&(e&&th(n,i.extensionManager.splittableMarks),t.split(d.pos).scrollIntoView()),!0);if(!d.parent.isBlock)return!1;let p=c.parentOffset===c.parent.content.size,h=0===d.depth?void 0:Y(d.node(-1).contentMatchAt(d.indexAfter(-1))),f=p&&h?[{type:h,attrs:u}]:void 0,m=(0,o.zy)(t.doc,t.mapping.map(d.pos),1,f);if(!f&&!m&&(0,o.zy)(t.doc,t.mapping.map(d.pos),1,h?[{type:h}]:void 0)&&(m=!0,f=h?[{type:h,attrs:u}]:void 0),r){if(m&&(a instanceof s.U3&&t.deleteSelection(),t.split(t.mapping.map(d.pos),1,f),h&&!p&&!d.parentOffset&&d.parent.type!==h)){let e=t.mapping.map(d.before()),n=t.doc.resolve(e);d.node(-1).canReplaceWith(n.index(),n.index()+1,h)&&t.setNodeMarkup(t.mapping.map(d.before()),h)}e&&th(n,i.extensionManager.splittableMarks),t.scrollIntoView()}return m},tm=(e,t={})=>({tr:n,state:r,dispatch:i,editor:l})=>{let d=k(e,r.schema),{$from:c,$to:u}=r.selection,p=r.selection.node;if(p&&p.isBlock||c.depth<2||!c.sameParent(u))return!1;let h=c.node(-1);if(h.type!==d)return!1;let f=l.extensionManager.attributes;if(0===c.parent.content.size&&c.node(-1).childCount===c.indexAfter(-1)){if(2===c.depth||c.node(-3).type!==d||c.index(-2)!==c.node(-2).childCount-1)return!1;if(i){var m;let e=a.FK.empty,r=c.index(-1)?1:c.index(-2)?2:3;for(let t=c.depth-r;t>=c.depth-3;t-=1)e=a.FK.from(c.node(t).copy(e));let o=c.indexAfter(-1)<c.node(-2).childCount?1:c.indexAfter(-2)<c.node(-3).childCount?2:3,i={...e9(f,c.node().type.name,c.node().attrs),...t},l=(null==(m=d.contentMatch.defaultType)?void 0:m.createAndFill(i))||void 0;e=e.append(a.FK.from(d.createAndFill(null,l)||void 0));let u=c.before(c.depth-(r-1));n.replace(u,c.after(-o),new a.Ji(e,4-r,0));let p=-1;n.doc.nodesBetween(u,n.doc.content.size,(e,t)=>{if(p>-1)return!1;e.isTextblock&&0===e.content.size&&(p=t+1)}),p>-1&&n.setSelection(s.U3.near(n.doc.resolve(p))),n.scrollIntoView()}return!0}let g=u.pos===c.end()?h.contentMatchAt(0).defaultType:null,y={...e9(f,h.type.name,h.attrs),...t},v={...e9(f,c.node().type.name,c.node().attrs),...t};n.delete(c.pos,u.pos);let b=g?[{type:d,attrs:y},{type:g,attrs:v}]:[{type:d,attrs:y}];if(!(0,o.zy)(n.doc,c.pos,2))return!1;if(i){let{selection:e,storedMarks:t}=r,{splittableMarks:o}=l.extensionManager,s=t||e.$to.parentOffset&&e.$from.marks();if(n.split(c.pos,2,b).scrollIntoView(),!s||!i)return!0;let a=s.filter(e=>o.includes(e.type.name));n.ensureMarks(a)}return!0};function tg(e){return e&&"1"!==e?e:null}let ty=(e,t)=>{var n,r;let i=eP(e=>e.type===t)(e.selection);if(!i)return!0;let s=e.doc.resolve(Math.max(0,i.pos-1)).before(i.depth);if(void 0===s)return!0;let a=e.doc.nodeAt(s);return!(i.node.type===(null==a?void 0:a.type)&&(0,o.n9)(e.doc,i.pos))||(n=i.node.attrs.type,r=null==a?void 0:a.attrs.type,tg(n)!==tg(r)||(e.join(i.pos),!0))},tv=(e,t)=>{var n,r;let i=eP(e=>e.type===t)(e.selection);if(!i)return!0;let s=e.doc.resolve(i.start).after(i.depth);if(void 0===s)return!0;let a=e.doc.nodeAt(s);return!(i.node.type===(null==a?void 0:a.type)&&(0,o.n9)(e.doc,s))||(n=i.node.attrs.type,r=null==a?void 0:a.attrs.type,tg(n)!==tg(r)||(e.join(s),!0))},tb=(e,t,n,r={})=>({editor:o,tr:i,state:a,dispatch:l,chain:d,commands:c,can:u})=>{let{extensions:p,splittableMarks:h}=o.extensionManager,f=k(e,a.schema),m=k(t,a.schema),{selection:g,storedMarks:y}=a,{$from:v,$to:b}=g,w=v.blockRange(b),x=y||g.$to.parentOffset&&g.$from.marks();if(!w)return!1;let M=eP(e=>te(e.type.name,p))(g),S=0===g.from&&g.to===a.doc.content.size,E=a.doc.content.content,C=1===E.length?E[0]:null,O=S&&C&&te(C.type.name,p)?{node:C,pos:0,depth:0}:null,T=null!=M?M:O,P=!!M&&w.depth>=1&&w.depth-M.depth<=1,A=!!O;if((P||A)&&T){if(T.node.type===f)return S&&A?d().command(({tr:e,dispatch:t})=>{let n=function(e){let t=e.doc,n=t.firstChild;if(!n)return null;let r=t.resolve(1),o=t.resolve(n.nodeSize-1);return s.U3.between(r,o)}(e);return!!n&&(e.setSelection(n),t&&t(e),!0)}).liftListItem(m).run():c.liftListItem(m);if(te(T.node.type.name,p)&&f.validContent(T.node.content))return d().command(()=>(i.setNodeMarkup(T.pos,f),!0)).command(()=>ty(i,f)).command(()=>tv(i,f)).run()}return n&&x&&l?d().command(()=>{let e=u().wrapInList(f,r),t=x.filter(e=>h.includes(e.type.name));return i.ensureMarks(t),!!e||c.clearNodes()}).wrapInList(f,r).command(()=>ty(i,f)).command(()=>tv(i,f)).run():d().command(()=>!!u().wrapInList(f,r)||c.clearNodes()).wrapInList(f,r).command(()=>ty(i,f)).command(()=>tv(i,f)).run()},tw=(e,t={},n={})=>({state:r,commands:o})=>{let{extendEmptyMarkRange:i=!1}=n,s=j(e,r.schema);return e8(r,s,t)?o.unsetMark(s,{extendEmptyMarkRange:i}):o.setMark(s,t)},tk=(e,t,n={})=>({state:r,commands:o})=>{let i,s=k(e,r.schema),a=k(t,r.schema),l=ed(r,s,n);return(r.selection.$anchor.sameParent(r.selection.$head)&&(i=r.selection.$anchor.parent.attrs),l)?o.setNode(a,i):o.setNode(s,{...i,...n})},tx=(e,t={})=>({state:n,commands:r})=>{let o=k(e,n.schema);return ed(n,o,t)?r.lift(o):r.wrapIn(o,t)},tM=()=>({state:e,dispatch:t})=>{let n=e.plugins;for(let r=0;r<n.length;r+=1){let o,i=n[r];if(i.spec.isInputRules&&(o=i.getState(e))){if(t){let t=e.tr,n=o.transform;for(let e=n.steps.length-1;e>=0;e-=1)t.step(n.steps[e].invert(n.docs[e]));if(o.text){let n=t.doc.resolve(o.from).marks();t.replaceWith(o.from,o.to,e.schema.text(o.text,n))}else t.delete(o.from,o.to)}return!0}}return!1},tS=(e={})=>({tr:t,dispatch:n,editor:r})=>{let{ignoreClearable:o=!1}=e,{selection:i}=t,{empty:s,ranges:a}=i;if(s)return!0;let{nonClearableMarks:l}=r.extensionManager;if(n){let e=Object.values(r.schema.marks).filter(e=>o||!l.includes(e.name));a.forEach(n=>{for(let r of e)t.removeMark(n.$from.pos,n.$to.pos,r)})}return!0},tE=(e,t={})=>({tr:n,state:r,dispatch:o})=>{let{extendEmptyMarkRange:i=!1}=t,{selection:s}=n,a=j(e,r.schema),{$from:l,empty:d,ranges:c}=s;if(!o)return!0;if(d&&i){var u;let{from:e,to:t}=s,r=D(l,a,null==(u=l.marks().find(e=>e.type===a))?void 0:u.attrs);r&&(e=r.from,t=r.to),n.removeMark(e,t,a)}else c.forEach(e=>{n.removeMark(e.$from.pos,e.$to.pos,a)});return n.removeStoredMark(a),!0},tC=e=>({tr:t,state:n,dispatch:r})=>{let o,i,{selection:s}=n;return"number"==typeof e?(o=e,i=e):e&&"from"in e&&"to"in e?(o=e.from,i=e.to):(o=s.from,i=s.to),r&&t.doc.nodesBetween(o,i,(e,n)=>{if(e.isText)return;let r={...e.attrs};delete r.dir,t.setNodeMarkup(n,void 0,r)}),!0},tO=(e,t={})=>({tr:n,state:r,dispatch:o})=>{let i=null,s=null,a=ef("string"==typeof e?e:e.name,r.schema);if(!a)return!1;"node"===a&&(i=k(e,r.schema)),"mark"===a&&(s=j(e,r.schema));let l=!1;return n.selection.ranges.forEach(e=>{let a,d,c,u,p=e.$from.pos,h=e.$to.pos;n.selection.empty?r.doc.nodesBetween(p,h,(e,t)=>{i&&i===e.type&&(l=!0,c=Math.max(t,p),u=Math.min(t+e.nodeSize,h),a=t,d=e)}):r.doc.nodesBetween(p,h,(e,r)=>{r<p&&i&&i===e.type&&(l=!0,c=Math.max(r,p),u=Math.min(r+e.nodeSize,h),a=r,d=e),r>=p&&r<=h&&(i&&i===e.type&&(l=!0,o&&n.setNodeMarkup(r,void 0,{...e.attrs,...t})),s&&e.marks.length&&e.marks.forEach(i=>{if(s===i.type&&(l=!0,o)){let o=Math.max(r,p),a=Math.min(r+e.nodeSize,h);n.addMark(o,a,s.create({...i.attrs,...t}))}}))}),d&&(void 0!==a&&o&&n.setNodeMarkup(a,void 0,{...d.attrs,...t}),s&&d.marks.length&&d.marks.forEach(e=>{s===e.type&&o&&n.addMark(c,u,s.create({...e.attrs,...t}))}))}),l},tT=new s.hs("__tiptap_decorations__"),tP=e=>({tr:t,dispatch:n})=>(n&&t.setMeta(tT,{type:"force",name:e}),!0),tA=(e,t={})=>({state:n,dispatch:r})=>{let o=k(e,n.schema);return(0,i.Im)(o,t)(n,r)},t$=(e,t={})=>({state:n,dispatch:r})=>{let o=k(e,n.schema);return(0,l.Sd)(o,t)(n,r)};var tD=(0,r.t)({blur:()=>f,clearContent:()=>m,clearNodes:()=>g,command:()=>y,createParagraphNear:()=>v,cut:()=>b,deleteCurrentNode:()=>w,deleteNode:()=>x,deleteRange:()=>M,deleteSelection:()=>E,enter:()=>C,exitCode:()=>O,extendMarkRange:()=>R,first:()=>I,focus:()=>V,forEach:()=>_,insertContent:()=>K,insertContentAt:()=>G,insertDefaultBlock:()=>Q,joinBackward:()=>et,joinDown:()=>ee,joinForward:()=>en,joinItemBackward:()=>er,joinItemForward:()=>eo,joinTextblockBackward:()=>ei,joinTextblockForward:()=>es,joinUp:()=>X,keyboardShortcut:()=>el,lift:()=>ec,liftEmptyBlock:()=>eu,liftListItem:()=>ep,newlineInCode:()=>eh,resetAttributes:()=>eg,scrollIntoView:()=>ey,selectAll:()=>ev,selectNodeBackward:()=>eb,selectNodeForward:()=>ew,selectParentNode:()=>ek,selectTextblockEnd:()=>ex,selectTextblockStart:()=>eM,setContent:()=>eE,setMark:()=>ts,setMeta:()=>ta,setNode:()=>tl,setNodeSelection:()=>td,setTextDirection:()=>tc,setTextSelection:()=>tu,sinkListItem:()=>tp,splitBlock:()=>tf,splitListItem:()=>tm,toggleList:()=>tb,toggleMark:()=>tw,toggleNode:()=>tk,toggleWrap:()=>tx,undoInputRule:()=>tM,unsetAllMarks:()=>tS,unsetMark:()=>tE,unsetTextDirection:()=>tC,updateAttributes:()=>tO,updateDecorations:()=>tP,wrapIn:()=>tA,wrapInList:()=>t$});let tj=new WeakMap;var tR=class{constructor(){this.callbacks={}}on(e,t){return this.callbacks[e]||(this.callbacks[e]=[]),this.callbacks[e].push(t),this}emit(e,...t){let n=this.callbacks[e];return n&&n.forEach(e=>e.apply(this,t)),this}off(e,t){let n=this.callbacks[e];return n&&(t?this.callbacks[e]=n.filter(e=>e!==t):delete this.callbacks[e]),this}once(e,t){let n=(...r)=>{this.off(e,n),t.apply(this,r)};return this.on(e,n)}removeAllListeners(){this.callbacks={}}};let tI=void 0!==u&&!1;function tN(e,t){let n=[],r=new Set;for(let o of e)"widget"===o.kind&&"widget"===o.kind&&r.add(o.key),n.push(o.toPMDecoration(t));return{decorations:n,widgetKeys:r}}function tB({position:e,from:t,to:n,docSize:r}){return!(e<t)&&(e<n||e===n&&n===r)}function tz(e){var t;let n=null==(t=e.spec)?void 0:t.key;return"string"==typeof n?n:void 0}function tL(e){return"attr"===e.jsonID}function tF(e,t,n,r){return e.map(t,n,{onRemove:e=>{let t=null==e?void 0:e.key;"string"==typeof t&&r.delete(t)}})}function tV(e,t){let n=Object.values(t).flatMap(e=>e.find());return d.zF.create(e,n)}function t_(e){let t=new Set;for(let n of Object.values(e))for(let e of n)t.add(e);return t}let tK=new Set;var tU=class{constructor(e){this.warnedWidgetKeys=new Set,this.warnedOutOfRangeExtensions=new Set,this.handleBeforeTransaction=({nextState:e})=>{let t=tT.getState(e);t&&this.warnDuplicateWidgetKeys(t)},this.editor=e.editor,this.entries=this.resolveEntries(e.entries),this.entries.forEach(({name:e,spec:t})=>(function(e,t){var n;switch(null!=(n=t.update)?n:"document"){case"document":if(t.createInRange)throw Error(`[tiptap error]: Extension "${e}" provides createInRange() but does not use the "changedRanges" decoration update strategy.`);return;case"changedRanges":if(!t.createInRange)throw Error(`[tiptap error]: Extension "${e}" uses the "changedRanges" decoration update strategy but does not provide createInRange().`);return;case"manual":if(t.createInRange)throw Error(`[tiptap error]: Extension "${e}" uses the "manual" decoration update strategy, which is not compatible with createInRange(). createInRange() requires the "changedRanges" strategy.`);if(t.shouldUpdate)throw Error(`[tiptap error]: Extension "${e}" cannot combine the "manual" decoration update strategy with shouldUpdate().`);return;default:throw Error(`[tiptap error]: Extension "${e}" uses an unknown decoration update strategy. Expected "document", "changedRanges", or "manual".`)}})(e,t)),this.plugin=this.entries.length>0?this.createPlugin():null,this.editor.on("beforeTransaction",this.handleBeforeTransaction)}destroy(){this.editor.off("beforeTransaction",this.handleBeforeTransaction)}liveWidgetKeys(){var e,t;return null!=(e=null==(t=tT.getState(this.editor.state))?void 0:t.widgetKeys)?e:tK}get mountedView(){return this.editor.isDestroyed?null:this.editor.view}resolveEntries(e){let t=[];for(let{name:n,addDecorations:r}of e){let e=r();e&&t.push({name:n,spec:e})}return t}createPlugin(){let{editor:e,entries:t}=this;return new s.k_({key:tT,state:{init:(e,n)=>{let r={},o={};for(let{name:e,spec:i}of t){let{set:t,widgetKeys:s}=this.buildFullSet(e,i,n);r[e]=t,o[e]=s}let i={decorationSetsByExtension:r,widgetKeysByExtension:o,mergedDecorationSet:this.buildMergedSet(n.doc,r),widgetKeys:t_(o)};return this.warnDuplicateWidgetKeys(i),i},apply:(n,r,o,i)=>{let s=n.getMeta(tT),a=(null==s?void 0:s.type)==="force"&&!s.name,l=(null==s?void 0:s.type)==="force"?s.name:void 0,c={},u={},p=new Set;return(!function(e,t){var n,r;tj.set(e,(null!=(n=tj.get(e))?n:0)+1);try{return t()}finally{let t=(null!=(r=tj.get(e))?r:1)-1;t>0?tj.set(e,t):tj.delete(e)}}(e,()=>{for(let{name:h,spec:f}of t){var s;let t=a||l===h;if(s={editor:e,tr:n,oldState:o,newState:i},t||"manual"!==f.update&&(f.shouldUpdate?f.shouldUpdate(s):s.tr.docChanged))if("changedRanges"===f.update&&n.docChanged&&!t){let e=this.applyChangedRangesRecompute(h,f,r,n,i);c[h]=e.set,u[h]=e.widgetKeys,p.add(h)}else{let{set:e,widgetKeys:t}=this.buildFullSet(h,f,i);c[h]=e,u[h]=t,p.add(h)}else{let e=function(e,t,n){var r,o;let i=null!=(r=t.decorationSetsByExtension[e])?r:d.zF.empty,s=new Set(null!=(o=t.widgetKeysByExtension[e])?o:[]);return{set:tF(i,n.mapping,n.doc,s),widgetKeys:s}}(h,r,n);c[h]=e.set,u[h]=e.widgetKeys}}}),0!==p.size||n.docChanged)?{decorationSetsByExtension:c,widgetKeysByExtension:u,mergedDecorationSet:this.mergeAfterApply({entries:t,previous:r,tr:n,decorationSetsByExtension:c,recomputedNames:p}),widgetKeys:t_(u)}:r}},props:{decorations(e){var t,n;return null!=(t=null==(n=tT.getState(e))?void 0:n.mergedDecorationSet)?t:d.zF.empty}}})}applyChangedRangesRecompute(e,t,n,r,o){let i=function(e,t){if(e.steps.some(e=>{let t;return t=!1,e.getMap().forEach(()=>{t=!0}),!(t||tL(e))&&("number"!=typeof e.from||"number"!=typeof e.to)}))return{type:"full"};let n=e0(e).map(({newRange:e})=>e);e.steps.forEach((t,r)=>{if(!tL(t))return;let o=e.mapping.slice(r);n.push({from:o.map(t.pos,-1),to:o.map(t.pos+1)})});let r=[];for(let e of n){let n=function(e,t){let n=null,r=0,o=0;for(let i=0;i<e.childCount&&!(o>t.to);i+=1){let s=o+e.child(i).nodeSize;s>=t.from&&(null===n&&(n=o),r=s),o=s}return null===n?null:{from:n,to:r}}(t,e);n&&r.push(n)}r.sort((e,t)=>e.from-t.from);let o=[];for(let e of r){let t=o[o.length-1];t&&e.from<=t.to?t.to=Math.max(t.to,e.to):o.push({...e})}return{type:"ranges",ranges:o}}(r,o.doc);return"full"===i.type?this.buildFullSet(e,t,o):this.rebuildRanges(e,t,n,r,o,i.ranges)}rebuildRanges(e,t,n,r,o,i){var s,a;let l=null!=(s=n.decorationSetsByExtension[e])?s:d.zF.empty,c=new Set(null!=(a=n.widgetKeysByExtension[e])?a:[]),u=tF(l,r.mapping,r.doc,c),p=o.doc.content.size;for(let{from:n,to:r}of i){let i=u.find(n,r).filter(e=>tB({position:e.from,from:n,to:r,docSize:p}));for(let e of i){let t=tz(e);t&&c.delete(t)}u=u.remove(i);let{decorations:s,widgetKeys:a}=tN(function({decorations:e,from:t,to:n,docSize:r,extensionName:o,warnedExtensions:i}){return e.filter(e=>!!tB({position:e.anchor,from:t,to:n,docSize:r})||e.anchor!==n&&(i.has(o)||(i.add(o),console.warn(`[tiptap warn]: Extension "${o}" returned a decoration outside the requested range [${t}, ${n}). It was ignored.`)),!1))}({decorations:this.runCreate(e,"createInRange",()=>t.createInRange({editor:this.editor,state:o,view:this.mountedView,from:n,to:r})),from:n,to:r,docSize:p,extensionName:e,warnedExtensions:this.warnedOutOfRangeExtensions}),e);for(let e of(u=u.add(o.doc,s),a))c.add(e)}return{set:u,widgetKeys:c}}buildFullSet(e,t,n){let r=this.runCreate(e,"create",()=>t.create({editor:this.editor,state:n,view:this.mountedView}));return function(e,t,n){let{decorations:r,widgetKeys:o}=tN(t,n);return{set:d.zF.create(e,r),widgetKeys:o}}(n.doc,r,e)}runCreate(e,t,n){try{return n()}catch(n){return console.error(`[tiptap error]: Extension "${e}" threw in \`addDecorations().${t}()\`. Its decorations were dropped for this update.`,n),[]}}warnDuplicateWidgetKeys(e){if(!tI)return;if(0===e.widgetKeys.size)return void this.warnedWidgetKeys.clear();let t=function(e){let t=new Map,n=new Map;for(let s of e.find()){var r,o,i;let e=tz(s);if(!e)continue;let a=null!=(r=s.spec.extensionName)?r:"unknown",l=null!=(o=t.get(e))?o:new Set;l.add(a),t.set(e,l),n.set(e,(null!=(i=n.get(e))?i:0)+1)}return Array.from(t,([e,t])=>({key:e,extensions:t})).filter(({key:e})=>{var t;return(null!=(t=n.get(e))?t:0)>1})}(e.mergedDecorationSet),n=new Set(t.map(({key:e})=>e));for(let{key:e,extensions:n}of t){if(this.warnedWidgetKeys.has(e))continue;let t=Array.from(n).map(e=>`"${e}"`).join(", ");console.warn(`[tiptap warn]: Duplicate widget decoration key "${e}" in extension${1===n.size?"":"s"} ${t}. Widget decoration keys must be globally unique, otherwise ProseMirror misplaces the widget DOM. Use a stable, unique key (e.g. \`comment-\${id}\`).`)}this.warnedWidgetKeys=n}buildMergedSet(e,t){let n=Object.keys(t);return 1===n.length?t[n[0]]:tV(e,t)}mergeAfterApply({entries:e,previous:t,tr:n,decorationSetsByExtension:r,recomputedNames:o}){return 1===e.length?r[e[0].name]:0===o.size?t.mergedDecorationSet.map(n.mapping,n.doc):tV(n.doc,r)}};function tW(e,t){let{selection:n}=e,{$from:r}=n;if(n instanceof s.nh){let e=r.index();return r.parent.canReplaceWith(e,e+1,t)}let o=r.depth;for(;o>=0;){let e=r.index(o);if(r.node(o).contentMatchAt(e).matchType(t))return!0;o-=1}return!1}function tH(e,t){let n=e.getAttribute("style");if(!n)return null;let r=n.split(";").map(e=>e.trim()).filter(Boolean),o=t.toLowerCase();for(let e=r.length-1;e>=0;e-=1){let t=r[e],n=t.indexOf(":");if(-1!==n&&t.slice(0,n).trim().toLowerCase()===o)return t.slice(n+1).trim()}return null}function tq(e){return"Object"===Object.prototype.toString.call(e).slice(8,-1)&&e.constructor===Object&&Object.getPrototypeOf(e)===Object.prototype}function tJ(e,t,n){let r=e.split("\n"),o=[],i="",s=0,a=t.baseIndentSize||2;for(;s<r.length;){let e,c=r[s],u=c.match(t.itemPattern);if(!u)if(o.length>0)break;else{if(""!==c.trim())return;s+=1,i=`${i}${c}
2
- `;continue}let p=t.extractItemData(u),{indentLevel:h,mainContent:f}=p;i=`${i}${c}
3
- `;let m=[f];for(s+=1;s<r.length;){var l,d;let e=r[s];if(""===e.trim()){let t=r.slice(s+1).findIndex(e=>""!==e.trim());if(-1===t)break;if(((null==(d=r[s+1+t].match(/^(\s*)/))||null==(d=d[1])?void 0:d.length)||0)>h){m.push(e),i=`${i}${e}
4
- `,s+=1;continue}break}if(((null==(l=e.match(/^(\s*)/))||null==(l=l[1])?void 0:l.length)||0)>h)m.push(e),i=`${i}${e}
5
- `,s+=1;else break}let g=m.slice(1);if(g.length>0){let r=g.map(e=>e.slice(h+a)).join("\n");r.trim()&&(e=t.customNestedParser?t.customNestedParser(r):n.blockTokens(r))}let y=t.createToken(p,e);o.push(y)}if(0!==o.length)return{items:o,raw:i}}function tZ(e,t,n,r){if(!e||!Array.isArray(e.content))return"";let o="function"==typeof n?n(r):n,[i,...s]=e.content,a=`${o}${t.renderChildren([i])}`;return s&&s.length>0&&s.forEach((e,n)=>{var r,o;let i=null!=(r=null==(o=t.renderChild)?void 0:o.call(t,e,n+1))?r:t.renderChildren([e]);if(null!=i){let n=i.split("\n").map(e=>e?t.indent(e):t.indent("")).join("\n");a+="paragraph"===e.type?`
6
-
7
- ${n}`:`
8
- ${n}`}}),a}var tG=class{constructor(e){var t;this.find=e.find,this.handler=e.handler,this.undoable=null==(t=e.undoable)||t}};function tY(e){var t;let{editor:n,from:r,to:o,text:i,rules:s,plugin:a}=e,{view:l}=n;if(l.composing)return!1;let d=l.state.doc.resolve(r);if(d.parent.type.spec.code||(null==(t=d.nodeBefore||d.nodeAfter)?void 0:t.marks.find(e=>e.type.spec.code)))return!1;let c=!1,u=((e,t=500)=>{let n="",r=e.parentOffset;return e.parent.nodesBetween(Math.max(0,r-t),r,(e,t,o,i)=>{var s,a;let l=(null==(s=(a=e.type.spec).toText)?void 0:s.call(a,{node:e,pos:t,parent:o,index:i}))||e.textContent||"%leaf%";n+=e.isAtom&&!e.isText?l:l.slice(0,Math.max(0,r-t))}),n})(d)+i;return s.forEach(e=>{if(c)return;let t=((e,t)=>{if(T(t))return t.exec(e);let n=t(e);if(!n)return null;let r=[n.text];return r.index=n.index,r.input=e,r.data=n.data,n.replaceWith&&(n.text.includes(n.replaceWith)||console.warn('[tiptap warn]: "inputRuleMatch.replaceWith" must be part of "inputRuleMatch.text".'),r.push(n.replaceWith)),r})(u,e.find);if(!t)return;let s=t[0].length-i.length;if(s>0){let e=d.parentOffset-s;if(e<0||d.parent.textBetween(e,d.parentOffset)!==t[0].slice(0,s))return}let f=l.state.tr,m=p({state:l.state,transaction:f}),g={from:r-(t[0].length-i.length),to:o},{commands:y,chain:v,can:b}=new h({editor:n,state:m});null!==e.handler({state:m,range:g,match:t,commands:y,chain:v,can:b})&&f.steps.length&&(e.undoable&&f.setMeta(a,{transform:f,from:r,to:o,text:i}),l.dispatch(f),c=!0)}),c}var tQ=class{constructor(e={}){this.type="extendable",this.parent=null,this.child=null,this.name="",this.config={name:this.name},this.config={...this.config,...e},this.name=this.config.name}get options(){return{...eR(eA(this,"addOptions",{name:this.name}))}}get storage(){return{...eR(eA(this,"addStorage",{name:this.name,options:this.options}))}}configure(e={}){let t=this.extend({...this.config,addOptions:()=>(function e(t,n){let r={...t};return tq(t)&&tq(n)&&Object.keys(n).forEach(o=>{tq(n[o])&&tq(t[o])?r[o]=e(t[o],n[o]):r[o]=n[o]}),r})(this.options,e)});return t.name=this.name,t.parent=this.parent,this.child=null,t}extend(e={}){let t=new this.constructor({...this.config,...e});return t.parent=this,this.child=t,t.name="name"in e?e.name:t.parent.name,t}},tX=class e extends tQ{constructor(...e){super(...e),this.type="mark"}static create(t={}){return new e("function"==typeof t?t():t)}static handleExit({editor:e,mark:t}){let{tr:n}=e.state,r=e.state.selection.$from;if(r.pos===r.end()){let o=r.marks();if(!o.find(e=>(null==e?void 0:e.type.name)===t.name))return!1;let i=o.find(e=>(null==e?void 0:e.type.name)===t.name);return i&&n.removeStoredMark(i),n.insertText(" ",r.pos),e.view.dispatch(n),!0}return!1}configure(e){return super.configure(e)}extend(e){let t="function"==typeof e?e():e;return super.extend(t)}},t0=class{constructor(e){this.find=e.find,this.handler=e.handler}};let t1=null;var t2=class{constructor(e,t){this.splittableMarks=[],this.nonClearableMarks=[],this.decorationManager=null,this.editor=t,this.baseExtensions=e,this.extensions=eW(e),this.schema=eK(this.extensions,t),this.setupExtensions()}get commands(){return this.extensions.reduce((e,t)=>{let n=eA(t,"addCommands",{name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:this.editor,type:e4(t.name,this.schema)});return n?{...e,...n()}:e},{})}get plugins(){let{editor:e}=this,t=eU([...this.extensions].reverse()).flatMap(t=>{let n={name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:e,type:e4(t.name,this.schema)},r=[],o=eA(t,"addKeyboardShortcuts",n),i={};if("mark"===t.type&&eA(t,"exitable",n)&&(i.ArrowRight=()=>tX.handleExit({editor:e,mark:t})),o){let t=Object.fromEntries(Object.entries(o()).map(([t,n])=>[t,()=>n({editor:e})]));i={...i,...t}}let l=(0,c.w)(i);r.push(l);let d=eA(t,"addInputRules",n);if(e6(t,e.options.enableInputRules)&&d){let t=d();if(t&&t.length){let n=function(e){let{editor:t,rules:n}=e,r=new s.k_({state:{init:()=>null,apply(e,o,i){let s=e.getMeta(r);if(s)return s;let l=e.getMeta("applyInputRules");return l&&setTimeout(()=>{let{text:e}=l;"string"==typeof e||(e=eD(a.FK.from(e),i.schema));let{from:o}=l,s=o+e.length;tY({editor:t,from:o,to:s,text:e,rules:n,plugin:r})}),e.selectionSet||e.docChanged?null:o}},props:{handleTextInput:(e,o,i,s)=>tY({editor:t,from:o,to:i,text:s,rules:n,plugin:r}),handleDOMEvents:{compositionend:e=>(setTimeout(()=>{let{$cursor:o}=e.state.selection;o&&tY({editor:t,from:o.pos,to:o.pos,text:"",rules:n,plugin:r})}),!1)},handleKeyDown(e,o){if("Enter"!==o.key)return!1;let{$cursor:i}=e.state.selection;return!!i&&tY({editor:t,from:i.pos,to:i.pos,text:"\n",rules:n,plugin:r})}},isInputRules:!0});return r}({editor:e,rules:t}),o=Array.isArray(n)?n:[n];r.push(...o)}}let u=eA(t,"addPasteRules",n);if(e6(t,e.options.enablePasteRules)&&u){let t=u();if(t&&t.length){let n=function(e){let t,{editor:n,rules:r}=e,o=null,i=!1,l=!1,d="u">typeof ClipboardEvent?new ClipboardEvent("paste"):null;try{t="u">typeof DragEvent?new DragEvent("drop"):null}catch{t=null}let c=({state:e,from:r,to:o,rule:i,pasteEvt:s})=>{let a=e.tr;if(function(e){let{editor:t,state:n,from:r,to:o,rule:i,pasteEvent:s,dropEvent:a}=e,{commands:l,chain:d,can:c}=new h({editor:t,state:n}),u=[];return n.doc.nodesBetween(r,o,(e,t)=>{var p,h,f,m;if((null==(p=e.type)||null==(p=p.spec)?void 0:p.code)||!(e.isText||e.isTextblock||e.isInline))return;let g=null!=(h=null!=(f=null==(m=e.content)?void 0:m.size)?f:e.nodeSize)?h:0,y=Math.max(r,t),v=Math.min(o,t+g);y>=v||((e,t,n)=>{if(T(t))return[...e.matchAll(t)];let r=t(e,n);return r?r.map(t=>{let n=[t.text];return n.index=t.index,n.input=e,n.data=t.data,t.replaceWith&&(t.text.includes(t.replaceWith)||console.warn('[tiptap warn]: "pasteRuleMatch.replaceWith" must be part of "pasteRuleMatch.text".'),n.push(t.replaceWith)),n}):[]})(e.isText?e.text||"":e.textBetween(y-t,v-t,void 0,""),i.find,s).forEach(e=>{if(void 0===e.index)return;let t=y+e.index+1,r=t+e[0].length,o={from:n.tr.mapping.map(t),to:n.tr.mapping.map(r)},p=i.handler({state:n,range:o,match:e,commands:l,chain:d,can:c,pasteEvent:s,dropEvent:a});u.push(p)})}),u.every(e=>null!==e)}({editor:n,state:p({state:e,transaction:a}),from:Math.max(r-1,0),to:o.b-1,rule:i,pasteEvent:s,dropEvent:t})&&a.steps.length){try{t="u">typeof DragEvent?new DragEvent("drop"):null}catch{t=null}return d="u">typeof ClipboardEvent?new ClipboardEvent("paste"):null,a}};return r.map(e=>new s.k_({view(e){let t=t=>{var r;(o=(null==(r=e.dom.parentElement)?void 0:r.contains(t.target))?e.dom.parentElement:null)&&(t1=n)},r=()=>{t1&&(t1=null)};return window.addEventListener("dragstart",t),window.addEventListener("dragend",r),{destroy(){window.removeEventListener("dragstart",t),window.removeEventListener("dragend",r)}}},props:{handleDOMEvents:{drop:(e,n)=>{if(l=o===e.dom.parentElement,t=n,!l){let e=t1;(null==e?void 0:e.isEditable)&&setTimeout(()=>{let t=e.state.selection;t&&e.commands.deleteRange({from:t.from,to:t.to})},10)}return!1},paste:(e,t)=>{var n;let r=null==(n=t.clipboardData)?void 0:n.getData("text/html");return d=t,i=!!(null==r?void 0:r.includes("data-pm-slice")),!1}}},appendTransaction:(t,n,r)=>{let o=t[0],s="paste"===o.getMeta("uiEvent")&&!i,u="drop"===o.getMeta("uiEvent")&&!l,p=o.getMeta("applyPasteRules"),h=!!p;if(!s&&!u&&!h)return;if(h){var f,m;let t,{text:n}=p;"string"==typeof n||(n=eD(a.FK.from(n),r.schema));let{from:o}=p,i=o+n.length;return c({rule:e,state:r,from:o,to:{b:i},pasteEvt:(f=n,null==(m=(t=new ClipboardEvent("paste",{clipboardData:new DataTransfer})).clipboardData)||m.setData("text/html",f),t)})}let g=n.doc.content.findDiffStart(r.doc.content),y=n.doc.content.findDiffEnd(r.doc.content);if("number"==typeof g&&y&&g!==y.b)return c({rule:e,state:r,from:g,to:y,pasteEvt:d})}}))}({editor:e,rules:t});r.push(...n)}}let f=eA(t,"addProseMirrorPlugins",n);if(f){let e=f();r.push(...e)}return r}),n=this.createDecorationPlugin();return n&&t.push(n),t}createDecorationPlugin(){var e;let{editor:t}=this;null==(e=this.decorationManager)||e.destroy();let n=[];return this.extensions.forEach(e=>{let r=eA(e,"addDecorations",{name:e.name,options:e.options,storage:this.editor.extensionStorage[e.name],editor:t,type:e4(e.name,this.schema)});r&&n.push({name:e.name,addDecorations:r})}),this.decorationManager=new tU({editor:t,entries:n}),this.decorationManager.plugin}get attributes(){return eN(this.extensions)}get nodeViews(){let{editor:e}=this,{nodeExtensions:t}=eI(this.extensions);return Object.fromEntries(t.filter(e=>!!eA(e,"addNodeView")).map(t=>{let n=this.attributes.filter(e=>e.type===t.name),r=eA(t,"addNodeView",{name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:e,type:k(t.name,this.schema)});if(!r)return[];let o=r();return o?[t.name,(r,i,s,a,l)=>{let d=eL(r,n);return o({node:r,view:i,getPos:s,decorations:a,innerDecorations:l,editor:e,extension:t,HTMLAttributes:d})}]:[]}))}dispatchTransaction(e){let{editor:t}=this;return eU([...this.extensions].reverse()).reduceRight((e,n)=>{let r={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:t,type:e4(n.name,this.schema)},o=eA(n,"dispatchTransaction",r);return o?t=>{o.call(r,{transaction:t,next:e})}:e},e)}transformPastedHTML(e){let{editor:t}=this;return eU([...this.extensions]).reduce((e,n)=>{let r={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:t,type:e4(n.name,this.schema)},o=eA(n,"transformPastedHTML",r);return o?(t,n)=>{let i=e(t,n);return o.call(r,i)}:e},e||(e=>e))}get markViews(){let{editor:e}=this,{markExtensions:t}=eI(this.extensions);return Object.fromEntries(t.filter(e=>!!eA(e,"addMarkView")).map(t=>{let n=this.attributes.filter(e=>e.type===t.name),r=eA(t,"addMarkView",{name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:e,type:j(t.name,this.schema)});return r?[t.name,(o,i,s)=>{let a=eL(o,n);return r()({mark:o,view:i,inline:s,editor:e,extension:t,HTMLAttributes:a,updateAttributes:t=>{!function(e,t,n={}){let{state:r}=t,{doc:o,tr:i}=r;o.descendants((t,r)=>{let o=i.mapping.map(r),s=i.mapping.map(r)+t.nodeSize,a=null;if(t.marks.forEach(t=>{if(t!==e)return!1;a=t}),!a)return;let l=!1;if(Object.keys(n).forEach(e=>{n[e]!==a.attrs[e]&&(l=!0)}),l){let t=e.type.create({...e.attrs,...n});i.removeMark(o,s,e.type),i.addMark(o,s,t)}}),i.docChanged&&t.view.dispatch(i)}(o,e,t)}})}]:[]}))}destroy(){var e;null==(e=this.decorationManager)||e.destroy(),this.extensions.forEach(e=>{let t=e;for(;t.parent;){let e=t.parent;e.child===t&&(e.child=null),t=e}}),this.extensions=[],this.baseExtensions=[],this.decorationManager=null,this.schema=null,this.editor=null}setupExtensions(){let e=this.extensions;this.editor.extensionStorage=Object.fromEntries(e.map(e=>[e.name,e.storage])),e.forEach(e=>{let t={name:e.name,options:e.options,storage:this.editor.extensionStorage[e.name],editor:this.editor,type:e4(e.name,this.schema)};if("mark"===e.type){var n,r;(null==(n=eR(eA(e,"keepOnSplit",t)))||n)&&this.splittableMarks.push(e.name),null==(r=eR(eA(e,"clearable",t)))||r||this.nonClearableMarks.push(e.name)}let o=eA(e,"onBeforeCreate",t),i=eA(e,"onCreate",t),s=eA(e,"onUpdate",t),a=eA(e,"onSelectionUpdate",t),l=eA(e,"onTransaction",t),d=eA(e,"onFocus",t),c=eA(e,"onBlur",t),u=eA(e,"onDestroy",t);o&&this.editor.on("beforeCreate",o),i&&this.editor.on("create",i),s&&this.editor.on("update",s),a&&this.editor.on("selectionUpdate",a),l&&this.editor.on("transaction",l),d&&this.editor.on("focus",d),c&&this.editor.on("blur",c),u&&this.editor.on("destroy",u)})}};t2.resolve=eW,t2.sort=eU,t2.flatten=e$;var t3=class e extends tQ{constructor(...e){super(...e),this.type="extension"}static create(t={}){return new e("function"==typeof t?t():t)}configure(e){return super.configure(e)}extend(e){let t="function"==typeof e?e():e;return super.extend(t)}};let t4=t3.create({name:"clipboardTextSerializer",addOptions:()=>({blockSeparator:void 0}),addProseMirrorPlugins(){return[new s.k_({key:new s.hs("clipboardTextSerializer"),props:{clipboardTextSerializer:()=>{let{editor:e}=this,{state:t,schema:n}=e,{doc:r,selection:o}=t,i=eY(n),{blockSeparator:s}=this.options,a={...void 0!==s?{blockSeparator:s}:{},textSerializers:i};return[...o.ranges].sort((e,t)=>e.$from.pos-t.$from.pos).map(({$from:e,$to:t})=>eZ(r,{from:e.pos,to:t.pos},a)).join(null!=s?s:"\n\n")}}})]}}),t9=t3.create({name:"commands",addCommands:()=>({...tD})}),t8=t3.create({name:"delete",onUpdate({transaction:e,appendedTransactions:t}){var n,r;let i=()=>{var n,r,i;if(null!=(n=null==(r=this.editor.options.coreExtensionOptions)||null==(r=r.delete)||null==(i=r.filterTransaction)?void 0:i.call(r,e))?n:e.getMeta("y-sync$"))return;let s=eO(e.before,[e,...t]);e0(s).forEach(t=>{s.mapping.mapResult(t.oldRange.from).deletedAfter&&s.mapping.mapResult(t.oldRange.to).deletedBefore&&s.before.nodesBetween(t.oldRange.from,t.oldRange.to,(n,r)=>{let o=r+n.nodeSize-2,i=t.oldRange.from<=r&&o<=t.oldRange.to;this.editor.emit("delete",{type:"node",node:n,from:r,to:o,newFrom:s.mapping.map(r),newTo:s.mapping.map(o),deletedRange:t.oldRange,newRange:t.newRange,partial:!i,editor:this.editor,transaction:e,combinedTransform:s})})});let a=s.mapping;s.steps.forEach((t,n)=>{if(t instanceof o.Ys){var r,i;let o=a.slice(n).map(t.from,-1),l=a.slice(n).map(t.to),d=a.invert().map(o,-1),c=a.invert().map(l),u=o>0&&(null==(r=s.doc.nodeAt(o-1))?void 0:r.marks.some(e=>e.eq(t.mark))),p=null==(i=s.doc.nodeAt(l))?void 0:i.marks.some(e=>e.eq(t.mark));this.editor.emit("delete",{type:"mark",mark:t.mark,from:t.from,to:t.to,deletedRange:{from:d,to:c},newRange:{from:o,to:l},partial:!!(p||u),editor:this.editor,transaction:e,combinedTransform:s})}})};null==(n=null==(r=this.editor.options.coreExtensionOptions)||null==(r=r.delete)?void 0:r.async)||n?setTimeout(i,0):i()}}),t7=t3.create({name:"drop",addProseMirrorPlugins(){return[new s.k_({key:new s.hs("tiptapDrop"),props:{handleDrop:(e,t,n,r)=>{this.editor.emit("drop",{editor:this.editor,event:t,slice:n,moved:r})}}})]}}),t5=t3.create({name:"editable",addProseMirrorPlugins(){return[new s.k_({key:new s.hs("editable"),props:{editable:()=>this.editor.options.editable}})]}}),t6=new s.hs("focusEvents"),ne=t3.create({name:"focusEvents",addProseMirrorPlugins(){let{editor:e}=this;return[new s.k_({key:t6,props:{handleDOMEvents:{focus:(t,n)=>{e.isFocused=!0;let r=e.state.tr.setMeta("focus",{event:n}).setMeta("addToHistory",!1);return t.dispatch(r),!1},blur:(t,n)=>{e.isFocused=!1;let r=e.state.tr.setMeta("blur",{event:n}).setMeta("addToHistory",!1);return t.dispatch(r),!1}}}})]}}),nt=t3.create({name:"keymap",addKeyboardShortcuts(){let e=()=>this.editor.commands.first(({commands:e})=>[()=>e.undoInputRule(),()=>e.command(({tr:t})=>{let{selection:n,doc:r}=t,{empty:o,$anchor:i}=n,{pos:a,parent:l}=i,d=i.parent.isTextblock&&a>0?t.doc.resolve(a-1):i,c=d.parent.type.spec.isolating,u=i.pos-i.parentOffset,p=c&&1===d.parent.childCount?u===i.pos:s.LN.atStart(r).from===a;return!!o&&!!l.type.isTextblock&&!l.textContent.length&&!!p&&(!p||"paragraph"!==i.parent.type.name)&&e.clearNodes()}),()=>e.deleteSelection(),()=>e.joinBackward(),()=>e.selectNodeBackward()]),t=()=>this.editor.commands.first(({commands:e})=>[()=>e.deleteSelection(),()=>e.deleteCurrentNode(),()=>e.joinForward(),()=>e.selectNodeForward()]),n={Enter:()=>this.editor.commands.first(({commands:e})=>[()=>e.newlineInCode(),()=>e.createParagraphNear(),()=>e.liftEmptyBlock(),()=>e.splitBlock()]),"Mod-Enter":()=>this.editor.commands.exitCode(),Backspace:e,"Mod-Backspace":e,"Shift-Backspace":e,Delete:t,"Mod-Delete":t,"Mod-a":()=>this.editor.commands.selectAll()},r={...n},o={...n,"Ctrl-h":e,"Alt-Backspace":e,"Ctrl-d":t,"Ctrl-Alt-Backspace":t,"Alt-Delete":t,"Alt-d":t,"Ctrl-a":()=>this.editor.commands.selectTextblockStart(),"Ctrl-e":()=>this.editor.commands.selectTextblockEnd()};return F()||ea()?o:r},addProseMirrorPlugins(){return[new s.k_({key:new s.hs("clearDocument"),appendTransaction:(e,t,n)=>{if(e.some(e=>e.getMeta("composition")))return;let r=e.some(e=>e.docChanged)&&!t.doc.eq(n.doc),o=e.some(e=>e.getMeta("preventClearDocument"));if(!r||o)return;let{empty:i,from:a,to:l}=t.selection,d=s.LN.atStart(t.doc).from,c=s.LN.atEnd(t.doc).to;if(i||a!==d||l!==c||!tt(n.doc))return;let u=n.tr,f=p({state:n,transaction:u}),{commands:m}=new h({editor:this.editor,state:f});if(m.clearNodes(),u.steps.length)return u}})]}}),nn=t3.create({name:"paste",addProseMirrorPlugins(){return[new s.k_({key:new s.hs("tiptapPaste"),props:{handlePaste:(e,t,n)=>{this.editor.emit("paste",{editor:this.editor,event:t,slice:n})}}})]}}),nr=t3.create({name:"tabindex",addOptions:()=>({value:void 0}),addProseMirrorPlugins(){return[new s.k_({key:new s.hs("tabindex"),props:{attributes:()=>{var e;return this.editor.isEditable||void 0!==this.options.value?{tabindex:null!=(e=this.options.value)?e:"0"}:{}}}})]}}),no=t3.create({name:"textDirection",addOptions:()=>({direction:void 0}),addGlobalAttributes(){if(!this.options.direction)return[];let{nodeExtensions:e}=eI(this.extensions);return[{types:e.filter(e=>"text"!==e.name).map(e=>e.name),attributes:{dir:{default:this.options.direction,parseHTML:e=>{let t=e.getAttribute("dir");return t&&("ltr"===t||"rtl"===t||"auto"===t)?t:this.options.direction},renderHTML:e=>e.dir?{dir:e.dir}:{}}}}]},addProseMirrorPlugins(){return[new s.k_({key:new s.hs("textDirection"),props:{attributes:()=>{let e=this.options.direction;return e?{dir:e}:{}}}})]}});var ni=(0,r.t)({ClipboardTextSerializer:()=>t4,Commands:()=>t9,Delete:()=>t8,Drop:()=>t7,Editable:()=>t5,FocusEvents:()=>ne,Keymap:()=>nt,Paste:()=>nn,Tabindex:()=>nr,TextDirection:()=>no,focusEventsPluginKey:()=>t6});let ns=!1;var na=class e{get name(){return this.node.type.name}constructor(e,t,n=!1,r=null){this.currentNode=null,this.actualDepth=null,this.isBlock=n,this.resolvedPos=e,this.editor=t,this.currentNode=r}get node(){return this.currentNode||this.resolvedPos.node()}get element(){return this.editor.view.domAtPos(this.pos).node}get depth(){var e;return null!=(e=this.actualDepth)?e:this.resolvedPos.depth}get pos(){return this.resolvedPos.pos}get content(){return this.node.content}set content(e){let t=this.from,n=this.to;if(this.isBlock){if(0===this.content.size)return void console.error(`You can’t set content on a block node. Tried to set content on ${this.name} at ${this.pos}`);t=this.from+1,n=this.to-1}this.editor.commands.insertContentAt({from:t,to:n},e)}get attributes(){return this.node.attrs}get textContent(){return this.node.textContent}get size(){return this.node.nodeSize}get from(){return this.isBlock?this.pos:this.resolvedPos.start(this.resolvedPos.depth)}get range(){return{from:this.from,to:this.to}}get to(){return this.isBlock?this.pos+this.size:this.resolvedPos.end(this.resolvedPos.depth)+ +!this.node.isText}get parent(){if(0===this.depth)return null;let t=this.resolvedPos.start(this.resolvedPos.depth-1);return new e(this.resolvedPos.doc.resolve(t),this.editor)}get before(){let t=this.resolvedPos.doc.resolve(this.from-(this.isBlock?1:2));return t.depth!==this.depth&&(t=this.resolvedPos.doc.resolve(this.from-3)),new e(t,this.editor)}get after(){let t=this.resolvedPos.doc.resolve(this.to+(this.isBlock?2:1));return t.depth!==this.depth&&(t=this.resolvedPos.doc.resolve(this.to+3)),new e(t,this.editor)}get children(){let t=[];return this.node.content.forEach((n,r)=>{let o=n.isBlock&&!n.isTextblock,i=n.isAtom&&!n.isText,s=n.isInline,a=this.pos+r+ +!i;if(a<0||a>this.resolvedPos.doc.nodeSize-2)return;let l=this.resolvedPos.doc.resolve(a);if(!o&&!s&&l.depth<=this.depth)return;let d=new e(l,this.editor,o,o||s?n:null);o&&(d.actualDepth=this.depth+1),t.push(d)}),t}get firstChild(){return this.children[0]||null}get lastChild(){let e=this.children;return e[e.length-1]||null}closest(e,t={}){let n=null,r=this.parent;for(;r&&!n;){if(r.node.type.name===e)if(Object.keys(t).length>0){let e=r.node.attrs,n=Object.keys(t);for(let r=0;r<n.length;r+=1){let o=n[r];if(e[o]!==t[o])break}}else n=r;r=r.parent}return n}querySelector(e,t={}){return this.querySelectorAll(e,t,!0)[0]||null}querySelectorAll(e,t={},n=!1){let r=[];if(!this.children||0===this.children.length)return r;let o=Object.keys(t);return this.children.forEach(i=>{n&&r.length>0||(i.node.type.name===e&&o.every(e=>t[e]===i.node.attrs[e])&&r.push(i),n&&r.length>0||(r=r.concat(i.querySelectorAll(e,t,n))))}),r}setAttribute(e){let{tr:t}=this.editor.state;t.setNodeMarkup(this.from,void 0,{...this.node.attrs,...e}),this.editor.view.dispatch(t)}};let nl=`.ProseMirror {
9
- position: relative;
10
- }
11
-
12
- .ProseMirror {
13
- word-wrap: break-word;
14
- white-space: pre-wrap;
15
- white-space: break-spaces;
16
- -webkit-font-variant-ligatures: none;
17
- font-variant-ligatures: none;
18
- font-feature-settings: "liga" 0; /* the above doesn't seem to work in Edge */
19
- }
20
-
21
- .ProseMirror [contenteditable="false"] {
22
- white-space: normal;
23
- }
24
-
25
- .ProseMirror [contenteditable="false"] [contenteditable="true"] {
26
- white-space: pre-wrap;
27
- }
28
-
29
- .ProseMirror pre {
30
- white-space: pre-wrap;
31
- }
32
-
33
- img.ProseMirror-separator {
34
- display: inline !important;
35
- border: none !important;
36
- margin: 0 !important;
37
- width: 0 !important;
38
- height: 0 !important;
39
- }
40
-
41
- .ProseMirror-gapcursor {
42
- display: none;
43
- pointer-events: none;
44
- position: absolute;
45
- margin: 0;
46
- }
47
-
48
- .ProseMirror-gapcursor:after {
49
- content: "";
50
- display: block;
51
- position: absolute;
52
- top: -2px;
53
- width: 20px;
54
- border-top: 1px solid black;
55
- animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;
56
- }
57
-
58
- @keyframes ProseMirror-cursor-blink {
59
- to {
60
- visibility: hidden;
61
- }
62
- }
63
-
64
- .ProseMirror-hideselection *::selection {
65
- background: transparent;
66
- }
67
-
68
- .ProseMirror-hideselection *::-moz-selection {
69
- background: transparent;
70
- }
71
-
72
- .ProseMirror-hideselection * {
73
- caret-color: transparent;
74
- }
75
-
76
- .ProseMirror-focused .ProseMirror-gapcursor {
77
- display: block;
78
- }`;var nd=class extends tR{constructor(e={}){super(),this.css=null,this.className="tiptap",this.editorView=null,this.isFocused=!1,this.destroyed=!1,this.isInitialized=!1,this.extensionStorage={},this.instanceId=Math.random().toString(36).slice(2,9),this.hasWarnedStaleDecorationRead=!1,this.options={element:"u">typeof document?document.createElement("div"):null,content:"",injectCSS:!0,injectNonce:void 0,extensions:[],autofocus:!1,editable:!0,textDirection:void 0,editorProps:{},parseOptions:{},coreExtensionOptions:{},enableInputRules:!0,enablePasteRules:!0,enableCoreExtensions:!0,enableContentCheck:!1,emitContentError:!1,onBeforeCreate:()=>null,onCreate:()=>null,onMount:()=>null,onUnmount:()=>null,onUpdate:()=>null,onSelectionUpdate:()=>null,onTransaction:()=>null,onFocus:()=>null,onBlur:()=>null,onDestroy:()=>null,onContentError:({error:e})=>{throw e},onPaste:()=>null,onDrop:()=>null,onDelete:()=>null,enableExtensionDispatchTransaction:!0},this.isCapturingTransaction=!1,this.capturedTransaction=null,this.utils={getUpdatedPosition:to,createMappablePosition:ti},this.setOptions(e),this.createExtensionManager(),this.createCommandManager(),this.createSchema(),this.on("beforeCreate",this.options.onBeforeCreate),this.emit("beforeCreate",{editor:this}),this.on("mount",this.options.onMount),this.on("unmount",this.options.onUnmount),this.on("contentError",this.options.onContentError),this.on("create",this.options.onCreate),this.on("update",this.options.onUpdate),this.on("selectionUpdate",this.options.onSelectionUpdate),this.on("transaction",this.options.onTransaction),this.on("focus",this.options.onFocus),this.on("blur",this.options.onBlur),this.on("destroy",this.options.onDestroy),this.on("drop",({event:e,slice:t,moved:n})=>this.options.onDrop(e,t,n)),this.on("paste",({event:e,slice:t})=>this.options.onPaste(e,t)),this.on("delete",this.options.onDelete);const t=this.createDoc();if(!this.editorState){const e=z(t,this.options.autofocus);this.editorState=s.$t.create({doc:t,schema:this.schema,selection:e||void 0})}!function(e){let t;if(!ns){ns=!0;try{t=o.Ln.fromJSON(e,{from:0,to:0}).slice.content}catch{return}t instanceof a.FK||console.warn("[tiptap warn]: prosemirror-model is loaded more than once. Wrapping and splitting nodes will fail. Deduplicate it in your lock file, or alias it to a single copy in your bundler.")}}(this.schema),this.options.element&&this.mount(this.options.element)}mount(e){if("u"<typeof document)throw Error("[tiptap error]: The editor cannot be mounted because there is no 'document' defined in this environment.");this.createView(e),this.emit("mount",{editor:this}),this.css&&!document.head.contains(this.css)&&document.head.appendChild(this.css),window.setTimeout(()=>{this.isDestroyed||(!1!==this.options.autofocus&&null!==this.options.autofocus&&this.commands.focus(this.options.autofocus),this.emit("create",{editor:this}),this.isInitialized=!0)},0)}unmount(){if(this.editorView){this.editorState=this.editorView.state;let e=this.editorView.dom;(null==e?void 0:e.editor)&&delete e.editor,this.editorView.destroy()}if(this.editorView=null,this.isInitialized=!1,this.css&&!document.querySelectorAll(`.${this.className}`).length)try{"function"==typeof this.css.remove?this.css.remove():this.css.parentNode&&this.css.parentNode.removeChild(this.css)}catch(e){console.warn("Failed to remove CSS element:",e)}this.css=null,this.emit("unmount",{editor:this})}get storage(){return this.extensionStorage}get commands(){return this.commandManager.commands}chain(){return this.commandManager?this.commandManager.chain():h.createFakeChain()}can(){return this.commandManager?this.commandManager.can():h.createFallbackCan()}injectCSS(){this.options.injectCSS&&"u">typeof document&&(this.css=function(e,t){let n=document.querySelector("style[data-tiptap-style]");if(null!==n)return n;let r=document.createElement("style");return t&&r.setAttribute("nonce",t),r.setAttribute("data-tiptap-style",""),r.innerHTML=e,document.getElementsByTagName("head")[0].appendChild(r),r}(nl,this.options.injectNonce))}setOptions(e={}){this.options={...this.options,...e},this.editorView&&this.state&&!this.isDestroyed&&(this.options.editorProps&&this.view.setProps(this.options.editorProps),this.view.updateState(this.state))}setEditable(e,t=!0){this.setOptions({editable:e}),t&&this.emit("update",{editor:this,transaction:this.state.tr,appendedTransactions:[]})}get isEditable(){return this.options.editable&&this.view&&this.view.editable}get view(){return this.editorView?this.editorView:new Proxy({state:this.editorState,updateState:e=>{this.editorState=e},dispatch:e=>{this.dispatchTransaction(e)},composing:!1,dragging:null,editable:!0,isDestroyed:!1},{get:(e,t)=>{if(this.editorView)return this.editorView[t];if("state"===t)return this.editorState;if(t in e)return Reflect.get(e,t);throw Error(`[tiptap error]: The editor view is not available. Cannot access view['${t}']. The editor may not be mounted yet.`)}})}get state(){return tI&&!this.hasWarnedStaleDecorationRead&&tj.has(this)&&(this.hasWarnedStaleDecorationRead=!0,console.warn("[tiptap warn]: `editor.state` was read while decoration `create()` was running. It returns the pre-transaction document. Use the `state` argument passed to `create()` instead. Helpers like `editor.isActive()` read `editor.state` too, so pass `state` to their standalone versions instead of calling them on the editor.")),this.editorView&&(this.editorState=this.view.state),this.editorState}registerPlugin(e,t){let n=ej(t)?t(e,[...this.state.plugins]):[...this.state.plugins,e],r=this.state.reconfigure({plugins:n});return this.view.updateState(r),r}unregisterPlugin(e){if(this.isDestroyed)return;let t=this.state.plugins,n=t;if([].concat(e).forEach(e=>{let t="string"==typeof e?`${e}$`:e.key;n=n.filter(e=>!e.key.startsWith(t))}),t.length===n.length)return;let r=this.state.reconfigure({plugins:n});return this.view.updateState(r),r}createExtensionManager(){var e,t;let n=[...this.options.enableCoreExtensions?[t5,t4.configure({blockSeparator:null==(e=this.options.coreExtensionOptions)||null==(e=e.clipboardTextSerializer)?void 0:e.blockSeparator}),t9,ne,nt,nr.configure({value:null==(t=this.options.coreExtensionOptions)||null==(t=t.tabindex)?void 0:t.value}),t7,nn,t8,no.configure({direction:this.options.textDirection})].filter(e=>"object"!=typeof this.options.enableCoreExtensions||!1!==this.options.enableCoreExtensions[e.name]):[],...this.options.extensions].filter(e=>["extension","node","mark"].includes(null==e?void 0:e.type));this.extensionManager=new t2(n,this)}createCommandManager(){this.commandManager=new h({editor:this})}createSchema(){this.schema=this.extensionManager.schema}createDoc(){let e;try{e=eS(this.options.content,this.schema,this.options.parseOptions,{errorOnInvalidContent:this.options.enableContentCheck})}catch(t){if(!(t instanceof Error)||!["[tiptap error]: Invalid JSON content","[tiptap error]: Invalid HTML content"].includes(t.message))throw t;let e=eS(this.options.content,this.schema,this.options.parseOptions,{errorOnInvalidContent:!1});return this.editorState=s.$t.create({doc:e,schema:this.schema,selection:z(e,this.options.autofocus)||void 0}),this.emit("contentError",{editor:this,error:t,disableCollaboration:()=>{"collaboration"in this.storage&&"object"==typeof this.storage.collaboration&&this.storage.collaboration&&(this.storage.collaboration.isDisabled=!0),this.options.extensions=this.options.extensions.filter(e=>"collaboration"!==e.name),this.createExtensionManager()}}),this.editorState.doc}return e}createView(e){let{editorProps:t,enableExtensionDispatchTransaction:n}=this.options,r=t.dispatchTransaction||this.dispatchTransaction.bind(this),o=n?this.extensionManager.dispatchTransaction(r):r,i=t.transformPastedHTML,s=this.extensionManager.transformPastedHTML(i);this.editorView=new d.Lz(e,{...t,attributes:{role:"textbox",...null==t?void 0:t.attributes},dispatchTransaction:o,transformPastedHTML:s,state:this.editorState,markViews:this.extensionManager.markViews,nodeViews:this.extensionManager.nodeViews});let a=this.state.reconfigure({plugins:this.extensionManager.plugins});this.view.updateState(a),this.prependClass(),this.injectCSS(),this.view.dom.editor=this}createNodeViews(){this.view.isDestroyed||this.view.setProps({markViews:this.extensionManager.markViews,nodeViews:this.extensionManager.nodeViews})}prependClass(){this.view.dom.className=`${this.className} ${this.view.dom.className}`}captureTransaction(e){this.isCapturingTransaction=!0,e(),this.isCapturingTransaction=!1;let t=this.capturedTransaction;return this.capturedTransaction=null,t}dispatchTransaction(e){if(this.view.isDestroyed)return;if(this.isCapturingTransaction){if(!this.capturedTransaction){this.capturedTransaction=e;return}e.steps.forEach(e=>{var t;return null==(t=this.capturedTransaction)?void 0:t.step(e)});return}let{state:t,transactions:n}=this.state.applyTransaction(e),r=!this.state.selection.eq(t.selection),o=n.includes(e),i=this.state;if(this.emit("beforeTransaction",{editor:this,transaction:e,nextState:t}),!o)return;this.view.updateState(t),this.emit("transaction",{editor:this,transaction:e,appendedTransactions:n.slice(1)}),r&&this.emit("selectionUpdate",{editor:this,transaction:e});let s=n.findLast(e=>e.getMeta("focus")||e.getMeta("blur")),a=null==s?void 0:s.getMeta("focus"),l=null==s?void 0:s.getMeta("blur");a&&this.emit("focus",{editor:this,event:a.event,transaction:s}),l&&this.emit("blur",{editor:this,event:l.event,transaction:s}),e.getMeta("preventUpdate")||!n.some(e=>e.docChanged)||i.doc.eq(t.doc)||this.emit("update",{editor:this,transaction:e,appendedTransactions:n.slice(1)})}getAttributes(e){return eX(this.state,e)}isActive(e,t){let n="string"==typeof e?e:null,r="string"==typeof e?t:e;return function(e,t,n={}){if(!t)return ed(e,null,n)||e8(e,null,n);let r=ef(t,e.schema);return"node"===r?ed(e,t,n):"mark"===r&&e8(e,t,n)}(this.state,n,r)}getJSON(){return this.state.doc.toJSON()}getHTML(){return eD(this.state.doc.content,this.schema)}getText(e){let{blockSeparator:t="\n\n",textSerializers:n={}}=e||{};return eG(this.state.doc,{blockSeparator:t,textSerializers:{...eY(this.schema),...n}})}get isEmpty(){return tt(this.state.doc)}destroy(){this.destroyed||(this.destroyed=!0,this.emit("destroy"),this.unmount(),this.removeAllListeners(),this.extensionManager.destroy(),this.extensionManager=null,this.schema=null,this.commandManager=null,this.extensionStorage={})}get isDestroyed(){var e,t;return null==(e=null==(t=this.editorView)?void 0:t.isDestroyed)||e}$node(e,t){var n;return(null==(n=this.$doc)?void 0:n.querySelector(e,t))||null}$nodes(e,t){var n;return(null==(n=this.$doc)?void 0:n.querySelectorAll(e,t))||null}$pos(e){let t=this.state.doc.resolve(e),n=e>0&&t.nodeAfter&&!t.nodeAfter.isText&&t.nodeAfter.isAtom?t.nodeAfter:null;return new na(t,this,!1,n)}get $doc(){return this.$pos(0)}},nc=class{static Inline(e,t,n={},r){return new nu(e,t,n,r)}static Node(e,t,n={},r){return new np(e,t,n,r)}static Widget(e,t,n){let{key:r,...o}=n;return new nh(e,t,r,o)}},nu=class extends nc{constructor(e,t,n={},r){super(),this.kind="inline",this.from=e,this.to=t,this.attrs=n,this.spec=r}get anchor(){return this.from}toPMDecoration(e){let t=e?{...this.spec,extensionName:e}:this.spec;return d.NZ.inline(this.from,this.to,this.attrs,t)}},np=class extends nc{constructor(e,t,n={},r){super(),this.kind="node",this.from=e,this.to=t,this.attrs=n,this.spec=r}get anchor(){return this.from}toPMDecoration(e){let t=e?{...this.spec,extensionName:e}:this.spec;return d.NZ.node(this.from,this.to,this.attrs,t)}},nh=class extends nc{constructor(e,t,n,r){super(),this.kind="widget",this.pos=e,this.render=t,this.key=n,this.spec=r}get anchor(){return this.pos}toPMDecoration(e){let t=e?{...this.spec,key:this.key,extensionName:e}:{...this.spec,key:this.key};return d.NZ.widget(this.pos,this.render,t)}};function nf(e){return new tG({find:e.find,handler:({state:t,range:n,match:r})=>{let o=eR(e.getAttributes,void 0,r);if(!1===o||null===o)return null;let{tr:i}=t,s=r[r.length-1],a=r[0];if(s){let r=a.search(/\S/),l=n.from+a.indexOf(s),d=l+s.length;if(e1(n.from,n.to,t.doc).filter(t=>t.mark.type.excluded.find(n=>n===e.type&&n!==t.mark.type)).filter(e=>e.to>l).length)return null;d<n.to&&i.delete(d,n.to),l>n.from&&i.delete(n.from+r,l);let c=n.from+r+s.length;i.addMark(n.from+r,c,e.type.create(o||{})),i.removeStoredMark(e.type)}},undoable:e.undoable})}function nm(e){return new tG({find:e.find,handler:({state:t,range:n,match:r})=>{let o=eR(e.getAttributes,void 0,r)||{},{tr:i}=t,s=n.from,a=n.to,l=e.type.create(o);if(r[1]){let e=s+r[0].lastIndexOf(r[1]);e>a?e=a:a=e+r[1].length;let t=r[0][r[0].length-1];i.insertText(t,s+r[0].length-1),i.replaceWith(e,a,l)}else if(r[0]){let t=e.type.isInline?s:s-1;i.insert(t,e.type.create(o)).delete(i.mapping.map(s),i.mapping.map(a))}i.scrollIntoView()},undoable:e.undoable})}function ng(e){return new tG({find:e.find,handler:({state:t,range:n,match:r})=>{let o=t.doc.resolve(n.from),i=eR(e.getAttributes,void 0,r)||{};if(!o.node(-1).canReplaceWith(o.index(-1),o.indexAfter(-1),e.type))return null;t.tr.delete(n.from,n.to).setBlockType(n.from,n.from,e.type,i)},undoable:e.undoable})}function ny(e){return new tG({find:e.find,handler:({state:t,range:n,match:r,chain:i})=>{let s=eR(e.getAttributes,void 0,r)||{},a=t.tr.delete(n.from,n.to),l=a.doc.resolve(n.from).blockRange(),d=l&&(0,o.oM)(l,e.type,s);if(!d)return null;if(a.wrap(l,d),e.keepMarks&&e.editor){let{selection:n,storedMarks:r}=t,{splittableMarks:o}=e.editor.extensionManager,i=r||n.$to.parentOffset&&n.$from.marks();if(i){let e=i.filter(e=>o.includes(e.type.name));a.ensureMarks(e)}}if(e.keepAttributes){let t="bulletList"===e.type.name||"orderedList"===e.type.name?"listItem":"taskList";i().updateAttributes(t,s).run()}let c=a.doc.resolve(n.from-1).nodeBefore;c&&c.type===e.type&&(0,o.n9)(a.doc,n.from-1)&&(!e.joinPredicate||e.joinPredicate(r,c))&&a.join(n.from-1)},undoable:e.undoable})}var nv=class e extends tQ{constructor(...e){super(...e),this.type="node"}static create(t={}){return new e("function"==typeof t?t():t)}configure(e){return super.configure(e)}extend(e){let t="function"==typeof e?e():e;return super.extend(t)}};function nb(e){return new t0({find:e.find,handler:({state:t,range:n,match:r,pasteEvent:o})=>{let i=eR(e.getAttributes,void 0,r,o);if(!1===i||null===i)return null;let{tr:s}=t,a=r[r.length-1],l=r[0],d=n.to;if(a){let o=l.search(/\S/),c=n.from+l.indexOf(a),u=c+a.length;if(e1(n.from,n.to,t.doc).filter(t=>t.mark.type.excluded.find(n=>n===e.type&&n!==t.mark.type)).filter(e=>e.to>c).length)return null;u<n.to&&s.delete(u,n.to),c>n.from&&s.delete(n.from+o,c),d=n.from+o+a.length,s.addMark(n.from+o,d,e.type.create(i||{})),void 0!==r.index&&void 0!==r.input&&r.index+r[0].length>=r.input.length||s.removeStoredMark(e.type)}}})}}}]);