aitu-app 0.6.76 → 0.6.78

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 (223) hide show
  1. package/README.md +3 -3
  2. package/assets/CanvasAudioPlayer-DutgwdiU.js +2 -0
  3. package/assets/ChatDrawer-E6Fog16I.js +11 -0
  4. package/assets/{ChatMessagesArea-CZkiRzmW.js → ChatMessagesArea-Bgwiz_XP.js} +3 -3
  5. package/assets/DeferredAIInputBar-CPkD8Cv9.js +8 -0
  6. package/assets/DeferredAIInputBar-szBPHiNW.css +1 -0
  7. package/assets/DrawnixDeferredFeatures-Cul76-88.js +2 -0
  8. package/assets/{KnowledgeBaseContent-Dan2DUqY.js → KnowledgeBaseContent-DcX5Jofx.js} +6 -6
  9. package/assets/{MVCreator-Dzjl2fXA.js → MVCreator-DllHozYg.js} +8 -8
  10. package/assets/{ModelBenchmarkWorkbench-oy2wue1u.js → ModelBenchmarkWorkbench-Dv9SNYTi.js} +2 -2
  11. package/assets/MusicAnalyzer-CHcQ5t4P.js +1 -0
  12. package/assets/{MusicAnalyzer-BO44f-db.js → MusicAnalyzer-DDeT6g3c.js} +2 -2
  13. package/assets/ResizableDivider-CaG9JQbJ.js +1 -0
  14. package/assets/TaskQueuePanel-BNhNzGp5.js +1 -0
  15. package/assets/{VideoAnalyzer-iiJpoWb6.js → VideoAnalyzer-BSLz1FaI.js} +2 -2
  16. package/assets/ai-generation-preferences-service-BF7QkuJp.js +1 -0
  17. package/assets/arc-BU2KKCa_.js +1 -0
  18. package/assets/arc-DmGoDCEL.js +1 -0
  19. package/assets/{batch-image-generation-B2R0hJW_.js → batch-image-generation-Bg68r_Ql.js} +5 -5
  20. package/assets/{blockDiagram-38ab4fdb-BmWPnNuS.js → blockDiagram-38ab4fdb-BCGEnMME.js} +1 -1
  21. package/assets/{blockDiagram-38ab4fdb-trArAOFP.js → blockDiagram-38ab4fdb-CsZR5uC5.js} +1 -1
  22. package/assets/board-utils-CpAtoKn2.js +1 -0
  23. package/assets/{browser-Dya3c6_X.js → browser-DpICcNby.js} +1 -1
  24. package/assets/{c4Diagram-3d4e48cf-Cvj3RMOv.js → c4Diagram-3d4e48cf-9fuiuFdV.js} +1 -1
  25. package/assets/{c4Diagram-3d4e48cf-CqJrO4Za.js → c4Diagram-3d4e48cf-WM4wd_GR.js} +1 -1
  26. package/assets/{canvas-insertion-Dq3gR9Nw.js → canvas-insertion-CdUQF7IV.js} +3 -3
  27. package/assets/channel-CZjE-WNp.js +1 -0
  28. package/assets/channel-SXZD6bG3.js +1 -0
  29. package/assets/classDiagram-70f12bd4-CBVHTwQu.js +2 -0
  30. package/assets/{classDiagram-70f12bd4-DvrRZ41d.js → classDiagram-70f12bd4-DcYDedz1.js} +2 -2
  31. package/assets/classDiagram-v2-f2320105-CsxWGkSy.js +2 -0
  32. package/assets/classDiagram-v2-f2320105-jpCwaHEd.js +2 -0
  33. package/assets/{clipper-B4i11tN1.js → clipper-jvd5rF5a.js} +1 -1
  34. package/assets/clone-C4mvvMDb.js +1 -0
  35. package/assets/{createText-2e5e7dd3-D7dXlVes.js → createText-2e5e7dd3-CkXS3l7I.js} +2 -2
  36. package/assets/{createText-2e5e7dd3-B8gnT5hD.js → createText-2e5e7dd3-x5lOIwut.js} +1 -1
  37. package/assets/edges-e0da2a9e-CbrF4nbD.js +4 -0
  38. package/assets/{edges-e0da2a9e-CyRAzEMi.js → edges-e0da2a9e-Ch6PBwWs.js} +2 -2
  39. package/assets/{erDiagram-9861fffd-D8yYsjoN.js → erDiagram-9861fffd-Bq07elcI.js} +3 -3
  40. package/assets/{erDiagram-9861fffd-BHbAa_Ka.js → erDiagram-9861fffd-DSlNVuAZ.js} +4 -4
  41. package/assets/{flowDb-956e92f1-DAqb8wjP.js → flowDb-956e92f1-BqPCJlZp.js} +3 -3
  42. package/assets/{flowDb-956e92f1-f30uG4pp.js → flowDb-956e92f1-Ti5YC4Vv.js} +3 -3
  43. package/assets/{flowDiagram-66a62f08-C4Gz9mOM.js → flowDiagram-66a62f08-CPDuG3rY.js} +3 -3
  44. package/assets/{flowDiagram-66a62f08-CBXypoEi.js → flowDiagram-66a62f08-D3GSABFi.js} +1 -1
  45. package/assets/flowDiagram-v2-96b9c2cf-BCcJ-cre.js +1 -0
  46. package/assets/flowDiagram-v2-96b9c2cf-DCVaFEgV.js +1 -0
  47. package/assets/{flowchart-elk-definition-4a651766-CSm5diF6.js → flowchart-elk-definition-4a651766-BH09NeLA.js} +1 -1
  48. package/assets/{flowchart-elk-definition-4a651766-BHB7pRxm.js → flowchart-elk-definition-4a651766-BLaLPCDV.js} +1 -1
  49. package/assets/{ganttDiagram-c361ad54-CU9a9DsJ.js → ganttDiagram-c361ad54-DL9ZeaEc.js} +4 -4
  50. package/assets/ganttDiagram-c361ad54-Sp9M1KHP.js +257 -0
  51. package/assets/{gitGraphDiagram-72cf32ee-B2zj8Xnu.js → gitGraphDiagram-72cf32ee-BSf1fsDV.js} +1 -1
  52. package/assets/{gitGraphDiagram-72cf32ee-BWOgrFeh.js → gitGraphDiagram-72cf32ee-BWwmRKo-.js} +1 -1
  53. package/assets/{graph-Bnmq4jgf.js → graph--nPw8zXQ.js} +1 -1
  54. package/assets/graph-g-2U7grQ.js +1 -0
  55. package/assets/{index-3862675e-CQLKy6RO.js → index-3862675e-BXwbZ2pz.js} +1 -1
  56. package/assets/{index-3862675e-BSxxidV_.js → index-3862675e-D6Zy95zZ.js} +1 -1
  57. package/assets/index-3eqA7Bag.js +1 -0
  58. package/assets/{index-D1ORCZqJ.js → index-7Q-aiwln.js} +2 -2
  59. package/assets/index-B2dttXd7.js +1 -0
  60. package/assets/index-B7V7-Vxz.js +1 -0
  61. package/assets/index-BHPTfCZM.js +1 -0
  62. package/assets/{index-vvV37Q1S.js → index-BP77pG9S.js} +4 -4
  63. package/assets/index-BPR_DyGD.js +1 -0
  64. package/assets/index-BWrcsh8u.js +1 -0
  65. package/assets/{index-D4qm_1m5.js → index-BXzGHPXz.js} +1 -1
  66. package/assets/index-BaCHOxhI.js +1 -0
  67. package/assets/{index-BoglETHF.js → index-Bq8mPedC.js} +2 -2
  68. package/assets/index-BqHZCcen.js +2 -0
  69. package/assets/index-Bti3m-iW.js +1 -0
  70. package/assets/{index-sPNG1_UN.js → index-BwSnJN93.js} +5 -5
  71. package/assets/{index-D5qxbeGT.js → index-C3qD42ws.js} +1 -1
  72. package/assets/{index-VzDb_AHs.js → index-C5eu4uSl.js} +5 -5
  73. package/assets/index-CLJUfzvO.js +1 -0
  74. package/assets/index-CfgvFFx3.js +271 -0
  75. package/assets/index-CmyOpFTN.js +1 -0
  76. package/assets/index-D4pIkh3S.js +1 -0
  77. package/assets/index-D7b5fX1d.js +1 -0
  78. package/assets/index-DH12_HTj.js +13 -0
  79. package/assets/index-DI0OV6F8.js +7 -0
  80. package/assets/index-DIiIUyb-.js +1 -0
  81. package/assets/index-DcZrElEK.js +2 -0
  82. package/assets/index-DllL1sx1.js +1 -0
  83. package/assets/index-DqMndQiP.js +1 -0
  84. package/assets/index-Dz8sghkK.js +1 -0
  85. package/assets/index-QkP3EC02.js +1 -0
  86. package/assets/index-TkfyNewx.js +1 -0
  87. package/assets/index-ZrVeQUWo.js +1 -0
  88. package/assets/index-eZfwJ9bV.js +3 -0
  89. package/assets/{index-VarwiJlL.js → index-gQ7LgvSv.js} +1 -1
  90. package/assets/{infoDiagram-f8f76790-d-BYTW2w.js → infoDiagram-f8f76790-DpFqCCNv.js} +3 -3
  91. package/assets/{infoDiagram-f8f76790-BMsVq8O_.js → infoDiagram-f8f76790-G2JpJJP7.js} +3 -3
  92. package/assets/{journeyDiagram-49397b02-DCtCkoaC.js → journeyDiagram-49397b02-BdESGMrv.js} +1 -1
  93. package/assets/{journeyDiagram-49397b02-CBqb8-ml.js → journeyDiagram-49397b02-DLLTobRM.js} +1 -1
  94. package/assets/{layout-DKqEkE_W.js → layout-CVkuImk4.js} +1 -1
  95. package/assets/layout-WSR0vNPO.js +1 -0
  96. package/assets/line-D3bnG227.js +1 -0
  97. package/assets/line-DQuMJveY.js +1 -0
  98. package/assets/{linear-C6OQYT56.js → linear-CciP-97N.js} +1 -1
  99. package/assets/linear-Z6vFvuwc.js +1 -0
  100. package/assets/{main-i0s2IJTn.css → main-8DNjLY6L.css} +1 -1
  101. package/assets/main-BFEkxCOK.js +56 -0
  102. package/assets/{mermaid.core-CI-VJEiw.js → mermaid.core-CwZQb0ud.js} +5 -5
  103. package/assets/{mindmap-definition-fc14e90a-k_RSypuP.js → mindmap-definition-fc14e90a-BnJ8OOTI.js} +1 -1
  104. package/assets/{mindmap-definition-fc14e90a-DrtlQLES.js → mindmap-definition-fc14e90a-CxQMydCW.js} +1 -1
  105. package/assets/model-benchmark-launcher-Ct3lYXVq.js +1 -0
  106. package/assets/photo-wall-splitter-BZ88W5Zy.js +1 -0
  107. package/assets/{pieDiagram-8a3498a8-CdknGxKY.js → pieDiagram-8a3498a8-BSDdkTeu.js} +5 -5
  108. package/assets/{pieDiagram-8a3498a8-Bpr5V3o5.js → pieDiagram-8a3498a8-D6VtAoja.js} +4 -4
  109. package/assets/ppt-generation-FzjP_rp0.js +48 -0
  110. package/assets/{quadrantDiagram-120e2f19-Dx3qoKDx.js → quadrantDiagram-120e2f19-BbFV0VXY.js} +3 -3
  111. package/assets/{quadrantDiagram-120e2f19-pVIXp9i6.js → quadrantDiagram-120e2f19-C8k2xuBd.js} +3 -3
  112. package/assets/{requirementDiagram-deff3bca-hM4oekUG.js → requirementDiagram-deff3bca-C3xMdzJV.js} +1 -1
  113. package/assets/{requirementDiagram-deff3bca-DD6NY75P.js → requirementDiagram-deff3bca-CpjqKjYZ.js} +1 -1
  114. package/assets/{sankeyDiagram-04a897e0-BsvEG71N.js → sankeyDiagram-04a897e0-BBJJgsFv.js} +5 -5
  115. package/assets/{sankeyDiagram-04a897e0-C9uf1jU5.js → sankeyDiagram-04a897e0-Bjvig9bW.js} +4 -4
  116. package/assets/{sequenceDiagram-704730f1-CNEBmz1G.js → sequenceDiagram-704730f1-DX1MmBN_.js} +4 -4
  117. package/assets/{sequenceDiagram-704730f1-Bpg54z74.js → sequenceDiagram-704730f1-PFC_9IFI.js} +4 -4
  118. package/assets/settings-dialog-CQM4v791.js +1 -0
  119. package/assets/{skill-dsl-parser-DS3VOBFI.js → skill-dsl-parser-syNWYxFu.js} +10 -10
  120. package/assets/{stateDiagram-587899a1-BN2ZP-3x.js → stateDiagram-587899a1-Dc3mI_B_.js} +1 -1
  121. package/assets/stateDiagram-587899a1-SFMUVAam.js +1 -0
  122. package/assets/{stateDiagram-v2-d93cdb3a-BtV1Ziy9.js → stateDiagram-v2-d93cdb3a-DmnBjHpC.js} +1 -1
  123. package/assets/{stateDiagram-v2-d93cdb3a-BLwIM8s1.js → stateDiagram-v2-d93cdb3a-P4Yt2p_j.js} +1 -1
  124. package/assets/{styles-6aaf32cf-aFVlX_lA.js → styles-6aaf32cf-C3jnr3hV.js} +1 -1
  125. package/assets/{styles-6aaf32cf-CGp3i5qu.js → styles-6aaf32cf-b6AdP7fu.js} +1 -1
  126. package/assets/{styles-9a916d00-BK7pejCH.js → styles-9a916d00-BUiD9iBe.js} +4 -4
  127. package/assets/{styles-9a916d00-CSwFWVnr.js → styles-9a916d00-ii0XTdIm.js} +1 -1
  128. package/assets/styles-c10674c1-Bt89Yy8Q.js +116 -0
  129. package/assets/styles-c10674c1-DbTSpy3W.js +116 -0
  130. package/assets/{svgDrawCommon-08f97a94-Cr4rWU-W.js → svgDrawCommon-08f97a94-BK6lD4D6.js} +1 -1
  131. package/assets/{svgDrawCommon-08f97a94-DypvMDvH.js → svgDrawCommon-08f97a94-D4gIV05W.js} +1 -1
  132. package/assets/{timeline-definition-85554ec2-D3-lXEL5.js → timeline-definition-85554ec2-Bl2y548G.js} +1 -1
  133. package/assets/{timeline-definition-85554ec2-DIwHE15c.js → timeline-definition-85554ec2-CWKg_JxG.js} +3 -3
  134. package/assets/{tool-windows-B-a9r3G3.css → tool-windows-CUNbW1Tz.css} +1 -1
  135. package/assets/tool-windows-DOIu9TAD.js +2975 -0
  136. package/assets/ttd-dialog-DI4kQSg8.js +99 -0
  137. package/assets/{useCharacters-DsZ779l-.js → useCharacters-Chv4Ky7x.js} +3 -3
  138. package/assets/useWorkflowSubmission-BizuDmuw.js +70 -0
  139. package/assets/video-analyze-6v3Y-rUE.js +1 -0
  140. package/assets/{video-generation-C7qCz-ZF.js → video-generation-DnmTlWnm.js} +2 -2
  141. package/assets/video-recovery-service-BeRoh0s2.js +1 -0
  142. package/assets/workflow-generation-utils-me381Cax.js +3 -0
  143. package/assets/workflow-submission-service-YOpo7g37.js +4 -0
  144. package/assets/{xychartDiagram-e933f94c-B17Evxfw.js → xychartDiagram-e933f94c-CJX9_9WF.js} +4 -4
  145. package/assets/{xychartDiagram-e933f94c-Dln5PJtU.js → xychartDiagram-e933f94c-Cep8CQEH.js} +3 -3
  146. package/changelog.json +50 -0
  147. package/idle-prefetch-manifest.json +300 -316
  148. package/manifest.json +3 -3
  149. package/package.json +1 -1
  150. package/precache-manifest.json +8 -8
  151. package/sw.js +5 -5
  152. package/version.json +19 -3
  153. package/assets/CanvasAudioPlayer-DwM6PU4W.js +0 -2
  154. package/assets/ChatDrawer-BQTaa6r6.js +0 -11
  155. package/assets/DeferredAIInputBar-BmPgFhXr.css +0 -1
  156. package/assets/DeferredAIInputBar-ObyfJQ0O.js +0 -7
  157. package/assets/DrawnixDeferredFeatures-CFHVLxc5.js +0 -2
  158. package/assets/ModelDropdown-CQTTHEI7.css +0 -1
  159. package/assets/ModelDropdown-DjvIvi8O.js +0 -1
  160. package/assets/MusicAnalyzer-BU5l2wPR.js +0 -1
  161. package/assets/ResizableDivider-CBgTphcS.js +0 -1
  162. package/assets/TaskQueuePanel-CTDuSScf.js +0 -1
  163. package/assets/ai-generation-preferences-service-CqwXb9Cs.js +0 -5
  164. package/assets/arc-BBE0LXa1.js +0 -1
  165. package/assets/arc-h476db6P.js +0 -1
  166. package/assets/channel-DMTz1UNN.js +0 -1
  167. package/assets/channel-DQOY3XLe.js +0 -1
  168. package/assets/classDiagram-70f12bd4-5ACx619h.js +0 -2
  169. package/assets/classDiagram-v2-f2320105-4zQ4jrwi.js +0 -2
  170. package/assets/classDiagram-v2-f2320105-CB4rof84.js +0 -2
  171. package/assets/clone-fuaXEdc-.js +0 -1
  172. package/assets/edges-e0da2a9e-DZalSm7f.js +0 -4
  173. package/assets/flowDiagram-v2-96b9c2cf-C-DFFh54.js +0 -1
  174. package/assets/flowDiagram-v2-96b9c2cf-CWjydvHB.js +0 -1
  175. package/assets/ganttDiagram-c361ad54-DDnbMkWm.js +0 -257
  176. package/assets/graph-BsYIlc-B.js +0 -1
  177. package/assets/index-B10kMZoq.js +0 -1
  178. package/assets/index-B2_XRj3U.js +0 -1
  179. package/assets/index-B4lLv-Sz.js +0 -1
  180. package/assets/index-BFZNUUCR.js +0 -1
  181. package/assets/index-BTSYG2Vy.js +0 -1
  182. package/assets/index-BY5Kvjqg.js +0 -1
  183. package/assets/index-Blf7J5yW.js +0 -1
  184. package/assets/index-BoQA7VaE.js +0 -3
  185. package/assets/index-BzqQ69oU.js +0 -1
  186. package/assets/index-CD2D1BYc.js +0 -2
  187. package/assets/index-CLRs5cWt.js +0 -1
  188. package/assets/index-CLU4LJjR.js +0 -1
  189. package/assets/index-CPDfMZkS.js +0 -1
  190. package/assets/index-CPfhqyDz.js +0 -316
  191. package/assets/index-CU4ySaQE.js +0 -1
  192. package/assets/index-CsCwwmYY.js +0 -1
  193. package/assets/index-Cyz_w8KS.js +0 -7
  194. package/assets/index-D489cJtb.js +0 -1
  195. package/assets/index-D6DebbcI.js +0 -1
  196. package/assets/index-DDtPG6Km.js +0 -1
  197. package/assets/index-DKhTnUBU.js +0 -1
  198. package/assets/index-DMIwLDS8.js +0 -13
  199. package/assets/index-DgsUJgRJ.js +0 -1
  200. package/assets/index-oT8mbA3U.js +0 -2
  201. package/assets/layout-B1ePJO5V.js +0 -1
  202. package/assets/line-C_jmJ6v1.js +0 -1
  203. package/assets/line-DfhCgsyz.js +0 -1
  204. package/assets/linear-ChY5Iu43.js +0 -1
  205. package/assets/main-LCg1nQGB.js +0 -69
  206. package/assets/model-benchmark-launcher-B2MsZXmV.js +0 -1
  207. package/assets/model-benchmark-service-CkIRp-Sq.js +0 -1
  208. package/assets/model-selection-BvdXmVGX.js +0 -1
  209. package/assets/photo-wall-splitter-CVrfkWnh.js +0 -1
  210. package/assets/prompt-optimize-dialog-DLdL2_a1.css +0 -1
  211. package/assets/settings-dialog-CAhU3cfG.js +0 -1
  212. package/assets/stateDiagram-587899a1-CMylUAYu.js +0 -1
  213. package/assets/styles-c10674c1-KfJINP7I.js +0 -116
  214. package/assets/styles-c10674c1-cccyjRUz.js +0 -116
  215. package/assets/tool-windows-CtLXQDGF.js +0 -2847
  216. package/assets/ttd-dialog-BRg3XE5k.js +0 -99
  217. package/assets/use-runtime-models-BH9r4Yc1.js +0 -1
  218. package/assets/use-runtime-models-BgWWl4Ng.css +0 -1
  219. package/assets/useWorkflowSubmission-BeJQ3BuO.js +0 -70
  220. package/assets/video-analyze-aDVIfgUi.js +0 -1
  221. package/assets/video-recovery-service-Dy0xiPr8.js +0 -1
  222. package/assets/workflow-generation-utils-CpMilOwA.js +0 -3
  223. package/assets/workflow-submission-service-CmBBMIis.js +0 -4
@@ -0,0 +1,56 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-CUNbW1Tz.css","./MediaLibrarySidebar-CNCXXhfY.css","./useCharacters-OrDbG69o.css","./character-Bo9jcTNu.css","./index-I7GscWS1.css","./ai-generation-preferences-service-CeFIqZqn.css","./DeferredAIInputBar-szBPHiNW.css","./ChatDrawer-0jNvKIoI.css","./DrawnixDeferredFeatures-BBiW9_Pn.css","./ResizableDivider-ClzYJk-6.css","./ttd-dialog-BlUvpMr5.css","./settings-dialog-CdRrvvi_.css","./CanvasAudioPlayer-mm7y75Ol.css"])))=>i.map(i=>d[i]);
2
+ import{aj as p,iw as hu,N as q,ix as $b,iy as Xb,iz as gu,ee as Ta,iA as Ot,iB as Ft,iC as Kb,iD as ol,ef as vs,iE as Yb,O as ge,iF as Zb,iG as ec,iH as Es,iI as ks,iJ as Qb,iK as is,iL as Jb,iM as e0,iN as bu,iO as xu,iP as Nu,iQ as yu,iR as t0,iS as wu,iT as vu,iU as n0,iV as sl,iW as rl,ai as l,cl as K,iX as i0,iY as o0,iZ as s0,i_ as r0,im as Or,i$ as Eu,j0 as Sn,j1 as ku,j2 as gr,j3 as a0,j4 as l0,j5 as Bi,j6 as c0,j7 as u0,j8 as Fp,h9 as Oe,j9 as no,ja as Su,jb as d0,jc as m0,jd as p0,je as f0,jf as h0,jg as g0,jh as b0,ji as x0,jj as N0,jk as y0,jl as w0,jm as v0,jn as E0,bj as k0,jo as S0,jp as T0,jq as Da,jr as Ms,js as D0,jt as _0,R as fe,ju as j0,jv as P0,aU as se,bT as C0,jw as Tu,jx as Du,jy as A0,jz as _u,av as M0,ar as qn,a4 as ju,jA as I0,jB as V0,h as tc,jC as U0,jD as R0,jE as Hp,jF as os,jG as ss,jH as al,jI as on,jJ as q0,p as L0,c as B0,D as Fr,aH as Pn,jK as Wn,jL as $n,jM as mn,jN as zp,jO as uo,jP as nc,M as ce,jQ as ic,jR as yo,jS as wo,jT as At,jU as O0,jV as Di,jW as Gp,jX as Wp,jY as ni,jZ as Tt,j_ as Mt,j$ as De,k0 as io,k1 as Ln,k2 as st,k3 as rt,k4 as ie,k5 as at,k6 as _i,c_ as It,bk as je,k7 as Cn,k8 as Hr,hX as ii,k9 as $p,ka as Xp,kb as Kp,kc as F0,kd as H0,ke as Yp,kf as Zp,fW as er,kg as zr,kh as Pu,aD as Gr,bp as Tn,bq as Ct,ak as Re,ki as Qp,kj as z0,eI as G0,eJ as W0,ap as Wr,aq as $r,kk as Jp,cF as oc,bN as ri,g$ as ef,kl as rs,km as $0,kn as X0,ko as Je,cY as Xr,g as qt,kp as K0,kq as Y0,kr as Z0,Q as Yt,ha as F,ks as Xe,ah as Gt,kt as Q0,ku as oo,kv as J0,fU as ex,kw as tx,kx as nx,ky as ix,kz as sc,h3 as Cu,kA as ox,aO as _t,cP as sx,as as rx,kB as ax,kC as lx,kD as cx,kE as ux,kF as dx,kG as mx,kH as un,kI as px,kJ as fx,kK as hx,kL as gx,kM as bx,kN as xx,kO as Nx,kP as so,kQ as yx,kR as wx,kS as vx,kT as Ex,kU as kn,kV as kx,kW as Sx,kX as Tx,kY as Dx,kZ as _x,k_ as jx,k$ as Px,l0 as Au,l1 as Mu,l2 as Is,l3 as Cx,bh as Ax,bw as Mx,di as Ix,i9 as Vs,gw as tf,l4 as Vx,l5 as Ux,l6 as Rx,dv as qx,cz as Lx,l7 as rc,l8 as ac,l9 as nf,la as lc,lb as En,lc as cc,ld as Qn,le as Iu,cc as Qt,lf as Bx,L as Ox,lg as Fx,lh as Hx,li as zx,lj as Us,lk as Fo,ll as as,lm as Gx,ln as Wx,gx as Vu,lo as $x,lp as Xx,cm as Kx,cn as Yx,lq as Zx,h0 as Qx,gq as Uu,lr as of,dU as Jx,ls as Ru,lt as Kr,lu as Yr,lv as eN,lw as tN,gf as nN,lx as iN,ly as oN,bA as sN,lz as rN,by as aN,lA as lN,lB as cN,lC as ai,lD as ji,lE as uN,cI as qu,lF as ll,lG as sf,lH as rf,lI as dN,lJ as mN,lK as pN,lL as fN,lM as br,d as uc,lN as af,lO as hN,lP as gN,lQ as lf,bO as bN,lR as cf,lS as xN,lT as Zr,lU as uf,lV as NN,lW as yN,hm as dc,lX as wN,lY as vN,lZ as df,l_ as tr,l$ as EN,m0 as kN,m1 as SN,m2 as TN,m3 as DN,m4 as _N,m5 as jN,m6 as PN,m7 as xi,m8 as mf,m9 as Qr,cZ as tn,ma as pf,mb as ff,mc as CN,md as hf,me as mc,mf as gf,mg as bf,mh as AN,mi as MN,mj as IN,mk as VN,ml as UN,mm as cl,mn as RN,mo as qN,mp as pc,mq as Hn,mr as tt,ms as ot,mt as vo,mu as LN,mv as BN,mw as ON,mx as xf,my as ct,mz as St,i0 as Me,i4 as fc,mA as Nf,mB as yf,mC as wf,mD as vf,mE as Ef,mF as kf,mG as Sf,i6 as Dn,mH as FN,mI as HN,mJ as zN,mK as Et,mL as ls,mM as Pi,mN as GN,mO as hc,mP as Jr,mQ as Tf,mR as gc,mS as Df,mT as _f,mU as jf,mV as Pf,mW as bc,mX as xc,mY as Nc,mZ as xr,m_ as Cf,m$ as Af,n0 as Mf,n1 as WN,e as If,n2 as $N,bm as XN,n3 as KN,n4 as YN,n5 as ZN,n6 as QN,bo as JN,n7 as ea,n8 as Lu,n9 as ey,na as ty,nb as ny,nc as Vf,nd as vn,ne as yc,nf as iy,ng as Lt,nh as wc,ni as Uf,nj as Rf,nk as qf,nl as ta,nm as vc,nn as Ec,no as ul,np as li,nq as Bu,nr as Lf,ns as Bf,nt as Of,nu as Ff,nv as Ii,nw as Eo,nx as Vi,ny as na,nz as Ss,nA as pi,nB as Ou,nC as dl,nD as oy,ia as sy,nE as Hf,nF as ry,nG as ay,nH as ly,nI as zf,nJ as Gf,nK as cy,nL as ia,nM as Fu,nN as uy,nO as dy,nP as Hu,cb as Nt,nQ as zu,nR as my,nS as py,nT as fy,nU as hy,nV as Gu,nW as gy,ao as Nr,nX as Wf,nY as $f,dY as by,nZ as xy,n_ as Ny,n$ as yy,o0 as wy,o1 as vy,o2 as Ey,bY as ky,o3 as _a,o4 as Sy,o5 as Ty,o6 as Dy,o7 as Rs,o8 as Oi,o9 as Fi,bL as _y,oa as jy,bK as Py,fQ as Cy,ob as Ay,oc as Xf,od as My,oe as Iy,of as Vy,og as Uy,oh as Ry,oi as kc,oj as cs,hY as us,ok as Kf,ol as qy,om as ut,on as yr,i5 as Yf,s as Zf,oo as Qf,op as Ly,I as By,oq as Wu,or as $u,os as Oy,ot as ds,ou as Fy,ov as Hy,ow as zy,ox as Gy,oy as Wy,oz as $y,hn as Xy,hp as Ky,ho as Yy,oA as Zy,oB as Qy,oC as Jy,oD as ew,oE as tw,oF as nw,oG as iw,oH as ow,oI as sw,oJ as rw,hq as aw,oK as Sc,c5 as Tc,oL as Xu,oM as ja,oN as Pa,oO as lw,oP as Jf,oQ as cw,oR as ml,oS as wn,oT as eh,oU as th,cB as oa,oV as gt,oW as Bn,oX as uw,oY as dw,oZ as Hi,o_ as mw,o$ as pw,p0 as Ku,p1 as fw}from"./tool-windows-DOIu9TAD.js";const Pe=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,Ke=globalThis,Si="10.33.0";function sa(){return ra(Ke),Ke}function ra(e){const t=e.__SENTRY__=e.__SENTRY__||{};return t.version=t.version||Si,t[Si]=t[Si]||{}}function ko(e,t,n=Ke){const i=n.__SENTRY__=n.__SENTRY__||{},o=i[Si]=i[Si]||{};return o[e]||(o[e]=t())}const hw=["debug","info","warn","error","log","assert","trace"],gw="Sentry Logger ",wr={};function So(e){if(!("console"in Ke))return e();const t=Ke.console,n={},i=Object.keys(wr);i.forEach(o=>{const s=wr[o];n[o]=t[o],t[o]=s});try{return e()}finally{i.forEach(o=>{t[o]=n[o]})}}function bw(){_c().enabled=!0}function xw(){_c().enabled=!1}function nh(){return _c().enabled}function Nw(...e){Dc("log",...e)}function yw(...e){Dc("warn",...e)}function ww(...e){Dc("error",...e)}function Dc(e,...t){Pe&&nh()&&So(()=>{Ke.console[e](`${gw}[${e}]:`,...t)})}function _c(){return Pe?ko("loggerSettings",()=>({enabled:!1})):{enabled:!1}}const he={enable:bw,disable:xw,isEnabled:nh,log:Nw,warn:yw,error:ww},ih=50,Ci="?",Yu=/\(error: (.*)\)/,Zu=/captureMessage|captureException/;function oh(...e){const t=e.sort((n,i)=>n[0]-i[0]).map(n=>n[1]);return(n,i=0,o=0)=>{const s=[],r=n.split(`
3
+ `);for(let a=i;a<r.length;a++){let c=r[a];c.length>1024&&(c=c.slice(0,1024));const u=Yu.test(c)?c.replace(Yu,"$1"):c;if(!u.match(/\S*Error: /)){for(const d of t){const m=d(u);if(m){s.push(m);break}}if(s.length>=ih+o)break}}return Ew(s.slice(o))}}function vw(e){return Array.isArray(e)?oh(...e):e}function Ew(e){if(!e.length)return[];const t=Array.from(e);return/sentryWrapped/.test(qs(t).function||"")&&t.pop(),t.reverse(),Zu.test(qs(t).function||"")&&(t.pop(),Zu.test(qs(t).function||"")&&t.pop()),t.slice(0,ih).map(n=>({...n,filename:n.filename||qs(t).filename,function:n.function||Ci}))}function qs(e){return e[e.length-1]||{}}const Ca="<anonymous>";function ci(e){try{return!e||typeof e!="function"?Ca:e.name||Ca}catch{return Ca}}function Qu(e){const t=e.exception;if(t){const n=[];try{return t.values.forEach(i=>{i.stacktrace.frames&&n.push(...i.stacktrace.frames)}),n}catch{return}}}function sh(e){return"__v_isVNode"in e&&e.__v_isVNode?"[VueVNode]":"[VueViewModel]"}const nr={},Ju={};function Ui(e,t){nr[e]=nr[e]||[],nr[e].push(t)}function Ri(e,t){if(!Ju[e]){Ju[e]=!0;try{t()}catch(n){Pe&&he.error(`Error while instrumenting ${e}`,n)}}}function Nn(e,t){const n=e&&nr[e];if(n)for(const i of n)try{i(t)}catch(o){Pe&&he.error(`Error while triggering instrumentation handler.
4
+ Type: ${e}
5
+ Name: ${ci(i)}
6
+ Error:`,o)}}let Aa=null;function kw(e){const t="error";Ui(t,e),Ri(t,Sw)}function Sw(){Aa=Ke.onerror,Ke.onerror=function(e,t,n,i,o){return Nn("error",{column:i,error:o,line:n,msg:e,url:t}),Aa?Aa.apply(this,arguments):!1},Ke.onerror.__SENTRY_INSTRUMENTED__=!0}let Ma=null;function Tw(e){const t="unhandledrejection";Ui(t,e),Ri(t,Dw)}function Dw(){Ma=Ke.onunhandledrejection,Ke.onunhandledrejection=function(e){return Nn("unhandledrejection",e),Ma?Ma.apply(this,arguments):!0},Ke.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}const rh=Object.prototype.toString;function jc(e){switch(rh.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object WebAssembly.Exception]":return!0;default:return ui(e,Error)}}function To(e,t){return rh.call(e)===`[object ${t}]`}function ah(e){return To(e,"ErrorEvent")}function ed(e){return To(e,"DOMError")}function _w(e){return To(e,"DOMException")}function On(e){return To(e,"String")}function Pc(e){return typeof e=="object"&&e!==null&&"__sentry_template_string__"in e&&"__sentry_template_values__"in e}function aa(e){return e===null||Pc(e)||typeof e!="object"&&typeof e!="function"}function ms(e){return To(e,"Object")}function la(e){return typeof Event<"u"&&ui(e,Event)}function jw(e){return typeof Element<"u"&&ui(e,Element)}function Pw(e){return To(e,"RegExp")}function Ts(e){return!!(e!=null&&e.then&&typeof e.then=="function")}function Cw(e){return ms(e)&&"nativeEvent"in e&&"preventDefault"in e&&"stopPropagation"in e}function ui(e,t){try{return e instanceof t}catch{return!1}}function lh(e){return!!(typeof e=="object"&&e!==null&&(e.__isVue||e._isVue||e.__v_isVNode))}function ch(e){return typeof Request<"u"&&ui(e,Request)}const Cc=Ke,Aw=80;function uh(e,t={}){if(!e)return"<unknown>";try{let n=e;const i=5,o=[];let s=0,r=0;const a=" > ",c=a.length;let u;const d=Array.isArray(t)?t:t.keyAttrs,m=!Array.isArray(t)&&t.maxStringLength||Aw;for(;n&&s++<i&&(u=Mw(n,d),!(u==="html"||s>1&&r+o.length*c+u.length>=m));)o.push(u),r+=u.length,n=n.parentNode;return o.reverse().join(a)}catch{return"<unknown>"}}function Mw(e,t){const n=e,i=[];if(!(n!=null&&n.tagName))return"";if(Cc.HTMLElement&&n instanceof HTMLElement&&n.dataset){if(n.dataset.sentryComponent)return n.dataset.sentryComponent;if(n.dataset.sentryElement)return n.dataset.sentryElement}i.push(n.tagName.toLowerCase());const o=t!=null&&t.length?t.filter(r=>n.getAttribute(r)).map(r=>[r,n.getAttribute(r)]):null;if(o!=null&&o.length)o.forEach(r=>{i.push(`[${r[0]}="${r[1]}"]`)});else{n.id&&i.push(`#${n.id}`);const r=n.className;if(r&&On(r)){const a=r.split(/\s+/);for(const c of a)i.push(`.${c}`)}}const s=["aria-label","type","name","title","alt"];for(const r of s){const a=n.getAttribute(r);a&&i.push(`[${r}="${a}"]`)}return i.join("")}function Ac(){try{return Cc.document.location.href}catch{return""}}function Iw(e){if(!Cc.HTMLElement)return null;let t=e;const n=5;for(let i=0;i<n;i++){if(!t)return null;if(t instanceof HTMLElement){if(t.dataset.sentryComponent)return t.dataset.sentryComponent;if(t.dataset.sentryElement)return t.dataset.sentryElement}t=t.parentNode}return null}function Jt(e,t,n){if(!(t in e))return;const i=e[t];if(typeof i!="function")return;const o=n(i);typeof o=="function"&&dh(o,i);try{e[t]=o}catch{Pe&&he.log(`Failed to replace method "${t}" in object`,e)}}function Ai(e,t,n){try{Object.defineProperty(e,t,{value:n,writable:!0,configurable:!0})}catch{Pe&&he.log(`Failed to add non-enumerable property "${t}" to object`,e)}}function dh(e,t){try{const n=t.prototype||{};e.prototype=t.prototype=n,Ai(e,"__sentry_original__",t)}catch{}}function Mc(e){return e.__sentry_original__}function mh(e){if(jc(e))return{message:e.message,name:e.name,stack:e.stack,...nd(e)};if(la(e)){const t={type:e.type,target:td(e.target),currentTarget:td(e.currentTarget),...nd(e)};return typeof CustomEvent<"u"&&ui(e,CustomEvent)&&(t.detail=e.detail),t}else return e}function td(e){try{return jw(e)?uh(e):Object.prototype.toString.call(e)}catch{return"<unknown>"}}function nd(e){if(typeof e=="object"&&e!==null){const t={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}else return{}}function Vw(e){const t=Object.keys(mh(e));return t.sort(),t[0]?t.join(", "):"[object has no keys]"}let zi;function ca(e){if(zi!==void 0)return zi?zi(e):e();const t=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),n=Ke;return t in n&&typeof n[t]=="function"?(zi=n[t],zi(e)):(zi=null,e())}function vr(){return ca(()=>Math.random())}function ua(){return ca(()=>Date.now())}function pl(e,t=0){return typeof e!="string"||t===0||e.length<=t?e:`${e.slice(0,t)}...`}function id(e,t){if(!Array.isArray(e))return"";const n=[];for(let i=0;i<e.length;i++){const o=e[i];try{lh(o)?n.push(sh(o)):n.push(String(o))}catch{n.push("[value cannot be serialized]")}}return n.join(t)}function ir(e,t,n=!1){return On(e)?Pw(t)?t.test(e):On(t)?n?e===t:e.includes(t):!1:!1}function da(e,t=[],n=!1){return t.some(i=>ir(e,i,n))}function Uw(){const e=Ke;return e.crypto||e.msCrypto}let Ia;function Rw(){return vr()*16}function pn(e=Uw()){try{if(e!=null&&e.randomUUID)return ca(()=>e.randomUUID()).replace(/-/g,"")}catch{}return Ia||(Ia="10000000100040008000"+1e11),Ia.replace(/[018]/g,t=>(t^(Rw()&15)>>t/4).toString(16))}function ph(e){var t,n;return(n=(t=e.exception)==null?void 0:t.values)==null?void 0:n[0]}function yi(e){const{message:t,event_id:n}=e;if(t)return t;const i=ph(e);return i?i.type&&i.value?`${i.type}: ${i.value}`:i.type||i.value||n||"<unknown>":n||"<unknown>"}function fl(e,t,n){const i=e.exception=e.exception||{},o=i.values=i.values||[],s=o[0]=o[0]||{};s.value||(s.value=t||""),s.type||(s.type="Error")}function mo(e,t){const n=ph(e);if(!n)return;const i={type:"generic",handled:!0},o=n.mechanism;if(n.mechanism={...i,...o,...t},t&&"data"in t){const s={...o==null?void 0:o.data,...t.data};n.mechanism.data=s}}function od(e){if(qw(e))return!0;try{Ai(e,"__sentry_captured__",!0)}catch{}return!1}function qw(e){try{return e.__sentry_captured__}catch{}}const fh=1e3;function Ds(){return ua()/fh}function Lw(){const{performance:e}=Ke;if(!(e!=null&&e.now)||!e.timeOrigin)return Ds;const t=e.timeOrigin;return()=>(t+ca(()=>e.now()))/fh}let sd;function Fn(){return(sd??(sd=Lw()))()}function Bw(e){const t=Fn(),n={sid:pn(),init:!0,timestamp:t,started:t,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>Fw(n)};return e&&po(n,e),n}function po(e,t={}){if(t.user&&(!e.ipAddress&&t.user.ip_address&&(e.ipAddress=t.user.ip_address),!e.did&&!t.did&&(e.did=t.user.id||t.user.email||t.user.username)),e.timestamp=t.timestamp||Fn(),t.abnormal_mechanism&&(e.abnormal_mechanism=t.abnormal_mechanism),t.ignoreDuration&&(e.ignoreDuration=t.ignoreDuration),t.sid&&(e.sid=t.sid.length===32?t.sid:pn()),t.init!==void 0&&(e.init=t.init),!e.did&&t.did&&(e.did=`${t.did}`),typeof t.started=="number"&&(e.started=t.started),e.ignoreDuration)e.duration=void 0;else if(typeof t.duration=="number")e.duration=t.duration;else{const n=e.timestamp-e.started;e.duration=n>=0?n:0}t.release&&(e.release=t.release),t.environment&&(e.environment=t.environment),!e.ipAddress&&t.ipAddress&&(e.ipAddress=t.ipAddress),!e.userAgent&&t.userAgent&&(e.userAgent=t.userAgent),typeof t.errors=="number"&&(e.errors=t.errors),t.status&&(e.status=t.status)}function Ow(e,t){let n={};e.status==="ok"&&(n={status:"exited"}),po(e,n)}function Fw(e){return{sid:`${e.sid}`,init:e.init,started:new Date(e.started*1e3).toISOString(),timestamp:new Date(e.timestamp*1e3).toISOString(),status:e.status,errors:e.errors,did:typeof e.did=="number"||typeof e.did=="string"?`${e.did}`:void 0,duration:e.duration,abnormal_mechanism:e.abnormal_mechanism,attrs:{release:e.release,environment:e.environment,ip_address:e.ipAddress,user_agent:e.userAgent}}}function _s(e,t,n=2){if(!t||typeof t!="object"||n<=0)return t;if(e&&Object.keys(t).length===0)return e;const i={...e};for(const o in t)Object.prototype.hasOwnProperty.call(t,o)&&(i[o]=_s(i[o],t[o],n-1));return i}function rd(){return pn()}function hh(){return pn().substring(16)}const hl="_sentrySpan";function ad(e,t){t?Ai(e,hl,t):delete e[hl]}function ld(e){return e[hl]}const Hw=100;class zn{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._attributes={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext={traceId:rd(),sampleRand:vr()}}clone(){const t=new zn;return t._breadcrumbs=[...this._breadcrumbs],t._tags={...this._tags},t._attributes={...this._attributes},t._extra={...this._extra},t._contexts={...this._contexts},this._contexts.flags&&(t._contexts.flags={values:[...this._contexts.flags.values]}),t._user=this._user,t._level=this._level,t._session=this._session,t._transactionName=this._transactionName,t._fingerprint=this._fingerprint,t._eventProcessors=[...this._eventProcessors],t._attachments=[...this._attachments],t._sdkProcessingMetadata={...this._sdkProcessingMetadata},t._propagationContext={...this._propagationContext},t._client=this._client,t._lastEventId=this._lastEventId,ad(t,ld(this)),t}setClient(t){this._client=t}setLastEventId(t){this._lastEventId=t}getClient(){return this._client}lastEventId(){return this._lastEventId}addScopeListener(t){this._scopeListeners.push(t)}addEventProcessor(t){return this._eventProcessors.push(t),this}setUser(t){return this._user=t||{email:void 0,id:void 0,ip_address:void 0,username:void 0},this._session&&po(this._session,{user:t}),this._notifyScopeListeners(),this}getUser(){return this._user}setTags(t){return this._tags={...this._tags,...t},this._notifyScopeListeners(),this}setTag(t,n){return this.setTags({[t]:n})}setAttributes(t){return this._attributes={...this._attributes,...t},this._notifyScopeListeners(),this}setAttribute(t,n){return this.setAttributes({[t]:n})}removeAttribute(t){return t in this._attributes&&(delete this._attributes[t],this._notifyScopeListeners()),this}setExtras(t){return this._extra={...this._extra,...t},this._notifyScopeListeners(),this}setExtra(t,n){return this._extra={...this._extra,[t]:n},this._notifyScopeListeners(),this}setFingerprint(t){return this._fingerprint=t,this._notifyScopeListeners(),this}setLevel(t){return this._level=t,this._notifyScopeListeners(),this}setTransactionName(t){return this._transactionName=t,this._notifyScopeListeners(),this}setContext(t,n){return n===null?delete this._contexts[t]:this._contexts[t]=n,this._notifyScopeListeners(),this}setSession(t){return t?this._session=t:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(t){if(!t)return this;const n=typeof t=="function"?t(this):t,i=n instanceof zn?n.getScopeData():ms(n)?t:void 0,{tags:o,attributes:s,extra:r,user:a,contexts:c,level:u,fingerprint:d=[],propagationContext:m}=i||{};return this._tags={...this._tags,...o},this._attributes={...this._attributes,...s},this._extra={...this._extra,...r},this._contexts={...this._contexts,...c},a&&Object.keys(a).length&&(this._user=a),u&&(this._level=u),d.length&&(this._fingerprint=d),m&&(this._propagationContext=m),this}clear(){return this._breadcrumbs=[],this._tags={},this._attributes={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._session=void 0,ad(this,void 0),this._attachments=[],this.setPropagationContext({traceId:rd(),sampleRand:vr()}),this._notifyScopeListeners(),this}addBreadcrumb(t,n){var s;const i=typeof n=="number"?n:Hw;if(i<=0)return this;const o={timestamp:Ds(),...t,message:t.message?pl(t.message,2048):t.message};return this._breadcrumbs.push(o),this._breadcrumbs.length>i&&(this._breadcrumbs=this._breadcrumbs.slice(-i),(s=this._client)==null||s.recordDroppedEvent("buffer_overflow","log_item")),this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(t){return this._attachments.push(t),this}clearAttachments(){return this._attachments=[],this}getScopeData(){return{breadcrumbs:this._breadcrumbs,attachments:this._attachments,contexts:this._contexts,tags:this._tags,attributes:this._attributes,extra:this._extra,user:this._user,level:this._level,fingerprint:this._fingerprint||[],eventProcessors:this._eventProcessors,propagationContext:this._propagationContext,sdkProcessingMetadata:this._sdkProcessingMetadata,transactionName:this._transactionName,span:ld(this)}}setSDKProcessingMetadata(t){return this._sdkProcessingMetadata=_s(this._sdkProcessingMetadata,t,2),this}setPropagationContext(t){return this._propagationContext=t,this}getPropagationContext(){return this._propagationContext}captureException(t,n){const i=(n==null?void 0:n.event_id)||pn();if(!this._client)return Pe&&he.warn("No client configured on scope - will not capture exception!"),i;const o=new Error("Sentry syntheticException");return this._client.captureException(t,{originalException:t,syntheticException:o,...n,event_id:i},this),i}captureMessage(t,n,i){const o=(i==null?void 0:i.event_id)||pn();if(!this._client)return Pe&&he.warn("No client configured on scope - will not capture message!"),o;const s=(i==null?void 0:i.syntheticException)??new Error(t);return this._client.captureMessage(t,n,{originalException:t,syntheticException:s,...i,event_id:o},this),o}captureEvent(t,n){const i=(n==null?void 0:n.event_id)||pn();return this._client?(this._client.captureEvent(t,{...n,event_id:i},this),i):(Pe&&he.warn("No client configured on scope - will not capture event!"),i)}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach(t=>{t(this)}),this._notifyingListeners=!1)}}function zw(){return ko("defaultCurrentScope",()=>new zn)}function Gw(){return ko("defaultIsolationScope",()=>new zn)}class Ww{constructor(t,n){let i;t?i=t:i=new zn;let o;n?o=n:o=new zn,this._stack=[{scope:i}],this._isolationScope=o}withScope(t){const n=this._pushScope();let i;try{i=t(n)}catch(o){throw this._popScope(),o}return Ts(i)?i.then(o=>(this._popScope(),o),o=>{throw this._popScope(),o}):(this._popScope(),i)}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStackTop(){return this._stack[this._stack.length-1]}_pushScope(){const t=this.getScope().clone();return this._stack.push({client:this.getClient(),scope:t}),t}_popScope(){return this._stack.length<=1?!1:!!this._stack.pop()}}function fo(){const e=sa(),t=ra(e);return t.stack=t.stack||new Ww(zw(),Gw())}function $w(e){return fo().withScope(e)}function Xw(e,t){const n=fo();return n.withScope(()=>(n.getStackTop().scope=e,t(e)))}function cd(e){return fo().withScope(()=>e(fo().getIsolationScope()))}function Kw(){return{withIsolationScope:cd,withScope:$w,withSetScope:Xw,withSetIsolationScope:(e,t)=>cd(t),getCurrentScope:()=>fo().getScope(),getIsolationScope:()=>fo().getIsolationScope()}}function Ic(e){const t=ra(e);return t.acs?t.acs:Kw()}function fi(){const e=sa();return Ic(e).getCurrentScope()}function qi(){const e=sa();return Ic(e).getIsolationScope()}function Yw(){return ko("globalScope",()=>new zn)}function Zw(...e){const t=sa(),n=Ic(t);if(e.length===2){const[i,o]=e;return i?n.withSetScope(i,o):n.withScope(o)}return n.withScope(e[0])}function Wt(){return fi().getClient()}function Qw(e){const t=e.getPropagationContext(),{traceId:n,parentSpanId:i,propagationSpanId:o}=t,s={trace_id:n,span_id:o||hh()};return i&&(s.parent_span_id=i),s}const Jw="sentry.source",ev="sentry.sample_rate",tv="sentry.previous_trace_sample_rate",nv="sentry.op",iv="sentry.origin",gh="sentry.profile_id",bh="sentry.exclusive_time",ov=0,sv=1,rv="_sentryScope",av="_sentryIsolationScope";function lv(e){if(e){if(typeof e=="object"&&"deref"in e&&typeof e.deref=="function")try{return e.deref()}catch{return}return e}}function xh(e){const t=e;return{scope:t[rv],isolationScope:lv(t[av])}}const cv="sentry-",uv=/^sentry-/;function dv(e){const t=mv(e);if(!t)return;const n=Object.entries(t).reduce((i,[o,s])=>{if(o.match(uv)){const r=o.slice(cv.length);i[r]=s}return i},{});if(Object.keys(n).length>0)return n}function mv(e){if(!(!e||!On(e)&&!Array.isArray(e)))return Array.isArray(e)?e.reduce((t,n)=>{const i=ud(n);return Object.entries(i).forEach(([o,s])=>{t[o]=s}),t},{}):ud(e)}function ud(e){return e.split(",").map(t=>{const n=t.indexOf("=");if(n===-1)return[];const i=t.slice(0,n),o=t.slice(n+1);return[i,o].map(s=>{try{return decodeURIComponent(s.trim())}catch{return}})}).reduce((t,[n,i])=>(n&&i&&(t[n]=i),t),{})}const pv=/^o(\d+)\./,fv=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)((?:\[[:.%\w]+\]|[\w.-]+))(?::(\d+))?\/(.+)/;function hv(e){return e==="http"||e==="https"}function js(e,t=!1){const{host:n,path:i,pass:o,port:s,projectId:r,protocol:a,publicKey:c}=e;return`${a}://${c}${t&&o?`:${o}`:""}@${n}${s?`:${s}`:""}/${i&&`${i}/`}${r}`}function gv(e){const t=fv.exec(e);if(!t){So(()=>{console.error(`Invalid Sentry Dsn: ${e}`)});return}const[n,i,o="",s="",r="",a=""]=t.slice(1);let c="",u=a;const d=u.split("/");if(d.length>1&&(c=d.slice(0,-1).join("/"),u=d.pop()),u){const m=u.match(/^\d+/);m&&(u=m[0])}return Nh({host:s,pass:o,path:c,projectId:u,port:r,protocol:n,publicKey:i})}function Nh(e){return{protocol:e.protocol,publicKey:e.publicKey||"",pass:e.pass||"",host:e.host,port:e.port||"",path:e.path||"",projectId:e.projectId}}function bv(e){if(!Pe)return!0;const{port:t,projectId:n,protocol:i}=e;return["protocol","publicKey","host","projectId"].find(r=>e[r]?!1:(he.error(`Invalid Sentry Dsn: ${r} missing`),!0))?!1:n.match(/^\d+$/)?hv(i)?t&&isNaN(parseInt(t,10))?(he.error(`Invalid Sentry Dsn: Invalid port ${t}`),!1):!0:(he.error(`Invalid Sentry Dsn: Invalid protocol ${i}`),!1):(he.error(`Invalid Sentry Dsn: Invalid projectId ${n}`),!1)}function xv(e){const t=e.match(pv);return t==null?void 0:t[1]}function Nv(e){const t=e.getOptions(),{host:n}=e.getDsn()||{};let i;return t.orgId?i=String(t.orgId):n&&(i=xv(n)),i}function yv(e){const t=typeof e=="string"?gv(e):Nh(e);if(!(!t||!bv(t)))return t}function wv(e){if(typeof e=="boolean")return Number(e);const t=typeof e=="string"?parseFloat(e):e;if(!(typeof t!="number"||isNaN(t)||t<0||t>1))return t}const yh=1;let dd=!1;function vv(e){const{spanId:t,traceId:n,isRemote:i}=e.spanContext(),o=i?t:Vc(e).parent_span_id,s=xh(e).scope,r=i?(s==null?void 0:s.getPropagationContext().propagationSpanId)||hh():t;return{parent_span_id:o,span_id:r,trace_id:n}}function Ev(e){if(e&&e.length>0)return e.map(({context:{spanId:t,traceId:n,traceFlags:i,...o},attributes:s})=>({span_id:t,trace_id:n,sampled:i===yh,attributes:s,...o}))}function md(e){return typeof e=="number"?pd(e):Array.isArray(e)?e[0]+e[1]/1e9:e instanceof Date?pd(e.getTime()):Fn()}function pd(e){return e>9999999999?e/1e3:e}function Vc(e){var i;if(Sv(e))return e.getSpanJSON();const{spanId:t,traceId:n}=e.spanContext();if(kv(e)){const{attributes:o,startTime:s,name:r,endTime:a,status:c,links:u}=e,d="parentSpanId"in e?e.parentSpanId:"parentSpanContext"in e?(i=e.parentSpanContext)==null?void 0:i.spanId:void 0;return{span_id:t,trace_id:n,data:o,description:r,parent_span_id:d,start_timestamp:md(s),timestamp:md(a)||void 0,status:Dv(c),op:o[nv],origin:o[iv],links:Ev(u)}}return{span_id:t,trace_id:n,start_timestamp:0,data:{}}}function kv(e){const t=e;return!!t.attributes&&!!t.startTime&&!!t.name&&!!t.endTime&&!!t.status}function Sv(e){return typeof e.getSpanJSON=="function"}function Tv(e){const{traceFlags:t}=e.spanContext();return t===yh}function Dv(e){if(!(!e||e.code===ov))return e.code===sv?"ok":e.message||"internal_error"}const _v="_sentryRootSpan";function wh(e){return e[_v]||e}function fd(){dd||(So(()=>{console.warn("[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.")}),dd=!0)}function jv(e){var n;if(typeof __SENTRY_TRACING__=="boolean"&&!__SENTRY_TRACING__)return!1;const t=(n=Wt())==null?void 0:n.getOptions();return!!t&&(t.tracesSampleRate!=null||!!t.tracesSampler)}function hd(e){he.log(`Ignoring span ${e.op} - ${e.description} because it matches \`ignoreSpans\`.`)}function gd(e,t){if(!(t!=null&&t.length)||!e.description)return!1;for(const n of t){if(Cv(n)){if(ir(e.description,n))return Pe&&hd(e),!0;continue}if(!n.name&&!n.op)continue;const i=n.name?ir(e.description,n.name):!0,o=n.op?e.op&&ir(e.op,n.op):!0;if(i&&o)return Pe&&hd(e),!0}return!1}function Pv(e,t){const n=t.parent_span_id,i=t.span_id;if(n)for(const o of e)o.parent_span_id===i&&(o.parent_span_id=n)}function Cv(e){return typeof e=="string"||e instanceof RegExp}const Uc="production",Av="_frozenDsc";function vh(e,t){const n=t.getOptions(),{publicKey:i}=t.getDsn()||{},o={environment:n.environment||Uc,release:n.release,public_key:i,trace_id:e,org_id:Nv(t)};return t.emit("createDsc",o),o}function Mv(e,t){const n=t.getPropagationContext();return n.dsc||vh(n.traceId,e)}function Iv(e){var g;const t=Wt();if(!t)return{};const n=wh(e),i=Vc(n),o=i.data,s=n.spanContext().traceState,r=(s==null?void 0:s.get("sentry.sample_rate"))??o[ev]??o[tv];function a(b){return(typeof r=="number"||typeof r=="string")&&(b.sample_rate=`${r}`),b}const c=n[Av];if(c)return a(c);const u=s==null?void 0:s.get("sentry.dsc"),d=u&&dv(u);if(d)return a(d);const m=vh(e.spanContext().traceId,t),f=o[Jw],h=i.description;return f!=="url"&&h&&(m.transaction=h),jv()&&(m.sampled=String(Tv(n)),m.sample_rand=(s==null?void 0:s.get("sentry.sample_rand"))??((g=xh(n).scope)==null?void 0:g.getPropagationContext().sampleRand.toString())),a(m),t.emit("createDsc",m,n),m}function In(e,t=100,n=1/0){try{return gl("",e,t,n)}catch(i){return{ERROR:`**non-serializable** (${i})`}}}function Eh(e,t=3,n=100*1024){const i=In(e,t);return qv(i)>n?Eh(e,t-1,n):i}function gl(e,t,n=1/0,i=1/0,o=Lv()){const[s,r]=o;if(t==null||["boolean","string"].includes(typeof t)||typeof t=="number"&&Number.isFinite(t))return t;const a=Vv(e,t);if(!a.startsWith("[object "))return a;if(t.__sentry_skip_normalization__)return t;const c=typeof t.__sentry_override_normalization_depth__=="number"?t.__sentry_override_normalization_depth__:n;if(c===0)return a.replace("object ","");if(s(t))return"[Circular ~]";const u=t;if(u&&typeof u.toJSON=="function")try{const h=u.toJSON();return gl("",h,c-1,i,o)}catch{}const d=Array.isArray(t)?[]:{};let m=0;const f=mh(t);for(const h in f){if(!Object.prototype.hasOwnProperty.call(f,h))continue;if(m>=i){d[h]="[MaxProperties ~]";break}const g=f[h];d[h]=gl(h,g,c-1,i,o),m++}return r(t),d}function Vv(e,t){try{if(e==="domain"&&t&&typeof t=="object"&&t._events)return"[Domain]";if(e==="domainEmitter")return"[DomainEmitter]";if(typeof global<"u"&&t===global)return"[Global]";if(typeof window<"u"&&t===window)return"[Window]";if(typeof document<"u"&&t===document)return"[Document]";if(lh(t))return sh(t);if(Cw(t))return"[SyntheticEvent]";if(typeof t=="number"&&!Number.isFinite(t))return`[${t}]`;if(typeof t=="function")return`[Function: ${ci(t)}]`;if(typeof t=="symbol")return`[${String(t)}]`;if(typeof t=="bigint")return`[BigInt: ${String(t)}]`;const n=Uv(t);return/^HTML(\w*)Element$/.test(n)?`[HTMLElement: ${n}]`:`[object ${n}]`}catch(n){return`**non-serializable** (${n})`}}function Uv(e){const t=Object.getPrototypeOf(e);return t!=null&&t.constructor?t.constructor.name:"null prototype"}function Rv(e){return~-encodeURI(e).split(/%..|./).length}function qv(e){return Rv(JSON.stringify(e))}function Lv(){const e=new WeakSet;function t(i){return e.has(i)?!0:(e.add(i),!1)}function n(i){e.delete(i)}return[t,n]}function Do(e,t=[]){return[e,t]}function Bv(e,t){const[n,i]=e;return[n,[...i,t]]}function bd(e,t){const n=e[1];for(const i of n){const o=i[0].type;if(t(i,o))return!0}return!1}function bl(e){const t=ra(Ke);return t.encodePolyfill?t.encodePolyfill(e):new TextEncoder().encode(e)}function kh(e){const[t,n]=e;let i=JSON.stringify(t);function o(s){typeof i=="string"?i=typeof s=="string"?i+s:[bl(i),s]:i.push(typeof s=="string"?bl(s):s)}for(const s of n){const[r,a]=s;if(o(`
7
+ ${JSON.stringify(r)}
8
+ `),typeof a=="string"||a instanceof Uint8Array)o(a);else{let c;try{c=JSON.stringify(a)}catch{c=JSON.stringify(In(a))}o(c)}}return typeof i=="string"?i:Ov(i)}function Ov(e){const t=e.reduce((o,s)=>o+s.length,0),n=new Uint8Array(t);let i=0;for(const o of e)n.set(o,i),i+=o.length;return n}function Fv(e){const t=typeof e.data=="string"?bl(e.data):e.data;return[{type:"attachment",length:t.length,filename:e.filename,content_type:e.contentType,attachment_type:e.attachmentType},t]}const Hv={session:"session",sessions:"session",attachment:"attachment",transaction:"transaction",event:"error",client_report:"internal",user_report:"default",profile:"profile",profile_chunk:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",feedback:"feedback",span:"span",raw_security:"security",log:"log_item",metric:"metric",trace_metric:"metric"};function xd(e){return Hv[e]}function Sh(e){if(!(e!=null&&e.sdk))return;const{name:t,version:n}=e.sdk;return{name:t,version:n}}function zv(e,t,n,i){var s;const o=(s=e.sdkProcessingMetadata)==null?void 0:s.dynamicSamplingContext;return{event_id:e.event_id,sent_at:new Date().toISOString(),...t&&{sdk:t},...!!n&&i&&{dsn:js(i)},...o&&{trace:o}}}function Gv(e,t){var i,o,s,r;if(!t)return e;const n=e.sdk||{};return e.sdk={...n,name:n.name||t.name,version:n.version||t.version,integrations:[...((i=e.sdk)==null?void 0:i.integrations)||[],...t.integrations||[]],packages:[...((o=e.sdk)==null?void 0:o.packages)||[],...t.packages||[]],settings:(s=e.sdk)!=null&&s.settings||t.settings?{...(r=e.sdk)==null?void 0:r.settings,...t.settings}:void 0},e}function Wv(e,t,n,i){const o=Sh(n),s={sent_at:new Date().toISOString(),...o&&{sdk:o},...!!i&&t&&{dsn:js(t)}},r="aggregates"in e?[{type:"sessions"},e]:[{type:"session"},e.toJSON()];return Do(s,[r])}function $v(e,t,n,i){const o=Sh(n),s=e.type&&e.type!=="replay_event"?e.type:"event";Gv(e,n==null?void 0:n.sdk);const r=zv(e,o,i,t);return delete e.sdkProcessingMetadata,Do(r,[[{type:s},e]])}const Va=0,Nd=1,yd=2;function ma(e){return new ps(t=>{t(e)})}function Rc(e){return new ps((t,n)=>{n(e)})}class ps{constructor(t){this._state=Va,this._handlers=[],this._runExecutor(t)}then(t,n){return new ps((i,o)=>{this._handlers.push([!1,s=>{if(!t)i(s);else try{i(t(s))}catch(r){o(r)}},s=>{if(!n)o(s);else try{i(n(s))}catch(r){o(r)}}]),this._executeHandlers()})}catch(t){return this.then(n=>n,t)}finally(t){return new ps((n,i)=>{let o,s;return this.then(r=>{s=!1,o=r,t&&t()},r=>{s=!0,o=r,t&&t()}).then(()=>{if(s){i(o);return}n(o)})})}_executeHandlers(){if(this._state===Va)return;const t=this._handlers.slice();this._handlers=[],t.forEach(n=>{n[0]||(this._state===Nd&&n[1](this._value),this._state===yd&&n[2](this._value),n[0]=!0)})}_runExecutor(t){const n=(s,r)=>{if(this._state===Va){if(Ts(r)){r.then(i,o);return}this._state=s,this._value=r,this._executeHandlers()}},i=s=>{n(Nd,s)},o=s=>{n(yd,s)};try{t(i,o)}catch(s){o(s)}}}function Xv(e,t,n,i=0){try{const o=xl(t,n,e,i);return Ts(o)?o:ma(o)}catch(o){return Rc(o)}}function xl(e,t,n,i){const o=n[i];if(!e||!o)return e;const s=o({...e},t);return Pe&&s===null&&he.log(`Event processor "${o.id||"?"}" dropped event`),Ts(s)?s.then(r=>xl(r,t,n,i+1)):xl(s,t,n,i+1)}let An,wd,vd,Yn;function Kv(e){const t=Ke._sentryDebugIds,n=Ke._debugIds;if(!t&&!n)return{};const i=t?Object.keys(t):[],o=n?Object.keys(n):[];if(Yn&&i.length===wd&&o.length===vd)return Yn;wd=i.length,vd=o.length,Yn={},An||(An={});const s=(r,a)=>{for(const c of r){const u=a[c],d=An==null?void 0:An[c];if(d&&Yn&&u)Yn[d[0]]=u,An&&(An[c]=[d[0],u]);else if(u){const m=e(c);for(let f=m.length-1;f>=0;f--){const h=m[f],g=h==null?void 0:h.filename;if(g&&Yn&&An){Yn[g]=u,An[c]=[g,u];break}}}}};return t&&s(i,t),n&&s(o,n),Yn}function Yv(e,t){const{fingerprint:n,span:i,breadcrumbs:o,sdkProcessingMetadata:s}=t;Qv(e,t),i&&t1(e,i),n1(e,n),Jv(e,o),e1(e,s)}function Ed(e,t){const{extra:n,tags:i,attributes:o,user:s,contexts:r,level:a,sdkProcessingMetadata:c,breadcrumbs:u,fingerprint:d,eventProcessors:m,attachments:f,propagationContext:h,transactionName:g,span:b}=t;jo(e,"extra",n),jo(e,"tags",i),jo(e,"attributes",o),jo(e,"user",s),jo(e,"contexts",r),e.sdkProcessingMetadata=_s(e.sdkProcessingMetadata,c,2),a&&(e.level=a),g&&(e.transactionName=g),b&&(e.span=b),u.length&&(e.breadcrumbs=[...e.breadcrumbs,...u]),d.length&&(e.fingerprint=[...e.fingerprint,...d]),m.length&&(e.eventProcessors=[...e.eventProcessors,...m]),f.length&&(e.attachments=[...e.attachments,...f]),e.propagationContext={...e.propagationContext,...h}}function jo(e,t,n){e[t]=_s(e[t],n,1)}function Zv(e,t){const n=Yw().getScopeData();return e&&Ed(n,e.getScopeData()),t&&Ed(n,t.getScopeData()),n}function Qv(e,t){const{extra:n,tags:i,user:o,contexts:s,level:r,transactionName:a}=t;Object.keys(n).length&&(e.extra={...n,...e.extra}),Object.keys(i).length&&(e.tags={...i,...e.tags}),Object.keys(o).length&&(e.user={...o,...e.user}),Object.keys(s).length&&(e.contexts={...s,...e.contexts}),r&&(e.level=r),a&&e.type!=="transaction"&&(e.transaction=a)}function Jv(e,t){const n=[...e.breadcrumbs||[],...t];e.breadcrumbs=n.length?n:void 0}function e1(e,t){e.sdkProcessingMetadata={...e.sdkProcessingMetadata,...t}}function t1(e,t){e.contexts={trace:vv(t),...e.contexts},e.sdkProcessingMetadata={dynamicSamplingContext:Iv(t),...e.sdkProcessingMetadata};const n=wh(t),i=Vc(n).description;i&&!e.transaction&&e.type==="transaction"&&(e.transaction=i)}function n1(e,t){e.fingerprint=e.fingerprint?Array.isArray(e.fingerprint)?e.fingerprint:[e.fingerprint]:[],t&&(e.fingerprint=e.fingerprint.concat(t)),e.fingerprint.length||delete e.fingerprint}function i1(e,t,n,i,o,s){const{normalizeDepth:r=3,normalizeMaxBreadth:a=1e3}=e,c={...t,event_id:t.event_id||n.event_id||pn(),timestamp:t.timestamp||Ds()},u=n.integrations||e.integrations.map(x=>x.name);o1(c,e),a1(c,u),o&&o.emit("applyFrameMetadata",t),t.type===void 0&&s1(c,e.stackParser);const d=c1(i,n.captureContext);n.mechanism&&mo(c,n.mechanism);const m=o?o.getEventProcessors():[],f=Zv(s,d),h=[...n.attachments||[],...f.attachments];h.length&&(n.attachments=h),Yv(c,f);const g=[...m,...f.eventProcessors];return Xv(g,c,n).then(x=>(x&&r1(x),typeof r=="number"&&r>0?l1(x,r,a):x))}function o1(e,t){var a,c;const{environment:n,release:i,dist:o,maxValueLength:s}=t;e.environment=e.environment||n||Uc,!e.release&&i&&(e.release=i),!e.dist&&o&&(e.dist=o);const r=e.request;r!=null&&r.url&&s&&(r.url=pl(r.url,s)),s&&((c=(a=e.exception)==null?void 0:a.values)==null||c.forEach(u=>{u.value&&(u.value=pl(u.value,s))}))}function s1(e,t){var i,o;const n=Kv(t);(o=(i=e.exception)==null?void 0:i.values)==null||o.forEach(s=>{var r,a;(a=(r=s.stacktrace)==null?void 0:r.frames)==null||a.forEach(c=>{c.filename&&(c.debug_id=n[c.filename])})})}function r1(e){var i,o;const t={};if((o=(i=e.exception)==null?void 0:i.values)==null||o.forEach(s=>{var r,a;(a=(r=s.stacktrace)==null?void 0:r.frames)==null||a.forEach(c=>{c.debug_id&&(c.abs_path?t[c.abs_path]=c.debug_id:c.filename&&(t[c.filename]=c.debug_id),delete c.debug_id)})}),Object.keys(t).length===0)return;e.debug_meta=e.debug_meta||{},e.debug_meta.images=e.debug_meta.images||[];const n=e.debug_meta.images;Object.entries(t).forEach(([s,r])=>{n.push({type:"sourcemap",code_file:s,debug_id:r})})}function a1(e,t){t.length>0&&(e.sdk=e.sdk||{},e.sdk.integrations=[...e.sdk.integrations||[],...t])}function l1(e,t,n){var o,s;if(!e)return null;const i={...e,...e.breadcrumbs&&{breadcrumbs:e.breadcrumbs.map(r=>({...r,...r.data&&{data:In(r.data,t,n)}}))},...e.user&&{user:In(e.user,t,n)},...e.contexts&&{contexts:In(e.contexts,t,n)},...e.extra&&{extra:In(e.extra,t,n)}};return(o=e.contexts)!=null&&o.trace&&i.contexts&&(i.contexts.trace=e.contexts.trace,e.contexts.trace.data&&(i.contexts.trace.data=In(e.contexts.trace.data,t,n))),e.spans&&(i.spans=e.spans.map(r=>({...r,...r.data&&{data:In(r.data,t,n)}}))),(s=e.contexts)!=null&&s.flags&&i.contexts&&(i.contexts.flags=In(e.contexts.flags,3,n)),i}function c1(e,t){if(!t)return e;const n=e?e.clone():new zn;return n.update(t),n}function u1(e,t){return fi().captureException(e,void 0)}function Th(e,t){return fi().captureEvent(e,t)}function d1(e,t){qi().setContext(e,t)}function pa(e,t){qi().setTag(e,t)}function kd(e){const t=qi(),n=fi(),{userAgent:i}=Ke.navigator||{},o=Bw({user:n.getUser()||t.getUser(),...i&&{userAgent:i},...e}),s=t.getSession();return(s==null?void 0:s.status)==="ok"&&po(s,{status:"exited"}),Dh(),t.setSession(o),o}function Dh(){const e=qi(),n=fi().getSession()||e.getSession();n&&Ow(n),_h(),e.setSession()}function _h(){const e=qi(),t=Wt(),n=e.getSession();n&&t&&t.captureSession(n)}function Sd(e=!1){if(e){Dh();return}_h()}const m1="7";function p1(e){const t=e.protocol?`${e.protocol}:`:"",n=e.port?`:${e.port}`:"";return`${t}//${e.host}${n}${e.path?`/${e.path}`:""}/api/`}function f1(e){return`${p1(e)}${e.projectId}/envelope/`}function h1(e,t){const n={sentry_version:m1};return e.publicKey&&(n.sentry_key=e.publicKey),t&&(n.sentry_client=`${t.name}/${t.version}`),new URLSearchParams(n).toString()}function g1(e,t,n){return t||`${f1(e)}?${h1(e,n)}`}const Td=[];function b1(e){const t={};return e.forEach(n=>{const{name:i}=n,o=t[i];o&&!o.isDefaultInstance&&n.isDefaultInstance||(t[i]=n)}),Object.values(t)}function x1(e){const t=e.defaultIntegrations||[],n=e.integrations;t.forEach(o=>{o.isDefaultInstance=!0});let i;if(Array.isArray(n))i=[...t,...n];else if(typeof n=="function"){const o=n(t);i=Array.isArray(o)?o:[o]}else i=t;return b1(i)}function N1(e,t){const n={};return t.forEach(i=>{i&&jh(e,i,n)}),n}function Dd(e,t){for(const n of t)n!=null&&n.afterAllSetup&&n.afterAllSetup(e)}function jh(e,t,n){if(n[t.name]){Pe&&he.log(`Integration skipped because it was already installed: ${t.name}`);return}if(n[t.name]=t,!Td.includes(t.name)&&typeof t.setupOnce=="function"&&(t.setupOnce(),Td.push(t.name)),t.setup&&typeof t.setup=="function"&&t.setup(e),typeof t.preprocessEvent=="function"){const i=t.preprocessEvent.bind(t);e.on("preprocessEvent",(o,s)=>i(o,s,e))}if(typeof t.processEvent=="function"){const i=t.processEvent.bind(t),o=Object.assign((s,r)=>i(s,r,e),{id:t.name});e.addEventProcessor(o)}Pe&&he.log(`Integration installed: ${t.name}`)}function y1(e){return[{type:"log",item_count:e.length,content_type:"application/vnd.sentry.items.log+json"},{items:e}]}function w1(e,t,n,i){const o={};return t!=null&&t.sdk&&(o.sdk={name:t.sdk.name,version:t.sdk.version}),n&&i&&(o.dsn=js(i)),Do(o,[y1(e)])}function Ph(e,t){const n=t??v1(e)??[];if(n.length===0)return;const i=e.getOptions(),o=w1(n,i._metadata,i.tunnel,e.getDsn());Ch().set(e,[]),e.emit("flushLogs"),e.sendEnvelope(o)}function v1(e){return Ch().get(e)}function Ch(){return ko("clientToLogBufferMap",()=>new WeakMap)}function E1(e){return[{type:"trace_metric",item_count:e.length,content_type:"application/vnd.sentry.items.trace-metric+json"},{items:e}]}function k1(e,t,n,i){const o={};return t!=null&&t.sdk&&(o.sdk={name:t.sdk.name,version:t.sdk.version}),n&&i&&(o.dsn=js(i)),Do(o,[E1(e)])}function Ah(e,t){const n=t??S1(e)??[];if(n.length===0)return;const i=e.getOptions(),o=k1(n,i._metadata,i.tunnel,e.getDsn());Mh().set(e,[]),e.emit("flushMetrics"),e.sendEnvelope(o)}function S1(e){return Mh().get(e)}function Mh(){return ko("clientToMetricBufferMap",()=>new WeakMap)}const qc=Symbol.for("SentryBufferFullError");function Lc(e=100){const t=new Set;function n(){return t.size<e}function i(r){t.delete(r)}function o(r){if(!n())return Rc(qc);const a=r();return t.add(a),a.then(()=>i(a),()=>i(a)),a}function s(r){if(!t.size)return ma(!0);const a=Promise.allSettled(Array.from(t)).then(()=>!0);if(!r)return a;const c=[a,new Promise(u=>setTimeout(()=>u(!1),r))];return Promise.race(c)}return{get $(){return Array.from(t)},add:o,drain:s}}const T1=60*1e3;function D1(e,t=ua()){const n=parseInt(`${e}`,10);if(!isNaN(n))return n*1e3;const i=Date.parse(`${e}`);return isNaN(i)?T1:i-t}function _1(e,t){return e[t]||e.all||0}function j1(e,t,n=ua()){return _1(e,t)>n}function P1(e,{statusCode:t,headers:n},i=ua()){const o={...e},s=n==null?void 0:n["x-sentry-rate-limits"],r=n==null?void 0:n["retry-after"];if(s)for(const a of s.trim().split(",")){const[c,u,,,d]=a.split(":",5),m=parseInt(c,10),f=(isNaN(m)?60:m)*1e3;if(!u)o.all=i+f;else for(const h of u.split(";"))h==="metric_bucket"?(!d||d.split(";").includes("custom"))&&(o[h]=i+f):o[h]=i+f}else r?o.all=i+D1(r,i):t===429&&(o.all=i+60*1e3);return o}const Ih=64;function C1(e,t,n=Lc(e.bufferSize||Ih)){let i={};const o=r=>n.drain(r);function s(r){const a=[];if(bd(r,(m,f)=>{const h=xd(f);j1(i,h)?e.recordDroppedEvent("ratelimit_backoff",h):a.push(m)}),a.length===0)return Promise.resolve({});const c=Do(r[0],a),u=m=>{bd(c,(f,h)=>{e.recordDroppedEvent(m,xd(h))})},d=()=>t({body:kh(c)}).then(m=>(m.statusCode!==void 0&&(m.statusCode<200||m.statusCode>=300)&&Pe&&he.warn(`Sentry responded with status code ${m.statusCode} to sent event.`),i=P1(i,m),m),m=>{throw u("network_error"),Pe&&he.error("Encountered error running transport request:",m),m});return n.add(d).then(m=>m,m=>{if(m===qc)return Pe&&he.error("Skipped sending event because buffer is full."),u("queue_overflow"),Promise.resolve({});throw m})}return{send:s,flush:o}}function A1(e,t,n){const i=[{type:"client_report"},{timestamp:Ds(),discarded_events:e}];return Do(t?{dsn:t}:{},[i])}function Vh(e){const t=[];e.message&&t.push(e.message);try{const n=e.exception.values[e.exception.values.length-1];n!=null&&n.value&&(t.push(n.value),n.type&&t.push(`${n.type}: ${n.value}`))}catch{}return t}function M1(e){var c;const{trace_id:t,parent_span_id:n,span_id:i,status:o,origin:s,data:r,op:a}=((c=e.contexts)==null?void 0:c.trace)??{};return{data:r??{},description:e.transaction,op:a,parent_span_id:n,span_id:i??"",start_timestamp:e.start_timestamp??0,status:o,timestamp:e.timestamp,trace_id:t??"",origin:s,profile_id:r==null?void 0:r[gh],exclusive_time:r==null?void 0:r[bh],measurements:e.measurements,is_segment:!0}}function I1(e){return{type:"transaction",timestamp:e.timestamp,start_timestamp:e.start_timestamp,transaction:e.description,contexts:{trace:{trace_id:e.trace_id,span_id:e.span_id,parent_span_id:e.parent_span_id,op:e.op,status:e.status,origin:e.origin,data:{...e.data,...e.profile_id&&{[gh]:e.profile_id},...e.exclusive_time&&{[bh]:e.exclusive_time}}}},measurements:e.measurements}}const _d="Not capturing exception because it's already been captured.",jd="Discarded session because of missing or non-string release",Uh=Symbol.for("SentryInternalError"),Rh=Symbol.for("SentryDoNotSendEventError"),V1=5e3;function or(e){return{message:e,[Uh]:!0}}function Ua(e){return{message:e,[Rh]:!0}}function Pd(e){return!!e&&typeof e=="object"&&Uh in e}function Cd(e){return!!e&&typeof e=="object"&&Rh in e}function Ad(e,t,n,i,o){let s=0,r,a=!1;e.on(n,()=>{s=0,clearTimeout(r),a=!1}),e.on(t,c=>{s+=i(c),s>=8e5?o(e):a||(a=!0,r=setTimeout(()=>{o(e)},V1))}),e.on("flush",()=>{o(e)})}class U1{constructor(t){var i,o,s;if(this._options=t,this._integrations={},this._numProcessing=0,this._outcomes={},this._hooks={},this._eventProcessors=[],this._promiseBuffer=Lc(((i=t.transportOptions)==null?void 0:i.bufferSize)??Ih),t.dsn?this._dsn=yv(t.dsn):Pe&&he.warn("No DSN provided, client will not send events."),this._dsn){const r=g1(this._dsn,t.tunnel,t._metadata?t._metadata.sdk:void 0);this._transport=t.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...t.transportOptions,url:r})}this._options.enableLogs=this._options.enableLogs??((o=this._options._experiments)==null?void 0:o.enableLogs),this._options.enableLogs&&Ad(this,"afterCaptureLog","flushLogs",B1,Ph),(this._options.enableMetrics??((s=this._options._experiments)==null?void 0:s.enableMetrics)??!0)&&Ad(this,"afterCaptureMetric","flushMetrics",L1,Ah)}captureException(t,n,i){const o=pn();if(od(t))return Pe&&he.log(_d),o;const s={event_id:o,...n};return this._process(()=>this.eventFromException(t,s).then(r=>this._captureEvent(r,s,i)).then(r=>r),"error"),s.event_id}captureMessage(t,n,i,o){const s={event_id:pn(),...i},r=Pc(t)?t:String(t),a=aa(t),c=a?this.eventFromMessage(r,n,s):this.eventFromException(t,s);return this._process(()=>c.then(u=>this._captureEvent(u,s,o)),a?"unknown":"error"),s.event_id}captureEvent(t,n,i){const o=pn();if(n!=null&&n.originalException&&od(n.originalException))return Pe&&he.log(_d),o;const s={event_id:o,...n},r=t.sdkProcessingMetadata||{},a=r.capturedSpanScope,c=r.capturedSpanIsolationScope,u=Md(t.type);return this._process(()=>this._captureEvent(t,s,a||i,c),u),s.event_id}captureSession(t){this.sendSession(t),po(t,{init:!1})}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}async flush(t){const n=this._transport;if(!n)return!0;this.emit("flush");const i=await this._isClientDoneProcessing(t),o=await n.flush(t);return i&&o}async close(t){const n=await this.flush(t);return this.getOptions().enabled=!1,this.emit("close"),n}getEventProcessors(){return this._eventProcessors}addEventProcessor(t){this._eventProcessors.push(t)}init(){(this._isEnabled()||this._options.integrations.some(({name:t})=>t.startsWith("Spotlight")))&&this._setupIntegrations()}getIntegrationByName(t){return this._integrations[t]}addIntegration(t){const n=this._integrations[t.name];jh(this,t,this._integrations),n||Dd(this,[t])}sendEvent(t,n={}){this.emit("beforeSendEvent",t,n);let i=$v(t,this._dsn,this._options._metadata,this._options.tunnel);for(const o of n.attachments||[])i=Bv(i,Fv(o));this.sendEnvelope(i).then(o=>this.emit("afterSendEvent",t,o))}sendSession(t){const{release:n,environment:i=Uc}=this._options;if("aggregates"in t){const s=t.attrs||{};if(!s.release&&!n){Pe&&he.warn(jd);return}s.release=s.release||n,s.environment=s.environment||i,t.attrs=s}else{if(!t.release&&!n){Pe&&he.warn(jd);return}t.release=t.release||n,t.environment=t.environment||i}this.emit("beforeSendSession",t);const o=Wv(t,this._dsn,this._options._metadata,this._options.tunnel);this.sendEnvelope(o)}recordDroppedEvent(t,n,i=1){if(this._options.sendClientReports){const o=`${t}:${n}`;Pe&&he.log(`Recording outcome: "${o}"${i>1?` (${i} times)`:""}`),this._outcomes[o]=(this._outcomes[o]||0)+i}}on(t,n){const i=this._hooks[t]=this._hooks[t]||new Set,o=(...s)=>n(...s);return i.add(o),()=>{i.delete(o)}}emit(t,...n){const i=this._hooks[t];i&&i.forEach(o=>o(...n))}async sendEnvelope(t){if(this.emit("beforeEnvelope",t),this._isEnabled()&&this._transport)try{return await this._transport.send(t)}catch(n){return Pe&&he.error("Error while sending envelope:",n),{}}return Pe&&he.error("Transport disabled"),{}}_setupIntegrations(){const{integrations:t}=this._options;this._integrations=N1(this,t),Dd(this,t)}_updateSessionFromEvent(t,n){var c,u;let i=n.level==="fatal",o=!1;const s=(c=n.exception)==null?void 0:c.values;if(s){o=!0,i=!1;for(const d of s)if(((u=d.mechanism)==null?void 0:u.handled)===!1){i=!0;break}}const r=t.status==="ok";(r&&t.errors===0||r&&i)&&(po(t,{...i&&{status:"crashed"},errors:t.errors||Number(o||i)}),this.captureSession(t))}async _isClientDoneProcessing(t){let n=0;for(;!t||n<t;){if(await new Promise(i=>setTimeout(i,1)),!this._numProcessing)return!0;n++}return!1}_isEnabled(){return this.getOptions().enabled!==!1&&this._transport!==void 0}_prepareEvent(t,n,i,o){const s=this.getOptions(),r=Object.keys(this._integrations);return!n.integrations&&(r!=null&&r.length)&&(n.integrations=r),this.emit("preprocessEvent",t,n),t.type||o.setLastEventId(t.event_id||n.event_id),i1(s,t,n,i,this,o).then(a=>{if(a===null)return a;this.emit("postprocessEvent",a,n),a.contexts={trace:Qw(i),...a.contexts};const c=Mv(this,i);return a.sdkProcessingMetadata={dynamicSamplingContext:c,...a.sdkProcessingMetadata},a})}_captureEvent(t,n={},i=fi(),o=qi()){return Pe&&Nl(t)&&he.log(`Captured error event \`${Vh(t)[0]||"<unknown>"}\``),this._processEvent(t,n,i,o).then(s=>s.event_id,s=>{Pe&&(Cd(s)?he.log(s.message):Pd(s)?he.warn(s.message):he.warn(s))})}_processEvent(t,n,i,o){const s=this.getOptions(),{sampleRate:r}=s,a=qh(t),c=Nl(t),d=`before send for type \`${t.type||"error"}\``,m=typeof r>"u"?void 0:wv(r);if(c&&typeof m=="number"&&vr()>m)return this.recordDroppedEvent("sample_rate","error"),Rc(Ua(`Discarding event because it's not included in the random sample (sampling rate = ${r})`));const f=Md(t.type);return this._prepareEvent(t,n,i,o).then(h=>{if(h===null)throw this.recordDroppedEvent("event_processor",f),Ua("An event processor returned `null`, will not send event.");if(n.data&&n.data.__sentry__===!0)return h;const b=q1(this,s,h,n);return R1(b,d)}).then(h=>{var x;if(h===null){if(this.recordDroppedEvent("before_send",f),a){const N=1+(t.spans||[]).length;this.recordDroppedEvent("before_send","span",N)}throw Ua(`${d} returned \`null\`, will not send event.`)}const g=i.getSession()||o.getSession();if(c&&g&&this._updateSessionFromEvent(g,h),a){const y=((x=h.sdkProcessingMetadata)==null?void 0:x.spanCountBeforeProcessing)||0,N=h.spans?h.spans.length:0,w=y-N;w>0&&this.recordDroppedEvent("before_send","span",w)}const b=h.transaction_info;if(a&&b&&h.transaction!==t.transaction){const y="custom";h.transaction_info={...b,source:y}}return this.sendEvent(h,n),h}).then(null,h=>{throw Cd(h)||Pd(h)?h:(this.captureException(h,{mechanism:{handled:!1,type:"internal"},data:{__sentry__:!0},originalException:h}),or(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.
9
+ Reason: ${h}`))})}_process(t,n){this._numProcessing++,this._promiseBuffer.add(t).then(i=>(this._numProcessing--,i),i=>(this._numProcessing--,i===qc&&this.recordDroppedEvent("queue_overflow",n),i))}_clearOutcomes(){const t=this._outcomes;return this._outcomes={},Object.entries(t).map(([n,i])=>{const[o,s]=n.split(":");return{reason:o,category:s,quantity:i}})}_flushOutcomes(){Pe&&he.log("Flushing outcomes...");const t=this._clearOutcomes();if(t.length===0){Pe&&he.log("No outcomes to send");return}if(!this._dsn){Pe&&he.log("No dsn provided, will not send outcomes");return}Pe&&he.log("Sending outcomes:",t);const n=A1(t,this._options.tunnel&&js(this._dsn));this.sendEnvelope(n)}}function Md(e){return e==="replay_event"?"replay":e||"error"}function R1(e,t){const n=`${t} must return \`null\` or a valid event.`;if(Ts(e))return e.then(i=>{if(!ms(i)&&i!==null)throw or(n);return i},i=>{throw or(`${t} rejected with ${i}`)});if(!ms(e)&&e!==null)throw or(n);return e}function q1(e,t,n,i){const{beforeSend:o,beforeSendTransaction:s,beforeSendSpan:r,ignoreSpans:a}=t;let c=n;if(Nl(c)&&o)return o(c,i);if(qh(c)){if(r||a){const u=M1(c);if(a!=null&&a.length&&gd(u,a))return null;if(r){const d=r(u);d?c=_s(n,I1(d)):fd()}if(c.spans){const d=[],m=c.spans;for(const h of m){if(a!=null&&a.length&&gd(h,a)){Pv(m,h);continue}if(r){const g=r(h);g?d.push(g):(fd(),d.push(h))}else d.push(h)}const f=c.spans.length-d.length;f&&e.recordDroppedEvent("before_send","span",f),c.spans=d}}if(s){if(c.spans){const u=c.spans.length;c.sdkProcessingMetadata={...n.sdkProcessingMetadata,spanCountBeforeProcessing:u}}return s(c,i)}}return c}function Nl(e){return e.type===void 0}function qh(e){return e.type==="transaction"}function L1(e){let t=0;return e.name&&(t+=e.name.length*2),t+=8,t+Lh(e.attributes)}function B1(e){let t=0;return e.message&&(t+=e.message.length*2),t+Lh(e.attributes)}function Lh(e){if(!e)return 0;let t=0;return Object.values(e).forEach(n=>{Array.isArray(n)?t+=n.length*Id(n[0]):aa(n)?t+=Id(n):t+=100}),t}function Id(e){return typeof e=="string"?e.length*2:typeof e=="number"?8:typeof e=="boolean"?4:0}function O1(e,t){t.debug===!0&&(Pe?he.enable():So(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),fi().update(t.initialScope);const i=new e(t);return F1(i),i.init(),i}function F1(e){fi().setClient(e)}function Ra(e){if(!e)return{};const t=e.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!t)return{};const n=t[6]||"",i=t[8]||"";return{host:t[4],path:t[5],protocol:t[2],search:n,hash:i,relative:t[5]+n+i}}function H1(e){var t;"aggregates"in e?((t=e.attrs)==null?void 0:t.ip_address)===void 0&&(e.attrs={...e.attrs,ip_address:"{{auto}}"}):e.ipAddress===void 0&&(e.ipAddress="{{auto}}")}function Bh(e,t,n=[t],i="npm"){const o=e._metadata||{};o.sdk||(o.sdk={name:`sentry.javascript.${t}`,packages:n.map(s=>({name:`${i}:@sentry/${s}`,version:Si})),version:Si}),e._metadata=o}const z1=100;function Mi(e,t){const n=Wt(),i=qi();if(!n)return;const{beforeBreadcrumb:o=null,maxBreadcrumbs:s=z1}=n.getOptions();if(s<=0)return;const a={timestamp:Ds(),...e},c=o?So(()=>o(a,t)):a;c!==null&&(n.emit&&n.emit("beforeAddBreadcrumb",c,t),i.addBreadcrumb(c,s))}let Vd;const G1="FunctionToString",Ud=new WeakMap,W1=(()=>({name:G1,setupOnce(){Vd=Function.prototype.toString;try{Function.prototype.toString=function(...e){const t=Mc(this),n=Ud.has(Wt())&&t!==void 0?t:this;return Vd.apply(n,e)}}catch{}},setup(e){Ud.set(e,!0)}})),$1=W1,X1=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/,/^Can't find variable: gmo$/,/^undefined is not an object \(evaluating 'a\.[A-Z]'\)$/,`can't redefine non-configurable property "solana"`,"vv().getRestrictions is not a function. (In 'vv().getRestrictions(1,a)', 'vv().getRestrictions' is undefined)","Can't find variable: _AutofillCallbackHandler",/^Non-Error promise rejection captured with value: Object Not Found Matching Id:\d+, MethodName:simulateEvent, ParamCount:\d+$/,/^Java exception was raised during method invocation$/],K1="EventFilters",Y1=(e={})=>{let t;return{name:K1,setup(n){const i=n.getOptions();t=Rd(e,i)},processEvent(n,i,o){if(!t){const s=o.getOptions();t=Rd(e,s)}return Q1(n,t)?null:n}}},Z1=((e={})=>({...Y1(e),name:"InboundFilters"}));function Rd(e={},t={}){return{allowUrls:[...e.allowUrls||[],...t.allowUrls||[]],denyUrls:[...e.denyUrls||[],...t.denyUrls||[]],ignoreErrors:[...e.ignoreErrors||[],...t.ignoreErrors||[],...e.disableErrorDefaults?[]:X1],ignoreTransactions:[...e.ignoreTransactions||[],...t.ignoreTransactions||[]]}}function Q1(e,t){if(e.type){if(e.type==="transaction"&&eE(e,t.ignoreTransactions))return Pe&&he.warn(`Event dropped due to being matched by \`ignoreTransactions\` option.
10
+ Event: ${yi(e)}`),!0}else{if(J1(e,t.ignoreErrors))return Pe&&he.warn(`Event dropped due to being matched by \`ignoreErrors\` option.
11
+ Event: ${yi(e)}`),!0;if(oE(e))return Pe&&he.warn(`Event dropped due to not having an error message, error type or stacktrace.
12
+ Event: ${yi(e)}`),!0;if(tE(e,t.denyUrls))return Pe&&he.warn(`Event dropped due to being matched by \`denyUrls\` option.
13
+ Event: ${yi(e)}.
14
+ Url: ${Er(e)}`),!0;if(!nE(e,t.allowUrls))return Pe&&he.warn(`Event dropped due to not being matched by \`allowUrls\` option.
15
+ Event: ${yi(e)}.
16
+ Url: ${Er(e)}`),!0}return!1}function J1(e,t){return t!=null&&t.length?Vh(e).some(n=>da(n,t)):!1}function eE(e,t){if(!(t!=null&&t.length))return!1;const n=e.transaction;return n?da(n,t):!1}function tE(e,t){if(!(t!=null&&t.length))return!1;const n=Er(e);return n?da(n,t):!1}function nE(e,t){if(!(t!=null&&t.length))return!0;const n=Er(e);return n?da(n,t):!0}function iE(e=[]){for(let t=e.length-1;t>=0;t--){const n=e[t];if(n&&n.filename!=="<anonymous>"&&n.filename!=="[native code]")return n.filename||null}return null}function Er(e){var t,n;try{const i=[...((t=e.exception)==null?void 0:t.values)??[]].reverse().find(s=>{var r,a,c;return((r=s.mechanism)==null?void 0:r.parent_id)===void 0&&((c=(a=s.stacktrace)==null?void 0:a.frames)==null?void 0:c.length)}),o=(n=i==null?void 0:i.stacktrace)==null?void 0:n.frames;return o?iE(o):null}catch{return Pe&&he.error(`Cannot extract url for event ${yi(e)}`),null}}function oE(e){var t,n;return(n=(t=e.exception)==null?void 0:t.values)!=null&&n.length?!e.message&&!e.exception.values.some(i=>i.stacktrace||i.type&&i.type!=="Error"||i.value):!1}function sE(e,t,n,i,o,s){var a;if(!((a=o.exception)!=null&&a.values)||!s||!ui(s.originalException,Error))return;const r=o.exception.values.length>0?o.exception.values[o.exception.values.length-1]:void 0;r&&(o.exception.values=yl(e,t,i,s.originalException,n,o.exception.values,r,0))}function yl(e,t,n,i,o,s,r,a){if(s.length>=n+1)return s;let c=[...s];if(ui(i[o],Error)){qd(r,a);const u=e(t,i[o]),d=c.length;Ld(u,o,d,a),c=yl(e,t,n,i[o],o,[u,...c],u,d)}return Array.isArray(i.errors)&&i.errors.forEach((u,d)=>{if(ui(u,Error)){qd(r,a);const m=e(t,u),f=c.length;Ld(m,`errors[${d}]`,f,a),c=yl(e,t,n,u,o,[m,...c],m,f)}}),c}function qd(e,t){e.mechanism={handled:!0,type:"auto.core.linked_errors",...e.mechanism,...e.type==="AggregateError"&&{is_exception_group:!0},exception_id:t}}function Ld(e,t,n,i){e.mechanism={handled:!0,...e.mechanism,type:"chained",source:t,exception_id:n,parent_id:i}}function rE(e){const t="console";Ui(t,e),Ri(t,aE)}function aE(){"console"in Ke&&hw.forEach(function(e){e in Ke.console&&Jt(Ke.console,e,function(t){return wr[e]=t,function(...n){Nn("console",{args:n,level:e});const o=wr[e];o==null||o.apply(Ke.console,n)}})})}function lE(e){return e==="warn"?"warning":["fatal","error","warning","log","info","debug"].includes(e)?e:"log"}const cE="Dedupe",uE=(()=>{let e;return{name:cE,processEvent(t){if(t.type)return t;try{if(mE(t,e))return Pe&&he.warn("Event dropped due to being a duplicate of previously captured event."),null}catch{}return e=t}}}),dE=uE;function mE(e,t){return t?!!(pE(e,t)||fE(e,t)):!1}function pE(e,t){const n=e.message,i=t.message;return!(!n&&!i||n&&!i||!n&&i||n!==i||!Fh(e,t)||!Oh(e,t))}function fE(e,t){const n=Bd(t),i=Bd(e);return!(!n||!i||n.type!==i.type||n.value!==i.value||!Fh(e,t)||!Oh(e,t))}function Oh(e,t){let n=Qu(e),i=Qu(t);if(!n&&!i)return!0;if(n&&!i||!n&&i||(n=n,i=i,i.length!==n.length))return!1;for(let o=0;o<i.length;o++){const s=i[o],r=n[o];if(s.filename!==r.filename||s.lineno!==r.lineno||s.colno!==r.colno||s.function!==r.function)return!1}return!0}function Fh(e,t){let n=e.fingerprint,i=t.fingerprint;if(!n&&!i)return!0;if(n&&!i||!n&&i)return!1;n=n,i=i;try{return n.join("")===i.join("")}catch{return!1}}function Bd(e){var t,n;return(n=(t=e.exception)==null?void 0:t.values)==null?void 0:n[0]}function Hh(e){if(e!==void 0)return e>=400&&e<500?"warning":e>=500?"error":void 0}const fs=Ke;function hE(){return"history"in fs&&!!fs.history}function gE(){if(!("fetch"in fs))return!1;try{return new Headers,new Request("data:,"),new Response,!0}catch{return!1}}function wl(e){return e&&/^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(e.toString())}function bE(){var n;if(typeof EdgeRuntime=="string")return!0;if(!gE())return!1;if(wl(fs.fetch))return!0;let e=!1;const t=fs.document;if(t&&typeof t.createElement=="function")try{const i=t.createElement("iframe");i.hidden=!0,t.head.appendChild(i),(n=i.contentWindow)!=null&&n.fetch&&(e=wl(i.contentWindow.fetch)),t.head.removeChild(i)}catch(i){Pe&&he.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",i)}return e}function xE(e,t){const n="fetch";Ui(n,e),Ri(n,()=>NE(void 0,t))}function NE(e,t=!1){t&&!bE()||Jt(Ke,"fetch",function(n){return function(...i){const o=new Error,{method:s,url:r}=yE(i),a={args:i,fetchData:{method:s,url:r},startTimestamp:Fn()*1e3,virtualError:o,headers:wE(i)};return Nn("fetch",{...a}),n.apply(Ke,i).then(async c=>(Nn("fetch",{...a,endTimestamp:Fn()*1e3,response:c}),c),c=>{if(Nn("fetch",{...a,endTimestamp:Fn()*1e3,error:c}),jc(c)&&c.stack===void 0&&(c.stack=o.stack,Ai(c,"framesToPop",1)),c instanceof TypeError&&(c.message==="Failed to fetch"||c.message==="Load failed"||c.message==="NetworkError when attempting to fetch resource."))try{const u=new URL(a.fetchData.url);c.message=`${c.message} (${u.host})`}catch{}throw c})}})}function sr(e,t){return!!e&&typeof e=="object"&&!!e[t]}function Od(e){return typeof e=="string"?e:e?sr(e,"url")?e.url:e.toString?e.toString():"":""}function yE(e){if(e.length===0)return{method:"GET",url:""};if(e.length===2){const[n,i]=e;return{url:Od(n),method:sr(i,"method")?String(i.method).toUpperCase():ch(n)&&sr(n,"method")?String(n.method).toUpperCase():"GET"}}const t=e[0];return{url:Od(t),method:sr(t,"method")?String(t.method).toUpperCase():"GET"}}function wE(e){const[t,n]=e;try{if(typeof n=="object"&&n!==null&&"headers"in n&&n.headers)return new Headers(n.headers);if(ch(t))return new Headers(t.headers)}catch{}}function vE(){return"npm"}const kt=Ke;let vl=0;function zh(){return vl>0}function EE(){vl++,setTimeout(()=>{vl--})}function ho(e,t={}){function n(o){return typeof o=="function"}if(!n(e))return e;try{const o=e.__sentry_wrapped__;if(o)return typeof o=="function"?o:e;if(Mc(e))return e}catch{return e}const i=function(...o){try{const s=o.map(r=>ho(r,t));return e.apply(this,s)}catch(s){throw EE(),Zw(r=>{r.addEventProcessor(a=>(t.mechanism&&(fl(a,void 0),mo(a,t.mechanism)),a.extra={...a.extra,arguments:o},a)),u1(s)}),s}};try{for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(i[o]=e[o])}catch{}dh(i,e),Ai(e,"__sentry_wrapped__",i);try{Object.getOwnPropertyDescriptor(i,"name").configurable&&Object.defineProperty(i,"name",{get(){return e.name}})}catch{}return i}function kE(){const e=Ac(),{referrer:t}=kt.document||{},{userAgent:n}=kt.navigator||{},i={...t&&{Referer:t},...n&&{"User-Agent":n}};return{url:e,headers:i}}function Bc(e,t){const n=Oc(e,t),i={type:jE(t),value:PE(t)};return n.length&&(i.stacktrace={frames:n}),i.type===void 0&&i.value===""&&(i.value="Unrecoverable error caught"),i}function SE(e,t,n,i){const o=Wt(),s=o==null?void 0:o.getOptions().normalizeDepth,r=VE(t),a={__serialized__:Eh(t,s)};if(r)return{exception:{values:[Bc(e,r)]},extra:a};const c={exception:{values:[{type:la(t)?t.constructor.name:i?"UnhandledRejection":"Error",value:ME(t,{isUnhandledRejection:i})}]},extra:a};if(n){const u=Oc(e,n);u.length&&(c.exception.values[0].stacktrace={frames:u})}return c}function qa(e,t){return{exception:{values:[Bc(e,t)]}}}function Oc(e,t){const n=t.stacktrace||t.stack||"",i=DE(t),o=_E(t);try{return e(n,i,o)}catch{}return[]}const TE=/Minified React error #\d+;/i;function DE(e){return e&&TE.test(e.message)?1:0}function _E(e){return typeof e.framesToPop=="number"?e.framesToPop:0}function Gh(e){return typeof WebAssembly<"u"&&typeof WebAssembly.Exception<"u"?e instanceof WebAssembly.Exception:!1}function jE(e){const t=e==null?void 0:e.name;return!t&&Gh(e)?e.message&&Array.isArray(e.message)&&e.message.length==2?e.message[0]:"WebAssembly.Exception":t}function PE(e){const t=e==null?void 0:e.message;return Gh(e)?Array.isArray(e.message)&&e.message.length==2?e.message[1]:"wasm exception":t?t.error&&typeof t.error.message=="string"?t.error.message:t:"No error message"}function CE(e,t,n,i){const o=(n==null?void 0:n.syntheticException)||void 0,s=Fc(e,t,o,i);return mo(s),s.level="error",n!=null&&n.event_id&&(s.event_id=n.event_id),ma(s)}function AE(e,t,n="info",i,o){const s=(i==null?void 0:i.syntheticException)||void 0,r=El(e,t,s,o);return r.level=n,i!=null&&i.event_id&&(r.event_id=i.event_id),ma(r)}function Fc(e,t,n,i,o){let s;if(ah(t)&&t.error)return qa(e,t.error);if(ed(t)||_w(t)){const r=t;if("stack"in t)s=qa(e,t);else{const a=r.name||(ed(r)?"DOMError":"DOMException"),c=r.message?`${a}: ${r.message}`:a;s=El(e,c,n,i),fl(s,c)}return"code"in r&&(s.tags={...s.tags,"DOMException.code":`${r.code}`}),s}return jc(t)?qa(e,t):ms(t)||la(t)?(s=SE(e,t,n,o),mo(s,{synthetic:!0}),s):(s=El(e,t,n,i),fl(s,`${t}`),mo(s,{synthetic:!0}),s)}function El(e,t,n,i){const o={};if(i&&n){const s=Oc(e,n);s.length&&(o.exception={values:[{value:t,stacktrace:{frames:s}}]}),mo(o,{synthetic:!0})}if(Pc(t)){const{__sentry_template_string__:s,__sentry_template_values__:r}=t;return o.logentry={message:s,params:r},o}return o.message=t,o}function ME(e,{isUnhandledRejection:t}){const n=Vw(e),i=t?"promise rejection":"exception";return ah(e)?`Event \`ErrorEvent\` captured as ${i} with message \`${e.message}\``:la(e)?`Event \`${IE(e)}\` (type=${e.type}) captured as ${i}`:`Object captured as ${i} with keys: ${n}`}function IE(e){try{const t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch{}}function VE(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)){const n=e[t];if(n instanceof Error)return n}}class UE extends U1{constructor(t){var d;const n=RE(t),i=kt.SENTRY_SDK_SOURCE||vE();Bh(n,"browser",["browser"],i),(d=n._metadata)!=null&&d.sdk&&(n._metadata.sdk.settings={infer_ip:n.sendDefaultPii?"auto":"never",...n._metadata.sdk.settings}),super(n);const{sendDefaultPii:o,sendClientReports:s,enableLogs:r,_experiments:a,enableMetrics:c}=this._options,u=c??(a==null?void 0:a.enableMetrics)??!0;kt.document&&(s||r||u)&&kt.document.addEventListener("visibilitychange",()=>{kt.document.visibilityState==="hidden"&&(s&&this._flushOutcomes(),r&&Ph(this),u&&Ah(this))}),o&&this.on("beforeSendSession",H1)}eventFromException(t,n){return CE(this._options.stackParser,t,n,this._options.attachStacktrace)}eventFromMessage(t,n="info",i){return AE(this._options.stackParser,t,n,i,this._options.attachStacktrace)}_prepareEvent(t,n,i,o){return t.platform=t.platform||"javascript",super._prepareEvent(t,n,i,o)}}function RE(e){var t;return{release:typeof __SENTRY_RELEASE__=="string"?__SENTRY_RELEASE__:(t=kt.SENTRY_RELEASE)==null?void 0:t.id,sendClientReports:!0,parentSpanIsAlwaysRootSpan:!0,...e}}const qE=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,zt=Ke,LE=1e3;let Fd,kl,Sl;function BE(e){Ui("dom",e),Ri("dom",OE)}function OE(){if(!zt.document)return;const e=Nn.bind(null,"dom"),t=Hd(e,!0);zt.document.addEventListener("click",t,!1),zt.document.addEventListener("keypress",t,!1),["EventTarget","Node"].forEach(n=>{var s,r;const o=(s=zt[n])==null?void 0:s.prototype;(r=o==null?void 0:o.hasOwnProperty)!=null&&r.call(o,"addEventListener")&&(Jt(o,"addEventListener",function(a){return function(c,u,d){if(c==="click"||c=="keypress")try{const m=this.__sentry_instrumentation_handlers__=this.__sentry_instrumentation_handlers__||{},f=m[c]=m[c]||{refCount:0};if(!f.handler){const h=Hd(e);f.handler=h,a.call(this,c,h,d)}f.refCount++}catch{}return a.call(this,c,u,d)}}),Jt(o,"removeEventListener",function(a){return function(c,u,d){if(c==="click"||c=="keypress")try{const m=this.__sentry_instrumentation_handlers__||{},f=m[c];f&&(f.refCount--,f.refCount<=0&&(a.call(this,c,f.handler,d),f.handler=void 0,delete m[c]),Object.keys(m).length===0&&delete this.__sentry_instrumentation_handlers__)}catch{}return a.call(this,c,u,d)}}))})}function FE(e){if(e.type!==kl)return!1;try{if(!e.target||e.target._sentryId!==Sl)return!1}catch{}return!0}function HE(e,t){return e!=="keypress"?!1:t!=null&&t.tagName?!(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable):!0}function Hd(e,t=!1){return n=>{if(!n||n._sentryCaptured)return;const i=zE(n);if(HE(n.type,i))return;Ai(n,"_sentryCaptured",!0),i&&!i._sentryId&&Ai(i,"_sentryId",pn());const o=n.type==="keypress"?"input":n.type;FE(n)||(e({event:n,name:o,global:t}),kl=n.type,Sl=i?i._sentryId:void 0),clearTimeout(Fd),Fd=zt.setTimeout(()=>{Sl=void 0,kl=void 0},LE)}}function zE(e){try{return e.target}catch{return null}}let Ls;function Wh(e){const t="history";Ui(t,e),Ri(t,GE)}function GE(){if(zt.addEventListener("popstate",()=>{const t=zt.location.href,n=Ls;if(Ls=t,n===t)return;Nn("history",{from:n,to:t})}),!hE())return;function e(t){return function(...n){const i=n.length>2?n[2]:void 0;if(i){const o=Ls,s=WE(String(i));if(Ls=s,o===s)return t.apply(this,n);Nn("history",{from:o,to:s})}return t.apply(this,n)}}Jt(zt.history,"pushState",e),Jt(zt.history,"replaceState",e)}function WE(e){try{return new URL(e,zt.location.origin).toString()}catch{return e}}const rr={};function $h(e){const t=rr[e];if(t)return t;let n=zt[e];if(wl(n))return rr[e]=n.bind(zt);const i=zt.document;if(i&&typeof i.createElement=="function")try{const o=i.createElement("iframe");o.hidden=!0,i.head.appendChild(o);const s=o.contentWindow;s!=null&&s[e]&&(n=s[e]),i.head.removeChild(o)}catch(o){qE&&he.warn(`Could not create sandbox iframe for ${e} check, bailing to window.${e}: `,o)}return n&&(rr[e]=n.bind(zt))}function $E(e){rr[e]=void 0}const Ho="__sentry_xhr_v3__";function XE(e){Ui("xhr",e),Ri("xhr",KE)}function KE(){if(!zt.XMLHttpRequest)return;const e=XMLHttpRequest.prototype;e.open=new Proxy(e.open,{apply(t,n,i){const o=new Error,s=Fn()*1e3,r=On(i[0])?i[0].toUpperCase():void 0,a=YE(i[1]);if(!r||!a)return t.apply(n,i);n[Ho]={method:r,url:a,request_headers:{}},r==="POST"&&a.match(/sentry_key/)&&(n.__sentry_own_request__=!0);const c=()=>{const u=n[Ho];if(u&&n.readyState===4){try{u.status_code=n.status}catch{}const d={endTimestamp:Fn()*1e3,startTimestamp:s,xhr:n,virtualError:o};Nn("xhr",d)}};return"onreadystatechange"in n&&typeof n.onreadystatechange=="function"?n.onreadystatechange=new Proxy(n.onreadystatechange,{apply(u,d,m){return c(),u.apply(d,m)}}):n.addEventListener("readystatechange",c),n.setRequestHeader=new Proxy(n.setRequestHeader,{apply(u,d,m){const[f,h]=m,g=d[Ho];return g&&On(f)&&On(h)&&(g.request_headers[f.toLowerCase()]=h),u.apply(d,m)}}),t.apply(n,i)}}),e.send=new Proxy(e.send,{apply(t,n,i){const o=n[Ho];if(!o)return t.apply(n,i);i[0]!==void 0&&(o.body=i[0]);const s={startTimestamp:Fn()*1e3,xhr:n};return Nn("xhr",s),t.apply(n,i)}})}function YE(e){if(On(e))return e;try{return e.toString()}catch{}}const ZE=40;function QE(e,t=$h("fetch")){let n=0,i=0;async function o(s){const r=s.body.length;n+=r,i++;const a={body:s.body,method:"POST",referrerPolicy:"strict-origin",headers:e.headers,keepalive:n<=6e4&&i<15,...e.fetchOptions};try{const c=await t(e.url,a);return{statusCode:c.status,headers:{"x-sentry-rate-limits":c.headers.get("X-Sentry-Rate-Limits"),"retry-after":c.headers.get("Retry-After")}}}catch(c){throw $E("fetch"),c}finally{n-=r,i--}}return C1(e,o,Lc(e.bufferSize||ZE))}const Ps=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,JE=30,ek=50;function Tl(e,t,n,i){const o={filename:e,function:t==="<anonymous>"?Ci:t,in_app:!0};return n!==void 0&&(o.lineno=n),i!==void 0&&(o.colno=i),o}const tk=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,nk=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,ik=/\((\S*)(?::(\d+))(?::(\d+))\)/,ok=/at (.+?) ?\(data:(.+?),/,sk=e=>{const t=e.match(ok);if(t)return{filename:`<data:${t[2]}>`,function:t[1]};const n=tk.exec(e);if(n){const[,o,s,r]=n;return Tl(o,Ci,+s,+r)}const i=nk.exec(e);if(i){if(i[2]&&i[2].indexOf("eval")===0){const a=ik.exec(i[2]);a&&(i[2]=a[1],i[3]=a[2],i[4]=a[3])}const[s,r]=Xh(i[1]||Ci,i[2]);return Tl(r,s,i[3]?+i[3]:void 0,i[4]?+i[4]:void 0)}},rk=[JE,sk],ak=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,lk=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,ck=e=>{const t=ak.exec(e);if(t){if(t[3]&&t[3].indexOf(" > eval")>-1){const s=lk.exec(t[3]);s&&(t[1]=t[1]||"eval",t[3]=s[1],t[4]=s[2],t[5]="")}let i=t[3],o=t[1]||Ci;return[o,i]=Xh(o,i),Tl(i,o,t[4]?+t[4]:void 0,t[5]?+t[5]:void 0)}},uk=[ek,ck],dk=[rk,uk],mk=oh(...dk),Xh=(e,t)=>{const n=e.indexOf("safari-extension")!==-1,i=e.indexOf("safari-web-extension")!==-1;return n||i?[e.indexOf("@")!==-1?e.split("@")[0]:Ci,n?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]},Bs=1024,pk="Breadcrumbs",fk=((e={})=>{const t={console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0,...e};return{name:pk,setup(n){t.console&&rE(xk(n)),t.dom&&BE(bk(n,t.dom)),t.xhr&&XE(Nk(n)),t.fetch&&xE(yk(n)),t.history&&Wh(wk(n)),t.sentry&&n.on("beforeSendEvent",gk(n))}}}),hk=fk;function gk(e){return function(n){Wt()===e&&Mi({category:`sentry.${n.type==="transaction"?"transaction":"event"}`,event_id:n.event_id,level:n.level,message:yi(n)},{event:n})}}function bk(e,t){return function(i){if(Wt()!==e)return;let o,s,r=typeof t=="object"?t.serializeAttribute:void 0,a=typeof t=="object"&&typeof t.maxStringLength=="number"?t.maxStringLength:void 0;a&&a>Bs&&(Ps&&he.warn(`\`dom.maxStringLength\` cannot exceed ${Bs}, but a value of ${a} was configured. Sentry will use ${Bs} instead.`),a=Bs),typeof r=="string"&&(r=[r]);try{const u=i.event,d=vk(u)?u.target:u;o=uh(d,{keyAttrs:r,maxStringLength:a}),s=Iw(d)}catch{o="<unknown>"}if(o.length===0)return;const c={category:`ui.${i.name}`,message:o};s&&(c.data={"ui.component_name":s}),Mi(c,{event:i.event,name:i.name,global:i.global})}}function xk(e){return function(n){if(Wt()!==e)return;const i={category:"console",data:{arguments:n.args,logger:"console"},level:lE(n.level),message:id(n.args," ")};if(n.level==="assert")if(n.args[0]===!1)i.message=`Assertion failed: ${id(n.args.slice(1)," ")||"console.assert"}`,i.data.arguments=n.args.slice(1);else return;Mi(i,{input:n.args,level:n.level})}}function Nk(e){return function(n){if(Wt()!==e)return;const{startTimestamp:i,endTimestamp:o}=n,s=n.xhr[Ho];if(!i||!o||!s)return;const{method:r,url:a,status_code:c,body:u}=s,d={method:r,url:a,status_code:c},m={xhr:n.xhr,input:u,startTimestamp:i,endTimestamp:o},f={category:"xhr",data:d,type:"http",level:Hh(c)};e.emit("beforeOutgoingRequestBreadcrumb",f,m),Mi(f,m)}}function yk(e){return function(n){if(Wt()!==e)return;const{startTimestamp:i,endTimestamp:o}=n;if(o&&!(n.fetchData.url.match(/sentry_key/)&&n.fetchData.method==="POST"))if(n.fetchData.method,n.fetchData.url,n.error){const s=n.fetchData,r={data:n.error,input:n.args,startTimestamp:i,endTimestamp:o},a={category:"fetch",data:s,level:"error",type:"http"};e.emit("beforeOutgoingRequestBreadcrumb",a,r),Mi(a,r)}else{const s=n.response,r={...n.fetchData,status_code:s==null?void 0:s.status};n.fetchData.request_body_size,n.fetchData.response_body_size,s==null||s.status;const a={input:n.args,response:s,startTimestamp:i,endTimestamp:o},c={category:"fetch",data:r,type:"http",level:Hh(r.status_code)};e.emit("beforeOutgoingRequestBreadcrumb",c,a),Mi(c,a)}}}function wk(e){return function(n){if(Wt()!==e)return;let i=n.from,o=n.to;const s=Ra(kt.location.href);let r=i?Ra(i):void 0;const a=Ra(o);r!=null&&r.path||(r=s),s.protocol===a.protocol&&s.host===a.host&&(o=a.relative),s.protocol===r.protocol&&s.host===r.host&&(i=r.relative),Mi({category:"navigation",data:{from:i,to:o}})}}function vk(e){return!!e&&!!e.target}const Ek=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","BroadcastChannel","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","SharedWorker","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"],kk="BrowserApiErrors",Sk=((e={})=>{const t={XMLHttpRequest:!0,eventTarget:!0,requestAnimationFrame:!0,setInterval:!0,setTimeout:!0,unregisterOriginalCallbacks:!1,...e};return{name:kk,setupOnce(){t.setTimeout&&Jt(kt,"setTimeout",zd),t.setInterval&&Jt(kt,"setInterval",zd),t.requestAnimationFrame&&Jt(kt,"requestAnimationFrame",Dk),t.XMLHttpRequest&&"XMLHttpRequest"in kt&&Jt(XMLHttpRequest.prototype,"send",_k);const n=t.eventTarget;n&&(Array.isArray(n)?n:Ek).forEach(o=>jk(o,t))}}}),Tk=Sk;function zd(e){return function(...t){const n=t[0];return t[0]=ho(n,{mechanism:{handled:!1,type:`auto.browser.browserapierrors.${ci(e)}`}}),e.apply(this,t)}}function Dk(e){return function(t){return e.apply(this,[ho(t,{mechanism:{data:{handler:ci(e)},handled:!1,type:"auto.browser.browserapierrors.requestAnimationFrame"}})])}}function _k(e){return function(...t){const n=this;return["onload","onerror","onprogress","onreadystatechange"].forEach(o=>{o in n&&typeof n[o]=="function"&&Jt(n,o,function(s){const r={mechanism:{data:{handler:ci(s)},handled:!1,type:`auto.browser.browserapierrors.xhr.${o}`}},a=Mc(s);return a&&(r.mechanism.data.handler=ci(a)),ho(s,r)})}),e.apply(this,t)}}function jk(e,t){var o,s;const i=(o=kt[e])==null?void 0:o.prototype;(s=i==null?void 0:i.hasOwnProperty)!=null&&s.call(i,"addEventListener")&&(Jt(i,"addEventListener",function(r){return function(a,c,u){try{Pk(c)&&(c.handleEvent=ho(c.handleEvent,{mechanism:{data:{handler:ci(c),target:e},handled:!1,type:"auto.browser.browserapierrors.handleEvent"}}))}catch{}return t.unregisterOriginalCallbacks&&Ck(this,a,c),r.apply(this,[a,ho(c,{mechanism:{data:{handler:ci(c),target:e},handled:!1,type:"auto.browser.browserapierrors.addEventListener"}}),u])}}),Jt(i,"removeEventListener",function(r){return function(a,c,u){try{const d=c.__sentry_wrapped__;d&&r.call(this,a,d,u)}catch{}return r.call(this,a,c,u)}}))}function Pk(e){return typeof e.handleEvent=="function"}function Ck(e,t,n){e&&typeof e=="object"&&"removeEventListener"in e&&typeof e.removeEventListener=="function"&&e.removeEventListener(t,n)}const Ak=()=>({name:"BrowserSession",setupOnce(){if(typeof kt.document>"u"){Ps&&he.warn("Using the `browserSessionIntegration` in non-browser environments is not supported.");return}kd({ignoreDuration:!0}),Sd(),Wh(({from:e,to:t})=>{e!==void 0&&e!==t&&(kd({ignoreDuration:!0}),Sd())})}}),Mk="GlobalHandlers",Ik=((e={})=>{const t={onerror:!0,onunhandledrejection:!0,...e};return{name:Mk,setupOnce(){Error.stackTraceLimit=50},setup(n){t.onerror&&(Uk(n),Gd("onerror")),t.onunhandledrejection&&(Rk(n),Gd("onunhandledrejection"))}}}),Vk=Ik;function Uk(e){kw(t=>{const{stackParser:n,attachStacktrace:i}=Kh();if(Wt()!==e||zh())return;const{msg:o,url:s,line:r,column:a,error:c}=t,u=Bk(Fc(n,c||o,void 0,i,!1),s,r,a);u.level="error",Th(u,{originalException:c,mechanism:{handled:!1,type:"auto.browser.global_handlers.onerror"}})})}function Rk(e){Tw(t=>{const{stackParser:n,attachStacktrace:i}=Kh();if(Wt()!==e||zh())return;const o=qk(t),s=aa(o)?Lk(o):Fc(n,o,void 0,i,!0);s.level="error",Th(s,{originalException:o,mechanism:{handled:!1,type:"auto.browser.global_handlers.onunhandledrejection"}})})}function qk(e){if(aa(e))return e;try{if("reason"in e)return e.reason;if("detail"in e&&"reason"in e.detail)return e.detail.reason}catch{}return e}function Lk(e){return{exception:{values:[{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(e)}`}]}}}function Bk(e,t,n,i){const o=e.exception=e.exception||{},s=o.values=o.values||[],r=s[0]=s[0]||{},a=r.stacktrace=r.stacktrace||{},c=a.frames=a.frames||[],u=i,d=n,m=Ok(t)??Ac();return c.length===0&&c.push({colno:u,filename:m,function:Ci,in_app:!0,lineno:d}),e}function Gd(e){Ps&&he.log(`Global Handler attached: ${e}`)}function Kh(){const e=Wt();return(e==null?void 0:e.getOptions())||{stackParser:()=>[],attachStacktrace:!1}}function Ok(e){if(!(!On(e)||e.length===0)){if(e.startsWith("data:")){const t=e.match(/^data:([^;]+)/),n=t?t[1]:"text/javascript",i=e.includes("base64,");return`<data:${n}${i?",base64":""}>`}return e}}const Fk=()=>({name:"HttpContext",preprocessEvent(e){var i;if(!kt.navigator&&!kt.location&&!kt.document)return;const t=kE(),n={...t.headers,...(i=e.request)==null?void 0:i.headers};e.request={...t,...e.request,headers:n}}}),Hk="cause",zk=5,Gk="LinkedErrors",Wk=((e={})=>{const t=e.limit||zk,n=e.key||Hk;return{name:Gk,preprocessEvent(i,o,s){const r=s.getOptions();sE(Bc,r.stackParser,n,t,i,o)}}}),$k=Wk,Xk="SpotlightBrowser",Kk=((e={})=>{const t=e.sidecarUrl||"http://localhost:8969/stream";return{name:Xk,setup:()=>{Ps&&he.log("Using Sidecar URL",t)},processEvent:n=>Qk(n)?null:n,afterAllSetup:n=>{Yk(n,t)}}});function Yk(e,t){const n=$h("fetch");let i=0;e.on("beforeEnvelope",o=>{if(i>3){he.warn("[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests:",i);return}n(t,{method:"POST",body:kh(o),headers:{"Content-Type":"application/x-sentry-envelope"},mode:"cors"}).then(s=>{s.status>=200&&s.status<400&&(i=0)},s=>{i++,he.error("Sentry SDK can't connect to Sidecar is it running? See: https://spotlightjs.com/sidecar/npx/",s)})})}const Zk=Kk;function Qk(e){var t;return!!(e.type==="transaction"&&e.spans&&((t=e.contexts)!=null&&t.trace)&&e.contexts.trace.op==="ui.action.click"&&e.spans.some(({description:n})=>n==null?void 0:n.includes("#sentry-spotlight")))}function Jk(){return eS()?(Ps&&So(()=>{console.error("[Sentry] You cannot use Sentry.init() in a browser extension, see: https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/")}),!0):!1}function eS(){var s;if(typeof kt.window>"u")return!1;const e=kt;if(e.nw)return!1;const t=e.chrome||e.browser;if(!((s=t==null?void 0:t.runtime)!=null&&s.id))return!1;const n=Ac(),i=["chrome-extension","moz-extension","ms-browser-extension","safari-web-extension"];return!(kt===kt.top&&i.some(r=>n.startsWith(`${r}://`)))}function tS(e){return[Z1(),$1(),Tk(),hk(),Vk(),$k(),dE(),Fk(),Ak()]}function nS(e={}){const t=!e.skipBrowserExtensionCheck&&Jk();let n=e.defaultIntegrations==null?tS():e.defaultIntegrations;if(e.spotlight){n||(n=[]);const o=typeof e.spotlight=="string"?{sidecarUrl:e.spotlight}:void 0;n.push(Zk(o))}const i={...e,enabled:t?!1:e.enabled,stackParser:vw(e.stackParser||mk),integrations:x1({integrations:e.integrations,defaultIntegrations:n}),transport:e.transport||QE};return O1(UE,i)}function iS(e){const t={...e};return Bh(t,"react"),d1("react",{version:p.version}),nS(t)}function Dl(e,t,n){if(e&&e.length){const[i,o]=t,s=Math.PI/180*n,r=Math.cos(s),a=Math.sin(s);for(const c of e){const[u,d]=c;c[0]=(u-i)*r-(d-o)*a+i,c[1]=(u-i)*a+(d-o)*r+o}}}function oS(e,t,n){const i=[];e.forEach(o=>i.push(...o)),Dl(i,t,n)}function sS(e,t){return e[0]===t[0]&&e[1]===t[1]}function rS(e,t,n,i=1){const o=n,s=Math.max(t,.1),r=e[0]&&e[0][0]&&typeof e[0][0]=="number"?[e]:e,a=[0,0];if(o)for(const u of r)Dl(u,a,o);const c=aS(r,s,i);if(o){for(const u of r)Dl(u,a,-o);oS(c,a,-o)}return c}function aS(e,t,n){const i=[];for(const u of e){const d=[...u];sS(d[0],d[d.length-1])||d.push([d[0][0],d[0][1]]),d.length>2&&i.push(d)}const o=[];t=Math.max(t,.1);const s=[];for(const u of i)for(let d=0;d<u.length-1;d++){const m=u[d],f=u[d+1];if(m[1]!==f[1]){const h=Math.min(m[1],f[1]);s.push({ymin:h,ymax:Math.max(m[1],f[1]),x:h===m[1]?m[0]:f[0],islope:(f[0]-m[0])/(f[1]-m[1])})}}if(s.sort((u,d)=>u.ymin<d.ymin?-1:u.ymin>d.ymin?1:u.x<d.x?-1:u.x>d.x?1:u.ymax===d.ymax?0:(u.ymax-d.ymax)/Math.abs(u.ymax-d.ymax)),!s.length)return o;let r=[],a=s[0].ymin,c=0;for(;r.length||s.length;){if(s.length){let u=-1;for(let m=0;m<s.length&&!(s[m].ymin>a);m++)u=m;s.splice(0,u+1).forEach(m=>{r.push({s:a,edge:m})})}if(r=r.filter(u=>!(u.edge.ymax<=a)),r.sort((u,d)=>u.edge.x===d.edge.x?0:(u.edge.x-d.edge.x)/Math.abs(u.edge.x-d.edge.x)),(n!==1||c%t===0)&&r.length>1)for(let u=0;u<r.length;u=u+2){const d=u+1;if(d>=r.length)break;const m=r[u].edge,f=r[d].edge;o.push([[Math.round(m.x),a],[Math.round(f.x),a]])}a+=n,r.forEach(u=>{u.edge.x=u.edge.x+n*u.edge.islope}),c++}return o}function Cs(e,t){var n;const i=t.hachureAngle+90;let o=t.hachureGap;o<0&&(o=t.strokeWidth*4),o=Math.round(Math.max(o,.1));let s=1;return t.roughness>=1&&(((n=t.randomizer)===null||n===void 0?void 0:n.next())||Math.random())>.7&&(s=o),rS(e,o,i,s||1)}class Hc{constructor(t){this.helper=t}fillPolygons(t,n){return this._fillPolygons(t,n)}_fillPolygons(t,n){const i=Cs(t,n);return{type:"fillSketch",ops:this.renderLines(i,n)}}renderLines(t,n){const i=[];for(const o of t)i.push(...this.helper.doubleLineOps(o[0][0],o[0][1],o[1][0],o[1][1],n));return i}}function fa(e){const t=e[0],n=e[1];return Math.sqrt(Math.pow(t[0]-n[0],2)+Math.pow(t[1]-n[1],2))}class lS extends Hc{fillPolygons(t,n){let i=n.hachureGap;i<0&&(i=n.strokeWidth*4),i=Math.max(i,.1);const o=Object.assign({},n,{hachureGap:i}),s=Cs(t,o),r=Math.PI/180*n.hachureAngle,a=[],c=i*.5*Math.cos(r),u=i*.5*Math.sin(r);for(const[m,f]of s)fa([m,f])&&a.push([[m[0]-c,m[1]+u],[...f]],[[m[0]+c,m[1]-u],[...f]]);return{type:"fillSketch",ops:this.renderLines(a,n)}}}class cS extends Hc{fillPolygons(t,n){const i=this._fillPolygons(t,n),o=Object.assign({},n,{hachureAngle:n.hachureAngle+90}),s=this._fillPolygons(t,o);return i.ops=i.ops.concat(s.ops),i}}class uS{constructor(t){this.helper=t}fillPolygons(t,n){n=Object.assign({},n,{hachureAngle:0});const i=Cs(t,n);return this.dotsOnLines(i,n)}dotsOnLines(t,n){const i=[];let o=n.hachureGap;o<0&&(o=n.strokeWidth*4),o=Math.max(o,.1);let s=n.fillWeight;s<0&&(s=n.strokeWidth/2);const r=o/4;for(const a of t){const c=fa(a),u=c/o,d=Math.ceil(u)-1,m=c-d*o,f=(a[0][0]+a[1][0])/2-o/4,h=Math.min(a[0][1],a[1][1]);for(let g=0;g<d;g++){const b=h+m+g*o,x=f-r+Math.random()*2*r,y=b-r+Math.random()*2*r,N=this.helper.ellipse(x,y,s,s,n);i.push(...N.ops)}}return{type:"fillSketch",ops:i}}}class dS{constructor(t){this.helper=t}fillPolygons(t,n){const i=Cs(t,n);return{type:"fillSketch",ops:this.dashedLine(i,n)}}dashedLine(t,n){const i=n.dashOffset<0?n.hachureGap<0?n.strokeWidth*4:n.hachureGap:n.dashOffset,o=n.dashGap<0?n.hachureGap<0?n.strokeWidth*4:n.hachureGap:n.dashGap,s=[];return t.forEach(r=>{const a=fa(r),c=Math.floor(a/(i+o)),u=(a+o-c*(i+o))/2;let d=r[0],m=r[1];d[0]>m[0]&&(d=r[1],m=r[0]);const f=Math.atan((m[1]-d[1])/(m[0]-d[0]));for(let h=0;h<c;h++){const g=h*(i+o),b=g+i,x=[d[0]+g*Math.cos(f)+u*Math.cos(f),d[1]+g*Math.sin(f)+u*Math.sin(f)],y=[d[0]+b*Math.cos(f)+u*Math.cos(f),d[1]+b*Math.sin(f)+u*Math.sin(f)];s.push(...this.helper.doubleLineOps(x[0],x[1],y[0],y[1],n))}}),s}}class mS{constructor(t){this.helper=t}fillPolygons(t,n){const i=n.hachureGap<0?n.strokeWidth*4:n.hachureGap,o=n.zigzagOffset<0?i:n.zigzagOffset;n=Object.assign({},n,{hachureGap:i+o});const s=Cs(t,n);return{type:"fillSketch",ops:this.zigzagLines(s,o,n)}}zigzagLines(t,n,i){const o=[];return t.forEach(s=>{const r=fa(s),a=Math.round(r/(2*n));let c=s[0],u=s[1];c[0]>u[0]&&(c=s[1],u=s[0]);const d=Math.atan((u[1]-c[1])/(u[0]-c[0]));for(let m=0;m<a;m++){const f=m*2*n,h=(m+1)*2*n,g=Math.sqrt(2*Math.pow(n,2)),b=[c[0]+f*Math.cos(d),c[1]+f*Math.sin(d)],x=[c[0]+h*Math.cos(d),c[1]+h*Math.sin(d)],y=[b[0]+g*Math.cos(d+Math.PI/4),b[1]+g*Math.sin(d+Math.PI/4)];o.push(...this.helper.doubleLineOps(b[0],b[1],y[0],y[1],i),...this.helper.doubleLineOps(y[0],y[1],x[0],x[1],i))}}),o}}const $t={};function pS(e,t){let n=e.fillStyle||"hachure";if(!$t[n])switch(n){case"zigzag":$t[n]||($t[n]=new lS(t));break;case"cross-hatch":$t[n]||($t[n]=new cS(t));break;case"dots":$t[n]||($t[n]=new uS(t));break;case"dashed":$t[n]||($t[n]=new dS(t));break;case"zigzag-line":$t[n]||($t[n]=new mS(t));break;case"hachure":default:n="hachure",$t[n]||($t[n]=new Hc(t));break}return $t[n]}function fS(){return Math.floor(Math.random()*2**31)}class hS{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}const gS=0,_l=1,Yh=2,Os={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function bS(e){const t=new Array;for(;e!=="";)if(e.match(/^([ \t\r\n,]+)/))e=e.substr(RegExp.$1.length);else if(e.match(/^([aAcChHlLmMqQsStTvVzZ])/))t[t.length]={type:gS,text:RegExp.$1},e=e.substr(RegExp.$1.length);else if(e.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))t[t.length]={type:_l,text:`${parseFloat(RegExp.$1)}`},e=e.substr(RegExp.$1.length);else return[];return t[t.length]={type:Yh,text:""},t}function La(e,t){return e.type===t}function zc(e){const t=[],n=bS(e);let i="BOD",o=0,s=n[o];for(;!La(s,Yh);){let r=0;const a=[];if(i==="BOD")if(s.text==="M"||s.text==="m")o++,r=Os[s.text],i=s.text;else return zc("M0,0"+e);else La(s,_l)?r=Os[i]:(o++,r=Os[s.text],i=s.text);if(o+r<n.length){for(let c=o;c<o+r;c++){const u=n[c];if(La(u,_l))a[a.length]=+u.text;else throw new Error("Param not a number: "+i+","+u.text)}if(typeof Os[i]=="number"){const c={key:i,data:a};t.push(c),o+=r,s=n[o],i==="M"&&(i="L"),i==="m"&&(i="l")}else throw new Error("Bad segment: "+i)}else throw new Error("Path data ended short")}return t}function Zh(e){let t=0,n=0,i=0,o=0;const s=[];for(const{key:r,data:a}of e)switch(r){case"M":s.push({key:"M",data:[...a]}),[t,n]=a,[i,o]=a;break;case"m":t+=a[0],n+=a[1],s.push({key:"M",data:[t,n]}),i=t,o=n;break;case"L":s.push({key:"L",data:[...a]}),[t,n]=a;break;case"l":t+=a[0],n+=a[1],s.push({key:"L",data:[t,n]});break;case"C":s.push({key:"C",data:[...a]}),t=a[4],n=a[5];break;case"c":{const c=a.map((u,d)=>d%2?u+n:u+t);s.push({key:"C",data:c}),t=c[4],n=c[5];break}case"Q":s.push({key:"Q",data:[...a]}),t=a[2],n=a[3];break;case"q":{const c=a.map((u,d)=>d%2?u+n:u+t);s.push({key:"Q",data:c}),t=c[2],n=c[3];break}case"A":s.push({key:"A",data:[...a]}),t=a[5],n=a[6];break;case"a":t+=a[5],n+=a[6],s.push({key:"A",data:[a[0],a[1],a[2],a[3],a[4],t,n]});break;case"H":s.push({key:"H",data:[...a]}),t=a[0];break;case"h":t+=a[0],s.push({key:"H",data:[t]});break;case"V":s.push({key:"V",data:[...a]}),n=a[0];break;case"v":n+=a[0],s.push({key:"V",data:[n]});break;case"S":s.push({key:"S",data:[...a]}),t=a[2],n=a[3];break;case"s":{const c=a.map((u,d)=>d%2?u+n:u+t);s.push({key:"S",data:c}),t=c[2],n=c[3];break}case"T":s.push({key:"T",data:[...a]}),t=a[0],n=a[1];break;case"t":t+=a[0],n+=a[1],s.push({key:"T",data:[t,n]});break;case"Z":case"z":s.push({key:"Z",data:[]}),t=i,n=o;break}return s}function Qh(e){const t=[];let n="",i=0,o=0,s=0,r=0,a=0,c=0;for(const{key:u,data:d}of e){switch(u){case"M":t.push({key:"M",data:[...d]}),[i,o]=d,[s,r]=d;break;case"C":t.push({key:"C",data:[...d]}),i=d[4],o=d[5],a=d[2],c=d[3];break;case"L":t.push({key:"L",data:[...d]}),[i,o]=d;break;case"H":i=d[0],t.push({key:"L",data:[i,o]});break;case"V":o=d[0],t.push({key:"L",data:[i,o]});break;case"S":{let m=0,f=0;n==="C"||n==="S"?(m=i+(i-a),f=o+(o-c)):(m=i,f=o),t.push({key:"C",data:[m,f,...d]}),a=d[0],c=d[1],i=d[2],o=d[3];break}case"T":{const[m,f]=d;let h=0,g=0;n==="Q"||n==="T"?(h=i+(i-a),g=o+(o-c)):(h=i,g=o);const b=i+2*(h-i)/3,x=o+2*(g-o)/3,y=m+2*(h-m)/3,N=f+2*(g-f)/3;t.push({key:"C",data:[b,x,y,N,m,f]}),a=h,c=g,i=m,o=f;break}case"Q":{const[m,f,h,g]=d,b=i+2*(m-i)/3,x=o+2*(f-o)/3,y=h+2*(m-h)/3,N=g+2*(f-g)/3;t.push({key:"C",data:[b,x,y,N,h,g]}),a=m,c=f,i=h,o=g;break}case"A":{const m=Math.abs(d[0]),f=Math.abs(d[1]),h=d[2],g=d[3],b=d[4],x=d[5],y=d[6];m===0||f===0?(t.push({key:"C",data:[i,o,x,y,x,y]}),i=x,o=y):(i!==x||o!==y)&&(Jh(i,o,x,y,m,f,h,g,b).forEach(function(w){t.push({key:"C",data:w})}),i=x,o=y);break}case"Z":t.push({key:"Z",data:[]}),i=s,o=r;break}n=u}return t}function xS(e){return Math.PI*e/180}function Po(e,t,n){const i=e*Math.cos(n)-t*Math.sin(n),o=e*Math.sin(n)+t*Math.cos(n);return[i,o]}function Jh(e,t,n,i,o,s,r,a,c,u){const d=xS(r);let m=[],f=0,h=0,g=0,b=0;if(u)[f,h,g,b]=u;else{[e,t]=Po(e,t,-d),[n,i]=Po(n,i,-d);const U=(e-n)/2,A=(t-i)/2;let j=U*U/(o*o)+A*A/(s*s);j>1&&(j=Math.sqrt(j),o=j*o,s=j*s);const C=a===c?-1:1,M=o*o,J=s*s,ye=M*J-M*A*A-J*U*U,P=M*A*A+J*U*U,G=C*Math.sqrt(Math.abs(ye/P));g=G*o*A/s+(e+n)/2,b=G*-s*U/o+(t+i)/2,f=Math.asin(parseFloat(((t-b)/s).toFixed(9))),h=Math.asin(parseFloat(((i-b)/s).toFixed(9))),e<g&&(f=Math.PI-f),n<g&&(h=Math.PI-h),f<0&&(f=Math.PI*2+f),h<0&&(h=Math.PI*2+h),c&&f>h&&(f=f-Math.PI*2),!c&&h>f&&(h=h-Math.PI*2)}let x=h-f;if(Math.abs(x)>Math.PI*120/180){const U=h,A=n,j=i;c&&h>f?h=f+Math.PI*120/180*1:h=f+Math.PI*120/180*-1,n=g+o*Math.cos(h),i=b+s*Math.sin(h),m=Jh(n,i,A,j,o,s,r,0,c,[h,U,g,b])}x=h-f;const y=Math.cos(f),N=Math.sin(f),w=Math.cos(h),D=Math.sin(h),S=Math.tan(x/4),E=4/3*o*S,k=4/3*s*S,V=[e,t],R=[e+E*N,t-k*y],z=[n+E*D,i-k*w],I=[n,i];if(R[0]=2*V[0]-R[0],R[1]=2*V[1]-R[1],u)return[R,z,I].concat(m);{m=[R,z,I].concat(m);const U=[];for(let A=0;A<m.length;A+=3){const j=Po(m[A][0],m[A][1],d),C=Po(m[A+1][0],m[A+1][1],d),M=Po(m[A+2][0],m[A+2][1],d);U.push([j[0],j[1],C[0],C[1],M[0],M[1]])}return U}}const NS={randOffset:kS,randOffsetWithRange:SS,ellipse:vS,doubleLineOps:TS};function eg(e,t,n,i,o){return{type:"path",ops:di(e,t,n,i,o)}}function ar(e,t,n){const i=(e||[]).length;if(i>2){const o=[];for(let s=0;s<i-1;s++)o.push(...di(e[s][0],e[s][1],e[s+1][0],e[s+1][1],n));return t&&o.push(...di(e[i-1][0],e[i-1][1],e[0][0],e[0][1],n)),{type:"path",ops:o}}else if(i===2)return eg(e[0][0],e[0][1],e[1][0],e[1][1],n);return{type:"path",ops:[]}}function yS(e,t){return ar(e,!0,t)}function wS(e,t,n,i,o){const s=[[e,t],[e+n,t],[e+n,t+i],[e,t+i]];return yS(s,o)}function Wd(e,t){if(e.length){const i=typeof e[0][0]=="number"?[e]:e,o=Fs(i[0],1*(1+t.roughness*.2),t),s=t.disableMultiStroke?[]:Fs(i[0],1.5*(1+t.roughness*.22),Kd(t));for(let r=1;r<i.length;r++){const a=i[r];if(a.length){const c=Fs(a,1*(1+t.roughness*.2),t),u=t.disableMultiStroke?[]:Fs(a,1.5*(1+t.roughness*.22),Kd(t));for(const d of c)d.op!=="move"&&o.push(d);for(const d of u)d.op!=="move"&&s.push(d)}}return{type:"path",ops:o.concat(s)}}return{type:"path",ops:[]}}function vS(e,t,n,i,o){const s=tg(n,i,o);return jl(e,t,o,s).opset}function tg(e,t,n){const i=Math.sqrt(Math.PI*2*Math.sqrt((Math.pow(e/2,2)+Math.pow(t/2,2))/2)),o=Math.ceil(Math.max(n.curveStepCount,n.curveStepCount/Math.sqrt(200)*i)),s=Math.PI*2/o;let r=Math.abs(e/2),a=Math.abs(t/2);const c=1-n.curveFitting;return r+=be(r*c,n),a+=be(a*c,n),{increment:s,rx:r,ry:a}}function jl(e,t,n,i){const[o,s]=Yd(i.increment,e,t,i.rx,i.ry,1,i.increment*kr(.1,kr(.4,1,n),n),n);let r=Sr(o,null,n);if(!n.disableMultiStroke&&n.roughness!==0){const[a]=Yd(i.increment,e,t,i.rx,i.ry,1.5,0,n),c=Sr(a,null,n);r=r.concat(c)}return{estimatedPoints:s,opset:{type:"path",ops:r}}}function $d(e,t,n,i,o,s,r,a,c){const u=e,d=t;let m=Math.abs(n/2),f=Math.abs(i/2);m+=be(m*.01,c),f+=be(f*.01,c);let h=o,g=s;for(;h<0;)h+=Math.PI*2,g+=Math.PI*2;g-h>Math.PI*2&&(h=0,g=Math.PI*2);const b=Math.PI*2/c.curveStepCount,x=Math.min(b/2,(g-h)/2),y=Zd(x,u,d,m,f,h,g,1,c);if(!c.disableMultiStroke){const N=Zd(x,u,d,m,f,h,g,1.5,c);y.push(...N)}return r&&(a?y.push(...di(u,d,u+m*Math.cos(h),d+f*Math.sin(h),c),...di(u,d,u+m*Math.cos(g),d+f*Math.sin(g),c)):y.push({op:"lineTo",data:[u,d]},{op:"lineTo",data:[u+m*Math.cos(h),d+f*Math.sin(h)]})),{type:"path",ops:y}}function Xd(e,t){const n=Qh(Zh(zc(e))),i=[];let o=[0,0],s=[0,0];for(const{key:r,data:a}of n)switch(r){case"M":{s=[a[0],a[1]],o=[a[0],a[1]];break}case"L":i.push(...di(s[0],s[1],a[0],a[1],t)),s=[a[0],a[1]];break;case"C":{const[c,u,d,m,f,h]=a;i.push(...DS(c,u,d,m,f,h,s,t)),s=[f,h];break}case"Z":i.push(...di(s[0],s[1],o[0],o[1],t)),s=[o[0],o[1]];break}return{type:"path",ops:i}}function Ba(e,t){const n=[];for(const i of e)if(i.length){const o=t.maxRandomnessOffset||0,s=i.length;if(s>2){n.push({op:"move",data:[i[0][0]+be(o,t),i[0][1]+be(o,t)]});for(let r=1;r<s;r++)n.push({op:"lineTo",data:[i[r][0]+be(o,t),i[r][1]+be(o,t)]})}}return{type:"fillPath",ops:n}}function Wi(e,t){return pS(t,NS).fillPolygons(e,t)}function ES(e,t,n,i,o,s,r){const a=e,c=t;let u=Math.abs(n/2),d=Math.abs(i/2);u+=be(u*.01,r),d+=be(d*.01,r);let m=o,f=s;for(;m<0;)m+=Math.PI*2,f+=Math.PI*2;f-m>Math.PI*2&&(m=0,f=Math.PI*2);const h=(f-m)/r.curveStepCount,g=[];for(let b=m;b<=f;b=b+h)g.push([a+u*Math.cos(b),c+d*Math.sin(b)]);return g.push([a+u*Math.cos(f),c+d*Math.sin(f)]),g.push([a,c]),Wi([g],r)}function kS(e,t){return be(e,t)}function SS(e,t,n){return kr(e,t,n)}function TS(e,t,n,i,o){return di(e,t,n,i,o,!0)}function Kd(e){const t=Object.assign({},e);return t.randomizer=void 0,e.seed&&(t.seed=e.seed+1),t}function ng(e){return e.randomizer||(e.randomizer=new hS(e.seed||0)),e.randomizer.next()}function kr(e,t,n,i=1){return n.roughness*i*(ng(n)*(t-e)+e)}function be(e,t,n=1){return kr(-e,e,t,n)}function di(e,t,n,i,o,s=!1){const r=s?o.disableMultiStrokeFill:o.disableMultiStroke,a=Pl(e,t,n,i,o,!0,!1);if(r)return a;const c=Pl(e,t,n,i,o,!0,!0);return a.concat(c)}function Pl(e,t,n,i,o,s,r){const a=Math.pow(e-n,2)+Math.pow(t-i,2),c=Math.sqrt(a);let u=1;c<200?u=1:c>500?u=.4:u=-.0016668*c+1.233334;let d=o.maxRandomnessOffset||0;d*d*100>a&&(d=c/10);const m=d/2,f=.2+ng(o)*.2;let h=o.bowing*o.maxRandomnessOffset*(i-t)/200,g=o.bowing*o.maxRandomnessOffset*(e-n)/200;h=be(h,o,u),g=be(g,o,u);const b=[],x=()=>be(m,o,u),y=()=>be(d,o,u),N=o.preserveVertices;return r?b.push({op:"move",data:[e+(N?0:x()),t+(N?0:x())]}):b.push({op:"move",data:[e+(N?0:be(d,o,u)),t+(N?0:be(d,o,u))]}),r?b.push({op:"bcurveTo",data:[h+e+(n-e)*f+x(),g+t+(i-t)*f+x(),h+e+2*(n-e)*f+x(),g+t+2*(i-t)*f+x(),n+(N?0:x()),i+(N?0:x())]}):b.push({op:"bcurveTo",data:[h+e+(n-e)*f+y(),g+t+(i-t)*f+y(),h+e+2*(n-e)*f+y(),g+t+2*(i-t)*f+y(),n+(N?0:y()),i+(N?0:y())]}),b}function Fs(e,t,n){if(!e.length)return[];const i=[];i.push([e[0][0]+be(t,n),e[0][1]+be(t,n)]),i.push([e[0][0]+be(t,n),e[0][1]+be(t,n)]);for(let o=1;o<e.length;o++)i.push([e[o][0]+be(t,n),e[o][1]+be(t,n)]),o===e.length-1&&i.push([e[o][0]+be(t,n),e[o][1]+be(t,n)]);return Sr(i,null,n)}function Sr(e,t,n){const i=e.length,o=[];if(i>3){const s=[],r=1-n.curveTightness;o.push({op:"move",data:[e[1][0],e[1][1]]});for(let a=1;a+2<i;a++){const c=e[a];s[0]=[c[0],c[1]],s[1]=[c[0]+(r*e[a+1][0]-r*e[a-1][0])/6,c[1]+(r*e[a+1][1]-r*e[a-1][1])/6],s[2]=[e[a+1][0]+(r*e[a][0]-r*e[a+2][0])/6,e[a+1][1]+(r*e[a][1]-r*e[a+2][1])/6],s[3]=[e[a+1][0],e[a+1][1]],o.push({op:"bcurveTo",data:[s[1][0],s[1][1],s[2][0],s[2][1],s[3][0],s[3][1]]})}}else i===3?(o.push({op:"move",data:[e[1][0],e[1][1]]}),o.push({op:"bcurveTo",data:[e[1][0],e[1][1],e[2][0],e[2][1],e[2][0],e[2][1]]})):i===2&&o.push(...Pl(e[0][0],e[0][1],e[1][0],e[1][1],n,!0,!0));return o}function Yd(e,t,n,i,o,s,r,a){const c=a.roughness===0,u=[],d=[];if(c){e=e/4,d.push([t+i*Math.cos(-e),n+o*Math.sin(-e)]);for(let m=0;m<=Math.PI*2;m=m+e){const f=[t+i*Math.cos(m),n+o*Math.sin(m)];u.push(f),d.push(f)}d.push([t+i*Math.cos(0),n+o*Math.sin(0)]),d.push([t+i*Math.cos(e),n+o*Math.sin(e)])}else{const m=be(.5,a)-Math.PI/2;d.push([be(s,a)+t+.9*i*Math.cos(m-e),be(s,a)+n+.9*o*Math.sin(m-e)]);const f=Math.PI*2+m-.01;for(let h=m;h<f;h=h+e){const g=[be(s,a)+t+i*Math.cos(h),be(s,a)+n+o*Math.sin(h)];u.push(g),d.push(g)}d.push([be(s,a)+t+i*Math.cos(m+Math.PI*2+r*.5),be(s,a)+n+o*Math.sin(m+Math.PI*2+r*.5)]),d.push([be(s,a)+t+.98*i*Math.cos(m+r),be(s,a)+n+.98*o*Math.sin(m+r)]),d.push([be(s,a)+t+.9*i*Math.cos(m+r*.5),be(s,a)+n+.9*o*Math.sin(m+r*.5)])}return[d,u]}function Zd(e,t,n,i,o,s,r,a,c){const u=s+be(.1,c),d=[];d.push([be(a,c)+t+.9*i*Math.cos(u-e),be(a,c)+n+.9*o*Math.sin(u-e)]);for(let m=u;m<=r;m=m+e)d.push([be(a,c)+t+i*Math.cos(m),be(a,c)+n+o*Math.sin(m)]);return d.push([t+i*Math.cos(r),n+o*Math.sin(r)]),d.push([t+i*Math.cos(r),n+o*Math.sin(r)]),Sr(d,null,c)}function DS(e,t,n,i,o,s,r,a){const c=[],u=[a.maxRandomnessOffset||1,(a.maxRandomnessOffset||1)+.3];let d=[0,0];const m=a.disableMultiStroke?1:2,f=a.preserveVertices;for(let h=0;h<m;h++)h===0?c.push({op:"move",data:[r[0],r[1]]}):c.push({op:"move",data:[r[0]+(f?0:be(u[0],a)),r[1]+(f?0:be(u[0],a))]}),d=f?[o,s]:[o+be(u[h],a),s+be(u[h],a)],c.push({op:"bcurveTo",data:[e+be(u[h],a),t+be(u[h],a),n+be(u[h],a),i+be(u[h],a),d[0],d[1]]});return c}function Co(e){return[...e]}function Qd(e,t=0){const n=e.length;if(n<3)throw new Error("A curve must have at least three points.");const i=[];if(n===3)i.push(Co(e[0]),Co(e[1]),Co(e[2]),Co(e[2]));else{const o=[];o.push(e[0],e[0]);for(let a=1;a<e.length;a++)o.push(e[a]),a===e.length-1&&o.push(e[a]);const s=[],r=1-t;i.push(Co(o[0]));for(let a=1;a+2<o.length;a++){const c=o[a];s[0]=[c[0],c[1]],s[1]=[c[0]+(r*o[a+1][0]-r*o[a-1][0])/6,c[1]+(r*o[a+1][1]-r*o[a-1][1])/6],s[2]=[o[a+1][0]+(r*o[a][0]-r*o[a+2][0])/6,o[a+1][1]+(r*o[a][1]-r*o[a+2][1])/6],s[3]=[o[a+1][0],o[a+1][1]],i.push(s[1],s[2],s[3])}}return i}function _S(e,t){return Math.sqrt(lr(e,t))}function lr(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)}function jS(e,t,n){const i=lr(t,n);if(i===0)return lr(e,t);let o=((e[0]-t[0])*(n[0]-t[0])+(e[1]-t[1])*(n[1]-t[1]))/i;return o=Math.max(0,Math.min(1,o)),lr(e,Ni(t,n,o))}function Ni(e,t,n){return[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n]}function PS(e,t){const n=e[t+0],i=e[t+1],o=e[t+2],s=e[t+3];let r=3*i[0]-2*n[0]-s[0];r*=r;let a=3*i[1]-2*n[1]-s[1];a*=a;let c=3*o[0]-2*s[0]-n[0];c*=c;let u=3*o[1]-2*s[1]-n[1];return u*=u,r<c&&(r=c),a<u&&(a=u),r+a}function Cl(e,t,n,i){const o=i||[];if(PS(e,t)<n){const s=e[t+0];o.length?_S(o[o.length-1],s)>1&&o.push(s):o.push(s),o.push(e[t+3])}else{const r=e[t+0],a=e[t+1],c=e[t+2],u=e[t+3],d=Ni(r,a,.5),m=Ni(a,c,.5),f=Ni(c,u,.5),h=Ni(d,m,.5),g=Ni(m,f,.5),b=Ni(h,g,.5);Cl([r,d,h,b],0,n,o),Cl([b,g,f,u],0,n,o)}return o}function CS(e,t){return Tr(e,0,e.length,t)}function Tr(e,t,n,i,o){const s=o||[],r=e[t],a=e[n-1];let c=0,u=1;for(let d=t+1;d<n-1;++d){const m=jS(e[d],r,a);m>c&&(c=m,u=d)}return Math.sqrt(c)>i?(Tr(e,t,u+1,i,s),Tr(e,u,n,i,s)):(s.length||s.push(r),s.push(a)),s}function Al(e,t=.15,n){const i=[],o=(e.length-1)/3;for(let s=0;s<o;s++){const r=s*3;Cl(e,r,t,i)}return n&&n>0?Tr(i,0,i.length,n):i}function AS(e,t,n){const i=zc(e),o=Qh(Zh(i)),s=[];let r=[],a=[0,0],c=[];const u=()=>{c.length>=4&&r.push(...Al(c,t)),c=[]},d=()=>{u(),r.length&&(s.push(r),r=[])};for(const{key:f,data:h}of o)switch(f){case"M":d(),a=[h[0],h[1]],r.push(a);break;case"L":u(),r.push([h[0],h[1]]);break;case"C":if(!c.length){const g=r.length?r[r.length-1]:a;c.push([g[0],g[1]])}c.push([h[0],h[1]]),c.push([h[2],h[3]]),c.push([h[4],h[5]]);break;case"Z":u(),r.push([a[0],a[1]]);break}if(d(),!n)return s;const m=[];for(const f of s){const h=CS(f,n);h.length&&m.push(h)}return m}const Zt="none";class Dr{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return fS()}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,n,i){return{shape:t,sets:n||[],options:i||this.defaultOptions}}line(t,n,i,o,s){const r=this._o(s);return this._d("line",[eg(t,n,i,o,r)],r)}rectangle(t,n,i,o,s){const r=this._o(s),a=[],c=wS(t,n,i,o,r);if(r.fill){const u=[[t,n],[t+i,n],[t+i,n+o],[t,n+o]];r.fillStyle==="solid"?a.push(Ba([u],r)):a.push(Wi([u],r))}return r.stroke!==Zt&&a.push(c),this._d("rectangle",a,r)}ellipse(t,n,i,o,s){const r=this._o(s),a=[],c=tg(i,o,r),u=jl(t,n,r,c);if(r.fill)if(r.fillStyle==="solid"){const d=jl(t,n,r,c).opset;d.type="fillPath",a.push(d)}else a.push(Wi([u.estimatedPoints],r));return r.stroke!==Zt&&a.push(u.opset),this._d("ellipse",a,r)}circle(t,n,i,o){const s=this.ellipse(t,n,i,i,o);return s.shape="circle",s}linearPath(t,n){const i=this._o(n);return this._d("linearPath",[ar(t,!1,i)],i)}arc(t,n,i,o,s,r,a=!1,c){const u=this._o(c),d=[],m=$d(t,n,i,o,s,r,a,!0,u);if(a&&u.fill)if(u.fillStyle==="solid"){const f=Object.assign({},u);f.disableMultiStroke=!0;const h=$d(t,n,i,o,s,r,!0,!1,f);h.type="fillPath",d.push(h)}else d.push(ES(t,n,i,o,s,r,u));return u.stroke!==Zt&&d.push(m),this._d("arc",d,u)}curve(t,n){const i=this._o(n),o=[],s=Wd(t,i);if(i.fill&&i.fill!==Zt)if(i.fillStyle==="solid"){const r=Wd(t,Object.assign(Object.assign({},i),{disableMultiStroke:!0,roughness:i.roughness?i.roughness+i.fillShapeRoughnessGain:0}));o.push({type:"fillPath",ops:this._mergedShape(r.ops)})}else{const r=[],a=t;if(a.length){const u=typeof a[0][0]=="number"?[a]:a;for(const d of u)d.length<3?r.push(...d):d.length===3?r.push(...Al(Qd([d[0],d[0],d[1],d[2]]),10,(1+i.roughness)/2)):r.push(...Al(Qd(d),10,(1+i.roughness)/2))}r.length&&o.push(Wi([r],i))}return i.stroke!==Zt&&o.push(s),this._d("curve",o,i)}polygon(t,n){const i=this._o(n),o=[],s=ar(t,!0,i);return i.fill&&(i.fillStyle==="solid"?o.push(Ba([t],i)):o.push(Wi([t],i))),i.stroke!==Zt&&o.push(s),this._d("polygon",o,i)}path(t,n){const i=this._o(n),o=[];if(!t)return this._d("path",o,i);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");const s=i.fill&&i.fill!=="transparent"&&i.fill!==Zt,r=i.stroke!==Zt,a=!!(i.simplification&&i.simplification<1),c=a?4-4*(i.simplification||1):(1+i.roughness)/2,u=AS(t,1,c),d=Xd(t,i);if(s)if(i.fillStyle==="solid")if(u.length===1){const m=Xd(t,Object.assign(Object.assign({},i),{disableMultiStroke:!0,roughness:i.roughness?i.roughness+i.fillShapeRoughnessGain:0}));o.push({type:"fillPath",ops:this._mergedShape(m.ops)})}else o.push(Ba(u,i));else o.push(Wi(u,i));return r&&(a?u.forEach(m=>{o.push(ar(m,!1,i))}):o.push(d)),this._d("path",o,i)}opsToPath(t,n){let i="";for(const o of t.ops){const s=typeof n=="number"&&n>=0?o.data.map(r=>+r.toFixed(n)):o.data;switch(o.op){case"move":i+=`M${s[0]} ${s[1]} `;break;case"bcurveTo":i+=`C${s[0]} ${s[1]}, ${s[2]} ${s[3]}, ${s[4]} ${s[5]} `;break;case"lineTo":i+=`L${s[0]} ${s[1]} `;break}}return i.trim()}toPaths(t){const n=t.sets||[],i=t.options||this.defaultOptions,o=[];for(const s of n){let r=null;switch(s.type){case"path":r={d:this.opsToPath(s),stroke:i.stroke,strokeWidth:i.strokeWidth,fill:Zt};break;case"fillPath":r={d:this.opsToPath(s),stroke:Zt,strokeWidth:0,fill:i.fill||Zt};break;case"fillSketch":r=this.fillSketch(s,i);break}r&&o.push(r)}return o}fillSketch(t,n){let i=n.fillWeight;return i<0&&(i=n.strokeWidth/2),{d:this.opsToPath(t),stroke:n.fill||Zt,strokeWidth:i,fill:Zt}}_mergedShape(t){return t.filter((n,i)=>i===0?!0:n.op!=="move")}}class MS{constructor(t,n){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new Dr(n)}draw(t){const n=t.sets||[],i=t.options||this.getDefaultOptions(),o=this.ctx,s=t.options.fixedDecimalPlaceDigits;for(const r of n)switch(r.type){case"path":o.save(),o.strokeStyle=i.stroke==="none"?"transparent":i.stroke,o.lineWidth=i.strokeWidth,i.strokeLineDash&&o.setLineDash(i.strokeLineDash),i.strokeLineDashOffset&&(o.lineDashOffset=i.strokeLineDashOffset),this._drawToContext(o,r,s),o.restore();break;case"fillPath":{o.save(),o.fillStyle=i.fill||"";const a=t.shape==="curve"||t.shape==="polygon"||t.shape==="path"?"evenodd":"nonzero";this._drawToContext(o,r,s,a),o.restore();break}case"fillSketch":this.fillSketch(o,r,i);break}}fillSketch(t,n,i){let o=i.fillWeight;o<0&&(o=i.strokeWidth/2),t.save(),i.fillLineDash&&t.setLineDash(i.fillLineDash),i.fillLineDashOffset&&(t.lineDashOffset=i.fillLineDashOffset),t.strokeStyle=i.fill||"",t.lineWidth=o,this._drawToContext(t,n,i.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,n,i,o="nonzero"){t.beginPath();for(const s of n.ops){const r=typeof i=="number"&&i>=0?s.data.map(a=>+a.toFixed(i)):s.data;switch(s.op){case"move":t.moveTo(r[0],r[1]);break;case"bcurveTo":t.bezierCurveTo(r[0],r[1],r[2],r[3],r[4],r[5]);break;case"lineTo":t.lineTo(r[0],r[1]);break}}n.type==="fillPath"?t.fill(o):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,n,i,o,s){const r=this.gen.line(t,n,i,o,s);return this.draw(r),r}rectangle(t,n,i,o,s){const r=this.gen.rectangle(t,n,i,o,s);return this.draw(r),r}ellipse(t,n,i,o,s){const r=this.gen.ellipse(t,n,i,o,s);return this.draw(r),r}circle(t,n,i,o){const s=this.gen.circle(t,n,i,o);return this.draw(s),s}linearPath(t,n){const i=this.gen.linearPath(t,n);return this.draw(i),i}polygon(t,n){const i=this.gen.polygon(t,n);return this.draw(i),i}arc(t,n,i,o,s,r,a=!1,c){const u=this.gen.arc(t,n,i,o,s,r,a,c);return this.draw(u),u}curve(t,n){const i=this.gen.curve(t,n);return this.draw(i),i}path(t,n){const i=this.gen.path(t,n);return this.draw(i),i}}const Hs="http://www.w3.org/2000/svg";class IS{constructor(t,n){this.svg=t,this.gen=new Dr(n)}draw(t){const n=t.sets||[],i=t.options||this.getDefaultOptions(),o=this.svg.ownerDocument||window.document,s=o.createElementNS(Hs,"g"),r=t.options.fixedDecimalPlaceDigits;for(const a of n){let c=null;switch(a.type){case"path":{c=o.createElementNS(Hs,"path"),c.setAttribute("d",this.opsToPath(a,r)),c.setAttribute("stroke",i.stroke),c.setAttribute("stroke-width",i.strokeWidth+""),c.setAttribute("fill","none"),i.strokeLineDash&&c.setAttribute("stroke-dasharray",i.strokeLineDash.join(" ").trim()),i.strokeLineDashOffset&&c.setAttribute("stroke-dashoffset",`${i.strokeLineDashOffset}`);break}case"fillPath":{c=o.createElementNS(Hs,"path"),c.setAttribute("d",this.opsToPath(a,r)),c.setAttribute("stroke","none"),c.setAttribute("stroke-width","0"),c.setAttribute("fill",i.fill||""),(t.shape==="curve"||t.shape==="polygon")&&c.setAttribute("fill-rule","evenodd");break}case"fillSketch":{c=this.fillSketch(o,a,i);break}}c&&s.appendChild(c)}return s}fillSketch(t,n,i){let o=i.fillWeight;o<0&&(o=i.strokeWidth/2);const s=t.createElementNS(Hs,"path");return s.setAttribute("d",this.opsToPath(n,i.fixedDecimalPlaceDigits)),s.setAttribute("stroke",i.fill||""),s.setAttribute("stroke-width",o+""),s.setAttribute("fill","none"),i.fillLineDash&&s.setAttribute("stroke-dasharray",i.fillLineDash.join(" ").trim()),i.fillLineDashOffset&&s.setAttribute("stroke-dashoffset",`${i.fillLineDashOffset}`),s}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,n){return this.gen.opsToPath(t,n)}line(t,n,i,o,s){const r=this.gen.line(t,n,i,o,s);return this.draw(r)}rectangle(t,n,i,o,s){const r=this.gen.rectangle(t,n,i,o,s);return this.draw(r)}ellipse(t,n,i,o,s){const r=this.gen.ellipse(t,n,i,o,s);return this.draw(r)}circle(t,n,i,o){const s=this.gen.circle(t,n,i,o);return this.draw(s)}linearPath(t,n){const i=this.gen.linearPath(t,n);return this.draw(i)}polygon(t,n){const i=this.gen.polygon(t,n);return this.draw(i)}arc(t,n,i,o,s,r,a=!1,c){const u=this.gen.arc(t,n,i,o,s,r,a,c);return this.draw(u)}curve(t,n){const i=this.gen.curve(t,n);return this.draw(i)}path(t,n){const i=this.gen.path(t,n);return this.draw(i)}}const VS={canvas(e,t){return new MS(e,t)},svg(e,t){return new IS(e,t)},generator(e){return new Dr(e)},newSeed(){return Dr.newSeed()}};var ig=function(e){return typeof e=="function"};function Jd(e,t){if(e===t)return!0;for(var n=0;n<e.length;n++)if(!Object.is(e[n],t[n]))return!1;return!0}function og(e){var t=p.useRef(e);return t.current=e,t}var US=function(e){ig(e)||console.error("useUnmount expected parameter is a function, got ".concat(typeof e));var t=og(e);p.useEffect(function(){return function(){t.current()}},[])},RS=!!(typeof window<"u"&&window.document&&window.document.createElement);function sg(e,t){if(RS){if(!e)return t;var n;return ig(e)?n=e():"current"in e?n=e.current:n=e,n}}var qS=function(e){var t=function(n,i,o){var s=p.useRef(!1),r=p.useRef([]),a=p.useRef([]),c=p.useRef(void 0);e(function(){var u,d=Array.isArray(o)?o:[o],m=d.map(function(f){return sg(f)});if(!s.current){s.current=!0,r.current=m,a.current=i,c.current=n();return}(m.length!==r.current.length||!Jd(r.current,m)||!Jd(a.current,i))&&((u=c.current)===null||u===void 0||u.call(c),r.current=m,a.current=i,c.current=n())}),US(function(){var u;(u=c.current)===null||u===void 0||u.call(c),s.current=!1})};return t},LS=qS(p.useEffect);function Rt(e,t,n){n===void 0&&(n={});var i=n.enable,o=i===void 0?!0:i,s=og(t);LS(function(){if(o){var r=sg(n.target,window);if(r!=null&&r.addEventListener){var a=function(u){return s.current(u)},c=Array.isArray(e)?e:[e];return c.forEach(function(u){r.addEventListener(u,a,{capture:n.capture,once:n.once,passive:n.passive})}),function(){c.forEach(function(u){r.removeEventListener(u,a,{capture:n.capture})})}}}},[e,n.capture,n.once,n.passive,o],n.target)}const BS=(e,t,n)=>{Rt("pointerdown",i=>{e.pointerDown(i)},{target:n}),Rt("pointermove",i=>{hu.set(e,[i.x,i.y]),e.pointerMove(i)},{target:t}),Rt("pointerleave",i=>{hu.delete(e),e.pointerLeave(i)},{target:t}),Rt("pointerup",i=>{e.pointerUp(i)},{target:t}),Rt("dblclick",i=>{q.isFocus(e)&&!q.hasBeenTextEditing(e)&&e.dblClick(i)},{target:n}),Rt("pointermove",i=>{$b.set(e,[i.x,i.y]),e.globalPointerMove(i)}),Rt("pointerup",i=>{e.globalPointerUp(i)}),Rt("keydown",i=>{e.globalKeyDown(i),q.isFocus(e)&&!q.hasBeenTextEditing(e)&&!Xb(i.target)&&e.keyDown(i)}),Rt("keyup",i=>{q.isFocus(e)&&!q.hasBeenTextEditing(e)&&(e==null||e.keyUp(i))}),Rt("copy",i=>{q.isFocus(e)&&!q.hasBeenTextEditing(e)&&(i.preventDefault(),gu(e,Ta.copy,i.clipboardData))}),Rt("paste",async i=>{if(q.isFocus(e)&&!q.isReadonly(e)&&!q.hasBeenTextEditing(e)){const o=q.getMovingPointInBoard(e);if(o){const s=Ot(e,Ft(e,o[0],o[1])),r=await Kb(i.clipboardData);e.insertFragment(r,s,Ta.paste)}}}),Rt("cut",i=>{q.isFocus(e)&&!q.isReadonly(e)&&!q.hasBeenTextEditing(e)&&(i.preventDefault(),gu(e,Ta.cut,i.clipboardData),ol(e))}),Rt("drop",i=>{q.isReadonly(e)||(i.preventDefault(),e.drop(i))},{target:t}),Rt("dragover",i=>{i.preventDefault()},{target:t})},Yo=new WeakMap,Zo=new WeakMap,rg=e=>{const t=zS(e);return t||vs(e)||e.viewport.origination||[0,0]},OS=(e,t,n)=>{const i=e.viewport.zoom,o=rg(e),s=q.getBoardContainer(e).getBoundingClientRect(),r=GS(s,n),a=Zb(t),c=o[0]+r[0]/i,u=o[1]+r[1]/i;ge.updateViewport(e,[c-r[0]/a,u-r[1]/a],a)},FS=(e,t=1,n=120)=>{Yo.set(e,t);const i=Zo.get(e);i&&clearTimeout(i),Zo.set(e,setTimeout(()=>{Yo.delete(e),Zo.delete(e)},n))},HS=e=>{const t=Yo.get(e)??0;if(t<=0)return!1;if(t===1){Yo.delete(e);const n=Zo.get(e);n&&(clearTimeout(n),Zo.delete(e))}else Yo.set(e,t-1);return!0},zS=e=>{const t=e.viewport.zoom;if(!Number.isFinite(t)||t<=0)return null;try{const n=q.getViewportContainer(e),i=Yb(e);return!i||!Number.isFinite(i.x)||!Number.isFinite(i.y)||!Number.isFinite(i.width)||!Number.isFinite(i.height)||i.width<=0||i.height<=0?null:[n.scrollLeft/t+i.x,n.scrollTop/t+i.y]}catch{return null}},GS=(e,t)=>t&&WS(t,e)?[t[0]-e.x,t[1]-e.y]:[e.width/2,e.height/2],WS=(e,t)=>e[0]>=t.left&&e[0]<=t.right&&e[1]>=t.top&&e[1]<=t.bottom,$S=(e,t)=>{Rt("scroll",i=>{if(HS(e)||Qb(e))is(e,!1);else{const o=i.target;if(!o)return;const{scrollLeft:s,scrollTop:r}=o;Jb(e,s,r)}},{target:t}),Rt("touchstart",i=>{i.preventDefault()},{target:t,passive:!1}),Rt("wheel",i=>{if(i.metaKey||i.ctrlKey){i.preventDefault();const{deltaX:o,deltaY:s}=i,r=e.viewport.zoom,a=Math.sign(s),c=e0*100,u=Math.abs(s);let d=s;u>c&&(d=c*a);let m=r-d/100;m+=Math.log10(Math.max(1,r))*-a*Math.min(1,u/20),OS(e,m,q.getMovingPointInBoard(e))}},{target:t,passive:!1});const n=p.useRef(!1);p.useEffect(()=>{const i=new ResizeObserver(()=>{if(!n.current){n.current=!0;return}ec(e),Es(e),ks(e)});return i.observe(q.getBoardContainer(e)),()=>{i&&i.disconnect()}},[])},Gc=p.createContext(null),bt=()=>{const e=p.useContext(Gc);if(!e)throw new Error("The `useBoard` hook must be used inside the <Plait> component's context.");const{board:t}=e;return t},ag=()=>{const e=p.useContext(Gc);if(!e)throw new Error("The `useBoard` hook must be used inside the <Plait> component's context.");const{listRender:t}=e;return t},XS=({style:e,className:t,children:n,afterInit:i})=>{var g,b;const o=p.useRef(null),s=p.useRef(null),r=p.useRef(null),a=p.useRef(null),c=p.useRef(null),u=p.useRef(null),d=p.useRef(null),m=p.useRef(null),f=bt(),h=ag();return p.useEffect(()=>{const x=VS.svg(o.current,{options:{roughness:0,strokeWidth:1}});bu.set(f,x),xu.set(f,o.current),Nu.set(f,!0),yu.set(f,{lowerHost:s.current,host:r.current,upperHost:a.current,topHost:c.current,activeHost:u.current,container:m.current,viewportContainer:d.current});const y=new t0;return wu.set(f,y),vu.set(f,new Map),h.initialized||(h.initialize(f.children,{board:f,parent:f,parentG:q.getElementHost(f)}),i&&i(f)),ec(f),Es(f),n0(f),()=>{wu.delete(f),sl.delete(f),rl.delete(f),yu.delete(f),Nu.delete(f),xu.delete(f),bu.delete(f),vu.delete(f)}},[]),BS(f,d,o),$S(f,d),l.jsxDEV("div",{className:K(t,i0,`${KS()}`,`theme-${(g=f.theme)==null?void 0:g.themeColorMode}`,`pointer-${f.pointer}`,{focused:q.isFocus(f),readonly:q.isReadonly(f),"disabled-scroll":((b=f.options)==null?void 0:b.disabledScrollOnNonFocus)&&!q.isFocus(f)}),ref:m,style:e,children:l.jsxDEV("div",{className:"viewport-container",ref:d,style:{width:"100%",height:"100%",overflow:"auto"},children:[l.jsxDEV("svg",{ref:o,width:"100%",height:"100%",style:{position:"relative"},className:"board-host-svg",children:[l.jsxDEV("g",{className:"element-lower-host",ref:s},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/react-board/src/board.tsx",lineNumber:136,columnNumber:11},void 0),l.jsxDEV("g",{className:"element-host",ref:r},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/react-board/src/board.tsx",lineNumber:137,columnNumber:11},void 0),l.jsxDEV("g",{className:"element-upper-host",ref:a},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/react-board/src/board.tsx",lineNumber:138,columnNumber:11},void 0),l.jsxDEV("g",{className:"element-top-host",ref:c},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/react-board/src/board.tsx",lineNumber:139,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/react-board/src/board.tsx",lineNumber:129,columnNumber:9},void 0),l.jsxDEV("svg",{width:"100%",height:"100%",className:"board-active-svg",children:l.jsxDEV("g",{className:"active-host-g",ref:u},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/react-board/src/board.tsx",lineNumber:142,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/react-board/src/board.tsx",lineNumber:141,columnNumber:9},void 0),n]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/react-board/src/board.tsx",lineNumber:124,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/react-board/src/board.tsx",lineNumber:106,columnNumber:5},void 0)},KS=()=>o0?"safari":s0?"chrome":r0?"firefox":"",YS=e=>{const t=e;return t.renderText=(n,i)=>{const o=Or.createRoot(n);let s;const r=l.jsxDEV(Eu,{...i,afterInit:u=>{s=u,i.afterInit&&i.afterInit(u)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/react-board/src/plugins/with-react.tsx",lineNumber:22,columnNumber:7},void 0);o.render(r);let a={...i};return{destroy:()=>{setTimeout(()=>{o.unmount()},0)},update:u=>{if(!(u&&a&&!Object.keys(u).every(f=>u[f]===a[f])))return;const m=Sn.isReadOnly(s);a={...a,...u},o.render(l.jsxDEV(Eu,{...a},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/react-board/src/plugins/with-react.tsx",lineNumber:52,columnNumber:21},void 0)),m===!0&&a.readonly===!1?setTimeout(()=>{Sn.focus(s)},0):m===!1&&a.readonly===!0&&(Sn.blur(s),Sn.deselect(s))}}},t},ZS=e=>{const{pointerDown:t,pointerMove:n,pointerUp:i,globalPointerUp:o}=e,s=[];let r=!1;return e.pointerDown=a=>{const c=[a.clientX,a.clientY];s.length<2&&(e.viewport.zoom,s.push({pointerId:a.pointerId,lastPoint:c,currentPoint:c,hasMoved:!1})),t(a)},e.pointerMove=a=>{const c=[a.clientX,a.clientY];if(s.length>=2){const u=s.find(d=>d.pointerId===a.pointerId);if(u&&(u.currentPoint=c,u.hasMoved=!0,s.length===2&&s.every(d=>d.hasMoved))){const d=s[0],m=s[1],f=ku(...d.lastPoint,...m.lastPoint),h=ku(...d.currentPoint,...m.currentPoint),g=h[0]-f[0],b=h[1]-f[1],x=q.getBoardContainer(e).getBoundingClientRect(),y=x.width/2,N=x.height/2,w=e.viewport.zoom,D=rg(e);let S=D[0]+y/w-g/w,E=D[1]+N/w-b/w,k=[S-x.width/2/w,E-x.height/2/w],V=w;const R=gr(...d.lastPoint,...m.lastPoint),I=gr(...d.currentPoint,...m.currentPoint)/R,U=[d.currentPoint[0]-d.lastPoint[0],d.currentPoint[1]-d.lastPoint[1]],A=[m.currentPoint[0]-m.lastPoint[0],m.currentPoint[1]-m.lastPoint[1]],j=U[0]*A[0]+U[1]*A[1],C=Math.sqrt(U[0]*U[0]+U[1]*U[1]),M=Math.sqrt(A[0]*A[0]+A[1]*A[1]),J=j/(C*M||1);if(J<-.7||J<=.8&&r&&I>=.01?r=!0:r=!1,r){V=Math.min(Math.max(e.viewport.zoom*I,a0),l0);const P=q.getBoardContainer(e).getBoundingClientRect(),G=h[0]-P.x,de=h[1]-P.y;S=k[0]+G/w,E=k[1]+de/w,k=[S-G/V,E-de/V]}ge.updateViewport(e,k,V),s.forEach(ye=>{ye.lastPoint=ye.currentPoint,ye.hasMoved=!1})}return}n(a)},e.pointerUp=a=>{const c=s.findIndex(u=>u.pointerId===a.pointerId);c!==-1&&s.splice(c,1),i(a)},e.globalPointerUp=a=>{const c=s.findIndex(u=>u.pointerId===a.pointerId);c!==-1&&s.splice(c,1),o(a)},e},QS=({value:e,children:t,options:n,plugins:i,viewport:o,theme:s,onChange:r,onSelectionChange:a,onValueChange:c,onViewportChange:u,onThemeChange:d})=>{const[m,f]=p.useState(()=>{const N=JS(e,n,i,o,s),w=eT(N);return{v:0,board:N,listRender:w}}),{board:h,listRender:g}=m,b=p.useCallback(()=>{if(r){const E={children:h.children,operations:h.operations,viewport:h.viewport,selection:h.selection,theme:h.theme};r(E)}const N=h.operations.some(E=>Bi.isSetSelectionOperation(E)),w=h.operations.some(E=>Bi.isSetViewportOperation(E)),D=h.operations.some(E=>Bi.isSetThemeOperation(E)),S=h.operations.length>0&&!h.operations.every(E=>Bi.isSetSelectionOperation(E)||Bi.isSetViewportOperation(E)||Bi.isSetThemeOperation(E));c&&S&&c(h.children),a&&N&&a(h.selection),u&&w&&u(h.viewport),d&&D&&d(h.theme.themeColorMode),f(E=>({v:E.v+1,board:h,listRender:g}))},[h,r,a,c,u,d]);p.useEffect(()=>(rl.set(h,()=>{if(h.operations.length&&h.operations.every(S=>S.type==="set_selection")){g.update(h.children,{board:h,parent:h,parentG:q.getElementHost(h)});return}const w=h.operations.length&&h.operations.some(S=>S.type==="set_viewport");if(w&&c0(h)){u0(h,!1),g.update(h.children,{board:h,parent:h,parentG:q.getElementHost(h)});return}g.update(h.children,{board:h,parent:h,parentG:q.getElementHost(h)}),w?Es(h):Fp(h),ks(h),Oe(h).forEach(S=>{const E=no.getElementRef(S);E==null||E.updateActiveSection()})}),sl.set(h,()=>{b()}),()=>{rl.delete(h),sl.delete(h)}),[h]);const x=p.useRef(!0),y=p.useRef(o);return p.useEffect(()=>{const N=y.current;y.current=o;const w=e!==h.children;o&&!Su.get(h)&&!w&&(iT(N,o)||(h.viewport=o,em(h,"viewport-prop-change")))},[o,h,e]),p.useEffect(()=>{if(x.current){x.current=!1;return}e!==m.board.children&&!Su.get(h)&&(h.children=e,g.update(h.children,{board:h,parent:h,parentG:q.getElementHost(h)}),o?(h.viewport=o,em(h,"value-with-viewport-change")):ge.fitViewport(h))},[e,o]),l.jsxDEV(Gc.Provider,{value:m,children:t},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/react-board/src/wrapper.tsx",lineNumber:242,columnNumber:5},void 0)},JS=(e,t,n,i,o)=>{let s=d0(m0(p0(f0(h0(g0(b0(x0(N0(YS(y0(w0(v0(e,t)))))))))))));return n.forEach(r=>{s=r(s)}),ZS(s),i&&(s.viewport=i),o&&(s.theme=o),s},eT=e=>new E0(e),tT=30,nT=6,Yi=2,Qo=new WeakMap,Ml=new WeakMap,em=(e,t)=>{ec(e),Es(e),ks(e),cT(e,t)},iT=(e,t)=>{var n,i,o,s;return e===t?!0:!e||!t?!1:e.zoom===t.zoom&&e.offsetX===t.offsetX&&e.offsetY===t.offsetY&&((n=e.origination)==null?void 0:n[0])===((i=t.origination)==null?void 0:i[0])&&((o=e.origination)==null?void 0:o[1])===((s=t.origination)==null?void 0:s[1])},oT="aitu_debug_viewport",sT=()=>{if(typeof window>"u")return!1;try{return new URLSearchParams(window.location.search).get("debugViewport")==="1"||window.localStorage.getItem(oT)==="true"}catch{return!1}},rT=e=>{var t,n;return{zoom:e==null?void 0:e.zoom,originX:(t=e==null?void 0:e.origination)==null?void 0:t[0],originY:(n=e==null?void 0:e.origination)==null?void 0:n[1],offsetX:e==null?void 0:e.offsetX,offsetY:e==null?void 0:e.offsetY}},aT=e=>{try{const t=q.getViewportContainer(e),n=q.getHost(e);return{domScrollLeft:t.scrollLeft,domScrollTop:t.scrollTop,domScrollWidth:t.scrollWidth,domScrollHeight:t.scrollHeight,domClientWidth:t.clientWidth,domClientHeight:t.clientHeight,domOffsetWidth:t.offsetWidth,domOffsetHeight:t.offsetHeight,styleWidth:t.style.width,styleHeight:t.style.height,viewBox:n.getAttribute("viewBox"),svgWidth:n.style.width,svgHeight:n.style.height}}catch(t){return{error:t instanceof Error?t.message:String(t)}}},lT=e=>{var t;try{const n=(t=e.viewport)==null?void 0:t.origination;if(!n)return null;const i=q.getHost(e).getAttribute("viewBox");if(!i)return null;const[o,s]=i.trim().split(/[\s,]+/).map(a=>Number(a));if(!Number.isFinite(o)||!Number.isFinite(s))return null;const r=e.viewport.zoom;return{targetScrollLeft:(n[0]-o)*r,targetScrollTop:(n[1]-s)*r}}catch{return null}},cT=(e,t)=>{if(typeof window>"u")return;const n=(Qo.get(e)??0)+1;Qo.set(e,n),dT(e,t);let i=0;const o=()=>{if(Qo.get(e)!==n)return;const s=lT(e);if(!s){Il("wrapper:restore-scroll",e,{reason:t,status:"no-target",attempts:i+1}),_r(e),is(e,!1);return}const r=q.getViewportContainer(e),a=Math.abs(r.scrollLeft-s.targetScrollLeft),c=Math.abs(r.scrollTop-s.targetScrollTop);(a>Yi||c>Yi)&&uT(e,s);const d=Math.abs(r.scrollLeft-s.targetScrollLeft),m=Math.abs(r.scrollTop-s.targetScrollTop),f=d<=Yi&&m<=Yi;if(!(i+1<tT&&(!f||i+1<nT))){Il("wrapper:restore-scroll",e,{reason:t,status:f?"ok":"mismatch",attempts:i+1,...s,deltaLeft:d,deltaTop:m}),_r(e),is(e,!1);return}i+=1,tm(o)};tm(o)},tm=e=>{if(typeof window.requestAnimationFrame=="function"){window.requestAnimationFrame(e);return}window.setTimeout(e,0)},uT=(e,t)=>{const n=q.getViewportContainer(e);is(e,!0),n.scrollLeft=t.targetScrollLeft,n.scrollTop=t.targetScrollTop;const i=Math.abs(n.scrollLeft-t.targetScrollLeft),o=Math.abs(n.scrollTop-t.targetScrollTop);(i>Yi||o>Yi)&&ks(e)},dT=(e,t)=>{_r(e);const n=o=>{mT(e,t,o)},i={capture:!0,passive:!0};window.addEventListener("wheel",n,i),window.addEventListener("pointerdown",n,i),window.addEventListener("touchstart",n,i),window.addEventListener("keydown",n,i),Ml.set(e,()=>{window.removeEventListener("wheel",n,i),window.removeEventListener("pointerdown",n,i),window.removeEventListener("touchstart",n,i),window.removeEventListener("keydown",n,i)})},mT=(e,t,n)=>{Qo.set(e,(Qo.get(e)??0)+1),_r(e),pT(n)&&FS(e,2),is(e,!1),Il("wrapper:restore-scroll",e,{reason:t,status:"cancelled-by-user"})},pT=e=>typeof WheelEvent<"u"&&e instanceof WheelEvent&&(e.ctrlKey||e.metaKey),_r=e=>{const t=Ml.get(e);t&&(t(),Ml.delete(e))},Il=(e,t,n)=>{sT()&&console.info(`[ViewportRestore] ${e} ${fT({...n,childrenCount:t.children.length,...rT(t.viewport),...aT(t)})}`)},fT=e=>Object.entries(e).filter(([,t])=>t!=null).map(([t,n])=>typeof n=="number"?`${t}=${Number.isInteger(n)?n:n.toFixed(3)}`:typeof n=="string"||typeof n=="boolean"?`${t}=${n}`:`${t}=${JSON.stringify(n)}`).join(" ");var Oa={exports:{}},nm;function hT(){return nm||(nm=1,(function(e){/*!mobile-detect v1.4.5 2021-03-13*//*!@license Copyright 2013, Heinrich Goebl, License: MIT, see https://github.com/hgoebl/mobile-detect.js*/(function(t,n){t(function(){var i={};i.mobileDetectRules={phones:{iPhone:"\\biPhone\\b|\\biPod\\b",BlackBerry:"BlackBerry|\\bBB10\\b|rim[0-9]+|\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\b-[0-9]+",Pixel:"; \\bPixel\\b",HTC:"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel",Nexus:"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 5X|Nexus 6",Dell:"Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b",Motorola:"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052",Samsung:"\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F|SM-G610F|SM-G981B|SM-G892A|SM-A530F",LG:"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710",Sony:"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533|SOV34|601SO|F8332",Asus:"Asus.*Galaxy|PadFone.*Mobile",Xiaomi:"^(?!.*\\bx11\\b).*xiaomi.*$|POCOPHONE F1|MI 8|Redmi Note 9S|Redmi Note 5A Prime|N2G47H|M2001J2G|M2001J2I|M1805E10A|M2004J11G|M1902F1G|M2002J9G|M2004J19G|M2003J6A1G",NokiaLumia:"Lumia [0-9]{3,4}",Micromax:"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b",Palm:"PalmSource|Palm",Vertu:"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature",Pantech:"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790",Fly:"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250",Wiko:"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM",iMobile:"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)",SimValley:"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b",Wolfgang:"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q",Alcatel:"Alcatel",Nintendo:"Nintendo (3DS|Switch)",Amoi:"Amoi",INQ:"INQ",OnePlus:"ONEPLUS",GenericPhone:"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},tablets:{iPad:"iPad|iPad.*Mobile",NexusTablet:"Android.*Nexus[\\s]+(7|9|10)",GoogleTablet:"Android.*Pixel C",SamsungTablet:"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V|SM-P610|SM-T290|SM-T515|SM-T590|SM-T595|SM-T725|SM-T817P|SM-P585N0|SM-T395|SM-T295|SM-T865|SM-P610N|SM-P615|SM-T970|SM-T380|SM-T5950|SM-T905|SM-T231|SM-T500|SM-T860",Kindle:"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)",SurfaceTablet:"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)",HPTablet:"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10",AsusTablet:"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b",BlackBerryTablet:"PlayBook|RIM Tablet",HTCtablet:"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410",MotorolaTablet:"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617",NookTablet:"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2",AcerTablet:"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20\\b|\\bA3-A30|A3-A40",ToshibaTablet:"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO",LGTablet:"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b",FujitsuTablet:"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b",PrestigioTablet:"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002",LenovoTablet:"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X|TB-X704F|TB-X104F|TB3-X70F|TB-X705F|TB-8504F|TB3-X70L|TB3-710F|TB-X704L",DellTablet:"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7",YarvikTablet:"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b",MedionTablet:"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB",ArnovaTablet:"97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2",IntensoTablet:"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004",IRUTablet:"M702pro",MegafonTablet:"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b",EbodaTablet:"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)",AllViewTablet:"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)",ArchosTablet:"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b",AinolTablet:"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark",NokiaLumiaTablet:"Lumia 2520",SonyTablet:"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712",PhilipsTablet:"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b",CubeTablet:"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT",CobyTablet:"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010",MIDTablet:"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10",MSITablet:"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b",SMiTTablet:"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)",RockChipTablet:"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A",FlyTablet:"IQ310|Fly Vision",bqTablet:"Android.*(bq)?.*\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\b|Maxwell.*Lite|Maxwell.*Plus",HuaweiTablet:"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19",NecTablet:"\\bN-06D|\\bN-08D",PantechTablet:"Pantech.*P4100",BronchoTablet:"Broncho.*(N701|N708|N802|a710)",VersusTablet:"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b",ZyncTablet:"z1000|Z99 2G|z930|z990|z909|Z919|z900",PositivoTablet:"TB07STA|TB10STA|TB07FTA|TB10FTA",NabiTablet:"Android.*\\bNabi",KoboTablet:"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build",DanewTablet:"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b",TexetTablet:"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE",PlaystationTablet:"Playstation.*(Portable|Vita)",TrekstorTablet:"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab",PyleAudioTablet:"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b",AdvanTablet:"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ",DanyTechTablet:"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1",GalapadTablet:"Android [0-9.]+; [a-z-]+; \\bG1\\b",MicromaxTablet:"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b",KarbonnTablet:"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b",AllFineTablet:"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide",PROSCANTablet:"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b",YONESTablet:"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026",ChangJiaTablet:"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503",GUTablet:"TX-A1301|TX-M9002|Q702|kf026",PointOfViewTablet:"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10",OvermaxTablet:"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027",HCLTablet:"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync",DPSTablet:"DPS Dream 9|DPS Dual 7",VistureTablet:"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10",CrestaTablet:"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989",MediatekTablet:"\\bMT8125|MT8389|MT8135|MT8377\\b",ConcordeTablet:"Concorde([ ]+)?Tab|ConCorde ReadMan",GoCleverTablet:"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042",ModecomTablet:"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003",VoninoTablet:"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b",ECSTablet:"V07OT2|TM105A|S10OT1|TR10CS1",StorexTablet:"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab",VodafoneTablet:"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400",EssentielBTablet:"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2",RossMoorTablet:"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711",iMobileTablet:"i-mobile i-note",TolinoTablet:"tolino tab [0-9.]+|tolino shine",AudioSonicTablet:"\\bC-22Q|T7-QC|T-17B|T-17P\\b",AMPETablet:"Android.* A78 ",SkkTablet:"Android.* (SKYPAD|PHOENIX|CYCLOPS)",TecnoTablet:"TECNO P9|TECNO DP8D",JXDTablet:"Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b",iJoyTablet:"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)",FX2Tablet:"FX2 PAD7|FX2 PAD10",XoroTablet:"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151",ViewsonicTablet:"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a",VerizonTablet:"QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1",OdysTablet:"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10",CaptivaTablet:"CAPTIVA PAD",IconbitTablet:"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S",TeclastTablet:"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi",OndaTablet:"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+|V10 \\b4G\\b",JaytechTablet:"TPC-PA762",BlaupunktTablet:"Endeavour 800NG|Endeavour 1010",DigmaTablet:"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b",EvolioTablet:"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b",LavaTablet:"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b",AocTablet:"MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712",MpmanTablet:"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010",CelkonTablet:"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b",WolderTablet:"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b",MediacomTablet:"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA",MiTablet:"\\bMI PAD\\b|\\bHM NOTE 1W\\b",NibiruTablet:"Nibiru M1|Nibiru Jupiter One",NexoTablet:"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI",LeaderTablet:"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100",UbislateTablet:"UbiSlate[\\s]?7C",PocketBookTablet:"Pocketbook",KocasoTablet:"\\b(TB-1207)\\b",HisenseTablet:"\\b(F5281|E2371)\\b",Hudl:"Hudl HT7S3|Hudl 2",TelstraTablet:"T-Hub2",GenericTablet:"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107"},oss:{AndroidOS:"Android",BlackBerryOS:"blackberry|\\bBB10\\b|rim tablet os",PalmOS:"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino",SymbianOS:"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b",WindowsMobileOS:"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;",WindowsPhoneOS:"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;",iOS:"\\biPhone.*Mobile|\\biPod|\\biPad|AppleCoreMedia",iPadOS:"CPU OS 13",SailfishOS:"Sailfish",MeeGoOS:"MeeGo",MaemoOS:"Maemo",JavaOS:"J2ME/|\\bMIDP\\b|\\bCLDC\\b",webOS:"webOS|hpwOS",badaOS:"\\bBada\\b",BREWOS:"BREW"},uas:{Chrome:"\\bCrMo\\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?",Dolfin:"\\bDolfin\\b",Opera:"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+",Skyfire:"Skyfire",Edge:"\\bEdgiOS\\b|Mobile Safari/[.0-9]* Edge",IE:"IEMobile|MSIEMobile",Firefox:"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS",Bolt:"bolt",TeaShark:"teashark",Blazer:"Blazer",Safari:"Version((?!\\bEdgiOS\\b).)*Mobile.*Safari|Safari.*Mobile|MobileSafari",WeChat:"\\bMicroMessenger\\b",UCBrowser:"UC.*Browser|UCWEB",baiduboxapp:"baiduboxapp",baidubrowser:"baidubrowser",DiigoBrowser:"DiigoBrowser",Mercury:"\\bMercury\\b",ObigoBrowser:"Obigo",NetFront:"NF-Browser",GenericBrowser:"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger",PaleMoon:"Android.*PaleMoon|Mobile.*PaleMoon"},props:{Mobile:"Mobile/[VER]",Build:"Build/[VER]",Version:"Version/[VER]",VendorID:"VendorID/[VER]",iPad:"iPad.*CPU[a-z ]+[VER]",iPhone:"iPhone.*CPU[a-z ]+[VER]",iPod:"iPod.*CPU[a-z ]+[VER]",Kindle:"Kindle/[VER]",Chrome:["Chrome/[VER]","CriOS/[VER]","CrMo/[VER]"],Coast:["Coast/[VER]"],Dolfin:"Dolfin/[VER]",Firefox:["Firefox/[VER]","FxiOS/[VER]"],Fennec:"Fennec/[VER]",Edge:"Edge/[VER]",IE:["IEMobile/[VER];","IEMobile [VER]","MSIE [VER];","Trident/[0-9.]+;.*rv:[VER]"],NetFront:"NetFront/[VER]",NokiaBrowser:"NokiaBrowser/[VER]",Opera:[" OPR/[VER]","Opera Mini/[VER]","Version/[VER]"],"Opera Mini":"Opera Mini/[VER]","Opera Mobi":"Version/[VER]",UCBrowser:["UCWEB[VER]","UC.*Browser/[VER]"],MQQBrowser:"MQQBrowser/[VER]",MicroMessenger:"MicroMessenger/[VER]",baiduboxapp:"baiduboxapp/[VER]",baidubrowser:"baidubrowser/[VER]",SamsungBrowser:"SamsungBrowser/[VER]",Iron:"Iron/[VER]",Safari:["Version/[VER]","Safari/[VER]"],Skyfire:"Skyfire/[VER]",Tizen:"Tizen/[VER]",Webkit:"webkit[ /][VER]",PaleMoon:"PaleMoon/[VER]",SailfishBrowser:"SailfishBrowser/[VER]",Gecko:"Gecko/[VER]",Trident:"Trident/[VER]",Presto:"Presto/[VER]",Goanna:"Goanna/[VER]",iOS:" \\bi?OS\\b [VER][ ;]{1}",Android:"Android [VER]",Sailfish:"Sailfish [VER]",BlackBerry:["BlackBerry[\\w]+/[VER]","BlackBerry.*Version/[VER]","Version/[VER]"],BREW:"BREW [VER]",Java:"Java/[VER]","Windows Phone OS":["Windows Phone OS [VER]","Windows Phone [VER]"],"Windows Phone":"Windows Phone [VER]","Windows CE":"Windows CE/[VER]","Windows NT":"Windows NT [VER]",Symbian:["SymbianOS/[VER]","Symbian/[VER]"],webOS:["webOS/[VER]","hpwOS/[VER];"]},utils:{Bot:"Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp|AspiegelBot",MobileBot:"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2",DesktopMode:"WPDesktop",TV:"SonyDTV|HbbTV",WebKit:"(webkit)[ /]([\\w.]+)",Console:"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\b",Watch:"SM-V700"}},i.detectMobileBrowsers={fullPattern:/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,shortPattern:/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,tabletPattern:/android|ipad|playbook|silk/i};var o=Object.prototype.hasOwnProperty,s;i.FALLBACK_PHONE="UnknownPhone",i.FALLBACK_TABLET="UnknownTablet",i.FALLBACK_MOBILE="UnknownMobile",s="isArray"in Array?Array.isArray:function(m){return Object.prototype.toString.call(m)==="[object Array]"};function r(m,f){return m!=null&&f!=null&&m.toLowerCase()===f.toLowerCase()}function a(m,f){var h,g,b=m.length;if(!b||!f)return!1;for(h=f.toLowerCase(),g=0;g<b;++g)if(h===m[g].toLowerCase())return!0;return!1}function c(m){for(var f in m)o.call(m,f)&&(m[f]=new RegExp(m[f],"i"))}function u(m){return(m||"").substr(0,500)}(function(){var f,h,g,b,x,y,N=i.mobileDetectRules;for(f in N.props)if(o.call(N.props,f)){for(h=N.props[f],s(h)||(h=[h]),x=h.length,b=0;b<x;++b)g=h[b],y=g.indexOf("[VER]"),y>=0&&(g=g.substring(0,y)+"([\\w._\\+]+)"+g.substring(y+5)),h[b]=new RegExp(g,"i");N.props[f]=h}c(N.oss),c(N.phones),c(N.tablets),c(N.uas),c(N.utils),N.oss0={WindowsPhoneOS:N.oss.WindowsPhoneOS,WindowsMobileOS:N.oss.WindowsMobileOS}})(),i.findMatch=function(m,f){for(var h in m)if(o.call(m,h)&&m[h].test(f))return h;return null},i.findMatches=function(m,f){var h=[];for(var g in m)o.call(m,g)&&m[g].test(f)&&h.push(g);return h},i.getVersionStr=function(m,f){var h=i.mobileDetectRules.props,g,b,x,y;if(o.call(h,m)){for(g=h[m],x=g.length,b=0;b<x;++b)if(y=g[b].exec(f),y!==null)return y[1]}return null},i.getVersion=function(m,f){var h=i.getVersionStr(m,f);return h?i.prepareVersionNo(h):NaN},i.prepareVersionNo=function(m){var f;return f=m.split(/[a-z._ \/\-]/i),f.length===1&&(m=f[0]),f.length>1&&(m=f[0]+".",f.shift(),m+=f.join("")),Number(m)},i.isMobileFallback=function(m){return i.detectMobileBrowsers.fullPattern.test(m)||i.detectMobileBrowsers.shortPattern.test(m.substr(0,4))},i.isTabletFallback=function(m){return i.detectMobileBrowsers.tabletPattern.test(m)},i.prepareDetectionCache=function(m,f,h){if(m.mobile===n){var g,b,x;if(b=i.findMatch(i.mobileDetectRules.tablets,f),b){m.mobile=m.tablet=b,m.phone=null;return}if(g=i.findMatch(i.mobileDetectRules.phones,f),g){m.mobile=m.phone=g,m.tablet=null;return}i.isMobileFallback(f)?(x=d.isPhoneSized(h),x===n?(m.mobile=i.FALLBACK_MOBILE,m.tablet=m.phone=null):x?(m.mobile=m.phone=i.FALLBACK_PHONE,m.tablet=null):(m.mobile=m.tablet=i.FALLBACK_TABLET,m.phone=null)):i.isTabletFallback(f)?(m.mobile=m.tablet=i.FALLBACK_TABLET,m.phone=null):m.mobile=m.tablet=m.phone=null}},i.mobileGrade=function(m){var f=m.mobile()!==null;return m.os("iOS")&&m.version("iPad")>=4.3||m.os("iOS")&&m.version("iPhone")>=3.1||m.os("iOS")&&m.version("iPod")>=3.1||m.version("Android")>2.1&&m.is("Webkit")||m.version("Windows Phone OS")>=7||m.is("BlackBerry")&&m.version("BlackBerry")>=6||m.match("Playbook.*Tablet")||m.version("webOS")>=1.4&&m.match("Palm|Pre|Pixi")||m.match("hp.*TouchPad")||m.is("Firefox")&&m.version("Firefox")>=12||m.is("Chrome")&&m.is("AndroidOS")&&m.version("Android")>=4||m.is("Skyfire")&&m.version("Skyfire")>=4.1&&m.is("AndroidOS")&&m.version("Android")>=2.3||m.is("Opera")&&m.version("Opera Mobi")>11&&m.is("AndroidOS")||m.is("MeeGoOS")||m.is("Tizen")||m.is("Dolfin")&&m.version("Bada")>=2||(m.is("UC Browser")||m.is("Dolfin"))&&m.version("Android")>=2.3||m.match("Kindle Fire")||m.is("Kindle")&&m.version("Kindle")>=3||m.is("AndroidOS")&&m.is("NookTablet")||m.version("Chrome")>=11&&!f||m.version("Safari")>=5&&!f||m.version("Firefox")>=4&&!f||m.version("MSIE")>=7&&!f||m.version("Opera")>=10&&!f?"A":m.os("iOS")&&m.version("iPad")<4.3||m.os("iOS")&&m.version("iPhone")<3.1||m.os("iOS")&&m.version("iPod")<3.1||m.is("Blackberry")&&m.version("BlackBerry")>=5&&m.version("BlackBerry")<6||m.version("Opera Mini")>=5&&m.version("Opera Mini")<=6.5&&(m.version("Android")>=2.3||m.is("iOS"))||m.match("NokiaN8|NokiaC7|N97.*Series60|Symbian/3")||m.version("Opera Mobi")>=11&&m.is("SymbianOS")?"B":(m.version("BlackBerry")<5||m.match("MSIEMobile|Windows CE.*Mobile")||m.version("Windows Mobile")<=5.2,"C")},i.detectOS=function(m){return i.findMatch(i.mobileDetectRules.oss0,m)||i.findMatch(i.mobileDetectRules.oss,m)},i.getDeviceSmallerSide=function(){return window.screen.width<window.screen.height?window.screen.width:window.screen.height};function d(m,f){this.ua=u(m),this._cache={},this.maxPhoneWidth=f||600}return d.prototype={constructor:d,mobile:function(){return i.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.mobile},phone:function(){return i.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.phone},tablet:function(){return i.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.tablet},userAgent:function(){return this._cache.userAgent===n&&(this._cache.userAgent=i.findMatch(i.mobileDetectRules.uas,this.ua)),this._cache.userAgent},userAgents:function(){return this._cache.userAgents===n&&(this._cache.userAgents=i.findMatches(i.mobileDetectRules.uas,this.ua)),this._cache.userAgents},os:function(){return this._cache.os===n&&(this._cache.os=i.detectOS(this.ua)),this._cache.os},version:function(m){return i.getVersion(m,this.ua)},versionStr:function(m){return i.getVersionStr(m,this.ua)},is:function(m){return a(this.userAgents(),m)||r(m,this.os())||r(m,this.phone())||r(m,this.tablet())||a(i.findMatches(i.mobileDetectRules.utils,this.ua),m)},match:function(m){return m instanceof RegExp||(m=new RegExp(m,"i")),m.test(this.ua)},isPhoneSized:function(m){return d.isPhoneSized(m||this.maxPhoneWidth)},mobileGrade:function(){return this._cache.grade===n&&(this._cache.grade=i.mobileGrade(this)),this._cache.grade}},typeof window<"u"&&window.screen?d.isPhoneSized=function(m){return m<0?n:i.getDeviceSmallerSide()<=m}:d.isPhoneSized=function(){},d._impl=i,d.version="1.4.5 2021-03-13",d})})((function(t){if(e.exports)return function(n){e.exports=n()};if(typeof window<"u")return function(n){window.MobileDetect=n()};throw new Error("unknown environment")})())})(Oa)),Oa.exports}var gT=hT();const bT=k0(gT),im=e=>l.jsxDEV("span",{className:"mind-node-emoji",style:{fontSize:`${e.fontSize}px`},children:e.emojiItem.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/emoji.tsx",lineNumber:5,columnNumber:5},void 0),xT=e=>{const t=e;return e.setPluginOptions(S0,{emojiPadding:0,spaceBetweenEmojis:4}),t.renderEmoji=(n,i)=>{const o=document.createElement("span");n.appendChild(o);const s=Or.createRoot(o);s.render(l.jsxDEV(im,{...i},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/with-mind-extend.tsx",lineNumber:31,columnNumber:17},void 0));let r={...i};return{destroy:()=>{setTimeout(()=>{s.unmount()},0)},update:c=>{r={...r,...c},s.render(l.jsxDEV(im,{...r},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/with-mind-extend.tsx",lineNumber:41,columnNumber:21},void 0))}}},t},NT=e=>{const t=p.useRef(null),[n,i]=p.useState(!1),[o,s]=p.useState(!0),{videoItem:r,isFocus:a=!1,isSelected:c=!1,readonly:u=!1}=e,{url:d,poster:m,videoType:f}=r,h=(d==null?void 0:d.replace("#video",""))||"";p.useEffect(()=>{const y=t.current;if(y){const N=()=>{s(!1),i(!1)},w=()=>{s(!1),i(!0)};return y.addEventListener("loadeddata",N),y.addEventListener("error",w),()=>{y.removeEventListener("loadeddata",N),y.removeEventListener("error",w)}}},[h]);const g=y=>{u&&y.stopPropagation()},b=y=>{u&&(y.stopPropagation(),y.preventDefault(),window.open(h,"_blank"))},x={position:"relative",width:"100%",height:"100%",backgroundColor:"#000",borderRadius:"4px",overflow:"hidden"};return n?l.jsxDEV("div",{style:x,"data-slideshow-media-control":"true",onClick:b,onPointerDown:g,onPointerUp:g,children:l.jsxDEV("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%",color:"#666",backgroundColor:"#f5f5f5",cursor:u?"pointer":"default"},children:[l.jsxDEV("div",{style:{fontSize:"48px",marginBottom:"8px"},children:"🎬"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/video.tsx",lineNumber:97,columnNumber:11},void 0),l.jsxDEV("div",{style:{fontSize:"14px",textAlign:"center",padding:"0 16px"},children:"Video failed to load"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/video.tsx",lineNumber:98,columnNumber:11},void 0),u&&l.jsxDEV("div",{style:{fontSize:"12px",color:"#999",marginTop:"4px"},children:"Click to open in new window"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/video.tsx",lineNumber:102,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/video.tsx",lineNumber:87,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/video.tsx",lineNumber:80,columnNumber:7},void 0):l.jsxDEV("div",{style:x,"data-slideshow-media-control":"true",onClick:b,onPointerDown:g,onPointerUp:g,children:[o&&l.jsxDEV("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0, 0, 0, 0.7)",color:"white",zIndex:1},children:l.jsxDEV("div",{style:{textAlign:"center"},children:[l.jsxDEV("div",{style:{fontSize:"24px",marginBottom:"8px"},children:"⏳"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/video.tsx",lineNumber:134,columnNumber:13},void 0),l.jsxDEV("div",{style:{fontSize:"14px"},children:"Loading video..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/video.tsx",lineNumber:135,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/video.tsx",lineNumber:133,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/video.tsx",lineNumber:120,columnNumber:9},void 0),l.jsxDEV("video",{ref:t,"data-slideshow-media-control":"true",src:h,poster:m,width:"100%",height:"100%",controls:!u,muted:!0,playsInline:!0,draggable:!1,className:K("video-origin",{"video-origin--focus":a,"video-origin--selected":c}),style:{width:"100%",height:"100%",objectFit:"contain"},onPointerDown:g,onPointerUp:g,onError:()=>i(!0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/video.tsx",lineNumber:139,columnNumber:7},void 0),u&&l.jsxDEV("div",{style:{position:"absolute",top:"8px",right:"8px",backgroundColor:"rgba(0, 0, 0, 0.6)",color:"white",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",pointerEvents:"none"},children:"🎬 Video"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/video.tsx",lineNumber:164,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/video.tsx",lineNumber:112,columnNumber:5},void 0)},yT=e=>{if(e.isVideo===!0||e.videoType)return!0;const t=e.url||"";return t.includes("#video")||t.includes("#merged-video-")?!0:[".mp4",".avi",".mov",".wmv",".flv",".webm",".mkv"].some(i=>t.toLowerCase().includes(i))},om=e=>{const t=p.useCallback(()=>{T0(e.board,e.element,e.imageItem.url)},[e.board,e.element,e.imageItem.url]),n=e.element,i=n==null?void 0:n.pptImageStatus,o=n==null?void 0:n.pptImagePrompt,s=n==null?void 0:n.frameId,r=(n==null?void 0:n.isAudio)===!0||(n==null?void 0:n.audioType)==="music-card"||typeof(n==null?void 0:n.audioUrl)=="string"&&n.audioUrl.length>0,a=yT(e.imageItem),c=!r&&!a&&typeof(n==null?void 0:n.frameId)=="string",u=p.useCallback(async()=>{var m;if(!(!e.board||!s||!o||i==="loading")){Da(e.board,s,"loading"),Ms(e.board,s,"loading");try{const f=await D0({prompt:o,size:"16x9"});if(f.success&&((m=f.data)!=null&&m.url)){_0(e.board,s);const h=e.board.children.find(g=>g.id===s);if(h){const g=fe.getRectangleByPoints(h.points),b=j0({x:g.x,y:g.y,width:g.width,height:g.height});await P0(e.board,f.data.url,"image",s,{width:g.width,height:g.height},{width:800,height:450},b)}Ms(e.board,s,"generated")}else Da(e.board,s,"placeholder"),Ms(e.board,s,"placeholder"),se.error(f.error||"图片生成失败")}catch(f){Da(e.board,s,"placeholder"),Ms(e.board,s,"placeholder"),se.error((f==null?void 0:f.message)||"图片生成失败")}}},[e.board,s,o,i]);if(n!=null&&n.pptImagePlaceholder){const m=i==="loading";return l.jsxDEV("div",{className:"ppt-image-placeholder",onClick:m?void 0:u,style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column",gap:"8px",borderRadius:"8px",border:"1px dashed #d9d9d9",backgroundColor:"rgba(245,245,245,0.85)",color:"#999",fontSize:"13px",cursor:m?"default":"pointer",userSelect:"none"},children:[m?l.jsxDEV(C0,{size:"small"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/image.tsx",lineNumber:144,columnNumber:22},void 0):null,l.jsxDEV("span",{children:m?"生成配图中…":"点击生成配图"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/image.tsx",lineNumber:145,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/image.tsx",lineNumber:124,columnNumber:7},void 0)}if(a)return l.jsxDEV(NT,{videoItem:{url:e.imageItem.url,width:e.imageItem.width,height:e.imageItem.height,videoType:e.imageItem.videoType,poster:e.imageItem.poster},isFocus:e.isFocus,isSelected:e.isSelected,readonly:e.readonly},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/image.tsx",lineNumber:153,columnNumber:7},void 0);const d={src:e.imageItem.url,draggable:!1,...c?{style:{width:"100%",height:"100%",objectFit:"contain",display:"block"}}:{width:"100%"}};return l.jsxDEV("div",{"data-slideshow-legacy-audio":r?"true":void 0,style:c?{width:"100%",height:"100%"}:void 0,children:l.jsxDEV("img",{...d,className:K("image-origin",{"image-origin--focus":e.isFocus}),onError:t},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/image.tsx",lineNumber:192,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/components/image.tsx",lineNumber:186,columnNumber:5},void 0)};/*!
17
+ * Viewer.js v1.11.7
18
+ * https://fengyuanchen.github.io/viewerjs
19
+ *
20
+ * Copyright 2015-present Chen Fengyuan
21
+ * Released under the MIT license
22
+ *
23
+ * Date: 2024-11-24T04:32:19.116Z
24
+ */function wT(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function sm(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,lg(i.key),i)}}function vT(e,t,n){return t&&sm(e.prototype,t),n&&sm(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function ET(e,t,n){return(t=lg(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function rm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,i)}return n}function Wc(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?rm(Object(n),!0).forEach(function(i){ET(e,i,n[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):rm(Object(n)).forEach(function(i){Object.defineProperty(e,i,Object.getOwnPropertyDescriptor(n,i))})}return e}function kT(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var i=n.call(e,t);if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}function lg(e){var t=kT(e,"string");return typeof t=="symbol"?t:t+""}function Vl(e){"@babel/helpers - typeof";return Vl=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Vl(e)}var am={backdrop:!0,button:!0,navbar:!0,title:!0,toolbar:!0,className:"",container:"body",filter:null,fullscreen:!0,inheritedAttributes:["crossOrigin","decoding","isMap","loading","referrerPolicy","sizes","srcset","useMap"],initialCoverage:.9,initialViewIndex:0,inline:!1,interval:5e3,keyboard:!0,focus:!0,loading:!0,loop:!0,minWidth:200,minHeight:100,movable:!0,rotatable:!0,scalable:!0,zoomable:!0,zoomOnTouch:!0,zoomOnWheel:!0,slideOnTouch:!0,toggleOnDblclick:!0,tooltip:!0,transition:!0,zIndex:2015,zIndexInline:0,zoomRatio:.1,minZoomRatio:.01,maxZoomRatio:100,url:"src",ready:null,show:null,shown:null,hide:null,hidden:null,view:null,viewed:null,move:null,moved:null,rotate:null,rotated:null,scale:null,scaled:null,zoom:null,zoomed:null,play:null,stop:null},ST='<div class="viewer-container" tabindex="-1" touch-action="none"><div class="viewer-canvas"></div><div class="viewer-footer"><div class="viewer-title"></div><div class="viewer-toolbar"></div><div class="viewer-navbar"><ul class="viewer-list" role="navigation"></ul></div></div><div class="viewer-tooltip" role="alert" aria-hidden="true"></div><div class="viewer-button" data-viewer-action="mix" role="button"></div><div class="viewer-player"></div></div>',ha=typeof window<"u"&&typeof window.document<"u",Gn=ha?window:{},ro=ha&&Gn.document.documentElement?"ontouchstart"in Gn.document.documentElement:!1,$c=ha?"PointerEvent"in Gn:!1,Ae="viewer",cr="move",cg="switch",zo="zoom",zs="".concat(Ae,"-active"),TT="".concat(Ae,"-close"),ur="".concat(Ae,"-fade"),Ul="".concat(Ae,"-fixed"),DT="".concat(Ae,"-fullscreen"),lm="".concat(Ae,"-fullscreen-exit"),wi="".concat(Ae,"-hide"),_T="".concat(Ae,"-hide-md-down"),jT="".concat(Ae,"-hide-sm-down"),PT="".concat(Ae,"-hide-xs-down"),ln="".concat(Ae,"-in"),Jo="".concat(Ae,"-invisible"),ao="".concat(Ae,"-loading"),CT="".concat(Ae,"-move"),cm="".concat(Ae,"-open"),Gi="".concat(Ae,"-show"),xt="".concat(Ae,"-transition"),go="click",Rl="dblclick",um="dragstart",dm="focusin",mm="keydown",dn="load",Ti="error",AT=ro?"touchend touchcancel":"mouseup",MT=ro?"touchmove":"mousemove",IT=ro?"touchstart":"mousedown",pm=$c?"pointerdown":IT,fm=$c?"pointermove":MT,hm=$c?"pointerup pointercancel":AT,gm="resize",hn="transitionend",bm="wheel",xm="ready",Nm="show",ym="shown",wm="hide",vm="hidden",Em="view",hs="viewed",km="move",Sm="moved",Tm="rotate",Dm="rotated",_m="scale",jm="scaled",Pm="zoom",Cm="zoomed",Am="play",Mm="stop",jr="".concat(Ae,"Action"),Xc=/\s\s*/,Gs=["zoom-in","zoom-out","one-to-one","reset","prev","play","next","rotate-left","rotate-right","flip-horizontal","flip-vertical"];function gs(e){return typeof e=="string"}var VT=Number.isNaN||Gn.isNaN;function ht(e){return typeof e=="number"&&!VT(e)}function Zi(e){return typeof e>"u"}function bo(e){return Vl(e)==="object"&&e!==null}var UT=Object.prototype.hasOwnProperty;function Qi(e){if(!bo(e))return!1;try{var t=e.constructor,n=t.prototype;return t&&n&&UT.call(n,"isPrototypeOf")}catch{return!1}}function Ze(e){return typeof e=="function"}function nt(e,t){if(e&&Ze(t))if(Array.isArray(e)||ht(e.length)){var n=e.length,i;for(i=0;i<n&&t.call(e,e[i],i,e)!==!1;i+=1);}else bo(e)&&Object.keys(e).forEach(function(o){t.call(e,e[o],o,e)});return e}var en=Object.assign||function(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];return bo(t)&&i.length>0&&i.forEach(function(s){bo(s)&&Object.keys(s).forEach(function(r){t[r]=s[r]})}),t},RT=/^(?:width|height|left|top|marginLeft|marginTop)$/;function xn(e,t){var n=e.style;nt(t,function(i,o){RT.test(o)&&ht(i)&&(i+="px"),n[o]=i})}function qT(e){return gs(e)?e.replace(/&(?!amp;|quot;|#39;|lt;|gt;)/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;"):e}function $i(e,t){return!e||!t?!1:e.classList?e.classList.contains(t):e.className.indexOf(t)>-1}function we(e,t){if(!(!e||!t)){if(ht(e.length)){nt(e,function(i){we(i,t)});return}if(e.classList){e.classList.add(t);return}var n=e.className.trim();n?n.indexOf(t)<0&&(e.className="".concat(n," ").concat(t)):e.className=t}}function Ge(e,t){if(!(!e||!t)){if(ht(e.length)){nt(e,function(n){Ge(n,t)});return}if(e.classList){e.classList.remove(t);return}e.className.indexOf(t)>=0&&(e.className=e.className.replace(t,""))}}function bs(e,t,n){if(t){if(ht(e.length)){nt(e,function(i){bs(i,t,n)});return}n?we(e,t):Ge(e,t)}}var LT=/([a-z\d])([A-Z])/g;function Kc(e){return e.replace(LT,"$1-$2").toLowerCase()}function Ji(e,t){return bo(e[t])?e[t]:e.dataset?e.dataset[t]:e.getAttribute("data-".concat(Kc(t)))}function ql(e,t,n){bo(n)?e[t]=n:e.dataset?e.dataset[t]=n:e.setAttribute("data-".concat(Kc(t)),n)}var ug=(function(){var e=!1;if(ha){var t=!1,n=function(){},i=Object.defineProperty({},"once",{get:function(){return e=!0,t},set:function(s){t=s}});Gn.addEventListener("test",n,i),Gn.removeEventListener("test",n,i)}return e})();function Qe(e,t,n){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},o=n;t.trim().split(Xc).forEach(function(s){if(!ug){var r=e.listeners;r&&r[s]&&r[s][n]&&(o=r[s][n],delete r[s][n],Object.keys(r[s]).length===0&&delete r[s],Object.keys(r).length===0&&delete e.listeners)}e.removeEventListener(s,o,i)})}function Te(e,t,n){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},o=n;t.trim().split(Xc).forEach(function(s){if(i.once&&!ug){var r=e.listeners,a=r===void 0?{}:r;o=function(){delete a[s][n],e.removeEventListener(s,o,i);for(var u=arguments.length,d=new Array(u),m=0;m<u;m++)d[m]=arguments[m];n.apply(e,d)},a[s]||(a[s]={}),a[s][n]&&e.removeEventListener(s,a[s][n],i),a[s][n]=o,e.listeners=a}e.addEventListener(s,o,i)})}function vt(e,t,n,i){var o;return Ze(Event)&&Ze(CustomEvent)?o=new CustomEvent(t,Wc({bubbles:!0,cancelable:!0,detail:n},i)):(o=document.createEvent("CustomEvent"),o.initCustomEvent(t,!0,!0,n)),e.dispatchEvent(o)}function BT(e){var t=e.getBoundingClientRect();return{left:t.left+(window.pageXOffset-document.documentElement.clientLeft),top:t.top+(window.pageYOffset-document.documentElement.clientTop)}}function dr(e){var t=e.rotate,n=e.scaleX,i=e.scaleY,o=e.translateX,s=e.translateY,r=[];ht(o)&&o!==0&&r.push("translateX(".concat(o,"px)")),ht(s)&&s!==0&&r.push("translateY(".concat(s,"px)")),ht(t)&&t!==0&&r.push("rotate(".concat(t,"deg)")),ht(n)&&n!==1&&r.push("scaleX(".concat(n,")")),ht(i)&&i!==1&&r.push("scaleY(".concat(i,")"));var a=r.length?r.join(" "):"none";return{WebkitTransform:a,msTransform:a,transform:a}}function OT(e){return gs(e)?decodeURIComponent(e.replace(/^.*\//,"").replace(/[?&#].*$/,"")):""}var Fa=Gn.navigator&&/Version\/\d+(\.\d+)+?\s+Safari/i.test(Gn.navigator.userAgent);function dg(e,t,n){var i=document.createElement("img");if(e.naturalWidth&&!Fa)return n(e.naturalWidth,e.naturalHeight),i;var o=document.body||document.documentElement;return i.onload=function(){n(i.width,i.height),Fa||o.removeChild(i)},nt(t.inheritedAttributes,function(s){var r=e.getAttribute(s);r!==null&&i.setAttribute(s,r)}),i.src=e.src,Fa||(i.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",o.appendChild(i)),i}function Ws(e){switch(e){case 2:return PT;case 3:return jT;case 4:return _T;default:return""}}function FT(e){var t=Wc({},e),n=[];return nt(e,function(i,o){delete t[o],nt(t,function(s){var r=Math.abs(i.startX-s.startX),a=Math.abs(i.startY-s.startY),c=Math.abs(i.endX-s.endX),u=Math.abs(i.endY-s.endY),d=Math.sqrt(r*r+a*a),m=Math.sqrt(c*c+u*u),f=(m-d)/d;n.push(f)})}),n.sort(function(i,o){return Math.abs(i)<Math.abs(o)}),n[0]}function $s(e,t){var n=e.pageX,i=e.pageY,o={endX:n,endY:i};return t?o:Wc({timeStamp:Date.now(),startX:n,startY:i},o)}function HT(e){var t=0,n=0,i=0;return nt(e,function(o){var s=o.startX,r=o.startY;t+=s,n+=r,i+=1}),t/=i,n/=i,{pageX:t,pageY:n}}var zT={render:function(){this.initContainer(),this.initViewer(),this.initList(),this.renderViewer()},initBody:function(){var t=this.element.ownerDocument,n=t.body||t.documentElement;this.body=n,this.scrollbarWidth=window.innerWidth-t.documentElement.clientWidth,this.initialBodyPaddingRight=n.style.paddingRight,this.initialBodyComputedPaddingRight=window.getComputedStyle(n).paddingRight},initContainer:function(){this.containerData={width:window.innerWidth,height:window.innerHeight}},initViewer:function(){var t=this.options,n=this.parent,i;t.inline&&(i={width:Math.max(n.offsetWidth,t.minWidth),height:Math.max(n.offsetHeight,t.minHeight)},this.parentData=i),(this.fulled||!i)&&(i=this.containerData),this.viewerData=en({},i)},renderViewer:function(){this.options.inline&&!this.fulled&&xn(this.viewer,this.viewerData)},initList:function(){var t=this,n=this.element,i=this.options,o=this.list,s=[];o.innerHTML="",nt(this.images,function(r,a){var c=r.src,u=r.alt||OT(c),d=t.getImageURL(r);if(c||d){var m=document.createElement("li"),f=document.createElement("img");nt(i.inheritedAttributes,function(h){var g=r.getAttribute(h);g!==null&&f.setAttribute(h,g)}),i.navbar&&(f.src=c||d),f.alt=u,f.setAttribute("data-original-url",d||c),m.setAttribute("data-index",a),m.setAttribute("data-viewer-action","view"),m.setAttribute("role","button"),i.keyboard&&m.setAttribute("tabindex",0),m.appendChild(f),o.appendChild(m),s.push(m)}}),this.items=s,nt(s,function(r){var a=r.firstElementChild,c,u;ql(a,"filled",!0),i.loading&&we(r,ao),Te(a,dn,c=function(m){Qe(a,Ti,u),i.loading&&Ge(r,ao),t.loadImage(m)},{once:!0}),Te(a,Ti,u=function(){Qe(a,dn,c),i.loading&&Ge(r,ao)},{once:!0})}),i.transition&&Te(n,hs,function(){we(o,xt)},{once:!0})},renderList:function(){var t=this.index,n=this.items[t];if(n){var i=n.nextElementSibling,o=parseInt(window.getComputedStyle(i||n).marginLeft,10),s=n.offsetWidth,r=s+o;xn(this.list,en({width:r*this.length-o},dr({translateX:(this.viewerData.width-s)/2-r*t})))}},resetList:function(){var t=this.list;t.innerHTML="",Ge(t,xt),xn(t,dr({translateX:0}))},initImage:function(t){var n=this,i=this.options,o=this.image,s=this.viewerData,r=this.footer.offsetHeight,a=s.width,c=Math.max(s.height-r,r),u=this.imageData||{},d;this.imageInitializing={abort:function(){d.onload=null}},d=dg(o,i,function(m,f){var h=m/f,g=Math.max(0,Math.min(1,i.initialCoverage)),b=a,x=c;n.imageInitializing=!1,c*h>a?x=a/h:b=c*h,g=ht(g)?g:.9,b=Math.min(b*g,m),x=Math.min(x*g,f);var y=(a-b)/2,N=(c-x)/2,w={left:y,top:N,x:y,y:N,width:b,height:x,oldRatio:1,ratio:b/m,aspectRatio:h,naturalWidth:m,naturalHeight:f},D=en({},w);i.rotatable&&(w.rotate=u.rotate||0,D.rotate=0),i.scalable&&(w.scaleX=u.scaleX||1,w.scaleY=u.scaleY||1,D.scaleX=1,D.scaleY=1),n.imageData=w,n.initialImageData=D,t&&t()})},renderImage:function(t){var n=this,i=this.image,o=this.imageData;if(xn(i,en({width:o.width,height:o.height,marginLeft:o.x,marginTop:o.y},dr(o))),t)if((this.viewing||this.moving||this.rotating||this.scaling||this.zooming)&&this.options.transition&&$i(i,xt)){var s=function(){n.imageRendering=!1,t()};this.imageRendering={abort:function(){Qe(i,hn,s)}},Te(i,hn,s,{once:!0})}else t()},resetImage:function(){var t=this.image;t&&(this.viewing&&this.viewing.abort(),t.parentNode.removeChild(t),this.image=null,this.title.innerHTML="")}},GT={bind:function(){var t=this.options,n=this.viewer,i=this.canvas,o=this.element.ownerDocument;Te(n,go,this.onClick=this.click.bind(this)),Te(n,um,this.onDragStart=this.dragstart.bind(this)),Te(i,pm,this.onPointerDown=this.pointerdown.bind(this)),Te(o,fm,this.onPointerMove=this.pointermove.bind(this)),Te(o,hm,this.onPointerUp=this.pointerup.bind(this)),Te(o,mm,this.onKeyDown=this.keydown.bind(this)),Te(window,gm,this.onResize=this.resize.bind(this)),t.zoomable&&t.zoomOnWheel&&Te(n,bm,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),t.toggleOnDblclick&&Te(i,Rl,this.onDblclick=this.dblclick.bind(this))},unbind:function(){var t=this.options,n=this.viewer,i=this.canvas,o=this.element.ownerDocument;Qe(n,go,this.onClick),Qe(n,um,this.onDragStart),Qe(i,pm,this.onPointerDown),Qe(o,fm,this.onPointerMove),Qe(o,hm,this.onPointerUp),Qe(o,mm,this.onKeyDown),Qe(window,gm,this.onResize),t.zoomable&&t.zoomOnWheel&&Qe(n,bm,this.onWheel,{passive:!1,capture:!0}),t.toggleOnDblclick&&Qe(i,Rl,this.onDblclick)}},WT={click:function(t){var n=this.options,i=this.imageData,o=t.target,s=Ji(o,jr);switch(!s&&o.localName==="img"&&o.parentElement.localName==="li"&&(o=o.parentElement,s=Ji(o,jr)),ro&&t.isTrusted&&o===this.canvas&&clearTimeout(this.clickCanvasTimeout),s){case"mix":this.played?this.stop():n.inline?this.fulled?this.exit():this.full():this.hide();break;case"hide":this.pointerMoved||this.hide();break;case"view":this.view(Ji(o,"index"));break;case"zoom-in":this.zoom(.1,!0);break;case"zoom-out":this.zoom(-.1,!0);break;case"one-to-one":this.toggle();break;case"reset":this.reset();break;case"prev":this.prev(n.loop);break;case"play":this.play(n.fullscreen);break;case"next":this.next(n.loop);break;case"rotate-left":this.rotate(-90);break;case"rotate-right":this.rotate(90);break;case"flip-horizontal":this.scaleX(-i.scaleX||-1);break;case"flip-vertical":this.scaleY(-i.scaleY||-1);break;default:this.played&&this.stop()}},dblclick:function(t){t.preventDefault(),this.viewed&&t.target===this.image&&(ro&&t.isTrusted&&clearTimeout(this.doubleClickImageTimeout),this.toggle(t.isTrusted?t:t.detail&&t.detail.originalEvent))},load:function(){var t=this;this.timeout&&(clearTimeout(this.timeout),this.timeout=!1);var n=this.element,i=this.options,o=this.image,s=this.index,r=this.viewerData;Ge(o,Jo),i.loading&&Ge(this.canvas,ao),o.style.cssText="height:0;"+"margin-left:".concat(r.width/2,"px;")+"margin-top:".concat(r.height/2,"px;")+"max-width:none!important;position:relative;width:0;",this.initImage(function(){bs(o,CT,i.movable),bs(o,xt,i.transition),t.renderImage(function(){t.viewed=!0,t.viewing=!1,Ze(i.viewed)&&Te(n,hs,i.viewed,{once:!0}),vt(n,hs,{originalImage:t.images[s],index:s,image:o},{cancelable:!1})})})},loadImage:function(t){var n=t.target,i=n.parentNode,o=i.offsetWidth||30,s=i.offsetHeight||50,r=!!Ji(n,"filled");dg(n,this.options,function(a,c){var u=a/c,d=o,m=s;s*u>o?r?d=s*u:m=o/u:r?m=o/u:d=s*u,xn(n,en({width:d,height:m},dr({translateX:(o-d)/2,translateY:(s-m)/2})))})},keydown:function(t){var n=this.options;if(n.keyboard){var i=t.keyCode||t.which||t.charCode;switch(i){case 13:this.viewer.contains(t.target)&&this.click(t);break}if(this.fulled)switch(i){case 27:this.played?this.stop():n.inline?this.fulled&&this.exit():this.hide();break;case 32:this.played&&this.stop();break;case 37:this.played&&this.playing?this.playing.prev():this.prev(n.loop);break;case 38:t.preventDefault(),this.zoom(n.zoomRatio,!0);break;case 39:this.played&&this.playing?this.playing.next():this.next(n.loop);break;case 40:t.preventDefault(),this.zoom(-n.zoomRatio,!0);break;case 48:case 49:t.ctrlKey&&(t.preventDefault(),this.toggle());break}}},dragstart:function(t){t.target.localName==="img"&&t.preventDefault()},pointerdown:function(t){var n=this.options,i=this.pointers,o=t.buttons,s=t.button;if(this.pointerMoved=!1,!(!this.viewed||this.showing||this.viewing||this.hiding||(t.type==="mousedown"||t.type==="pointerdown"&&t.pointerType==="mouse")&&(ht(o)&&o!==1||ht(s)&&s!==0||t.ctrlKey))){t.preventDefault(),t.changedTouches?nt(t.changedTouches,function(a){i[a.identifier]=$s(a)}):i[t.pointerId||0]=$s(t);var r=n.movable?cr:!1;n.zoomOnTouch&&n.zoomable&&Object.keys(i).length>1?r=zo:n.slideOnTouch&&(t.pointerType==="touch"||t.type==="touchstart")&&this.isSwitchable()&&(r=cg),n.transition&&(r===cr||r===zo)&&Ge(this.image,xt),this.action=r}},pointermove:function(t){var n=this.pointers,i=this.action;!this.viewed||!i||(t.preventDefault(),t.changedTouches?nt(t.changedTouches,function(o){en(n[o.identifier]||{},$s(o,!0))}):en(n[t.pointerId||0]||{},$s(t,!0)),this.change(t))},pointerup:function(t){var n=this,i=this.options,o=this.action,s=this.pointers,r;t.changedTouches?nt(t.changedTouches,function(a){r=s[a.identifier],delete s[a.identifier]}):(r=s[t.pointerId||0],delete s[t.pointerId||0]),o&&(t.preventDefault(),i.transition&&(o===cr||o===zo)&&we(this.image,xt),this.action=!1,ro&&o!==zo&&r&&Date.now()-r.timeStamp<500&&(clearTimeout(this.clickCanvasTimeout),clearTimeout(this.doubleClickImageTimeout),i.toggleOnDblclick&&this.viewed&&t.target===this.image?this.imageClicked?(this.imageClicked=!1,this.doubleClickImageTimeout=setTimeout(function(){vt(n.image,Rl,{originalEvent:t})},50)):(this.imageClicked=!0,this.doubleClickImageTimeout=setTimeout(function(){n.imageClicked=!1},500)):(this.imageClicked=!1,i.backdrop&&i.backdrop!=="static"&&t.target===this.canvas&&(this.clickCanvasTimeout=setTimeout(function(){vt(n.canvas,go,{originalEvent:t})},50)))))},resize:function(){var t=this;if(!(!this.isShown||this.hiding)&&(this.fulled&&(this.close(),this.initBody(),this.open()),this.initContainer(),this.initViewer(),this.renderViewer(),this.renderList(),this.viewed&&this.initImage(function(){t.renderImage()}),this.played)){if(this.options.fullscreen&&this.fulled&&!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)){this.stop();return}nt(this.player.getElementsByTagName("img"),function(n){Te(n,dn,t.loadImage.bind(t),{once:!0}),vt(n,dn)})}},wheel:function(t){var n=this;if(this.viewed&&(t.preventDefault(),!this.wheeling)){this.wheeling=!0,setTimeout(function(){n.wheeling=!1},50);var i=Number(this.options.zoomRatio)||.1,o=1;t.deltaY?o=t.deltaY>0?1:-1:t.wheelDelta?o=-t.wheelDelta/120:t.detail&&(o=t.detail>0?1:-1),this.zoom(-o*i,!0,null,t)}}},$T={show:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,n=this.element,i=this.options;if(i.inline||this.showing||this.isShown||this.showing)return this;if(!this.ready)return this.build(),this.ready&&this.show(t),this;if(Ze(i.show)&&Te(n,Nm,i.show,{once:!0}),vt(n,Nm)===!1||!this.ready)return this;this.hiding&&this.transitioning.abort(),this.showing=!0,this.open();var o=this.viewer;if(Ge(o,wi),o.setAttribute("role","dialog"),o.setAttribute("aria-labelledby",this.title.id),o.setAttribute("aria-modal",!0),o.removeAttribute("aria-hidden"),i.transition&&!t){var s=this.shown.bind(this);this.transitioning={abort:function(){Qe(o,hn,s),Ge(o,ln)}},we(o,xt),o.initialOffsetWidth=o.offsetWidth,Te(o,hn,s,{once:!0}),we(o,ln)}else we(o,ln),this.shown();return this},hide:function(){var t=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,i=this.element,o=this.options;if(o.inline||this.hiding||!(this.isShown||this.showing))return this;if(Ze(o.hide)&&Te(i,wm,o.hide,{once:!0}),vt(i,wm)===!1)return this;this.showing&&this.transitioning.abort(),this.hiding=!0,this.played?this.stop():this.viewing&&this.viewing.abort();var s=this.viewer,r=this.image,a=function(){Ge(s,ln),t.hidden()};if(o.transition&&!n){var c=function(m){m&&m.target===s&&(Qe(s,hn,c),t.hidden())},u=function(){$i(s,xt)?(Te(s,hn,c),Ge(s,ln)):a()};this.transitioning={abort:function(){t.viewed&&$i(r,xt)?Qe(r,hn,u):$i(s,xt)&&Qe(s,hn,c)}},this.viewed&&$i(r,xt)?(Te(r,hn,u,{once:!0}),this.zoomTo(0,!1,null,null,!0)):u()}else a();return this},view:function(){var t=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.initialViewIndex;if(n=Number(n)||0,this.hiding||this.played||n<0||n>=this.length||this.viewed&&n===this.index)return this;if(!this.isShown)return this.index=n,this.show();this.viewing&&this.viewing.abort();var i=this.element,o=this.options,s=this.title,r=this.canvas,a=this.items[n],c=a.querySelector("img"),u=Ji(c,"originalUrl"),d=c.getAttribute("alt"),m=document.createElement("img");if(nt(o.inheritedAttributes,function(x){var y=c.getAttribute(x);y!==null&&m.setAttribute(x,y)}),m.src=u,m.alt=d,Ze(o.view)&&Te(i,Em,o.view,{once:!0}),vt(i,Em,{originalImage:this.images[n],index:n,image:m})===!1||!this.isShown||this.hiding||this.played)return this;var f=this.items[this.index];f&&(Ge(f,zs),f.removeAttribute("aria-selected")),we(a,zs),a.setAttribute("aria-selected",!0),o.focus&&a.focus(),this.image=m,this.viewed=!1,this.index=n,this.imageData={},we(m,Jo),o.loading&&we(r,ao),r.innerHTML="",r.appendChild(m),this.renderList(),s.innerHTML="";var h=function(){var y=t.imageData,N=Array.isArray(o.title)?o.title[1]:o.title;s.innerHTML=qT(Ze(N)?N.call(t,m,y):"".concat(d," (").concat(y.naturalWidth," × ").concat(y.naturalHeight,")"))},g,b;return Te(i,hs,h,{once:!0}),this.viewing={abort:function(){Qe(i,hs,h),m.complete?t.imageRendering?t.imageRendering.abort():t.imageInitializing&&t.imageInitializing.abort():(m.src="",Qe(m,dn,g),t.timeout&&clearTimeout(t.timeout))}},m.complete?this.load():(Te(m,dn,g=function(){Qe(m,Ti,b),t.load()},{once:!0}),Te(m,Ti,b=function(){Qe(m,dn,g),t.timeout&&(clearTimeout(t.timeout),t.timeout=!1),Ge(m,Jo),o.loading&&Ge(t.canvas,ao)},{once:!0}),this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(function(){Ge(m,Jo),t.timeout=!1},1e3)),this},prev:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,n=this.index-1;return n<0&&(n=t?this.length-1:0),this.view(n),this},next:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,n=this.length-1,i=this.index+1;return i>n&&(i=t?0:n),this.view(i),this},move:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,i=this.imageData;return this.moveTo(Zi(t)?t:i.x+Number(t),Zi(n)?n:i.y+Number(n)),this},moveTo:function(t){var n=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,s=this.element,r=this.options,a=this.imageData;if(t=Number(t),i=Number(i),this.viewed&&!this.played&&r.movable){var c=a.x,u=a.y,d=!1;if(ht(t)?d=!0:t=c,ht(i)?d=!0:i=u,d){if(Ze(r.move)&&Te(s,km,r.move,{once:!0}),vt(s,km,{x:t,y:i,oldX:c,oldY:u,originalEvent:o})===!1)return this;a.x=t,a.y=i,a.left=t,a.top=i,this.moving=!0,this.renderImage(function(){n.moving=!1,Ze(r.moved)&&Te(s,Sm,r.moved,{once:!0}),vt(s,Sm,{x:t,y:i,oldX:c,oldY:u,originalEvent:o},{cancelable:!1})})}}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t)),this},rotateTo:function(t){var n=this,i=this.element,o=this.options,s=this.imageData;if(t=Number(t),ht(t)&&this.viewed&&!this.played&&o.rotatable){var r=s.rotate;if(Ze(o.rotate)&&Te(i,Tm,o.rotate,{once:!0}),vt(i,Tm,{degree:t,oldDegree:r})===!1)return this;s.rotate=t,this.rotating=!0,this.renderImage(function(){n.rotating=!1,Ze(o.rotated)&&Te(i,Dm,o.rotated,{once:!0}),vt(i,Dm,{degree:t,oldDegree:r},{cancelable:!1})})}return this},scaleX:function(t){return this.scale(t,this.imageData.scaleY),this},scaleY:function(t){return this.scale(this.imageData.scaleX,t),this},scale:function(t){var n=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,o=this.element,s=this.options,r=this.imageData;if(t=Number(t),i=Number(i),this.viewed&&!this.played&&s.scalable){var a=r.scaleX,c=r.scaleY,u=!1;if(ht(t)?u=!0:t=a,ht(i)?u=!0:i=c,u){if(Ze(s.scale)&&Te(o,_m,s.scale,{once:!0}),vt(o,_m,{scaleX:t,scaleY:i,oldScaleX:a,oldScaleY:c})===!1)return this;r.scaleX=t,r.scaleY=i,this.scaling=!0,this.renderImage(function(){n.scaling=!1,Ze(s.scaled)&&Te(o,jm,s.scaled,{once:!0}),vt(o,jm,{scaleX:t,scaleY:i,oldScaleX:a,oldScaleY:c},{cancelable:!1})})}}return this},zoom:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=this.imageData;return t=Number(t),t<0?t=1/(1-t):t=1+t,this.zoomTo(s.width*t/s.naturalWidth,n,i,o),this},zoomTo:function(t){var n=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,a=this.element,c=this.options,u=this.pointers,d=this.imageData,m=d.x,f=d.y,h=d.width,g=d.height,b=d.naturalWidth,x=d.naturalHeight;if(t=Math.max(0,t),ht(t)&&this.viewed&&!this.played&&(r||c.zoomable)){if(!r){var y=Math.max(.01,c.minZoomRatio),N=Math.min(100,c.maxZoomRatio);t=Math.min(Math.max(t,y),N)}if(s)switch(s.type){case"wheel":c.zoomRatio>=.055&&t>.95&&t<1.05&&(t=1);break;case"pointermove":case"touchmove":case"mousemove":t>.99&&t<1.01&&(t=1);break}var w=b*t,D=x*t,S=w-h,E=D-g,k=d.ratio;if(Ze(c.zoom)&&Te(a,Pm,c.zoom,{once:!0}),vt(a,Pm,{ratio:t,oldRatio:k,originalEvent:s})===!1)return this;if(this.zooming=!0,s){var V=BT(this.viewer),R=u&&Object.keys(u).length>0?HT(u):{pageX:s.pageX,pageY:s.pageY};d.x-=S*((R.pageX-V.left-m)/h),d.y-=E*((R.pageY-V.top-f)/g)}else Qi(o)&&ht(o.x)&&ht(o.y)?(d.x-=S*((o.x-m)/h),d.y-=E*((o.y-f)/g)):(d.x-=S/2,d.y-=E/2);d.left=d.x,d.top=d.y,d.width=w,d.height=D,d.oldRatio=k,d.ratio=t,this.renderImage(function(){n.zooming=!1,Ze(c.zoomed)&&Te(a,Cm,c.zoomed,{once:!0}),vt(a,Cm,{ratio:t,oldRatio:k,originalEvent:s},{cancelable:!1})}),i&&this.tooltip()}return this},play:function(){var t=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(!this.isShown||this.played)return this;var i=this.element,o=this.options;if(Ze(o.play)&&Te(i,Am,o.play,{once:!0}),vt(i,Am)===!1)return this;var s=this.player,r=this.loadImage.bind(this),a=[],c=0,u=0;if(this.played=!0,this.onLoadWhenPlay=r,n&&this.requestFullscreen(n),we(s,Gi),nt(this.items,function(f,h){var g=f.querySelector("img"),b=document.createElement("img");b.src=Ji(g,"originalUrl"),b.alt=g.getAttribute("alt"),b.referrerPolicy=g.referrerPolicy,c+=1,we(b,ur),bs(b,xt,o.transition),$i(f,zs)&&(we(b,ln),u=h),a.push(b),Te(b,dn,r,{once:!0}),s.appendChild(b)}),ht(o.interval)&&o.interval>0){var d=function(){clearTimeout(t.playing.timeout),Ge(a[u],ln),u-=1,u=u>=0?u:c-1,we(a[u],ln),t.playing.timeout=setTimeout(d,o.interval)},m=function(){clearTimeout(t.playing.timeout),Ge(a[u],ln),u+=1,u=u<c?u:0,we(a[u],ln),t.playing.timeout=setTimeout(m,o.interval)};c>1&&(this.playing={prev:d,next:m,timeout:setTimeout(m,o.interval)})}return this},stop:function(){var t=this;if(!this.played)return this;var n=this.element,i=this.options;if(Ze(i.stop)&&Te(n,Mm,i.stop,{once:!0}),vt(n,Mm)===!1)return this;var o=this.player;return clearTimeout(this.playing.timeout),this.playing=!1,this.played=!1,nt(o.getElementsByTagName("img"),function(s){Qe(s,dn,t.onLoadWhenPlay)}),Ge(o,Gi),o.innerHTML="",this.exitFullscreen(),this},full:function(){var t=this,n=this.options,i=this.viewer,o=this.image,s=this.list;return!this.isShown||this.played||this.fulled||!n.inline?this:(this.fulled=!0,this.open(),we(this.button,lm),n.transition&&(Ge(s,xt),this.viewed&&Ge(o,xt)),we(i,Ul),i.setAttribute("role","dialog"),i.setAttribute("aria-labelledby",this.title.id),i.setAttribute("aria-modal",!0),i.removeAttribute("style"),xn(i,{zIndex:n.zIndex}),n.focus&&this.enforceFocus(),this.initContainer(),this.viewerData=en({},this.containerData),this.renderList(),this.viewed&&this.initImage(function(){t.renderImage(function(){n.transition&&setTimeout(function(){we(o,xt),we(s,xt)},0)})}),this)},exit:function(){var t=this,n=this.options,i=this.viewer,o=this.image,s=this.list;return!this.isShown||this.played||!this.fulled||!n.inline?this:(this.fulled=!1,this.close(),Ge(this.button,lm),n.transition&&(Ge(s,xt),this.viewed&&Ge(o,xt)),n.focus&&this.clearEnforceFocus(),i.removeAttribute("role"),i.removeAttribute("aria-labelledby"),i.removeAttribute("aria-modal"),Ge(i,Ul),xn(i,{zIndex:n.zIndexInline}),this.viewerData=en({},this.parentData),this.renderViewer(),this.renderList(),this.viewed&&this.initImage(function(){t.renderImage(function(){n.transition&&setTimeout(function(){we(o,xt),we(s,xt)},0)})}),this)},tooltip:function(){var t=this,n=this.options,i=this.tooltipBox,o=this.imageData;return!this.viewed||this.played||!n.tooltip?this:(i.textContent="".concat(Math.round(o.ratio*100),"%"),this.tooltipping?clearTimeout(this.tooltipping):n.transition?(this.fading&&vt(i,hn),we(i,Gi),we(i,ur),we(i,xt),i.removeAttribute("aria-hidden"),i.initialOffsetWidth=i.offsetWidth,we(i,ln)):(we(i,Gi),i.removeAttribute("aria-hidden")),this.tooltipping=setTimeout(function(){n.transition?(Te(i,hn,function(){Ge(i,Gi),Ge(i,ur),Ge(i,xt),i.setAttribute("aria-hidden",!0),t.fading=!1},{once:!0}),Ge(i,ln),t.fading=!0):(Ge(i,Gi),i.setAttribute("aria-hidden",!0)),t.tooltipping=!1},1e3),this)},toggle:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return this.imageData.ratio===1?this.zoomTo(this.imageData.oldRatio,!0,null,t):this.zoomTo(1,!0,null,t),this},reset:function(){return this.viewed&&!this.played&&(this.imageData=en({},this.initialImageData),this.renderImage()),this},update:function(){var t=this,n=this.element,i=this.options,o=this.isImg;if(o&&!n.parentNode)return this.destroy();var s=[];if(nt(o?[n]:n.querySelectorAll("img"),function(u){Ze(i.filter)?i.filter.call(t,u)&&s.push(u):t.getImageURL(u)&&s.push(u)}),!s.length)return this;if(this.images=s,this.length=s.length,this.ready){var r=[];if(nt(this.items,function(u,d){var m=u.querySelector("img"),f=s[d];f&&m?(f.src!==m.src||f.alt!==m.alt)&&r.push(d):r.push(d)}),xn(this.list,{width:"auto"}),this.initList(),this.isShown)if(this.length){if(this.viewed){var a=r.indexOf(this.index);if(a>=0)this.viewed=!1,this.view(Math.max(Math.min(this.index-a,this.length-1),0));else{var c=this.items[this.index];we(c,zs),c.setAttribute("aria-selected",!0)}}}else this.image=null,this.viewed=!1,this.index=0,this.imageData={},this.canvas.innerHTML="",this.title.innerHTML=""}else this.build();return this},destroy:function(){var t=this.element,n=this.options;return t[Ae]?(this.destroyed=!0,this.ready?(this.played&&this.stop(),n.inline?(this.fulled&&this.exit(),this.unbind()):this.isShown?(this.viewing&&(this.imageRendering?this.imageRendering.abort():this.imageInitializing&&this.imageInitializing.abort()),this.hiding&&this.transitioning.abort(),this.hidden()):this.showing&&(this.transitioning.abort(),this.hidden()),this.ready=!1,this.viewer.parentNode.removeChild(this.viewer)):n.inline&&(this.delaying?this.delaying.abort():this.initializing&&this.initializing.abort()),n.inline||Qe(t,go,this.onStart),t[Ae]=void 0,this):this}},XT={getImageURL:function(t){var n=this.options.url;return gs(n)?n=t.getAttribute(n):Ze(n)?n=n.call(this,t):n="",n},enforceFocus:function(){var t=this;this.clearEnforceFocus(),Te(document,dm,this.onFocusin=function(n){var i=t.viewer,o=n.target;if(!(o===document||o===i||i.contains(o))){for(;o;){if(o.getAttribute("tabindex")!==null||o.getAttribute("aria-modal")==="true")return;o=o.parentElement}i.focus()}})},clearEnforceFocus:function(){this.onFocusin&&(Qe(document,dm,this.onFocusin),this.onFocusin=null)},open:function(){var t=this.body;we(t,cm),this.scrollbarWidth>0&&(t.style.paddingRight="".concat(this.scrollbarWidth+(parseFloat(this.initialBodyComputedPaddingRight)||0),"px"))},close:function(){var t=this.body;Ge(t,cm),this.scrollbarWidth>0&&(t.style.paddingRight=this.initialBodyPaddingRight)},shown:function(){var t=this.element,n=this.options,i=this.viewer;this.fulled=!0,this.isShown=!0,this.render(),this.bind(),this.showing=!1,n.focus&&(i.focus(),this.enforceFocus()),Ze(n.shown)&&Te(t,ym,n.shown,{once:!0}),vt(t,ym)!==!1&&this.ready&&this.isShown&&!this.hiding&&this.view(this.index)},hidden:function(){var t=this.element,n=this.options,i=this.viewer;n.fucus&&this.clearEnforceFocus(),this.close(),this.unbind(),we(i,wi),i.removeAttribute("role"),i.removeAttribute("aria-labelledby"),i.removeAttribute("aria-modal"),i.setAttribute("aria-hidden",!0),this.resetList(),this.resetImage(),this.fulled=!1,this.viewed=!1,this.isShown=!1,this.hiding=!1,this.destroyed||(Ze(n.hidden)&&Te(t,vm,n.hidden,{once:!0}),vt(t,vm,null,{cancelable:!1}))},requestFullscreen:function(t){var n=this.element.ownerDocument;if(this.fulled&&!(n.fullscreenElement||n.webkitFullscreenElement||n.mozFullScreenElement||n.msFullscreenElement)){var i=n.documentElement;i.requestFullscreen?Qi(t)?i.requestFullscreen(t):i.requestFullscreen():i.webkitRequestFullscreen?i.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):i.mozRequestFullScreen?i.mozRequestFullScreen():i.msRequestFullscreen&&i.msRequestFullscreen()}},exitFullscreen:function(){var t=this.element.ownerDocument;this.fulled&&(t.fullscreenElement||t.webkitFullscreenElement||t.mozFullScreenElement||t.msFullscreenElement)&&(t.exitFullscreen?t.exitFullscreen():t.webkitExitFullscreen?t.webkitExitFullscreen():t.mozCancelFullScreen?t.mozCancelFullScreen():t.msExitFullscreen&&t.msExitFullscreen())},change:function(t){var n=this.options,i=this.pointers,o=i[Object.keys(i)[0]];if(o){var s=o.endX-o.startX,r=o.endY-o.startY;switch(this.action){case cr:(s!==0||r!==0)&&(this.pointerMoved=!0,this.move(s,r,t));break;case zo:this.zoom(FT(i),!1,null,t);break;case cg:{this.action="switched";var a=Math.abs(s);a>1&&a>Math.abs(r)&&(this.pointers={},s>1?this.prev(n.loop):s<-1&&this.next(n.loop));break}}nt(i,function(c){c.startX=c.endX,c.startY=c.endY})}},isSwitchable:function(){var t=this.imageData,n=this.viewerData;return this.length>1&&t.x>=0&&t.y>=0&&t.width<=n.width&&t.height<=n.height}},KT=Gn.Viewer,YT=(function(e){return function(){return e+=1,e}})(-1),mg=(function(){function e(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(wT(this,e),!t||t.nodeType!==1)throw new Error("The first argument is required and must be an element.");this.element=t,this.options=en({},am,Qi(n)&&n),this.action=!1,this.fading=!1,this.fulled=!1,this.hiding=!1,this.imageClicked=!1,this.imageData={},this.index=this.options.initialViewIndex,this.isImg=!1,this.isShown=!1,this.length=0,this.moving=!1,this.played=!1,this.playing=!1,this.pointers={},this.ready=!1,this.rotating=!1,this.scaling=!1,this.showing=!1,this.timeout=!1,this.tooltipping=!1,this.viewed=!1,this.viewing=!1,this.wheeling=!1,this.zooming=!1,this.pointerMoved=!1,this.id=YT(),this.init()}return vT(e,[{key:"init",value:function(){var n=this,i=this.element,o=this.options;if(!i[Ae]){i[Ae]=this,o.focus&&!o.keyboard&&(o.focus=!1);var s=i.localName==="img",r=[];if(nt(s?[i]:i.querySelectorAll("img"),function(u){Ze(o.filter)?o.filter.call(n,u)&&r.push(u):n.getImageURL(u)&&r.push(u)}),this.isImg=s,this.length=r.length,this.images=r,this.initBody(),Zi(document.createElement(Ae).style.transition)&&(o.transition=!1),o.inline){var a=0,c=function(){if(a+=1,a===n.length){var d;n.initializing=!1,n.delaying={abort:function(){clearTimeout(d)}},d=setTimeout(function(){n.delaying=!1,n.build()},0)}};this.initializing={abort:function(){nt(r,function(d){d.complete||(Qe(d,dn,c),Qe(d,Ti,c))})}},nt(r,function(u){if(u.complete)c();else{var d,m;Te(u,dn,d=function(){Qe(u,Ti,m),c()},{once:!0}),Te(u,Ti,m=function(){Qe(u,dn,d),c()},{once:!0})}})}else Te(i,go,this.onStart=function(u){var d=u.target;d.localName==="img"&&(!Ze(o.filter)||o.filter.call(n,d))&&n.view(n.images.indexOf(d))})}}},{key:"build",value:function(){if(!this.ready){var n=this.element,i=this.options,o=n.parentNode,s=document.createElement("div");s.innerHTML=ST;var r=s.querySelector(".".concat(Ae,"-container")),a=r.querySelector(".".concat(Ae,"-title")),c=r.querySelector(".".concat(Ae,"-toolbar")),u=r.querySelector(".".concat(Ae,"-navbar")),d=r.querySelector(".".concat(Ae,"-button")),m=r.querySelector(".".concat(Ae,"-canvas"));if(this.parent=o,this.viewer=r,this.title=a,this.toolbar=c,this.navbar=u,this.button=d,this.canvas=m,this.footer=r.querySelector(".".concat(Ae,"-footer")),this.tooltipBox=r.querySelector(".".concat(Ae,"-tooltip")),this.player=r.querySelector(".".concat(Ae,"-player")),this.list=r.querySelector(".".concat(Ae,"-list")),r.id="".concat(Ae).concat(this.id),a.id="".concat(Ae,"Title").concat(this.id),we(a,i.title?Ws(Array.isArray(i.title)?i.title[0]:i.title):wi),we(u,i.navbar?Ws(i.navbar):wi),bs(d,wi,!i.button),i.keyboard&&d.setAttribute("tabindex",0),i.backdrop&&(we(r,"".concat(Ae,"-backdrop")),!i.inline&&i.backdrop!=="static"&&ql(m,jr,"hide")),gs(i.className)&&i.className&&i.className.split(Xc).forEach(function(w){we(r,w)}),i.toolbar){var f=document.createElement("ul"),h=Qi(i.toolbar),g=Gs.slice(0,3),b=Gs.slice(7,9),x=Gs.slice(9);h||we(c,Ws(i.toolbar)),nt(h?i.toolbar:Gs,function(w,D){var S=h&&Qi(w),E=h?Kc(D):w,k=S&&!Zi(w.show)?w.show:w;if(!(!k||!i.zoomable&&g.indexOf(E)!==-1||!i.rotatable&&b.indexOf(E)!==-1||!i.scalable&&x.indexOf(E)!==-1)){var V=S&&!Zi(w.size)?w.size:w,R=S&&!Zi(w.click)?w.click:w,z=document.createElement("li");i.keyboard&&z.setAttribute("tabindex",0),z.setAttribute("role","button"),we(z,"".concat(Ae,"-").concat(E)),Ze(R)||ql(z,jr,E),ht(k)&&we(z,Ws(k)),["small","large"].indexOf(V)!==-1?we(z,"".concat(Ae,"-").concat(V)):E==="play"&&we(z,"".concat(Ae,"-large")),Ze(R)&&Te(z,go,R),f.appendChild(z)}}),c.appendChild(f)}else we(c,wi);if(!i.rotatable){var y=c.querySelectorAll('li[class*="rotate"]');we(y,Jo),nt(y,function(w){c.appendChild(w)})}if(i.inline)we(d,DT),xn(r,{zIndex:i.zIndexInline}),window.getComputedStyle(o).position==="static"&&xn(o,{position:"relative"}),o.insertBefore(r,n.nextSibling);else{we(d,TT),we(r,Ul),we(r,ur),we(r,wi),xn(r,{zIndex:i.zIndex});var N=i.container;gs(N)&&(N=n.ownerDocument.querySelector(N)),N||(N=this.body),N.appendChild(r)}if(i.inline&&(this.render(),this.bind(),this.isShown=!0),this.ready=!0,Ze(i.ready)&&Te(n,xm,i.ready,{once:!0}),vt(n,xm)===!1){this.ready=!1;return}this.ready&&i.inline&&this.view(this.index)}}}],[{key:"noConflict",value:function(){return window.Viewer=KT,e}},{key:"setDefaults",value:function(n){en(am,Qi(n)&&n)}}])})();en(mg.prototype,zT,GT,WT,$T,XT);const ZT=()=>window.innerWidth<=768||/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);class QT{constructor(t={}){this.viewer=null,this.container=null,this.options={zoomStep:t.zoomStep||.2,minZoom:t.minZoom||.1,maxZoom:t.maxZoom||5,enableKeyboard:t.enableKeyboard!==!1}}open(t,n=""){this.close(),this.container=document.createElement("div"),this.container.style.display="none";const i=document.createElement("img");i.src=t,i.alt=n,this.container.appendChild(i),document.body.appendChild(this.container);const o=ZT(),s=o?{zoomIn:1,zoomOut:1,oneToOne:0,reset:1,prev:0,play:0,next:0,rotateLeft:1,rotateRight:1,flipHorizontal:0,flipVertical:0}:{zoomIn:1,zoomOut:1,oneToOne:1,reset:1,prev:0,play:0,next:0,rotateLeft:1,rotateRight:1,flipHorizontal:1,flipVertical:1};this.viewer=new mg(this.container,{inline:!1,button:!0,navbar:!1,title:!!n,toolbar:s,fullscreen:!o,keyboard:this.options.enableKeyboard,backdrop:!0,loading:!0,loop:!1,minZoomRatio:this.options.minZoom,maxZoomRatio:this.options.maxZoom,zoomRatio:this.options.zoomStep,hidden:()=>{this.cleanup()}}),this.viewer.show()}close(){this.viewer&&this.viewer.hide()}cleanup(){this.viewer&&(this.viewer.destroy(),this.viewer=null),this.container&&this.container.parentNode&&(this.container.parentNode.removeChild(this.container),this.container=null)}destroy(){this.close(),this.cleanup()}}function JT(e){const t=e.getData("text/uri-list");if(t){const o=t.split(`
25
+ `).filter(s=>s&&!s.startsWith("#"));if(o.length>0&&Im(o[0]))return o[0].trim()}const n=e.getData("text/plain");if(n&&Im(n.trim()))return n.trim();const i=e.getData("text/html");if(i){const o=i.match(/<img[^>]+src=["']([^"']+)["']/i);if(o&&o[1])return o[1]}return null}function Im(e){if(!e)return!1;try{new URL(e)}catch{return!1}const t=[".jpg",".jpeg",".png",".gif",".webp",".svg",".bmp",".ico"],n=e.toLowerCase();return t.some(o=>n.includes(o))?!0:[/\.(jpg|jpeg|png|gif|webp|svg|bmp)(\?|$)/i,/\/image\//i,/\/images\//i,/\/img\//i,/\/photo\//i,/data:image\//i,/blob:/i].some(o=>o.test(e))}const eD=e=>{const t=e,{insertFragment:n,drop:i,pointerUp:o}=t,s=new QT({zoomStep:.3,minZoom:.1,maxZoom:5,enableKeyboard:!0});return t.insertFragment=(r,a,c)=>{var u;if((u=r==null?void 0:r.files)!=null&&u.length&&Tu(r.files[0].type)){const d=r.files[0];Du(e,d,a,!1);return}n(r,a,c)},t.drop=r=>{var a,c;if((c=(a=r.dataTransfer)==null?void 0:a.files)!=null&&c.length){const u=r.dataTransfer.files[0];if(Tu(u.type)){const d=Ot(e,Ft(e,r.x,r.y));return Du(e,u,d,!0),!0}if(A0(u.type)){const d=Ot(e,Ft(e,r.x,r.y));return(async()=>{try{const m=u.name.replace(/\.[^.]+$/,"");await _u.initialize();const f=await _u.addAsset({type:qn.AUDIO,source:M0.LOCAL,name:u.name,blob:u,mimeType:u.type});await ju.updateCachedMedia(f.url,{metadata:{name:m}});const[h,g]=await Promise.all([I0(u),V0(u)]);let b;if(g){const x=`/__aitu_cache__/image/${f.id}-cover.png`;await ju.cacheMediaFromBlob(x,g,"image",{taskId:`${f.id}-cover`,name:`${m}-cover`}),b=x}await tc(e,f.url,{title:m,duration:h,previewImageUrl:b},d,!0)}catch(m){console.error("[withImagePlugin] Failed to insert audio from drop:",m)}})(),!0}}if(r.dataTransfer){const u=JT(r.dataTransfer);if(u){const d=Ot(e,Ft(e,r.x,r.y));return U0(e,u,d).catch(m=>{console.error("[withImagePlugin] Failed to insert image from URL:",m)}),!0}}return i(r)},t.pointerUp=r=>{const a=R0(e);if(a&&!Hp(e)&&!os(e)&&!ss(e)){const c=Ot(e,Ft(e,r.x,r.y)),u=al(e,c);u&&on.isMindElement(e,u)&&on.hasImage(u)&&q0(e,u,c)&&a===u&&s.open(u.data.image.url)}o(r)},t},Ao={MAX_CHARS_PER_LINE:50};function tD(e){const t=e.split(`
26
+ `),n=[];for(const i of t)if(i.length<=Ao.MAX_CHARS_PER_LINE)n.push(i);else{let o=i;for(;o.length>0;){let s=Ao.MAX_CHARS_PER_LINE;if(o.length>Ao.MAX_CHARS_PER_LINE){const r=o.lastIndexOf(" ",Ao.MAX_CHARS_PER_LINE);r>Ao.MAX_CHARS_PER_LINE*.7&&(s=r)}n.push(o.substring(0,s).trim()),o=o.substring(s).trim()}}return n.join(`
27
+ `)}function nD(e){var i,o;if(!e)return!1;const t=!!e.text||!!((i=e.data)!=null&&i.text),n=!!e.elements||!!((o=e.data)!=null&&o.elements);return t&&!n}function iD(e){var n;const t=e;if(t.text)return t.text;if((n=t.data)!=null&&n.text)return t.data.text;if(typeof t.getData=="function"){const i=t.getData("text/plain");if(i)return i}return null}const oD=e=>{const{insertFragment:t}=e;return e.insertFragment=(n,i,o)=>{if(nD(n)){const s=iD(n);if(s&&s.trim()){const r=s.trim(),a=L0(r);if(a&&a.length>0){const u=Math.round(window.innerWidth*.5);B0(e,a,i,u);return}const c=tD(r);Fr.insertText(e,i,c);return}}t(n,i,o)},e},sD=e=>{const t=e;return t.renderImage=(n,i)=>{const o=Or.createRoot(n);o.render(l.jsxDEV(om,{...i},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/with-common.tsx",lineNumber:20,columnNumber:17},void 0));let s={...i};return{destroy:()=>{setTimeout(()=>{o.unmount()},0)},update:a=>{s={...s,...a},o.render(l.jsxDEV(om,{...s},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/plugins/with-common.tsx",lineNumber:30,columnNumber:21},void 0))}}},oD(eD(t))},rD=p.forwardRef(({children:e,gap:t,align:n,justifyContent:i,className:o,style:s},r)=>l.jsxDEV("div",{className:K("stack stack_horizontal",o),style:{"--gap":t,alignItems:n,justifyContent:i,...s},ref:r,children:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/stack.tsx",lineNumber:23,columnNumber:7},void 0)),aD=p.forwardRef(({children:e,gap:t,align:n,justifyContent:i,className:o,style:s},r)=>l.jsxDEV("div",{className:K("stack stack_vertical",o),style:{"--gap":t,justifyItems:n,justifyContent:i,...s},ref:r,children:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/stack.tsx",lineNumber:45,columnNumber:7},void 0)),dt={Row:rD,Col:aD},Ye=Pn.forwardRef(({children:e,padding:t,className:n,style:i,...o},s)=>l.jsxDEV("div",{className:K("island",n),style:{"--padding":t,...i},ref:s,...o,children:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/island.tsx",lineNumber:16,columnNumber:5},void 0)),pg=e=>e?typeof e=="string"?e:Ln(e)&&e.type==="solid"&&e.solid?e.solid.color:null:null,lD=(e,t)=>{Wn.setFillColor(e,null,{getMemorizeKey:$n,callback:(n,i)=>{if(!mn(e,n))return;const o=n.fill,s=pg(o)||zp(e,n);if(!O0(s))return;const r=Di(s),a=yo(t)?r:wo(r,t);ce.setNode(e,{fill:a},i)}})},cD=(e,t)=>{Wn.setFillColor(e,null,{getMemorizeKey:$n,callback:(n,i)=>{if(!mn(e,n))return;const o=n.fill,s=pg(o)||zp(e,n),r=typeof s=="string"?uo(s):void 0;nc(t)?ce.setNode(e,{fill:"none"},i):ic(r)||yo(r)?ce.setNode(e,{fill:t},i):ce.setNode(e,{fill:wo(t,r)},i)}})},uD=(e,t)=>{Wn.setStrokeColor(e,null,{getMemorizeKey:$n,callback:(n,i)=>{const o=Wp(e,n),s=Di(o),r=yo(t)?s:wo(s,t);ce.setNode(e,{strokeColor:r},i)}})},dD=(e,t)=>{Wn.setStrokeColor(e,null,{getMemorizeKey:$n,callback:(n,i)=>{const o=Wp(e,n),s=uo(o);nc(t)?ce.setNode(e,{strokeColor:"none"},i):ic(s)||yo(s)?ce.setNode(e,{strokeColor:t},i):ce.setNode(e,{strokeColor:wo(t,s)},i)}})},mD=(e,t)=>{Wn.setStrokeStyle(e,t,{getMemorizeKey:$n,callback:(n,i)=>{ce.setNode(e,{strokeStyle:t},i)}})},Vm=(e,t)=>{Wn.setStrokeWidth(e,t,{getMemorizeKey:$n,callback:(n,i)=>{ce.setNode(e,{strokeWidth:t},i)}})},pD=(e,t,n)=>{const i=uo(t);nc(n)?ni.setTextColor(e,null):ic(i)||yo(i)?ni.setTextColor(e,n):ni.setTextColor(e,wo(n,i))},fD=(e,t,n)=>{const i=Di(t),o=yo(n)?i:wo(i,n);ni.setTextColor(e,o)},fg=(e,t)=>{try{ni.setFontSize(e,t,16)}catch{const i=Tt(e);i&&i.length>0&&i.forEach(o=>{try{o.addMark("font-size",t)}catch(s){console.error("Failed to set font size mark:",s)}})}},hD=(e,t)=>{const n=Tt(e);n&&n.length>0&&n.forEach(i=>{try{Mt(i),De.addMark(i,"font-family",t)}catch(o){console.error("Failed to set font family:",o)}})},Ha=(e,t)=>{const n=Tt(e);n&&n.length>0&&n.forEach(i=>{try{Mt(i),t?De.addMark(i,"text-shadow",t):De.removeMark(i,"text-shadow")}catch(o){console.error("Failed to set text shadow:",o)}})},Um=(e,t)=>{const n=Tt(e);n&&n.length>0&&n.forEach(i=>{try{Mt(i),t?De.addMark(i,"text-gradient",t):De.removeMark(i,"text-gradient")}catch(o){console.error("Failed to set text gradient:",o)}})},hg=(e,t)=>{const n=Tt(e);n&&n.length>0&&n.forEach(i=>{try{Mt(i),De.addMark(i,"font-weight",String(t))}catch(o){console.error("Failed to set font weight:",o)}})},gD=(e,t)=>{try{let n;t==="left"?n=io.left:t==="center"?n=io.center:n=io.right,ni.setTextAlign(e,n)}catch(n){console.error("Failed to set text align:",n)}},bD=(e,t)=>{const n=Tt(e);n&&n.length>0&&n.forEach(i=>{try{Mt(i),De.addMark(i,"line-height",String(t))}catch(o){console.error("Failed to set line height:",o)}})},xD=(e,t)=>{const n=Tt(e);n&&n.length>0&&n.forEach(i=>{try{Mt(i);const o=typeof t=="number"?`${t}px`:t;De.addMark(i,"letter-spacing",o)}catch(o){console.error("Failed to set letter spacing:",o)}})},ND=e=>{const t=Tt(e);t&&t.length>0&&t.forEach(n=>{try{Mt(n);const i=De.marks(n);(i?!!i.bold:!1)?De.removeMark(n,"bold"):De.addMark(n,"bold",!0)}catch(i){console.error("Failed to toggle bold:",i)}})},yD=e=>{const t=Tt(e);t&&t.length>0&&t.forEach(n=>{try{Mt(n);const i=De.marks(n);(i?!!i.italic:!1)?De.removeMark(n,"italic"):De.addMark(n,"italic",!0)}catch(i){console.error("Failed to toggle italic:",i)}})},wD=e=>{const t=Tt(e);t&&t.length>0&&t.forEach(n=>{try{Mt(n);const i=De.marks(n);(i?!!i.underlined:!1)?De.removeMark(n,"underlined"):De.addMark(n,"underlined",!0)}catch(i){console.error("Failed to toggle underline:",i)}})},vD=e=>{const t=Tt(e);t&&t.length>0&&t.forEach(n=>{try{Mt(n);const i=De.marks(n);(i?!!i.strikethrough:!1)?De.removeMark(n,"strikethrough"):De.addMark(n,"strikethrough",!0)}catch(i){console.error("Failed to toggle strikethrough:",i)}})},ED=e=>{const t=Tt(e);t&&t.length>0&&t.forEach(n=>{try{Mt(n);const i=De.marks(n);(i?!!i.superscript:!1)?De.removeMark(n,"superscript"):(De.removeMark(n,"subscript"),De.addMark(n,"superscript",!0))}catch(i){console.error("Failed to toggle superscript:",i)}})},kD=e=>{const t=Tt(e);t&&t.length>0&&t.forEach(n=>{try{Mt(n);const i=De.marks(n);(i?!!i.subscript:!1)?De.removeMark(n,"subscript"):(De.removeMark(n,"superscript"),De.addMark(n,"subscript",!0))}catch(i){console.error("Failed to toggle subscript:",i)}})},SD=(e,t)=>{const n=Tt(e);n&&n.length>0&&n.forEach(i=>{try{Mt(i),t?De.addMark(i,"background-color",t):De.removeMark(i,"background-color")}catch(o){console.error("Failed to set background color:",o)}})},TD=(e,t)=>{const n=Tt(e);n&&n.length>0&&n.forEach(i=>{try{Mt(i),t&&t!=="none"?De.addMark(i,"text-transform",t):De.removeMark(i,"text-transform")}catch(o){console.error("Failed to set text transform:",o)}})},DD=(e,t,n)=>{const i=Tt(e);i&&i.length>0&&i.forEach(o=>{try{Mt(o),t&&t>0?(De.addMark(o,"text-stroke",t),n&&De.addMark(o,"text-stroke-color",n)):(De.removeMark(o,"text-stroke"),De.removeMark(o,"text-stroke-color"))}catch(s){console.error("Failed to set text stroke:",s)}})},_D=(e,t)=>{const n=Tt(e);n&&n.length>0&&n.forEach(i=>{try{Mt(i),t?De.addMark(i,"text-decoration-style",t):De.removeMark(i,"text-decoration-style")}catch(o){console.error("Failed to set text decoration style:",o)}})},jD=(e,t)=>{const n=Tt(e);n&&n.length>0&&n.forEach(i=>{try{Mt(i),t?De.addMark(i,"text-decoration-color",t):De.removeMark(i,"text-decoration-color")}catch(o){console.error("Failed to set text decoration color:",o)}})},PD=e=>{const t=Tt(e);if(t&&t.length>0){const n=t[0];try{return Mt(n),De.marks(n)||{}}catch(i){return console.error("Failed to get text marks:",i),{}}}return{}},CD=e=>{const t=Tt(e);if(t&&t.length>0){const n=t[0];try{const{selection:i}=n;if(i){const o=Array.from(De.nodes(n,{at:i,match:s=>{const r=s.type==="paragraph",a="align"in s;return De.isBlock(n,s)&&(r||a)}}));if(o.length>0){const[s]=o[0],r=s.align;if(r===io.right||r==="right")return"right";if(r===io.center||r==="center")return"center";if(r===io.left||r==="left")return"left"}}}catch(i){console.error("Failed to get text align:",i)}}return"left"},AD=(e,t)=>{Wn.setFillColor(e,null,{getMemorizeKey:$n,callback:(n,i)=>{if(!mn(e,n))return;const o=Gp(t),s={type:"gradient",gradient:t,fallbackColor:o};ce.setNode(e,{fill:o,fillConfig:s},i)}})},Rm=(e,t)=>{Wn.setFillColor(e,null,{getMemorizeKey:$n,callback:(n,i)=>{if(!mn(e,n))return;const o="#FFFFFF",s={type:"image",image:t,fallbackColor:o};ce.setNode(e,{fill:o,fillConfig:s},i)}})},MD=(e,t)=>{Wn.setFillColor(e,null,{getMemorizeKey:$n,callback:(n,i)=>{if(!mn(e,n))return;const o=n.fillConfig,s=n.fill;if((o==null?void 0:o.type)!==t)switch(t){case"solid":{let r="#FFFFFF";typeof s=="string"&&s!=="none"?r=s:o!=null&&o.solid&&(r=o.solid.color),ce.setNode(e,{fill:r,fillConfig:void 0},i);break}case"gradient":{const r={type:"linear",angle:90,stops:[{offset:0,color:"#FFFFFF"},{offset:1,color:"#000000"}]},a=(o==null?void 0:o.gradient)||r,c=Gp(a),u={type:"gradient",gradient:a,fallbackColor:c};ce.setNode(e,{fill:c,fillConfig:u},i);break}case"image":{const r={imageUrl:"",mode:"stretch",scale:1,offsetX:0,offsetY:0,rotation:0},a="#FFFFFF",c={type:"image",image:(o==null?void 0:o.image)||r,fallbackColor:a};ce.setNode(e,{fill:a,fillConfig:c},i);break}default:return}}})},ID=(e,t)=>{const n=Oe(e);for(const i of n)if(At(i)){const o=e.children.findIndex(s=>s.id===i.id);o!==-1&&ce.setNode(e,{fillColor:t},[o])}},VD=({board:e,currentColor:t,fontColorIcon:n,title:i})=>{const[o,s]=p.useState(!1),r=q.getBoardContainer(e),a=p.useCallback(u=>{pD(e,t||u,u)},[e,t]),c=p.useCallback(u=>{t&&fD(e,t,u)},[e,t]);return l.jsxDEV(st,{sideOffset:12,open:o,onOpenChange:u=>{s(u)},placement:"top",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{className:K("property-button"),selected:o,visible:!0,icon:n,type:"button",tooltip:i,"aria-label":i,onPointerUp:()=>{s(!o)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-color-button.tsx",lineNumber:54,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-color-button.tsx",lineNumber:53,columnNumber:7},void 0),l.jsxDEV(at,{container:r,children:l.jsxDEV(Ye,{padding:4,className:K(`${It}`),children:l.jsxDEV(_i,{value:t,onChange:a,onOpacityChange:c},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-color-button.tsx",lineNumber:72,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-color-button.tsx",lineNumber:68,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-color-button.tsx",lineNumber:67,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-color-button.tsx",lineNumber:45,columnNumber:5},void 0)},Ll=[{key:"title",labelZh:"标题",labelEn:"Title",previewSize:26,...Cn.title},{key:"subtitle",labelZh:"副标题",labelEn:"Subtitle",previewSize:22,...Cn.subtitle},{key:"h1",labelZh:"标题 1",labelEn:"Heading 1",previewSize:20,...Cn.h1,divider:!0},{key:"h2",labelZh:"标题 2",labelEn:"Heading 2",previewSize:18,...Cn.h2},{key:"h3",labelZh:"标题 3",labelEn:"Heading 3",previewSize:16,...Cn.h3},{key:"h4",labelZh:"标题 4",labelEn:"Heading 4",previewSize:15,...Cn.h4},{key:"body",labelZh:"正文",labelEn:"Body",previewSize:14,...Cn.body,divider:!0},{key:"caption",labelZh:"注释",labelEn:"Caption",previewSize:13,...Cn.caption},{key:"footnote",labelZh:"脚注",labelEn:"Footnote",previewSize:12,...Cn.footnote}],UD=e=>{if(!e)return null;const t=parseInt(e,10);if(isNaN(t))return null;for(const n of Ll)if(n.fontSize===t)return n.key;return null},RD=({board:e,currentFontSize:t,title:n})=>{const[i,o]=p.useState(!1),{language:s}=je(),r=q.getBoardContainer(e),a=UD(t),c=p.useCallback(d=>{fg(e,String(d.fontSize)),hg(e,d.fontWeight),ni.setTextColor(e,d.color),o(!1)},[e]),u=(()=>{if(a){const d=Ll.find(m=>m.key===a);if(d)return s==="zh"?d.labelZh:d.labelEn}return t||"16"})();return l.jsxDEV(st,{sideOffset:12,open:i,onOpenChange:o,placement:"bottom",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{className:K("property-button"),selected:i,visible:!0,type:"button",tooltip:n,"aria-label":n,onPointerUp:()=>o(!i),children:l.jsxDEV("div",{style:{fontSize:"12px",fontWeight:"bold",minWidth:"20px"},children:u},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:97,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:88,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:87,columnNumber:7},void 0),l.jsxDEV(at,{container:r,children:l.jsxDEV(Ye,{padding:4,className:K(`${It}`),children:l.jsxDEV(dt.Col,{gap:0,style:{minWidth:"200px"},children:[l.jsxDEV("div",{style:{fontSize:"12px",color:"#666",marginBottom:"2px",padding:"4px 10px 0"},children:s==="zh"?"字体样式":"Font Style"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:108,columnNumber:13},void 0),l.jsxDEV("div",{style:{maxHeight:"320px",overflowY:"auto"},children:Ll.map(d=>{const m=a===d.key;return l.jsxDEV(Pn.Fragment,{children:[d.divider&&l.jsxDEV("div",{style:{height:"1px",backgroundColor:"#e8e8e8",margin:"4px 10px"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:118,columnNumber:23},void 0),l.jsxDEV("div",{onClick:()=>c(d),style:{padding:"6px 10px",cursor:"pointer",backgroundColor:m?"#f0f7ff":"transparent",borderLeft:m?"3px solid #0052d9":"3px solid transparent",borderRadius:"2px",transition:"background-color 0.15s",display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:"8px"},onMouseEnter:f=>{m||(f.currentTarget.style.backgroundColor="#f5f5f5")},onMouseLeave:f=>{m||(f.currentTarget.style.backgroundColor="transparent")},children:[l.jsxDEV("span",{style:{fontSize:`${d.previewSize}px`,fontWeight:d.fontWeight,color:d.color,lineHeight:1.4},children:s==="zh"?d.labelZh:d.labelEn},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:145,columnNumber:23},void 0),l.jsxDEV("span",{style:{fontSize:"11px",color:"#bbb",flexShrink:0},children:[d.fontSize,"px"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:155,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:120,columnNumber:21},void 0)]},d.key,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:116,columnNumber:19},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:112,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:107,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:103,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:102,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/font-size-button.tsx",lineNumber:81,columnNumber:5},void 0)},qD=({board:e,currentColor:t,title:n,hasStrokeStyle:i,hasStrokeWidth:o,currentStrokeWidth:s,children:r})=>{const[a,c]=p.useState(!1),[u,d]=p.useState(String(s||2)),m=t&&Di(t),f=t?uo(t):100,h=q.getBoardContainer(e);Pn.useEffect(()=>{d(String(s||2))},[s]);const g=Yp(f)?F0:Zp(m)?H0:void 0,b=g?l.jsxDEV(g,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:67,columnNumber:32},void 0):void 0,x=k=>{mD(e,k)},y=p.useCallback(k=>{dD(e,k)},[e]),N=p.useCallback(k=>{uD(e,k)},[e]),w=p.useCallback(k=>{Vm(e,k),d(String(k))},[e]),D=p.useCallback(k=>{d(k.target.value)},[]),S=p.useCallback(()=>{const k=parseInt(u,10);!isNaN(k)&&k>=1&&k<=100?Vm(e,k):d(String(s||2))},[e,u,s]),E=p.useCallback(k=>{k.key==="Enter"?(S(),k.target.blur()):k.key==="Escape"&&(d(String(s||2)),k.target.blur())},[S,s]);return l.jsxDEV(st,{sideOffset:12,crossAxisOffset:40,open:a,onOpenChange:k=>{c(k)},placement:"left",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{className:K("property-button"),visible:!0,icon:b,type:"button",tooltip:n,"aria-label":n,onPointerUp:()=>{c(!a)},children:!b&&r},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:124,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:123,columnNumber:7},void 0),l.jsxDEV(at,{container:h,children:l.jsxDEV(Ye,{padding:4,className:K(`${It}`,"stroke-setting",{"has-stroke-style":i}),children:l.jsxDEV(dt.Col,{children:[o&&l.jsxDEV("div",{className:"stroke-width-section",style:{marginBottom:"8px"},children:l.jsxDEV(dt.Row,{gap:2,align:"center",children:[l.jsxDEV("span",{style:{fontSize:"12px",color:"var(--color-on-surface)",whiteSpace:"nowrap"},children:"线宽:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:151,columnNumber:19},void 0),l.jsxDEV("div",{style:{flex:1,minWidth:"100px"},children:l.jsxDEV(Hr,{value:s||2,min:1,max:100,step:1,onChange:k=>w(k),label:!1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:153,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:152,columnNumber:19},void 0),l.jsxDEV("div",{className:"stroke-width-input-wrapper",children:[l.jsxDEV("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",value:u,onChange:D,onBlur:S,onKeyDown:E,className:"stroke-width-input"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:163,columnNumber:21},void 0),l.jsxDEV("span",{className:"stroke-width-input-unit",children:"px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:173,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:162,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:150,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:149,columnNumber:15},void 0),i&&l.jsxDEV("div",{className:"stroke-style-section",children:[l.jsxDEV("span",{className:"stroke-style-label",children:"样式:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:180,columnNumber:17},void 0),l.jsxDEV(dt.Row,{className:K("stroke-style-picker"),children:[l.jsxDEV(ie,{visible:!0,icon:l.jsxDEV($p,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:184,columnNumber:27},void 0),type:"button",tooltip:"实线","aria-label":"实线",onPointerUp:()=>x(ii.solid)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:182,columnNumber:19},void 0),l.jsxDEV(ie,{visible:!0,icon:l.jsxDEV(Xp,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:192,columnNumber:27},void 0),type:"button",tooltip:"虚线","aria-label":"虚线",onPointerUp:()=>x(ii.dashed)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:190,columnNumber:19},void 0),l.jsxDEV(ie,{visible:!0,icon:l.jsxDEV(Kp,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:200,columnNumber:27},void 0),type:"button",tooltip:"点线","aria-label":"点线",onPointerUp:()=>x(ii.dotted)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:198,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:181,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:179,columnNumber:15},void 0),l.jsxDEV(_i,{value:t,onChange:y,onOpacityChange:N},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:209,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:147,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:139,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:138,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/stroke-button.tsx",lineNumber:114,columnNumber:5},void 0)},LD="drawnix-color-history",qm=24,Lm=12,Bm=er.createInstance({name:"drawnix",storeName:LD});let Ue=null;function Bl(e){const t=e.stops.map(n=>`${n.color}@${n.offset}`).join("|");return e.type==="linear"?`linear-${e.angle}-${t}`:`radial-${e.centerX}-${e.centerY}-${t}`}function BD(e,t){return Bl(e)===Bl(t)}class OD{constructor(){this.initialized=!1}async initialize(){if(!this.initialized)try{Ue=await Bm.getItem("history")||{colors:[],gradients:[]},this.initialized=!0}catch(t){console.error("[ColorHistoryService] Failed to initialize:",t),Ue={colors:[],gradients:[]},this.initialized=!0}}async saveData(){if(Ue)try{await Bm.setItem("history",Ue)}catch(t){console.error("[ColorHistoryService] Failed to save data:",t)}}async addColor(t){if(await this.initialize(),!Ue)return;const n=t.toUpperCase(),i=Ue.colors.findIndex(o=>o.color.toUpperCase()===n);if(i>=0){Ue.colors[i].lastUsedAt=Date.now(),Ue.colors[i].useCount+=1;const[o]=Ue.colors.splice(i,1);Ue.colors.unshift(o)}else Ue.colors.unshift({color:n,lastUsedAt:Date.now(),useCount:1}),Ue.colors.length>qm&&(Ue.colors=Ue.colors.slice(0,qm));await this.saveData()}async addGradient(t){if(await this.initialize(),!Ue)return;const n=Bl(t),i=Ue.gradients.findIndex(o=>BD(o.config,t));if(i>=0){Ue.gradients[i].lastUsedAt=Date.now(),Ue.gradients[i].useCount+=1;const[o]=Ue.gradients.splice(i,1);Ue.gradients.unshift(o)}else Ue.gradients.unshift({id:n,config:{...t},lastUsedAt:Date.now(),useCount:1}),Ue.gradients.length>Lm&&(Ue.gradients=Ue.gradients.slice(0,Lm));await this.saveData()}async getColors(){return await this.initialize(),(Ue==null?void 0:Ue.colors)||[]}async getGradients(){return await this.initialize(),(Ue==null?void 0:Ue.gradients)||[]}async removeColor(t){if(await this.initialize(),!Ue)return;const n=t.toUpperCase();Ue.colors=Ue.colors.filter(i=>i.color.toUpperCase()!==n),await this.saveData()}async removeGradient(t){await this.initialize(),Ue&&(Ue.gradients=Ue.gradients.filter(n=>n.id!==t),await this.saveData())}async clearAll(){Ue={colors:[],gradients:[]},await this.saveData()}resetCache(){Ue=null,this.initialized=!1}}const yn=new OD;function FD(){const[e,t]=p.useState([]),[n,i]=p.useState([]),[o,s]=p.useState(!0),r=p.useCallback(async()=>{try{const[m,f]=await Promise.all([yn.getColors(),yn.getGradients()]);t(m),i(f)}catch(m){console.error("[useColorHistory] Failed to load data:",m)}finally{s(!1)}},[]);p.useEffect(()=>{r()},[r]);const a=p.useCallback(async m=>{await yn.addColor(m);const f=await yn.getColors();t(f)},[]),c=p.useCallback(async m=>{await yn.addGradient(m);const f=await yn.getGradients();i(f)},[]),u=p.useCallback(async m=>{await yn.removeColor(m);const f=await yn.getColors();t(f)},[]),d=p.useCallback(async m=>{await yn.removeGradient(m);const f=await yn.getGradients();i(f)},[]);return{colors:e,gradients:n,isLoading:o,addColor:a,addGradient:c,removeColor:u,removeGradient:d,refresh:r}}function Ei(e){const t=e.stops.map(n=>`${n.color} ${Math.round(n.offset*100)}%`).join(", ");if(e.type==="linear")return`linear-gradient(${e.angle}deg, ${t})`;{const n=Math.round(e.centerX*100),i=Math.round(e.centerY*100);return`radial-gradient(circle at ${n}% ${i}%, ${t})`}}function HD(e){const t=e.match(/linear-gradient\((\d+)deg,\s*(.+)\)/);if(t){const i=parseInt(t[1],10),o=t[2],s=Om(o);return{type:"linear",angle:i,stops:s.length>=2?s:[{color:"#FF6B6B",offset:0},{color:"#4ECDC4",offset:1}]}}const n=e.match(/radial-gradient\(circle(?:\s+at\s+(\d+)%\s+(\d+)%)?,\s*(.+)\)/);if(n){const i=n[1]?parseInt(n[1],10)/100:.5,o=n[2]?parseInt(n[2],10)/100:.5,s=n[3],r=Om(s);return{type:"radial",centerX:i,centerY:o,stops:r.length>=2?r:[{color:"#FF6B6B",offset:0},{color:"#4ECDC4",offset:1}]}}return zr}function Om(e){const t=[],n=/(#[0-9a-fA-F]{3,8}|rgba?\([^)]+\))\s+(\d+)%/g;let i;for(;(i=n.exec(e))!==null;)t.push({color:i[1],offset:parseInt(i[2],10)/100});return t}const Fm=[{key:"left",labelZh:"左",labelEn:"Left",x:0,y:.5},{key:"center",labelZh:"中心",labelEn:"Center",x:.5,y:.5},{key:"top-left",labelZh:"左上",labelEn:"Top left",x:0,y:0},{key:"top",labelZh:"上",labelEn:"Top",x:.5,y:0},{key:"right",labelZh:"右",labelEn:"Right",x:1,y:.5},{key:"bottom",labelZh:"下",labelEn:"Bottom",x:.5,y:1}],gg=({value:e,onChange:t,showPresets:n=!0,showHistory:i=!0,presetCategories:o,customPresets:s,compact:r=!1,inline:a=!1,onSavePreset:c,onDeletePreset:u})=>{const{language:d}=je(),{addGradient:m}=FD(),[f,h]=p.useState(e||zr),[g,b]=p.useState(0),[x,y]=p.useState(null),[N,w]=p.useState(!1),D=p.useRef(null);p.useEffect(()=>{e&&h(e)},[e]);const S=p.useCallback(W=>{h(W),t==null||t(W),m(W)},[t,m]),E=p.useCallback(W=>{S(W.config)},[S]),k=p.useCallback(W=>{const ae={...f,...W};S(ae)},[f,S]),V=p.useCallback(W=>{if(f.type!==W)if(W==="linear"){const ae={type:"linear",angle:90,stops:f.stops};S(ae)}else{const ae={type:"radial",centerX:.5,centerY:.5,stops:f.stops};S(ae)}},[f,S]),R=p.useCallback((W,ae)=>{const oe=[...f.stops];oe[W]={...oe[W],...ae},oe.sort((ke,Fe)=>ke.offset-Fe.offset);const ve=oe.findIndex(ke=>ke.color===(ae.color??f.stops[W].color));ve!==-1&&ve!==g&&b(ve),k({stops:oe})},[f.stops,g,k]),z=p.useCallback(()=>{if(f.stops.length>=8)return;const W=.5,oe=[...f.stops,{color:"#888888",offset:W}].sort((ve,ke)=>ve.offset-ke.offset);k({stops:oe}),b(oe.findIndex(ve=>ve.offset===W))},[f.stops,k]),I=p.useCallback(W=>{if(f.stops.length<=2)return;const ae=f.stops.filter((oe,ve)=>ve!==W);k({stops:ae}),b(Math.min(g,ae.length-1))},[f.stops,g,k]),U=p.useCallback((W,ae)=>{if(!D.current)return;const oe=D.current.getBoundingClientRect(),ke=Math.max(0,Math.min(W.clientX-oe.left,oe.width))/oe.width;R(ae,{offset:ke})},[R]),A=p.useCallback((W,ae)=>{W.preventDefault(),W.stopPropagation(),b(ae);const oe=W.clientX,ve=W.clientY;let ke=!1;const Fe=3,X=We=>{const mt=Math.abs(We.clientX-oe),Y=Math.abs(We.clientY-ve);(mt>Fe||Y>Fe)&&(ke=!0,w(!0),U(We,ae))},Ce=()=>{document.removeEventListener("mousemove",X),document.removeEventListener("mouseup",Ce),ke||y(ae),setTimeout(()=>{w(!1)},0)};document.addEventListener("mousemove",X),document.addEventListener("mouseup",Ce)},[U]),j=p.useCallback(W=>{if(N||f.stops.length>=8||W.target!==D.current||!D.current)return;const oe=D.current.getBoundingClientRect(),ve=W.clientX-oe.left,ke=Math.max(0,Math.min(ve/oe.width,1)),Fe=[...f.stops].sort((Y,v)=>Y.offset-v.offset);let X=Fe[0];for(let Y=0;Y<Fe.length-1;Y++)if(Fe[Y].offset<=ke&&Fe[Y+1].offset>=ke){X=Fe[Y];break}const Ce=X.color,We=[...f.stops,{color:Ce,offset:ke}].sort((Y,v)=>Y.offset-v.offset);k({stops:We});const mt=We.findIndex(Y=>Y.offset===ke);b(mt)},[N,f.stops,k]);p.useMemo(()=>Ei(f),[f]),p.useMemo(()=>{const W=[{key:"basic",label:d==="zh"?"基础":"Basic"},{key:"colorful",label:d==="zh"?"多彩":"Colorful"},{key:"sunset",label:d==="zh"?"日落":"Sunset"},{key:"nature",label:d==="zh"?"自然":"Nature"},{key:"metal",label:d==="zh"?"金属":"Metal"}];return o?W.filter(ae=>o.includes(ae.key)):W},[d,o]);const C=p.useMemo(()=>s?s.length>0&&typeof s[0]=="string"?s.map((W,ae)=>({id:`custom-${ae}`,name:`Custom ${ae+1}`,nameZh:`自定义 ${ae+1}`,category:"custom",config:HD(W),css:W})):s:Pu,[s]),M=p.useCallback(()=>{var oe;if(f.type!=="radial")return null;const{centerX:W,centerY:ae}=f;return(oe=Fm.find(ve=>Math.abs(ve.x-W)<.01&&Math.abs(ve.y-ae)<.01))==null?void 0:oe.key},[f]),J=p.useMemo(()=>s&&s.length>0&&typeof s[0]=="string",[s]),ye=p.useMemo(()=>Ei(f),[f]),P=p.useCallback(W=>ye===W,[ye]),G=()=>{const W=Pu.slice(0,10),ae=J?C:[];return l.jsxDEV("div",{className:"ge-quick-presets",children:[l.jsxDEV("div",{className:"ge-quick-presets-header",children:l.jsxDEV("span",{className:"ge-quick-presets-title",children:d==="zh"?"预设":"Presets"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:436,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:435,columnNumber:9},void 0),l.jsxDEV("div",{className:"ge-quick-presets-grid",children:[ae.map((oe,ve)=>{const ke=oe.css||Ei(oe.config);return l.jsxDEV("button",{className:K("ge-quick-preset-item ge-quick-preset-item--custom",{"ge-quick-preset-item--selected":P(ke)}),onClick:()=>E(oe),title:d==="zh"?oe.nameZh:oe.name,children:[l.jsxDEV("div",{className:"ge-quick-preset-preview",style:{background:ke}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:453,columnNumber:17},void 0),u&&l.jsxDEV("button",{className:"ge-quick-preset-delete",onClick:Fe=>{Fe.stopPropagation(),u(ve)},children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:458,columnNumber:19},void 0)]},oe.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:445,columnNumber:15},void 0)}),W.map(oe=>{const ve=Ei(oe.config);return l.jsxDEV("button",{className:K("ge-quick-preset-item",{"ge-quick-preset-item--selected":P(ve)}),onClick:()=>E(oe),title:d==="zh"?oe.nameZh:oe.name,children:l.jsxDEV("div",{className:"ge-quick-preset-preview",style:{background:ve}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:483,columnNumber:17},void 0)},oe.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:475,columnNumber:15},void 0)})]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:440,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:434,columnNumber:7},void 0)},de=()=>l.jsxDEV("div",{className:K("ge-custom-editor",{"ge-custom-editor--inline":a}),children:[l.jsxDEV("div",{className:"ge-type-section",children:l.jsxDEV("div",{className:"ge-type-buttons",children:[l.jsxDEV("button",{className:K("ge-type-btn",{active:f.type==="linear"}),onClick:()=>V("linear"),children:d==="zh"?"线性":"Linear"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:501,columnNumber:11},void 0),l.jsxDEV("button",{className:K("ge-type-btn",{active:f.type==="radial"}),onClick:()=>V("radial"),children:d==="zh"?"径向":"Radial"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:507,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:500,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:499,columnNumber:7},void 0),l.jsxDEV("div",{className:"ge-color-section",children:[l.jsxDEV("div",{className:"ge-section-header",children:[l.jsxDEV("span",{className:"ge-section-title",children:d==="zh"?"颜色":"Colors"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:519,columnNumber:11},void 0),l.jsxDEV("div",{className:"ge-stop-actions",children:[l.jsxDEV("button",{className:"ge-action-btn",onClick:z,disabled:f.stops.length>=8,title:d==="zh"?"添加色标":"Add stop",children:"+"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:523,columnNumber:13},void 0),l.jsxDEV("button",{className:"ge-action-btn",onClick:()=>I(g),disabled:f.stops.length<=2,title:d==="zh"?"删除色标":"Remove stop",children:"−"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:531,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:522,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:518,columnNumber:9},void 0),l.jsxDEV("div",{className:"ge-gradient-bar-wrapper",children:l.jsxDEV("div",{ref:D,className:"ge-gradient-bar",style:{background:`linear-gradient(90deg, ${f.stops.map(W=>`${W.color} ${Math.round(W.offset*100)}%`).join(", ")})`},onClick:j,children:f.stops.map((W,ae)=>l.jsxDEV(st,{open:x===ae,onOpenChange:oe=>y(oe?ae:null),children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV("button",{className:K("ge-stop-handle",{selected:g===ae}),style:{left:`${W.offset*100}%`,backgroundColor:W.color},onMouseDown:oe=>{A(oe,ae)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:559,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:558,columnNumber:17},void 0),l.jsxDEV(at,{children:l.jsxDEV(Ye,{padding:4,className:"ge-color-picker-popover "+It,children:l.jsxDEV(_i,{value:W.color,onChange:oe=>R(ae,{color:oe}),showAlpha:!1,showEyeDropper:!0,showPresets:!0,showRecentColors:!0,showHexInput:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:577,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:573,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:572,columnNumber:17},void 0)]},ae,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:553,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:545,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:543,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:517,columnNumber:7},void 0),f.type==="radial"&&l.jsxDEV("div",{className:"ge-origin-section",children:[l.jsxDEV("span",{className:"ge-section-title",children:d==="zh"?"原点":"Origin"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:597,columnNumber:11},void 0),l.jsxDEV("div",{className:"ge-origin-buttons",children:Fm.map(W=>l.jsxDEV("button",{className:K("ge-origin-btn",{active:M()===W.key}),onClick:()=>k({centerX:W.x,centerY:W.y}),children:d==="zh"?W.labelZh:W.labelEn},W.key,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:602,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:600,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:596,columnNumber:9},void 0),f.type==="linear"&&l.jsxDEV("div",{className:"ge-angle-section",children:[l.jsxDEV("div",{className:"ge-section-header",children:[l.jsxDEV("span",{className:"ge-section-title",children:d==="zh"?"角度":"Angle"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:622,columnNumber:13},void 0),l.jsxDEV("span",{className:"ge-angle-value",children:[f.angle,"°"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:625,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:621,columnNumber:11},void 0),l.jsxDEV("input",{type:"range",min:0,max:360,value:f.angle,onChange:W=>k({angle:Number(W.target.value)}),className:"ge-angle-slider"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:629,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:620,columnNumber:9},void 0),c&&l.jsxDEV("div",{className:"ge-save-section",children:l.jsxDEV("button",{className:"ge-save-btn",onClick:c,children:d==="zh"?"保存":"Save"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:643,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:642,columnNumber:9},void 0),G()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:497,columnNumber:5},void 0);return r||a?l.jsxDEV("div",{className:K("gradient-editor",{"gradient-editor--compact":r,"gradient-editor--inline":a}),children:de()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:657,columnNumber:7},void 0):l.jsxDEV("div",{className:"gradient-editor",children:de()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/gradient-editor/GradientEditor.tsx",lineNumber:669,columnNumber:5},void 0)},za=Ct.CUSTOM_GRADIENTS,zD=({value:e,onChange:t,inline:n=!1})=>{const{language:i}=je(),{confirm:o,confirmDialog:s}=Gr(),[r,a]=p.useState([]),[c,u]=p.useState(e||zr);p.useEffect(()=>{let h=!0;return Tn.get(za).then(g=>{h&&g&&a(g)}).catch(g=>{console.warn("Failed to load gradient data:",g)}),()=>{h=!1}},[]),p.useEffect(()=>{e&&u(e)},[e]);const d=p.useCallback(h=>{u(h),t==null||t(h)},[t]),m=p.useCallback(()=>{const h=Ei(c),b=[{id:`custom-${Date.now()}`,css:h},...r].slice(0,8);a(b),Tn.set(za,b).catch(x=>{console.warn("Failed to save custom gradients:",x)})},[c,r]),f=p.useCallback(async h=>{const g=r[h];if(!g||!await o({title:i==="zh"?"确认删除渐变预设":"Delete Gradient Preset",description:i==="zh"?"确定要删除这个自定义渐变预设吗?":"Are you sure you want to delete this custom gradient preset?",confirmText:i==="zh"?"删除":"Delete",cancelText:i==="zh"?"取消":"Cancel",danger:!0}))return;const x=r.filter(y=>y.id!==g.id);a(x),Tn.set(za,x).catch(y=>{console.warn("Failed to save custom gradients:",y)})},[o,r,i]);return l.jsxDEV(l.Fragment,{children:[l.jsxDEV(gg,{value:c,onChange:d,showPresets:!0,showHistory:!0,inline:n,customPresets:r.map(h=>h.css),onSavePreset:m,onDeletePreset:f},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/GradientFillPanel.tsx",lineNumber:110,columnNumber:7},void 0),s]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/GradientFillPanel.tsx",lineNumber:109,columnNumber:5},void 0)},GD=p.lazy(()=>Re(()=>import("./tool-windows-DOIu9TAD.js").then(e=>e.pF),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.MediaLibraryModal}))),WD=[{value:"stretch",labelZh:"拉伸",labelEn:"Stretch",icon:"⬌"},{value:"tile",labelZh:"平铺",labelEn:"Tile",icon:"⊞"},{value:"fit",labelZh:"适应",labelEn:"Fit",icon:"⊡"}],$D=({value:e,onChange:t,onOpenMediaLibrary:n,externalMediaLibraryControl:i=!1})=>{const{language:o}=je(),[s,r]=p.useState(e||Qp),[a,c]=p.useState(!1),[u,d]=p.useState(!1),m=p.useRef(null);p.useEffect(()=>{e&&r(e)},[e]);const f=p.useCallback(S=>{const E={...s,...S};r(E),t==null||t(E)},[s,t]),h=p.useMemo(()=>z0(S=>{t==null||t(S)},300),[t]),g=p.useCallback(S=>{const E={...s,...S};r(E),h(E)},[s,h]),b=p.useCallback((S,E,k,V,R=1)=>{const z=parseFloat(E);if(isNaN(z))return;const I=Math.max(k,Math.min(V,z)),U=R===1?I:I/R;f({[S]:U})},[f]),x=p.useCallback(S=>{f({imageUrl:S.url}),c(!1)},[f]),y=p.useCallback(async S=>{var R;const E=(R=S.target.files)==null?void 0:R[0];if(!E)return;if(!E.type.startsWith("image/")){se.warning(o==="zh"?"请选择图片文件":"Please select an image file");return}if(E.size>25*1024*1024){se.warning(o==="zh"?"图片大小不能超过 25MB":"Image size cannot exceed 25MB");return}let k=E;if(E.size>10*1024*1024){const z=G0(E.size/1048576),I=se.loading({content:o==="zh"?`正在压缩图片 (${(E.size/1024/1024).toFixed(1)}MB)...`:`Compressing image (${(E.size/1024/1024).toFixed(1)}MB)...`,duration:0,placement:"top"});try{k=await W0(E,z.targetSizeMB),se.close(I),se.success({content:o==="zh"?`压缩完成: ${(E.size/1024/1024).toFixed(1)}MB → ${(k.size/1024/1024).toFixed(1)}MB`:`Compressed: ${(E.size/1024/1024).toFixed(1)}MB → ${(k.size/1024/1024).toFixed(1)}MB`,duration:2})}catch(U){se.close(I),console.error("[ImageFillPanel] Compression failed:",U),se.warning(o==="zh"?"图片压缩失败":"Image compression failed");return}}const V=new FileReader;V.onload=z=>{var U;const I=(U=z.target)==null?void 0:U.result;f({imageUrl:I})},V.readAsDataURL(k),S.target.value=""},[o,f]),N=p.useCallback(()=>{var S;(S=m.current)==null||S.click()},[]),w=p.useCallback(()=>{i&&n?n():c(!0)},[i,n]),D=()=>s.imageUrl?l.jsxDEV("div",{className:"ifp-image-preview",children:[l.jsxDEV("img",{src:s.imageUrl,alt:"Fill preview"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:215,columnNumber:11},void 0),l.jsxDEV("button",{className:"ifp-image-remove",onClick:()=>f({imageUrl:""}),title:o==="zh"?"移除图片":"Remove image",children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:216,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:214,columnNumber:9},void 0):l.jsxDEV("div",{className:"ifp-image-placeholder",children:[l.jsxDEV(ef,{size:32,className:"ifp-placeholder-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:229,columnNumber:9},void 0),l.jsxDEV("span",{className:"ifp-placeholder-text",children:o==="zh"?"选择图片":"Select Image"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:230,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:228,columnNumber:7},void 0);return l.jsxDEV("div",{className:"image-fill-panel",children:[l.jsxDEV("input",{ref:m,type:"file",accept:"image/*",style:{display:"none"},onChange:y},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:240,columnNumber:7},void 0),l.jsxDEV("div",{className:"ifp-image-section",children:[l.jsxDEV("div",{className:"ifp-image-container",onClick:()=>!s.imageUrl&&w(),children:D()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:250,columnNumber:9},void 0),l.jsxDEV("div",{className:"ifp-image-actions",children:[l.jsxDEV("button",{className:"ifp-action-btn ifp-action-btn--primary",onClick:w,children:[l.jsxDEV(Wr,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:256,columnNumber:13},void 0),l.jsxDEV("span",{children:o==="zh"?"素材库":"Library"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:257,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:255,columnNumber:11},void 0),l.jsxDEV("button",{className:"ifp-action-btn",onClick:N,children:[l.jsxDEV($r,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:260,columnNumber:13},void 0),l.jsxDEV("span",{children:o==="zh"?"上传":"Upload"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:261,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:259,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:254,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:249,columnNumber:7},void 0),s.imageUrl&&l.jsxDEV(l.Fragment,{children:[l.jsxDEV("div",{className:"ifp-control-section",children:[l.jsxDEV("div",{className:"ifp-section-title",children:o==="zh"?"平铺模式":"Fill Mode"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:271,columnNumber:13},void 0),l.jsxDEV("div",{className:"ifp-mode-buttons",children:WD.map(S=>l.jsxDEV("button",{className:K("ifp-mode-btn",{active:s.mode===S.value}),onClick:()=>f({mode:S.value}),title:o==="zh"?S.labelZh:S.labelEn,children:[l.jsxDEV("span",{className:"ifp-mode-icon",children:S.icon},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:282,columnNumber:19},void 0),l.jsxDEV("span",{className:"ifp-mode-label",children:o==="zh"?S.labelZh:S.labelEn},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:283,columnNumber:19},void 0)]},S.value,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:276,columnNumber:17},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:274,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:270,columnNumber:11},void 0),l.jsxDEV("div",{className:"ifp-advanced-section",children:[l.jsxDEV("button",{className:"ifp-advanced-toggle",onClick:()=>d(!u),children:[l.jsxDEV("span",{children:o==="zh"?"高级设置":"Advanced"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:297,columnNumber:15},void 0),u?l.jsxDEV(Jp,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:298,columnNumber:31},void 0):l.jsxDEV(oc,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:298,columnNumber:57},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:293,columnNumber:13},void 0),u&&l.jsxDEV("div",{className:"ifp-advanced-content",children:[l.jsxDEV("div",{className:"ifp-control-row",children:[l.jsxDEV("label",{className:"ifp-control-label",children:o==="zh"?"缩放":"Scale"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:305,columnNumber:19},void 0),l.jsxDEV("div",{className:"ifp-control-input",children:[l.jsxDEV("input",{type:"range",min:50,max:200,value:(s.scale??1)*100,onChange:S=>g({scale:Number(S.target.value)/100}),className:"ifp-slider"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:309,columnNumber:21},void 0),l.jsxDEV("div",{className:"ifp-control-value-wrapper",children:[l.jsxDEV("input",{type:"number",className:"ifp-control-value-input",value:Math.round((s.scale??1)*100),min:50,max:200,onChange:S=>b("scale",S.target.value,50,200,100)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:318,columnNumber:23},void 0),l.jsxDEV("span",{className:"ifp-control-unit",children:"%"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:326,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:317,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:308,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:304,columnNumber:17},void 0),l.jsxDEV("div",{className:"ifp-control-row",children:[l.jsxDEV("label",{className:"ifp-control-label",children:o==="zh"?"X 偏移":"Offset X"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:333,columnNumber:19},void 0),l.jsxDEV("div",{className:"ifp-control-input",children:[l.jsxDEV("input",{type:"range",min:-100,max:100,value:(s.offsetX??0)*100,onChange:S=>g({offsetX:Number(S.target.value)/100}),className:"ifp-slider"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:337,columnNumber:21},void 0),l.jsxDEV("div",{className:"ifp-control-value-wrapper",children:[l.jsxDEV("input",{type:"number",className:"ifp-control-value-input",value:Math.round((s.offsetX??0)*100),min:-100,max:100,onChange:S=>b("offsetX",S.target.value,-100,100,100)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:346,columnNumber:23},void 0),l.jsxDEV("span",{className:"ifp-control-unit",children:"%"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:354,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:345,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:336,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:332,columnNumber:17},void 0),l.jsxDEV("div",{className:"ifp-control-row",children:[l.jsxDEV("label",{className:"ifp-control-label",children:o==="zh"?"Y 偏移":"Offset Y"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:361,columnNumber:19},void 0),l.jsxDEV("div",{className:"ifp-control-input",children:[l.jsxDEV("input",{type:"range",min:-100,max:100,value:(s.offsetY??0)*100,onChange:S=>g({offsetY:Number(S.target.value)/100}),className:"ifp-slider"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:365,columnNumber:21},void 0),l.jsxDEV("div",{className:"ifp-control-value-wrapper",children:[l.jsxDEV("input",{type:"number",className:"ifp-control-value-input",value:Math.round((s.offsetY??0)*100),min:-100,max:100,onChange:S=>b("offsetY",S.target.value,-100,100,100)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:374,columnNumber:23},void 0),l.jsxDEV("span",{className:"ifp-control-unit",children:"%"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:382,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:373,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:364,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:360,columnNumber:17},void 0),l.jsxDEV("div",{className:"ifp-control-row",children:[l.jsxDEV("label",{className:"ifp-control-label",children:o==="zh"?"旋转":"Rotation"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:389,columnNumber:19},void 0),l.jsxDEV("div",{className:"ifp-control-input",children:[l.jsxDEV("input",{type:"range",min:0,max:360,value:s.rotation??0,onChange:S=>g({rotation:Number(S.target.value)}),className:"ifp-slider"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:393,columnNumber:21},void 0),l.jsxDEV("div",{className:"ifp-control-value-wrapper",children:[l.jsxDEV("input",{type:"number",className:"ifp-control-value-input",value:s.rotation??0,min:0,max:360,onChange:S=>b("rotation",S.target.value,0,360,1)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:402,columnNumber:23},void 0),l.jsxDEV("span",{className:"ifp-control-unit",children:"°"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:410,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:401,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:392,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:388,columnNumber:17},void 0),l.jsxDEV("button",{className:"ifp-reset-btn",onClick:()=>f({scale:1,offsetX:0,offsetY:0,rotation:0}),children:o==="zh"?"重置":"Reset"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:416,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:302,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:292,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:268,columnNumber:9},void 0),!i&&a&&l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(GD,{isOpen:a,onClose:()=>c(!1),mode:ri.SELECT,filterType:qn.IMAGE,onSelect:x,selectButtonText:o==="zh"?"使用此图片":"Use this image"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:438,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:437,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/ImageFillPanel.tsx",lineNumber:238,columnNumber:5},void 0)},XD=[{value:"solid",labelZh:"纯色",labelEn:"Solid"},{value:"gradient",labelZh:"渐变",labelEn:"Gradient"},{value:"image",labelZh:"图片",labelEn:"Image"}],KD=({value:e,onSolidChange:t,onOpacityChange:n,onGradientChange:i,onImageChange:o,onFillTypeChange:s,showClose:r=!1,onClose:a,onOpenMediaLibrary:c})=>{const{language:u}=je(),d=p.useMemo(()=>e?rs(e)?$0(e):Ln(e)?e:{type:"solid",solid:{color:"#FFFFFF"}}:{type:"solid",solid:{color:"#FFFFFF"}},[e]),[m,f]=p.useState(d.type);p.useEffect(()=>{f(d.type)},[d.type]);const[h,g]=p.useState(d.gradient||zr),[b,x]=p.useState(d.image||Qp);p.useEffect(()=>{d.gradient&&g(d.gradient)},[d.gradient]),p.useEffect(()=>{d.image&&x(d.image)},[d.image]);const y=p.useCallback(E=>{f(E)},[]),N=p.useCallback(E=>{s==null||s("solid"),t==null||t(E)},[t,s]),w=p.useCallback(E=>{g(E),s==null||s("gradient"),i==null||i(E)},[i,s]),D=p.useCallback(E=>{x(E),s==null||s("image"),o==null||o(E)},[o,s]),S=p.useMemo(()=>rs(e)?e:Ln(e)&&e.solid?e.solid.color:"#FFFFFF",[e]);return l.jsxDEV("div",{className:"fill-panel",children:[l.jsxDEV("div",{className:"fill-panel__header",children:[l.jsxDEV("span",{className:"fill-panel__title",children:u==="zh"?"填充":"Fill"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/FillPanel.tsx",lineNumber:160,columnNumber:9},void 0),r&&l.jsxDEV("button",{className:"fill-panel__close",onClick:a,children:"×"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/FillPanel.tsx",lineNumber:164,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/FillPanel.tsx",lineNumber:159,columnNumber:7},void 0),l.jsxDEV("div",{className:"fill-panel__tabs",children:XD.map(E=>l.jsxDEV("button",{className:K("fill-panel__tab",{active:m===E.value}),onClick:()=>y(E.value),children:u==="zh"?E.labelZh:E.labelEn},E.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/FillPanel.tsx",lineNumber:173,columnNumber:11},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/FillPanel.tsx",lineNumber:171,columnNumber:7},void 0),l.jsxDEV("div",{className:"fill-panel__content",children:[m==="solid"&&l.jsxDEV("div",{className:"fill-panel__solid",children:l.jsxDEV(_i,{value:S,onChange:N,onOpacityChange:n},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/FillPanel.tsx",lineNumber:187,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/FillPanel.tsx",lineNumber:186,columnNumber:11},void 0),m==="gradient"&&l.jsxDEV(zD,{value:h,onChange:w},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/FillPanel.tsx",lineNumber:196,columnNumber:11},void 0),m==="image"&&l.jsxDEV($D,{value:b,onChange:D,onOpenMediaLibrary:c,externalMediaLibraryControl:!!c},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/FillPanel.tsx",lineNumber:200,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/FillPanel.tsx",lineNumber:184,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/fill-panel/FillPanel.tsx",lineNumber:157,columnNumber:5},void 0)},YD=p.lazy(()=>Re(()=>import("./index-BHPTfCZM.js"),__vite__mapDeps([0,1]),import.meta.url).then(e=>({default:e.MediaLibraryModal}))),ZD=({board:e,currentColor:t,title:n,children:i})=>{const{language:o}=je(),[s,r]=p.useState(!1),[a,c]=p.useState(!1),{hexColor:u,opacity:d}=p.useMemo(()=>{var D;if(!t)return{hexColor:void 0,opacity:100};if(rs(t)){const S=Di(t),E=uo(t);return{hexColor:S,opacity:E}}if(Ln(t))switch(t.type){case"solid":if(t.solid){const S=Di(t.solid.color),E=uo(t.solid.color);return{hexColor:S,opacity:E}}break;case"gradient":if((D=t.gradient)!=null&&D.stops[0])return{hexColor:t.gradient.stops[0].color,opacity:100};break;case"image":return{hexColor:"#888888",opacity:100}}return{hexColor:void 0,opacity:100}},[t]),m=!u||Yp(d)?l.jsxDEV(X0,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/fill-button.tsx",lineNumber:96,columnNumber:48},void 0):void 0,f=p.useCallback(D=>{cD(e,D),ID(e,D)},[e]),h=p.useCallback(D=>{lD(e,D)},[e]),g=p.useCallback(D=>{AD(e,D)},[e]),b=p.useCallback(D=>{Rm(e,D)},[e]),x=p.useCallback(D=>{MD(e,D)},[e]),y=p.useCallback(()=>{r(!1)},[]),N=p.useCallback(()=>{c(!0)},[]),w=p.useCallback(D=>{Rm(e,{imageUrl:D.url,mode:"stretch",scale:1,offsetX:0,offsetY:0,rotation:0}),c(!1)},[e]);return l.jsxDEV(st,{sideOffset:12,crossAxisOffset:40,open:s,onOpenChange:D=>{!D&&a||r(D)},placement:"left",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{className:K("property-button"),visible:!0,icon:m,type:"button",tooltip:n,"aria-label":n,onPointerUp:()=>{r(!s)},children:!m&&i},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/fill-button.tsx",lineNumber:182,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/fill-button.tsx",lineNumber:181,columnNumber:7},void 0),l.jsxDEV(at,{children:l.jsxDEV(Ye,{padding:0,className:K(`${It}`,"fill-setting"),children:l.jsxDEV(KD,{value:t,onSolidChange:f,onOpacityChange:h,onGradientChange:g,onImageChange:b,onFillTypeChange:x,showClose:!0,onClose:y,onOpenMediaLibrary:N},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/fill-button.tsx",lineNumber:202,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/fill-button.tsx",lineNumber:198,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/fill-button.tsx",lineNumber:197,columnNumber:7},void 0),a&&l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(YD,{isOpen:a,onClose:()=>c(!1),mode:ri.SELECT,filterType:qn.IMAGE,onSelect:w,selectButtonText:o==="zh"?"使用此图片":"Use this image"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/fill-button.tsx",lineNumber:219,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/fill-button.tsx",lineNumber:218,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/fill-button.tsx",lineNumber:168,columnNumber:5},void 0)},QD=({board:e,currentRadius:t,title:n,selectionRect:i})=>{const[o,s]=p.useState(!1),[r,a]=p.useState({top:0,left:0}),[c,u]=p.useState(""),d=p.useRef(null),m=p.useRef(null),f=q.getBoardContainer(e),{t:h}=je(),g=n||h("toolbar.cornerRadius")||"圆角",b=t??0;p.useEffect(()=>{u(String(b))},[b]),p.useEffect(()=>{if(o&&d.current){const E=d.current.getBoundingClientRect(),k=220,V=8;let R=E.left+E.width/2-k/2,z=E.bottom+V;const I=window.innerWidth,U=window.innerHeight;R+k>I-16&&(R=I-k-16),R<16&&(R=16),z+40>U-16&&(z=E.top-40-V),a({left:R,top:z})}},[o]),p.useEffect(()=>{if(!o)return;const E=V=>{const R=V.target;m.current&&m.current.contains(R)||d.current&&d.current.contains(R)||R.closest(".popup-toolbar")!==null||s(!1)},k=setTimeout(()=>{document.addEventListener("mousedown",E)},100);return()=>{clearTimeout(k),document.removeEventListener("mousedown",E)}},[o]);const x=p.useCallback(E=>{const k=Math.max(0,Math.min(100,E));Oe(e).filter(R=>Je.isPenPath(R)).forEach(R=>{const z=e.children.findIndex(I=>I.id===R.id);z>=0&&ce.setNode(e,{cornerRadius:k},[z])})},[e]),y=p.useCallback(E=>{u(String(E)),x(E)},[x]),N=p.useCallback(E=>{u(E.target.value)},[]),w=p.useCallback(()=>{const E=parseInt(c,10);if(isNaN(E))u(String(b));else{const k=Math.max(0,Math.min(100,E));u(String(k)),x(k)}},[c,b,x]),D=p.useCallback(E=>{E.key==="Enter"&&E.target.blur()},[]),S=p.useCallback(()=>{s(!o)},[o]);return l.jsxDEV(l.Fragment,{children:[l.jsxDEV(ie,{ref:d,className:K("property-button","corner-radius-button",{"is-active":o}),visible:!0,type:"button",tooltip:g,"aria-label":g,onPointerUp:S,children:l.jsxDEV("svg",{viewBox:"0 0 24 24",width:"18",height:"18",children:l.jsxDEV("path",{d:"M4 4 L4 14 Q4 20 10 20 L20 20",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/corner-radius-button.tsx",lineNumber:178,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/corner-radius-button.tsx",lineNumber:177,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/corner-radius-button.tsx",lineNumber:168,columnNumber:7},void 0),o&&f&&Xr.createPortal(l.jsxDEV("div",{ref:m,className:K(It,"corner-radius-panel"),style:{position:"fixed",top:r.top,left:r.left,zIndex:5e3},onPointerDown:E=>E.stopPropagation(),onMouseDown:E=>E.stopPropagation(),children:l.jsxDEV(Ye,{padding:2,className:"corner-radius-setting-compact",children:l.jsxDEV("div",{className:"corner-radius-row",children:[l.jsxDEV("span",{className:"corner-radius-label",children:g},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/corner-radius-button.tsx",lineNumber:204,columnNumber:15},void 0),l.jsxDEV("div",{className:"corner-radius-slider",children:l.jsxDEV(Hr,{value:b,min:0,max:100,step:1,onChange:E=>y(E),label:!1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/corner-radius-button.tsx",lineNumber:206,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/corner-radius-button.tsx",lineNumber:205,columnNumber:15},void 0),l.jsxDEV("input",{type:"text",className:"corner-radius-input",value:c,onChange:N,onBlur:w,onKeyDown:D},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/corner-radius-button.tsx",lineNumber:215,columnNumber:15},void 0),l.jsxDEV("span",{className:"corner-radius-unit",children:"%"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/corner-radius-button.tsx",lineNumber:223,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/corner-radius-button.tsx",lineNumber:203,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/corner-radius-button.tsx",lineNumber:202,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/corner-radius-button.tsx",lineNumber:190,columnNumber:9},void 0),f)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/corner-radius-button.tsx",lineNumber:167,columnNumber:5},void 0)},JD=(e,t)=>{try{return qt(e,[t],!1)}catch{return null}},Hm=(e,t,n,i,o,s)=>{const r=e.children.findIndex(g=>g.id===t.id);if(r<0)return;const a=JD(e,t);if(!a)return;const c=(a.x-n.x)/n.width,u=(a.y-n.y)/n.height,d=i.x+c*i.width,m=i.y+u*i.height,f=a.width*o,h=a.height*s;if(Yt(t)){const g=[[d,m],[d+f,m+h]];ce.setNode(e,{points:g},[r])}else if(F.isDrawElement(t)){const g=[[d,m],[d+f,m+h]];ce.setNode(e,{points:g},[r])}else if(on.isMindElement(e,t)){const g=[[d,m],[d+f,m+h]];ce.setNode(e,{points:g},[r])}else if(Xe.isFreehand(t)){const b=t.points.map(x=>{const y=(x[0]-n.x)/n.width,N=(x[1]-n.y)/n.height;return[i.x+y*i.width,i.y+N*i.height]});ce.setNode(e,{points:b},[r])}else if(Je.isPenPath(t)){const b=t.anchors.map(y=>{const N=[y.point[0]*o,y.point[1]*s],w=y.handleIn?[y.handleIn[0]*o,y.handleIn[1]*s]:void 0,D=y.handleOut?[y.handleOut[0]*o,y.handleOut[1]*s]:void 0;return{...y,point:N,handleIn:w,handleOut:D}}),x=[d,m];ce.setNode(e,{points:[x,x],anchors:b},[r])}},e_=({board:e})=>{const{language:t}=je(),n=t==="zh",i=Oe(e),[o,s]=p.useState(!0),[r,a]=p.useState(""),[c,u]=p.useState(""),[d,m]=p.useState(1),[f,h]=p.useState(!1),g=p.useRef(null),b=q.getBoardContainer(e),x=i.length>0?qt(e,i,!1):null;p.useEffect(()=>{x&&(g.current?(a(Math.round(g.current.width).toString()),u(Math.round(g.current.height).toString()),g.current=null):(a(Math.round(x.width).toString()),u(Math.round(x.height).toString())),m(x.width/x.height))},[x==null?void 0:x.width,x==null?void 0:x.height]);const y=p.useCallback(E=>{const k=E.target.value;if(a(k),o&&x){const V=parseFloat(k);if(!isNaN(V)&&V>0){const R=Math.round(V/d);u(R.toString())}}},[o,d,x]),N=p.useCallback(E=>{const k=E.target.value;if(u(k),o&&x){const V=parseFloat(k);if(!isNaN(V)&&V>0){const R=Math.round(V*d);a(R.toString())}}},[o,d,x]),w=p.useCallback(()=>{if(!x||i.length===0)return;const E=parseFloat(r),k=parseFloat(c);if(isNaN(E)||isNaN(k)||E<=0||k<=0){a(Math.round(x.width).toString()),u(Math.round(x.height).toString());return}if(Math.abs(E-x.width)<.5&&Math.abs(k-x.height)<.5)return;g.current={width:E,height:k};const V=E/x.width,R=k/x.height,z={x:x.x,y:x.y,width:E,height:k};i.forEach(I=>{Hm(e,I,x,z,V,R)})},[e,i,x,r,c]),D=p.useCallback(E=>{if(!x||i.length===0)return;const k=E.width,V=E.height;a(k.toString()),u(V.toString()),g.current={width:k,height:V};const R=k/x.width,z=V/x.height,I={x:x.x,y:x.y,width:k,height:V};i.forEach(U=>{Hm(e,U,x,I,R,z)}),m(k/V),h(!1)},[e,i,x]),S=p.useCallback(E=>{E.key==="Enter"?(w(),E.target.blur()):E.key==="Escape"&&(x&&(a(Math.round(x.width).toString()),u(Math.round(x.height).toString())),E.target.blur())},[w,x]);return x?l.jsxDEV("div",{className:"size-input-container",children:[l.jsxDEV("div",{className:"size-input-group",children:[l.jsxDEV("span",{className:"size-input-label",children:"W"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:303,columnNumber:9},void 0),l.jsxDEV("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",className:"size-input",value:r,onChange:y,onBlur:w,onKeyDown:S},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:304,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:302,columnNumber:7},void 0),l.jsxDEV("button",{className:`size-lock-button ${o?"locked":""}`,onClick:()=>s(!o),title:o?"解锁比例":"锁定比例",children:o?l.jsxDEV(K0,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:320,columnNumber:19},void 0):l.jsxDEV(Y0,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:320,columnNumber:34},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:315,columnNumber:7},void 0),l.jsxDEV("div",{className:"size-input-group",children:[l.jsxDEV("span",{className:"size-input-label",children:"H"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:323,columnNumber:9},void 0),l.jsxDEV("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",className:"size-input",value:c,onChange:N,onBlur:w,onKeyDown:S},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:324,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:322,columnNumber:7},void 0),l.jsxDEV(st,{open:f,onOpenChange:h,placement:"bottom-end",sideOffset:8,children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV("button",{className:`size-preset-button ${f?"active":""}`,title:n?"常用尺寸":"Preset Sizes",onClick:()=>h(!f),children:l.jsxDEV(oc,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:347,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:342,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:341,columnNumber:9},void 0),l.jsxDEV(at,{container:b,children:l.jsxDEV("div",{className:"size-preset-panel",children:Z0.map(E=>l.jsxDEV("div",{className:"size-preset-category",children:[l.jsxDEV("div",{className:"size-preset-category-label",children:n?E.category:E.categoryEn},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:354,columnNumber:17},void 0),E.items.map(k=>l.jsxDEV("button",{className:"size-preset-item",onClick:()=>D(k),children:[l.jsxDEV("span",{className:"size-preset-item-label",children:n?k.label:k.labelEn},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:363,columnNumber:21},void 0),l.jsxDEV("span",{className:"size-preset-item-size",children:[k.width," x ",k.height]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:366,columnNumber:21},void 0)]},`${k.width}x${k.height}-${k.label}`,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:358,columnNumber:19},void 0))]},E.category,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:353,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:351,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:350,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:335,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/size-input.tsx",lineNumber:301,columnNumber:5},void 0):null},t_=({board:e,title:t})=>{const{appState:n,setAppState:i}=Gt();return l.jsxDEV(ie,{className:K("property-button"),visible:!0,icon:l.jsxDEV(J0,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/link-button.tsx",lineNumber:25,columnNumber:13},void 0),type:"button",tooltip:t,"aria-label":t,onPointerUp:()=>{const o=Oe(e)[0],s=Q0(o);oo.getLinkElement(s)||oo.wrapLink(s,"链接",""),setTimeout(()=>{const c=oo.getLinkElement(s)[0],u=Sn.toDOMNode(s,c);i({...n,linkState:{editor:s,targetDom:u,targetElement:c,isEditing:!0,isHovering:!1,isHoveringOrigin:!1}})},0)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/link-button.tsx",lineNumber:22,columnNumber:5},void 0)},Mo=8,n_=60,i_=600,zm=24,o_='16px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif';let Ga=null,Xs=null;function s_(){if(Ga||(Ga=document.createElement("canvas"),Xs=Ga.getContext("2d")),!Xs)throw new Error("Failed to get canvas context");return Xs.font=o_,Xs}function Wa(e){return s_().measureText(e).width}function r_(e){const t=e.split(`
28
+ `);let n=0;for(const a of t){const c=Wa(a);n=Math.max(n,c)}const i=Math.min(i_-Mo*2,Math.max(n_-Mo*2,n)),o=i+Mo*2;let s=0;for(const a of t){if(a.length===0){s+=1;continue}if(Wa(a)<=i)s+=1;else{let u=0,d=1;for(const m of a){const f=Wa(m);u+f>i?(d++,u=f):u+=f}s+=d}}const r=Math.max(zm+Mo*2,s*zm+Mo*2);return{width:o,height:r}}function a_(e){switch(e){case"ai-input":return l.jsxDEV(ax,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:156,columnNumber:14},this);case"image":return l.jsxDEV(ef,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:158,columnNumber:14},this);case"video":return l.jsxDEV(rx,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:160,columnNumber:14},this);default:return null}}function l_(e,t){return{"ai-input":{zh:"AI输入",en:"AI Input"},image:{zh:"图片",en:"Image"},video:{zh:"视频",en:"Video"},preset:{zh:"预设",en:"Preset"}}[e][t]}const c_=({board:e,language:t,title:n})=>{const[i,o]=p.useState(!1),[s,r]=p.useState(0),{history:a,addHistory:c,removeHistory:u}=ex({deduplicateWithPresets:!1}),{confirm:d,confirmDialog:m}=Gr({container:e?q.getBoardContainer(e):null}),f=p.useRef(null),[h,g]=p.useState([]),[b,x]=p.useState([]);p.useEffect(()=>{i&&(g(tx()),x(nx()))},[i]);const y=p.useMemo(()=>{const k=ix[t].map((C,M)=>({id:`preset_${M}`,content:C,source:"preset"})),V=a.map(C=>({id:C.id,content:C.content,source:"ai-input",timestamp:C.timestamp})),R=h.map(C=>({id:C.id,content:C.content,source:"image",timestamp:C.timestamp})),z=b.map(C=>({id:C.id,content:C.content,source:"video",timestamp:C.timestamp})),I=[...V,...R,...z];I.sort((C,M)=>(M.timestamp||0)-(C.timestamp||0));const U=new Set,A=[];for(const C of I){const M=C.content.trim();U.has(M)||(U.add(M),A.push(C))}const j=k.filter(C=>!U.has(C.content.trim()));return[...A,...j]},[t,a,h,b]),{historyPrompts:N,presetPrompts:w}=p.useMemo(()=>{const k=y.filter(R=>R.source!=="preset"),V=y.filter(R=>R.source==="preset");return{historyPrompts:k,presetPrompts:V}},[y]),D=p.useCallback((k,V)=>k==="history"?V:N.length+V,[N.length]);p.useEffect(()=>{i&&r(0)},[i]);const S=p.useCallback(k=>{c(k.content),o(!1);const V=Oe(e);if(V.length===0)return;const R=U=>({type:"paragraph",children:[{text:U}]}),{width:z,height:I}=r_(k.content);for(const U of V){const A=e.children.findIndex(C=>C.id===U.id);if(A<0)continue;const j={};if(on.isMindElement(e,U)){const C=[R(k.content)];ce.setNode(e,{data:C},[A]);continue}if(F.isText&&F.isText(U)){if(j.text=R(k.content),"points"in U&&Array.isArray(U.points)&&U.points.length>=2){const C=U.points,[M]=C,J=[M,[M[0]+z,M[1]+I]];j.points=J}ce.setNode(e,j,[A]);continue}if(F.isDrawElement(U)&&sc([U])){if("text"in U&&U.text){if(j.text=R(k.content),"points"in U&&Array.isArray(U.points)&&U.points.length>=2){const C=U.points,[M]=C,J=[M,[M[0]+z,M[1]+I]];j.points=J}ce.setNode(e,j,[A]);continue}if("data"in U&&Array.isArray(U.data)){if(j.data=[R(k.content)],"points"in U&&Array.isArray(U.points)&&U.points.length>=2){const C=U.points,[M]=C,J=[M,[M[0]+z,M[1]+I]];j.points=J}ce.setNode(e,j,[A]);continue}}if("text"in U&&U.text){if(j.text=R(k.content),"points"in U&&Array.isArray(U.points)&&U.points.length>=2){const C=U.points,[M]=C,J=[M,[M[0]+z,M[1]+I]];j.points=J}ce.setNode(e,j,[A]);continue}"textContent"in U&&ce.setNode(e,{textContent:k.content},[A])}},[e,c]),E=p.useCallback(async(k,V)=>{k.stopPropagation(),await d({title:t==="zh"?"确认删除提示词":"Delete Prompt",description:t==="zh"?"确定要删除这条历史提示词吗?此操作不可撤销。":"Are you sure you want to delete this prompt history item? This action cannot be undone.",confirmText:t==="zh"?"删除":"Delete",cancelText:t==="zh"?"取消":"Cancel",danger:!0})&&u(V)},[d,t,u]);return p.useEffect(()=>{if(!i)return;const k=V=>{if(y.length===0){V.key==="Escape"&&(V.preventDefault(),o(!1));return}switch(V.key){case"ArrowUp":V.preventDefault(),r(R=>R<=0?y.length-1:R-1);break;case"ArrowDown":V.preventDefault(),r(R=>R>=y.length-1?0:R+1);break;case"Enter":V.preventDefault(),y[s]&&S(y[s]);break;case"Escape":V.preventDefault(),o(!1);break}};return document.addEventListener("keydown",k),()=>document.removeEventListener("keydown",k)},[i,y,s,S]),p.useEffect(()=>{var V;if(!i||y.length===0)return;const k=(V=f.current)==null?void 0:V.querySelector(".popup-prompt-panel__item--highlighted");k&&k.scrollIntoView({block:"nearest",behavior:"smooth"})},[s,i,y.length]),l.jsxDEV(st,{open:i,onOpenChange:o,placement:"top",sideOffset:8,children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{className:"prompt-button",type:"icon",icon:l.jsxDEV(Cu,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:489,columnNumber:17},void 0),visible:!0,tooltip:n||(t==="zh"?"提示词":"Prompts"),"aria-label":n||(t==="zh"?"提示词":"Prompts"),onPointerUp:()=>o(!i)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:486,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:485,columnNumber:7},void 0),l.jsxDEV(at,{className:`popup-prompt-panel ${It}`,onMouseDown:k=>k.preventDefault(),children:l.jsxDEV("div",{ref:f,className:"popup-prompt-panel__content",children:[N.length>0&&l.jsxDEV("div",{className:"popup-prompt-panel__section",children:[l.jsxDEV("div",{className:"popup-prompt-panel__section-header",children:[l.jsxDEV(ox,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:505,columnNumber:17},void 0),l.jsxDEV("span",{children:t==="zh"?"历史记录":"History"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:506,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:504,columnNumber:15},void 0),l.jsxDEV("div",{className:"popup-prompt-panel__list",children:N.map((k,V)=>l.jsxDEV("div",{className:`popup-prompt-panel__item popup-prompt-panel__item--history ${D("history",V)===s?"popup-prompt-panel__item--highlighted":""}`,onClick:()=>S(k),onMouseEnter:()=>r(D("history",V)),children:[l.jsxDEV("div",{className:"popup-prompt-panel__item-content",children:[l.jsxDEV("span",{className:"popup-prompt-panel__item-text",children:k.content},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:521,columnNumber:23},void 0),l.jsxDEV("span",{className:`popup-prompt-panel__item-source popup-prompt-panel__item-source--${k.source}`,children:[a_(k.source),l.jsxDEV("span",{children:l_(k.source,t)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:527,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:525,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:520,columnNumber:21},void 0),k.source==="ai-input"&&l.jsxDEV(_t,{content:t==="zh"?"删除":"Delete",showArrow:!1,children:l.jsxDEV("button",{className:"popup-prompt-panel__item-delete",onClick:R=>E(R,k.id),children:l.jsxDEV(sx,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:540,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:536,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:532,columnNumber:23},void 0)]},k.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:510,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:508,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:503,columnNumber:13},void 0),w.length>0&&l.jsxDEV("div",{className:"popup-prompt-panel__section",children:[l.jsxDEV("div",{className:"popup-prompt-panel__section-header",children:[l.jsxDEV(Cu,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:554,columnNumber:17},void 0),l.jsxDEV("span",{children:t==="zh"?"推荐提示词":"Suggestions"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:555,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:553,columnNumber:15},void 0),l.jsxDEV("div",{className:"popup-prompt-panel__list",children:w.map((k,V)=>l.jsxDEV("div",{className:`popup-prompt-panel__item ${D("preset",V)===s?"popup-prompt-panel__item--highlighted":""}`,onClick:()=>S(k),onMouseEnter:()=>r(D("preset",V)),children:l.jsxDEV("span",{className:"popup-prompt-panel__item-text",children:k.content},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:569,columnNumber:21},void 0)},k.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:559,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:557,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:552,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:500,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:496,columnNumber:7},void 0),m]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/prompt-button.tsx",lineNumber:484,columnNumber:5},void 0)},Io={bringToFront(e){const t=Oe(e);if(t.length===0)return;const n=e.children.length-1,i=t.map(o=>({element:o,index:e.children.findIndex(s=>s.id===o.id)})).sort((o,s)=>s.index-o.index);for(const{element:o,index:s}of i)s>=0&&s<n&&ce.moveNode(e,[s],[n])},bringForward(e){const t=Oe(e);if(t.length===0)return;const n=e.children.length-1,i=t.map(o=>({element:o,index:e.children.findIndex(s=>s.id===o.id)})).sort((o,s)=>s.index-o.index);for(const{element:o,index:s}of i)s>=0&&s<n&&ce.moveNode(e,[s],[s+2])},sendBackward(e){const t=Oe(e);if(t.length===0)return;const n=t.map(i=>({element:i,index:e.children.findIndex(o=>o.id===i.id)})).sort((i,o)=>i.index-o.index);for(const{element:i,index:o}of n)o>0&&ce.moveNode(e,[o],[o-1])},sendToBack(e){const t=Oe(e);if(t.length===0)return;const n=t.map(i=>({element:i,index:e.children.findIndex(o=>o.id===i.id)})).sort((i,o)=>i.index-o.index);for(const{element:i,index:o}of n)o>0&&ce.moveNode(e,[o],[0])},getLayerInfo(e,t){const n=e.children.findIndex(o=>o.id===t);if(n<0)return null;const i=e.children.length;return{index:n,total:i,canMoveUp:n<i-1,canMoveDown:n>0}}},u_=({board:e,title:t})=>{const{language:n}=je(),[i,o]=p.useState(!1),[s,r]=p.useState(0),a=q.getBoardContainer(e),c=p.useMemo(()=>{const b=Oe(e);if(b.length===0)return null;const x=b[0];return Io.getLayerInfo(e,x.id)},[e,s]),u=p.useCallback(()=>{Io.bringToFront(e),r(b=>b+1)},[e]),d=p.useCallback(()=>{Io.bringForward(e),r(b=>b+1)},[e]),m=p.useCallback(()=>{Io.sendBackward(e),r(b=>b+1)},[e]),f=p.useCallback(()=>{Io.sendToBack(e),r(b=>b+1)},[e]),h=(c==null?void 0:c.canMoveUp)??!1,g=(c==null?void 0:c.canMoveDown)??!1;return l.jsxDEV(st,{sideOffset:12,crossAxisOffset:-100,open:i,onOpenChange:o,placement:"top-start",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{className:K("property-button","layer-control-button"),selected:i,visible:!0,icon:l.jsxDEV(lx,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:80,columnNumber:17},void 0),type:"button",tooltip:t,"aria-label":t,onPointerUp:()=>o(!i)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:76,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:75,columnNumber:7},void 0),l.jsxDEV(at,{container:a,children:l.jsxDEV(Ye,{padding:1,className:K(It,"layer-control-panel"),children:l.jsxDEV("div",{className:"layer-actions",children:[l.jsxDEV(_t,{content:n==="zh"?"置顶":"Bring to Front",showArrow:!1,children:l.jsxDEV("button",{className:K("layer-action-btn",{disabled:!h}),onClick:u,disabled:!h,children:[l.jsxDEV(cx,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:101,columnNumber:17},void 0),l.jsxDEV("span",{children:n==="zh"?"置顶":"Front"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:102,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:94,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:90,columnNumber:13},void 0),l.jsxDEV(_t,{content:n==="zh"?"上移一层":"Bring Forward",showArrow:!1,children:l.jsxDEV("button",{className:K("layer-action-btn",{disabled:!h}),onClick:d,disabled:!h,children:[l.jsxDEV(ux,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:117,columnNumber:17},void 0),l.jsxDEV("span",{children:n==="zh"?"上移":"Forward"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:118,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:110,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:106,columnNumber:13},void 0),l.jsxDEV(_t,{content:n==="zh"?"下移一层":"Send Backward",showArrow:!1,children:l.jsxDEV("button",{className:K("layer-action-btn",{disabled:!g}),onClick:m,disabled:!g,children:[l.jsxDEV(dx,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:133,columnNumber:17},void 0),l.jsxDEV("span",{children:n==="zh"?"下移":"Backward"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:134,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:126,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:122,columnNumber:13},void 0),l.jsxDEV(_t,{content:n==="zh"?"置底":"Send to Back",showArrow:!1,children:l.jsxDEV("button",{className:K("layer-action-btn",{disabled:!g}),onClick:f,disabled:!g,children:[l.jsxDEV(mx,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:149,columnNumber:17},void 0),l.jsxDEV("span",{children:n==="zh"?"置底":"Back"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:150,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:142,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:138,columnNumber:13},void 0),c&&l.jsxDEV("span",{className:"layer-info",children:[c.index+1,"/",c.total]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:155,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:89,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:88,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:87,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/layer-control-button.tsx",lineNumber:68,columnNumber:5},void 0)},d_=({board:e,title:t})=>{const{language:n}=je(),[i,o]=p.useState(!1),s=q.getBoardContainer(e),r=p.useCallback(()=>{un.alignLeft(e)},[e]),a=p.useCallback(()=>{un.alignCenter(e)},[e]),c=p.useCallback(()=>{un.alignRight(e)},[e]),u=p.useCallback(()=>{un.alignTop(e)},[e]),d=p.useCallback(()=>{un.alignMiddle(e)},[e]),m=p.useCallback(()=>{un.alignBottom(e)},[e]),f=[{key:"left",icon:l.jsxDEV(fx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:67,columnNumber:13},void 0),label:n==="zh"?"左对齐":"Align Left",shortcut:"⌥ A",handler:r},{key:"center",icon:l.jsxDEV(hx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:74,columnNumber:13},void 0),label:n==="zh"?"水平居中":"Align Center",shortcut:"⌥ H",handler:a},{key:"right",icon:l.jsxDEV(gx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:81,columnNumber:13},void 0),label:n==="zh"?"右对齐":"Align Right",shortcut:"⌥ D",handler:c},{key:"top",icon:l.jsxDEV(bx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:88,columnNumber:13},void 0),label:n==="zh"?"顶部对齐":"Align Top",shortcut:"⌥ W",handler:u},{key:"middle",icon:l.jsxDEV(xx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:95,columnNumber:13},void 0),label:n==="zh"?"垂直居中":"Align Middle",shortcut:"⌥ V",handler:d},{key:"bottom",icon:l.jsxDEV(Nx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:102,columnNumber:13},void 0),label:n==="zh"?"底部对齐":"Align Bottom",shortcut:"⌥ S",handler:m}];return l.jsxDEV(st,{sideOffset:12,crossAxisOffset:-100,open:i,onOpenChange:o,placement:"top-start",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{className:K("property-button","alignment-button"),selected:i,visible:!0,icon:l.jsxDEV(px,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:122,columnNumber:17},void 0),type:"button",tooltip:t,"aria-label":t,onPointerUp:()=>o(!i)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:118,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:117,columnNumber:7},void 0),l.jsxDEV(at,{container:s,children:l.jsxDEV(Ye,{padding:1,className:K(It,"alignment-panel"),children:l.jsxDEV("div",{className:"alignment-actions",children:f.map(h=>l.jsxDEV(_t,{content:h.label,showArrow:!1,children:l.jsxDEV("button",{className:"alignment-action-btn",onClick:h.handler,children:[h.icon,l.jsxDEV("span",{className:"alignment-label",children:h.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:149,columnNumber:19},void 0),l.jsxDEV("span",{className:"alignment-shortcut",children:h.shortcut},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:150,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:144,columnNumber:17},void 0)},h.key,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:139,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:137,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:130,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:129,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/alignment-button.tsx",lineNumber:110,columnNumber:5},void 0)},m_=({board:e,title:t})=>{const{language:n}=je(),[i,o]=p.useState(!1),s=q.getBoardContainer(e),r=p.useCallback(()=>{so.distributeHorizontal(e)},[e]),a=p.useCallback(()=>{so.distributeVertical(e)},[e]),c=p.useCallback(()=>{so.autoArrange(e)},[e]),u=[{key:"horizontal",icon:l.jsxDEV(wx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:52,columnNumber:13},void 0),label:n==="zh"?"水平间距":"Horizontal Spacing",shortcut:"⇧ H",handler:r},{key:"vertical",icon:l.jsxDEV(vx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:59,columnNumber:13},void 0),label:n==="zh"?"垂直间距":"Vertical Spacing",shortcut:"⇧ V",handler:a},{key:"auto",icon:l.jsxDEV(Ex,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:66,columnNumber:13},void 0),label:n==="zh"?"自动排列":"Auto Arrange",shortcut:"⇧ A",handler:c}];return l.jsxDEV(st,{sideOffset:12,crossAxisOffset:-100,open:i,onOpenChange:o,placement:"top-start",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{className:K("property-button","distribute-button"),selected:i,visible:!0,icon:l.jsxDEV(yx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:86,columnNumber:17},void 0),type:"button",tooltip:t,"aria-label":t,onPointerUp:()=>o(!i)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:82,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:81,columnNumber:7},void 0),l.jsxDEV(at,{container:s,children:l.jsxDEV(Ye,{padding:1,className:K(It,"distribute-panel"),children:l.jsxDEV("div",{className:"distribute-actions",children:u.map(d=>l.jsxDEV(_t,{content:d.label,showArrow:!1,children:l.jsxDEV("button",{className:"distribute-action-btn",onClick:d.handler,children:[d.icon,l.jsxDEV("span",{className:"distribute-label",children:d.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:113,columnNumber:19},void 0),l.jsxDEV("span",{className:"distribute-shortcut",children:d.shortcut},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:114,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:108,columnNumber:17},void 0)},d.key,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:103,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:101,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:94,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:93,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/distribute-button.tsx",lineNumber:74,columnNumber:5},void 0)},p_=({board:e,title:t})=>{const{language:n}=je(),[i,o]=p.useState(!1),s=q.getBoardContainer(e),r=p.useCallback(()=>{kn.union(e,n),o(!1)},[e,n]),a=p.useCallback(()=>{kn.subtract(e,n)},[e,n]),c=p.useCallback(()=>{kn.intersect(e,n)},[e,n]),u=p.useCallback(()=>{kn.exclude(e,n)},[e,n]),d=p.useCallback(()=>{kn.flatten(e,n)},[e,n]),m=[{key:"union",icon:l.jsxDEV(Sx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:63,columnNumber:13},void 0),label:n==="zh"?"合并":"Union",shortcut:"⌥⇧U",handler:r},{key:"subtract",icon:l.jsxDEV(Tx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:70,columnNumber:13},void 0),label:n==="zh"?"减去":"Subtract",shortcut:"⌥⇧S",handler:a},{key:"intersect",icon:l.jsxDEV(Dx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:77,columnNumber:13},void 0),label:n==="zh"?"相交":"Intersect",shortcut:"⌥⇧I",handler:c},{key:"exclude",icon:l.jsxDEV(_x,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:84,columnNumber:13},void 0),label:n==="zh"?"排除":"Exclude",shortcut:"⌥⇧E",handler:u},{key:"flatten",icon:l.jsxDEV(jx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:91,columnNumber:13},void 0),label:n==="zh"?"扁平化":"Flatten",shortcut:"⇧⌥F",handler:d}];return l.jsxDEV(st,{sideOffset:12,crossAxisOffset:-100,open:i,onOpenChange:o,placement:"top-start",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{className:K("property-button","boolean-button"),selected:i,visible:!0,icon:l.jsxDEV(kx,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:111,columnNumber:17},void 0),type:"button",tooltip:t,"aria-label":t,onPointerUp:()=>o(!i)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:107,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:106,columnNumber:7},void 0),l.jsxDEV(at,{container:s,children:l.jsxDEV(Ye,{padding:1,className:K(It,"boolean-panel"),children:l.jsxDEV("div",{className:"boolean-actions",children:m.map(f=>l.jsxDEV(_t,{content:f.label,showArrow:!1,children:l.jsxDEV("button",{className:"boolean-action-btn",onClick:f.handler,children:[f.icon,l.jsxDEV("span",{className:"boolean-label",children:f.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:138,columnNumber:19},void 0),l.jsxDEV("span",{className:"boolean-shortcut",children:f.shortcut},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:139,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:133,columnNumber:17},void 0)},f.key,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:128,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:126,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:119,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:118,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/boolean-button.tsx",lineNumber:99,columnNumber:5},void 0)};function f_(e){return e.sort((t,n)=>t.position-n.position).map(t=>`${t.color} ${t.position}%`).join(", ")}function h_(e){const t=f_(e.stops);return e.type==="linear"?`linear-gradient(${e.angle}deg, ${t})`:`radial-gradient(circle, ${t})`}function $a(e){return e.enabled?`${e.offsetX}px ${e.offsetY}px ${e.blur}px ${e.color}`:""}const Xa=Ct.CUSTOM_GRADIENTS,g_=({board:e,isOpen:t,onClose:n,currentFontSize:i,currentFontFamily:o,currentColor:s,toolbarRect:r,selectionRect:a})=>{var pu,fu;const{t:c,language:u}=je(),{confirm:d,confirmDialog:m}=Gr({container:q.getBoardContainer(e)}),f=p.useRef(null),[h,g]=p.useState({top:0,left:0}),[b,x]=p.useState(i||"16"),[y,N]=p.useState(!1),[w,D]=p.useState(o||"PingFang SC"),[S,E]=p.useState(new Set),[k,V]=p.useState(400),[R,z]=p.useState("left"),[I,U]=p.useState(1.5),[A,j]=p.useState(0),[C,M]=p.useState(!1),[J,ye]=p.useState(!1),[P,G]=p.useState(!1),[de,W]=p.useState(!1),[ae,oe]=p.useState(!1),[ve,ke]=p.useState(!1),[Fe,X]=p.useState(null),[Ce,We]=p.useState(null),[mt,Y]=p.useState(0),[v,H]=p.useState("#000000"),[O,pe]=p.useState(null),[me,_]=p.useState(null),[L,B]=p.useState(!1),[$,Q]=p.useState(null),[ee,Z]=p.useState({color:"rgba(0, 0, 0, 0.5)",offsetX:2,offsetY:2,blur:4}),[te,le]=p.useState(!1),[qe,$e]=p.useState(null),[ne,_e]=p.useState({type:"linear",angle:135,stops:[{color:"#FF6B6B",offset:0},{color:"#4ECDC4",offset:1}]}),[Ee,xe]=p.useState([]),[yt,Vt]=p.useState(s||"#000000"),[jt,Dt]=p.useState(!1);p.useEffect(()=>{let T=!0;return Tn.get(Xa).then(ue=>{T&&ue&&xe(ue)}).catch(ue=>{console.warn("Failed to load gradient data:",ue)}),()=>{T=!1}},[]),p.useEffect(()=>{if(t){const T=PD(e);if(T["text-gradient"]){le(!0);const Ve=Px.find(et=>h_(et.config)===T["text-gradient"]);$e(Ve?Ve.id:null)}else le(!1),$e(null);if(T["text-shadow"]){B(!0);const Ve=T["text-shadow"];let et=null;for(const[an,Kn]of Object.entries(Au.textShadow))if($a(Kn)===Ve){et=an;break}Q(et||null)}else B(!1),Q(null);if(T["font-family"]&&D(T["font-family"]),T["font-weight"]&&V(Number(T["font-weight"])),T["line-height"]&&U(Number(T["line-height"])),T["letter-spacing"]){const Ve=String(T["letter-spacing"]).replace("px","");j(Number(Ve))}const ue=CD(e);z(ue),M(!!T.bold),ye(!!T.italic),G(!!T.underlined),W(!!T.strikethrough),oe(!!T.superscript),ke(!!T.subscript),X(T["background-color"]||null),We(T["text-transform"]||null),Y(T["text-stroke"]||0),H(T["text-stroke-color"]||"#000000"),pe(T["text-decoration-style"]||null),_(T["text-decoration-color"]||null)}},[t,e]),p.useEffect(()=>{if(t&&!y){const T=setTimeout(()=>{Mu.forEach(ue=>{Is.isFontLoaded(ue.family)||Is.loadGoogleFont(ue.family).catch(Ve=>{console.warn(`Failed to preload font ${ue.family}:`,Ve)})})},500);return()=>clearTimeout(T)}},[t,y]),p.useEffect(()=>{if(t&&r&&a){let et=a.right+12,an=r.top+r.height+8;const Kn=window.innerWidth,Sa=window.innerHeight;et+320>Kn-16&&(et=a.left-320-12,et<16&&(et=Kn-320-16)),an+520>Sa-16&&(an=Math.max(16,Sa-520-16)),g({left:Math.max(16,et),top:Math.max(16,an)})}},[t,r,a]);const Xn=p.useCallback(T=>{const ue=parseInt(T,10);!isNaN(ue)&&ue>=8&&ue<=100&&(x(T),fg(e,T))},[e]),Ht=p.useCallback(async T=>{if(D(T.family),N(!1),T.source==="google"&&!Is.isFontLoaded(T.family)){E(ue=>new Set(ue).add(T.family));try{await Is.loadGoogleFont(T.family)}catch(ue){console.error("Failed to load Google font:",ue)}finally{E(ue=>{const Ve=new Set(ue);return Ve.delete(T.family),Ve})}}hD(e,T.family)},[e]);p.useEffect(()=>{s&&Vt(s)},[s]);const sn=p.useCallback(T=>{Vt(T),ni.setTextColor(e,T)},[e]),hi=p.useCallback((T,ue)=>{Q(T),B(!0),Z({color:ue.color,offsetX:ue.offsetX,offsetY:ue.offsetY,blur:ue.blur});const Ve=$a(ue);Ha(e,Ve)},[e]),rn=p.useCallback((T,ue)=>{const Ve={...ee,[T]:ue};Z(Ve),Q(null);const et=`${Ve.offsetX}px ${Ve.offsetY}px ${Ve.blur}px ${Ve.color}`;Ha(e,et)},[e,ee]),Se=p.useCallback(T=>{_e(T),$e(null);const ue=Ei(T);Um(e,ue)},[e]),He=p.useCallback(()=>{const T=Ei(ne),Ve=[{id:`custom-${Date.now()}`,css:T},...Ee].slice(0,8);xe(Ve),Tn.set(Xa,Ve).catch(et=>{console.warn("Failed to save custom gradients:",et)})},[ne,Ee]),Ne=p.useCallback(async T=>{if(!await d({title:u==="zh"?"确认删除渐变预设":"Delete Gradient Preset",description:u==="zh"?"确定要删除这个自定义渐变预设吗?":"Are you sure you want to delete this custom gradient preset?",confirmText:u==="zh"?"删除":"Delete",cancelText:u==="zh"?"取消":"Cancel",danger:!0}))return;const Ve=Ee.filter(et=>et.id!==T);xe(Ve),Tn.set(Xa,Ve).catch(et=>{console.warn("Failed to save custom gradients:",et)})},[d,Ee,u]),Ie=p.useCallback(()=>{const T=!L;B(T),T||(Ha(e,null),Q(null))},[e,L]),it=p.useCallback(()=>{const T=!te;le(T),T||(Um(e,null),$e(null))},[e,te]),ze=p.useCallback(T=>{V(T),hg(e,T)},[e]),Le=p.useCallback(T=>{z(T),gD(e,T)},[e]),pt=p.useCallback(T=>{U(T),bD(e,T)},[e]),ft=p.useCallback(T=>{j(T),xD(e,T)},[e]),Pt=p.useCallback(()=>{M(!C),ND(e)},[e,C]),Ut=p.useCallback(()=>{ye(!J),yD(e)},[e,J]),lt=p.useCallback(()=>{G(!P),wD(e)},[e,P]),fn=p.useCallback(()=>{W(!de),vD(e)},[e,de]),Na=p.useCallback(()=>{const T=!ae;oe(T),T&&ke(!1),ED(e)},[e,ae]),ya=p.useCallback(()=>{const T=!ve;ke(T),T&&oe(!1),kD(e)},[e,ve]),As=p.useCallback(T=>{X(T),SD(e,T)},[e]),_o=p.useCallback(T=>{const ue=T===Ce?null:T;We(ue),TD(e,ue)},[e,Ce]),re=p.useCallback((T,ue)=>{Y(T),ue&&H(ue),DD(e,T>0?T:null,ue||v)},[e,v]),wa=p.useCallback(T=>{pe(T),_D(e,T)},[e]),Li=p.useCallback(T=>{_(T),jD(e,T)},[e]);p.useEffect(()=>{if(!t)return;const T=Ve=>{const et=Ve.target;f.current&&f.current.contains(et)||et.closest(".popup-toolbar")!==null||n()},ue=setTimeout(()=>{document.addEventListener("mousedown",T)},100);return()=>{clearTimeout(ue),document.removeEventListener("mousedown",T)}},[t,n]);const zb=p.useCallback(T=>{T.target===T.currentTarget&&n()},[n]),[va,Ea]=p.useState(!1),mu=[{value:100,label:"Thin",labelZh:"极细"},{value:200,label:"Extra Light",labelZh:"特细"},{value:300,label:"Light",labelZh:"细体"},{value:400,label:"Regular",labelZh:"常规"},{value:500,label:"Medium",labelZh:"中等"},{value:600,label:"Semi Bold",labelZh:"半粗"},{value:700,label:"Bold",labelZh:"粗体"},{value:800,label:"Extra Bold",labelZh:"特粗"},{value:900,label:"Black",labelZh:"黑体"}],Gb=p.useCallback(T=>{const ue=mu.find(Ve=>Ve.value===T);return ue?u==="zh"?ue.labelZh:ue.label:String(T)},[u]),ka=[...Cx,...Mu],Wb=p.useCallback(T=>{const ue=ka.find(Ve=>Ve.family===T);return(ue==null?void 0:ue.displayName)||T},[ka]);return t?l.jsxDEV(l.Fragment,{children:[l.jsxDEV("div",{className:"text-property-panel-overlay",onClick:zb,onPointerDown:T=>T.stopPropagation(),onMouseDown:T=>T.stopPropagation()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:612,columnNumber:7},void 0),l.jsxDEV("div",{ref:f,className:K("text-property-panel",{"is-open":t}),style:{top:h.top,left:h.left},onPointerDown:T=>T.stopPropagation(),onMouseDown:T=>T.stopPropagation(),onClick:T=>T.stopPropagation(),onPointerUp:T=>T.stopPropagation(),children:[l.jsxDEV("div",{className:"text-property-panel__header",children:[l.jsxDEV("span",{className:"text-property-panel__header-title",children:c("propertyPanel.title")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:631,columnNumber:11},void 0),l.jsxDEV("button",{className:"text-property-panel__header-close",onClick:n,children:l.jsxDEV("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:l.jsxDEV("path",{d:"M1 1L13 13M1 13L13 1",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:636,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:635,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:634,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:630,columnNumber:9},void 0),l.jsxDEV("div",{className:"text-property-panel__content",children:[l.jsxDEV("div",{className:"text-property-panel__section",children:l.jsxDEV("div",{className:"text-property-panel__section-content",children:[l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"字号":"Size"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:648,columnNumber:17},void 0),l.jsxDEV("div",{className:"inline-control__slider-group",children:[l.jsxDEV("input",{type:"range",className:"inline-control__slider",value:b,min:8,max:100,step:1,onChange:T=>{x(T.target.value),Xn(T.target.value)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:650,columnNumber:19},void 0),l.jsxDEV("span",{className:"inline-control__value",children:b},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:662,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:649,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:647,columnNumber:15},void 0),l.jsxDEV("div",{className:"inline-control inline-control--dropdown",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"字体":"Font"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:668,columnNumber:17},void 0),l.jsxDEV("div",{className:"custom-dropdown",children:[l.jsxDEV("div",{className:K("custom-dropdown__trigger",{"is-expanded":y}),onClick:()=>{N(!y),Ea(!1)},children:[l.jsxDEV("span",{className:"custom-dropdown__value",style:{fontFamily:`'${w}', sans-serif`},children:Wb(w)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:677,columnNumber:21},void 0),l.jsxDEV("svg",{className:"custom-dropdown__arrow",width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:l.jsxDEV("path",{d:"M3 4.5L6 7.5L9 4.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:684,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:683,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:670,columnNumber:19},void 0),l.jsxDEV("div",{className:K("custom-dropdown__menu custom-dropdown__menu--font",{"is-open":y}),children:ka.map(T=>l.jsxDEV("div",{className:K("custom-dropdown__item custom-dropdown__item--font",{"is-active":w===T.family}),onClick:()=>{Ht(T),N(!1)},children:[l.jsxDEV("span",{className:"custom-dropdown__item-label",children:T.displayName},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:699,columnNumber:25},void 0),l.jsxDEV("span",{className:"custom-dropdown__item-preview",style:{fontFamily:`'${T.family}', sans-serif`},children:T.previewText},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:700,columnNumber:25},void 0)]},T.family,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:689,columnNumber:23},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:687,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:669,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:667,columnNumber:15},void 0),l.jsxDEV("div",{className:"inline-control inline-control--dropdown",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"字重":"Weight"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:714,columnNumber:17},void 0),l.jsxDEV("div",{className:"custom-dropdown",children:[l.jsxDEV("div",{className:K("custom-dropdown__trigger",{"is-expanded":va}),onClick:()=>{Ea(!va),N(!1)},children:[l.jsxDEV("span",{className:"custom-dropdown__value",style:{fontWeight:k},children:Gb(k)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:723,columnNumber:21},void 0),l.jsxDEV("svg",{className:"custom-dropdown__arrow",width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:l.jsxDEV("path",{d:"M3 4.5L6 7.5L9 4.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:727,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:726,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:716,columnNumber:19},void 0),l.jsxDEV("div",{className:K("custom-dropdown__menu",{"is-open":va}),children:mu.map(T=>l.jsxDEV("div",{className:K("custom-dropdown__item",{"is-active":k===T.value}),onClick:()=>{ze(T.value),Ea(!1)},children:l.jsxDEV("span",{className:"custom-dropdown__item-label",style:{fontWeight:T.value},children:u==="zh"?T.labelZh:T.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:742,columnNumber:25},void 0)},T.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:732,columnNumber:23},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:730,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:715,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:713,columnNumber:15},void 0),l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"对齐":"Align"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:756,columnNumber:17},void 0),l.jsxDEV("div",{className:"align-buttons align-buttons--compact",children:[l.jsxDEV("button",{className:K("align-buttons__btn",{"is-active":R==="left"}),onClick:()=>Le("left"),title:u==="zh"?"左对齐":"Align Left",children:l.jsxDEV("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"currentColor",children:l.jsxDEV("path",{d:"M2 3h12v2H2V3zm0 4h8v2H2V7zm0 4h12v2H2v-2z"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:764,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:763,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:758,columnNumber:19},void 0),l.jsxDEV("button",{className:K("align-buttons__btn",{"is-active":R==="center"}),onClick:()=>Le("center"),title:u==="zh"?"居中对齐":"Align Center",children:l.jsxDEV("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"currentColor",children:l.jsxDEV("path",{d:"M2 3h12v2H2V3zm2 4h8v2H4V7zm-2 4h12v2H2v-2z"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:773,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:772,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:767,columnNumber:19},void 0),l.jsxDEV("button",{className:K("align-buttons__btn",{"is-active":R==="right"}),onClick:()=>Le("right"),title:u==="zh"?"右对齐":"Align Right",children:l.jsxDEV("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"currentColor",children:l.jsxDEV("path",{d:"M2 3h12v2H2V3zm4 4h8v2H6V7zm-4 4h12v2H2v-2z"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:782,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:781,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:776,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:757,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:755,columnNumber:15},void 0),l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"样式":"Style"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:790,columnNumber:17},void 0),l.jsxDEV("div",{className:"style-buttons",children:[l.jsxDEV("button",{className:K("style-buttons__btn",{"is-active":C}),onClick:Pt,title:u==="zh"?"加粗":"Bold",children:l.jsxDEV("span",{className:"style-buttons__icon style-buttons__icon--bold",children:"B"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:797,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:792,columnNumber:19},void 0),l.jsxDEV("button",{className:K("style-buttons__btn",{"is-active":J}),onClick:Ut,title:u==="zh"?"斜体":"Italic",children:l.jsxDEV("span",{className:"style-buttons__icon style-buttons__icon--italic",children:"I"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:804,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:799,columnNumber:19},void 0),l.jsxDEV("button",{className:K("style-buttons__btn",{"is-active":P}),onClick:lt,title:u==="zh"?"下划线":"Underline",children:l.jsxDEV("span",{className:"style-buttons__icon style-buttons__icon--underline",children:"U"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:811,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:806,columnNumber:19},void 0),l.jsxDEV("button",{className:K("style-buttons__btn",{"is-active":de}),onClick:fn,title:u==="zh"?"删除线":"Strikethrough",children:l.jsxDEV("span",{className:"style-buttons__icon style-buttons__icon--strikethrough",children:"S"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:818,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:813,columnNumber:19},void 0),l.jsxDEV("button",{className:K("style-buttons__btn",{"is-active":ae}),onClick:Na,title:u==="zh"?"上标":"Superscript",children:l.jsxDEV("span",{className:"style-buttons__icon style-buttons__icon--superscript",children:["X",l.jsxDEV("sup",{children:"2"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:825,columnNumber:93},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:825,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:820,columnNumber:19},void 0),l.jsxDEV("button",{className:K("style-buttons__btn",{"is-active":ve}),onClick:ya,title:u==="zh"?"下标":"Subscript",children:l.jsxDEV("span",{className:"style-buttons__icon style-buttons__icon--subscript",children:["X",l.jsxDEV("sub",{children:"2"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:832,columnNumber:91},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:832,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:827,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:791,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:789,columnNumber:15},void 0),l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"大小写":"Case"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:839,columnNumber:17},void 0),l.jsxDEV("div",{className:"case-buttons",children:[l.jsxDEV("button",{className:K("case-buttons__btn",{"is-active":Ce==="uppercase"}),onClick:()=>_o("uppercase"),title:u==="zh"?"全大写":"Uppercase",children:"AA"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:841,columnNumber:19},void 0),l.jsxDEV("button",{className:K("case-buttons__btn",{"is-active":Ce==="lowercase"}),onClick:()=>_o("lowercase"),title:u==="zh"?"全小写":"Lowercase",children:"aa"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:848,columnNumber:19},void 0),l.jsxDEV("button",{className:K("case-buttons__btn",{"is-active":Ce==="capitalize"}),onClick:()=>_o("capitalize"),title:u==="zh"?"首字母大写":"Capitalize",children:"Aa"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:855,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:840,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:838,columnNumber:15},void 0),l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"行高":"Line"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:867,columnNumber:17},void 0),l.jsxDEV("div",{className:"inline-control__slider-group",children:[l.jsxDEV("input",{type:"range",className:"inline-control__slider",value:I,min:.8,max:3,step:.1,onChange:T=>pt(Number(T.target.value))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:869,columnNumber:19},void 0),l.jsxDEV("span",{className:"inline-control__value",children:I.toFixed(1)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:878,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:868,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:866,columnNumber:15},void 0),l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"字距":"Spacing"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:884,columnNumber:17},void 0),l.jsxDEV("div",{className:"inline-control__slider-group",children:[l.jsxDEV("input",{type:"range",className:"inline-control__slider",value:A,min:-2,max:10,step:.5,onChange:T=>ft(Number(T.target.value))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:886,columnNumber:19},void 0),l.jsxDEV("span",{className:"inline-control__value",children:[A,"px"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:895,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:885,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:883,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:645,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:644,columnNumber:11},void 0),l.jsxDEV("div",{className:"text-property-panel__section",children:[l.jsxDEV("div",{className:"text-property-panel__section-title",children:c("propertyPanel.textColor")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:903,columnNumber:13},void 0),l.jsxDEV("div",{className:"text-property-panel__section-content text-color-picker",children:l.jsxDEV(_i,{value:yt,onChange:sn,showAlpha:!0,showEyeDropper:!0,showPresets:!0,showRecentColors:!0,showHexInput:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:907,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:906,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:902,columnNumber:11},void 0),l.jsxDEV("div",{className:"text-property-panel__section",children:l.jsxDEV("div",{className:"text-property-panel__section-content",children:[l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"高亮":"Highlight"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:924,columnNumber:17},void 0),l.jsxDEV("div",{className:"highlight-colors",children:[l.jsxDEV("button",{className:K("highlight-colors__btn highlight-colors__btn--none",{"is-active":!Fe}),onClick:()=>As(null),title:u==="zh"?"无":"None",children:l.jsxDEV("svg",{width:"12",height:"12",viewBox:"0 0 16 16",children:l.jsxDEV("line",{x1:"2",y1:"2",x2:"14",y2:"14",stroke:"currentColor",strokeWidth:"2"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:932,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:931,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:926,columnNumber:19},void 0),["#FFEB3B","#4CAF50","#2196F3","#E91E63","#FF9800","#9C27B0"].map(T=>l.jsxDEV("button",{className:K("highlight-colors__btn",{"is-active":Fe===T}),style:{backgroundColor:T},onClick:()=>As(T),title:T},T,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:936,columnNumber:21},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:925,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:923,columnNumber:15},void 0),l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"描边":"Stroke"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:949,columnNumber:17},void 0),l.jsxDEV("div",{className:"inline-control__slider-group",children:[l.jsxDEV("input",{type:"range",className:"inline-control__slider",value:mt,min:0,max:3,step:.5,onChange:T=>re(Number(T.target.value))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:951,columnNumber:19},void 0),l.jsxDEV("span",{className:"inline-control__value",children:[mt,"px"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:960,columnNumber:19},void 0),mt>0&&l.jsxDEV("input",{type:"color",className:"inline-control__color-input",value:v,onChange:T=>re(mt,T.target.value)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:962,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:950,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:948,columnNumber:15},void 0),(P||de)&&l.jsxDEV(l.Fragment,{children:[l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"线型":"Line Style"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:976,columnNumber:21},void 0),l.jsxDEV("div",{className:"decoration-style-buttons",children:["solid","double","dotted","dashed","wavy"].map(T=>l.jsxDEV("button",{className:K("decoration-style-buttons__btn",{"is-active":O===T}),onClick:()=>wa(O===T?null:T),title:T,children:l.jsxDEV("span",{className:`decoration-preview decoration-preview--${T}`,children:"Ab"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:985,columnNumber:27},void 0)},T,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:979,columnNumber:25},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:977,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:975,columnNumber:19},void 0),l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"线色":"Line Color"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:991,columnNumber:21},void 0),l.jsxDEV("div",{className:"highlight-colors",children:[l.jsxDEV("button",{className:K("highlight-colors__btn highlight-colors__btn--none",{"is-active":!me}),onClick:()=>Li(null),title:u==="zh"?"默认":"Default",children:l.jsxDEV("svg",{width:"12",height:"12",viewBox:"0 0 16 16",children:l.jsxDEV("line",{x1:"2",y1:"2",x2:"14",y2:"14",stroke:"currentColor",strokeWidth:"2"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:999,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:998,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:993,columnNumber:23},void 0),["#E91E63","#FF5722","#4CAF50","#2196F3","#9C27B0","#000000"].map(T=>l.jsxDEV("button",{className:K("highlight-colors__btn",{"is-active":me===T}),style:{backgroundColor:T},onClick:()=>Li(T),title:T},T,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1003,columnNumber:25},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:992,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:990,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:974,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:921,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:920,columnNumber:11},void 0),l.jsxDEV("div",{className:"text-property-panel__section",children:l.jsxDEV("div",{className:"text-property-panel__section-content",children:[l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"阴影":"Shadow"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1023,columnNumber:17},void 0),l.jsxDEV("div",{className:K("toggle-switch__control toggle-switch__control--inline",{"is-active":L}),onClick:Ie},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1024,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1022,columnNumber:15},void 0),L&&l.jsxDEV(l.Fragment,{children:[l.jsxDEV("div",{className:"effect-presets",children:Object.entries(Au.textShadow).map(([T,ue])=>l.jsxDEV("div",{className:K("effect-presets__item",{"is-active":$===T}),onClick:()=>hi(T,ue),title:T,children:l.jsxDEV("span",{style:{textShadow:$a(ue)},children:"Aa"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1043,columnNumber:25},void 0)},T,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1035,columnNumber:23},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1033,columnNumber:19},void 0),l.jsxDEV("div",{className:"effect-config",children:[l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"颜色":"Color"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1052,columnNumber:23},void 0),l.jsxDEV("div",{className:"inline-control__color-group",children:[l.jsxDEV(st,{open:jt,onOpenChange:Dt,placement:"bottom",sideOffset:8,children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV("button",{className:"inline-control__color-trigger",style:{backgroundColor:ee.color.startsWith("rgba")?`#${((pu=ee.color.match(/\d+/g))==null?void 0:pu.slice(0,3).map(T=>parseInt(T).toString(16).padStart(2,"0")).join(""))||"000000"}`:ee.color},onClick:()=>Dt(!jt)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1061,columnNumber:29},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1060,columnNumber:27},void 0),l.jsxDEV(at,{children:l.jsxDEV(Ye,{padding:4,className:"color-picker-popover",children:l.jsxDEV(_i,{value:ee.color.startsWith("rgba")?`#${((fu=ee.color.match(/\d+/g))==null?void 0:fu.slice(0,3).map(T=>parseInt(T).toString(16).padStart(2,"0")).join(""))||"000000"}`:ee.color,onChange:T=>{const ue=parseInt(T.slice(1,3),16),Ve=parseInt(T.slice(3,5),16),et=parseInt(T.slice(5,7),16),an=ee.color.match(/[\d.]+\)$/),Kn=an?parseFloat(an[0]):.5;rn("color",`rgba(${ue}, ${Ve}, ${et}, ${Kn})`)},showAlpha:!1,showEyeDropper:!0,showPresets:!0,showRecentColors:!0,showHexInput:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1073,columnNumber:31},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1072,columnNumber:29},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1071,columnNumber:27},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1054,columnNumber:25},void 0),l.jsxDEV("input",{type:"range",className:"inline-control__slider inline-control__slider--short",value:(()=>{const T=ee.color.match(/[\d.]+\)$/);return T?parseFloat(T[0])*100:50})(),min:0,max:100,step:5,title:u==="zh"?"透明度":"Opacity",onChange:T=>{const ue=Number(T.target.value)/100,Ve=ee.color.match(/\d+/g);if(Ve&&Ve.length>=3){const[et,an,Kn]=Ve.slice(0,3);rn("color",`rgba(${et}, ${an}, ${Kn}, ${ue})`)}}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1094,columnNumber:25},void 0),l.jsxDEV("span",{className:"inline-control__value inline-control__value--narrow",children:[(()=>{const T=ee.color.match(/[\d.]+\)$/);return T?Math.round(parseFloat(T[0])*100):50})(),"%"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1114,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1053,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1051,columnNumber:21},void 0),l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"X偏移":"X"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1123,columnNumber:23},void 0),l.jsxDEV("div",{className:"inline-control__slider-group",children:[l.jsxDEV("input",{type:"range",className:"inline-control__slider",value:ee.offsetX,min:-20,max:20,step:1,onChange:T=>rn("offsetX",Number(T.target.value))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1125,columnNumber:25},void 0),l.jsxDEV("span",{className:"inline-control__value",children:[ee.offsetX,"px"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1134,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1124,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1122,columnNumber:21},void 0),l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"Y偏移":"Y"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1138,columnNumber:23},void 0),l.jsxDEV("div",{className:"inline-control__slider-group",children:[l.jsxDEV("input",{type:"range",className:"inline-control__slider",value:ee.offsetY,min:-20,max:20,step:1,onChange:T=>rn("offsetY",Number(T.target.value))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1140,columnNumber:25},void 0),l.jsxDEV("span",{className:"inline-control__value",children:[ee.offsetY,"px"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1149,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1139,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1137,columnNumber:21},void 0),l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"模糊":"Blur"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1153,columnNumber:23},void 0),l.jsxDEV("div",{className:"inline-control__slider-group",children:[l.jsxDEV("input",{type:"range",className:"inline-control__slider",value:ee.blur,min:0,max:30,step:1,onChange:T=>rn("blur",Number(T.target.value))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1155,columnNumber:25},void 0),l.jsxDEV("span",{className:"inline-control__value",children:[ee.blur,"px"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1164,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1154,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1152,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1049,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1031,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1020,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1019,columnNumber:11},void 0),l.jsxDEV("div",{className:"text-property-panel__section",children:l.jsxDEV("div",{className:"text-property-panel__section-content",children:[l.jsxDEV("div",{className:"inline-control",children:[l.jsxDEV("label",{className:"inline-control__label",children:u==="zh"?"渐变":"Gradient"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1178,columnNumber:17},void 0),l.jsxDEV("div",{className:K("toggle-switch__control toggle-switch__control--inline",{"is-active":te}),onClick:it},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1179,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1177,columnNumber:15},void 0),te&&l.jsxDEV("div",{className:"gradient-editor-wrapper",children:l.jsxDEV(gg,{value:ne,onChange:Se,showPresets:!0,showHistory:!1,inline:!0,customPresets:Ee.map(T=>T.css),onSavePreset:He,onDeletePreset:T=>{const ue=Ee[T];ue&&Ne(ue.id)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1187,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1186,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1175,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:1174,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:642,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:620,columnNumber:7},void 0),m]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx",lineNumber:610,columnNumber:5},void 0):null};let mi={x:0,y:0},xo=new Set,Pr=!1;const bg=e=>{mi={x:e.clientX,y:e.clientY},xo.forEach(t=>t(mi))},xg=e=>{mi={x:e.clientX,y:e.clientY},xo.forEach(t=>t(mi))},Ng=e=>{mi={x:e.clientX,y:e.clientY},xo.forEach(t=>t(mi))},b_=()=>{Pr||(document.addEventListener("mousemove",bg,!0),document.addEventListener("mousedown",xg,!0),document.addEventListener("mouseup",Ng,!0),Pr=!0)},x_=()=>{Pr&&xo.size===0&&(document.removeEventListener("mousemove",bg,!0),document.removeEventListener("mousedown",xg,!0),document.removeEventListener("mouseup",Ng,!0),Pr=!1)},N_=()=>{const[e,t]=p.useState(()=>mi),n=p.useRef();return p.useEffect(()=>(n.current=i=>{t(i)},xo.add(n.current),b_(),t(mi),()=>{n.current&&xo.delete(n.current),x_()}),[]),e},y_=({visible:e,videoUrl:t,onClose:n,onConfirm:i})=>{const{language:o}=je(),s=p.useRef(null),r=p.useRef(null),a=p.useRef(null),[c,u]=p.useState(!0),[d,m]=p.useState(0),[f,h]=p.useState(0),[g,b]=p.useState(""),[x,y]=p.useState(!1),[N,w]=p.useState(!1);p.useEffect(()=>(e&&t&&(u(!0),b(""),y(!1),w(!1)),()=>{a.current!==null&&window.clearTimeout(a.current)}),[e,t]);const D=()=>{const j=s.current;j&&(m(j.duration),y(!0))},S=p.useCallback((j,C=!1)=>{const M=s.current;if(!M)return;a.current!==null&&(window.clearTimeout(a.current),a.current=null);const J=()=>{if(M.readyState<2){console.warn("Video not ready for seeking, readyState:",M.readyState);const ye=()=>{M.currentTime=j,M.removeEventListener("canplay",ye)};M.addEventListener("canplay",ye);return}M.currentTime=j};C?J():a.current=window.setTimeout(J,150)},[]);p.useEffect(()=>{const j=s.current;if(x&&j&&d>0){const C=Math.max(0,d-.1);h(C),S(C,!0)}},[x,d,S]);const E=p.useCallback(()=>{const j=s.current,C=r.current;if(!j||!C)return;const M=C.getContext("2d");if(M)try{C.width=j.videoWidth,C.height=j.videoHeight,M.drawImage(j,0,0,C.width,C.height);const J=C.toDataURL("image/png");b(J)}catch(J){console.warn("Failed to generate frame image (likely due to CORS):",J);try{M.fillStyle="#000",M.fillRect(0,0,C.width,C.height),M.fillStyle="#fff",M.font="16px Arial",M.textAlign="center",M.fillText("视频帧预览不可用",C.width/2,C.height/2);const ye=C.toDataURL("image/png");b(ye)}catch(ye){console.error("Failed to create placeholder image:",ye),b("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==")}}},[]),k=p.useCallback(()=>{N||(E(),u(!1))},[N,E]),V=()=>{w(!0)},R=j=>{if(s.current&&d>0&&x){const M=j/100*d;h(M),S(M,!1)}},z=()=>{w(!1),u(!0),s.current&&x&&S(f,!0)},I=j=>{if(!s.current||d===0||!x)return;const M=parseFloat(j.target.value);if(isNaN(M))return;const J=Math.max(0,Math.min(d,M));h(J),S(J,!0),u(!0)},U=()=>{g&&(i(g,f),n())},A=j=>{const C=Math.floor(j/60),M=(j%60).toFixed(1);return`${C}:${M.padStart(4,"0")}`};return l.jsxDEV(Ax,{visible:e,onClose:n,header:o==="zh"?"选择视频帧":"Select Video Frame",width:600,destroyOnClose:!0,footer:!1,children:l.jsxDEV("div",{className:"video-frame-selector",children:[l.jsxDEV("video",{ref:s,src:t,style:{display:"none"},muted:!0,playsInline:!0,preload:"auto",crossOrigin:"anonymous",onLoadedMetadata:D,onSeeked:k},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:223,columnNumber:9},void 0),l.jsxDEV("canvas",{ref:r,style:{display:"none"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:236,columnNumber:9},void 0),l.jsxDEV("div",{className:"frame-preview",children:c?l.jsxDEV("div",{className:"loading-placeholder",children:[l.jsxDEV("div",{className:"loading-spinner"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:245,columnNumber:15},void 0),l.jsxDEV("div",{className:"loading-text",children:o==="zh"?"加载视频中...":"Loading video..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:246,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:244,columnNumber:13},void 0):l.jsxDEV("div",{className:"frame-image-container",children:l.jsxDEV("img",{src:g,alt:"Video frame",className:"frame-image"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:252,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:251,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:242,columnNumber:9},void 0),l.jsxDEV("div",{className:"time-controls",children:[l.jsxDEV("div",{className:"time-display",children:[l.jsxDEV("span",{className:"current-time",children:A(f)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:264,columnNumber:13},void 0),l.jsxDEV("span",{className:"separator",children:"/"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:265,columnNumber:13},void 0),l.jsxDEV("span",{className:"total-time",children:A(d)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:266,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:263,columnNumber:11},void 0),l.jsxDEV("div",{className:"progress-container",children:l.jsxDEV("input",{type:"range",min:0,max:100,value:d>0?f/d*100:0,onChange:j=>R(Number(j.target.value)),onMouseDown:V,onMouseUp:z,onTouchStart:V,onTouchEnd:z,className:"progress-slider",disabled:c&&!N},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:271,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:270,columnNumber:11},void 0),l.jsxDEV("div",{className:"time-input-container",children:[l.jsxDEV("label",{className:"time-input-label",children:o==="zh"?"精确时间 (秒):":"Precise time (seconds):"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:288,columnNumber:13},void 0),l.jsxDEV("input",{type:"number",min:0,max:d,step:.1,value:f.toFixed(1),onChange:I,className:"time-input",disabled:c},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:291,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:287,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:262,columnNumber:9},void 0),l.jsxDEV("div",{className:"actions",children:[l.jsxDEV("button",{className:"action-button secondary",onClick:n,children:o==="zh"?"取消":"Cancel"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:306,columnNumber:11},void 0),l.jsxDEV("button",{className:"action-button primary",onClick:U,disabled:c||!g,children:o==="zh"?"确认插入":"Confirm Insert"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:312,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:305,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:221,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/video-frame-selector/video-frame-selector.tsx",lineNumber:213,columnNumber:5},void 0)},w_=async(e,t,n,i)=>{if(!e||!t)throw new Error("Board and video element are required");try{const o=qt(e,[t],!1),s=[o.x,o.y+o.height+20],r=new Image,a=await new Promise(u=>{r.onload=()=>{u({width:r.naturalWidth,height:r.naturalHeight})},r.onerror=()=>{u({width:o.width,height:o.height})},r.src=n}),c={url:n,width:a.width,height:a.height,isVideoFrame:!0,videoTimestamp:i,sourceVideoId:t.id||"unknown"};Fr.insertImage(e,c,s)}catch(o){throw console.error("Failed to insert video frame:",o),new Error(`Video frame insertion failed: ${o instanceof Error?o.message:"Unknown error"}`)}};function v_(){if(typeof VideoDecoder>"u"||typeof VideoEncoder>"u")throw new Error(`当前浏览器不支持 WebCodecs API。
29
+ 请使用 Chrome 94+ 或 Edge 94+ 浏览器。`)}function E_(){const e=[{mimeType:"video/mp4;codecs=avc1",extension:"mp4"},{mimeType:"video/webm;codecs=vp9",extension:"webm"},{mimeType:"video/webm;codecs=vp8",extension:"webm"}];for(const t of e)if(MediaRecorder.isTypeSupported(t.mimeType))return t;return console.warn("[WebCodecs] No preferred format supported, using default"),{mimeType:"video/webm",extension:"webm"}}async function k_(e,t,n){const i=document.createElement("canvas"),o=i.getContext("2d",{willReadFrequently:!1});if(!o)throw new Error("无法创建 Canvas 2D 上下文");const s=document.createElement("video");s.crossOrigin="anonymous",s.src=e[0],await new Promise((N,w)=>{s.onloadedmetadata=()=>N(),s.onerror=()=>w(new Error("无法加载第一个视频"))}),i.width=s.videoWidth,i.height=s.videoHeight;const r=E_(),a=new AudioContext,c=a.createMediaStreamDestination(),u=i.captureStream(30),d=new MediaStream([...u.getVideoTracks(),...c.stream.getAudioTracks()]),m=new MediaRecorder(d,{mimeType:r.mimeType,videoBitsPerSecond:8e6,audioBitsPerSecond:128e3}),f=[];m.ondataavailable=N=>{N.data.size>0&&f.push(N.data)},m.start(),t==null||t(0,"encoding","开始录制视频...");const h=(n==null?void 0:n.transitions)||[],g=(n==null?void 0:n.transitionDuration)??.5;for(let N=0;N<e.length;N++){t==null||t(N/e.length*100,"encoding",`正在处理视频 ${N+1}/${e.length}...`);const w=document.createElement("video");w.crossOrigin="anonymous",w.src=e[N],w.volume=1,await new Promise((k,V)=>{w.onloadedmetadata=()=>k(),w.onerror=()=>V(new Error(`无法加载视频 ${N+1}`))});let D=null;try{D=a.createMediaElementSource(w),D.connect(c)}catch(k){console.warn(`[WebCodecs] Failed to connect audio from video ${N+1}:`,k)}const S=N<h.length?h[N]:"cut",E=S==="dissolve"||S==="fade_to_black";await new Promise(k=>{w.play().catch(R=>{console.warn(`[WebCodecs] Failed to play video ${N+1}:`,R)});const V=()=>{if(w.ended){k();return}let R=1;if(E&&w.duration>0){const z=w.duration-w.currentTime;z<g&&(R=Math.max(0,z/g))}S==="fade_to_black"&&R<1&&(o.fillStyle="#000",o.fillRect(0,0,i.width,i.height)),o.globalAlpha=R,o.drawImage(w,0,0,i.width,i.height),o.globalAlpha=1,requestAnimationFrame(V)};w.onended=()=>k(),V()}),D&&D.disconnect(),w.pause(),w.src="",w.load()}t==null||t(100,"finalizing","正在生成最终视频..."),await new Promise(N=>{m.onstop=()=>N(),m.stop()}),await a.close();const b=r.mimeType.split(";")[0],x=new Blob(f,{type:b}),y=e.length*8;try{const{unifiedCacheService:N}=await Re(async()=>{const{unifiedCacheService:E}=await import("./tool-windows-DOIu9TAD.js").then(k=>k.pj);return{unifiedCacheService:E}},__vite__mapDeps([0]),import.meta.url),w=`merged-video-${Date.now()}`,D=`/__aitu_cache__/video/${w}.mp4`,S=D;return await N.cacheMediaFromBlob(S,x,"video",{taskId:w}),{blob:x,url:D,duration:y,taskId:w}}catch(N){console.warn("[WebCodecs] Failed to cache video, using blob URL:",N);const w=URL.createObjectURL(x);return{blob:x,url:w,duration:y}}}class eo{constructor(){v_()}static getInstance(){return eo.instance||(eo.instance=new eo),eo.instance}async mergeVideos(t,n,i){if(t.length===0)throw new Error("没有视频可合并");if(t.length===1){n==null||n(0,"downloading","下载视频...");const s=await(await fetch(t[0])).blob();return{blob:s,url:URL.createObjectURL(s),duration:0}}try{n==null||n(0,"downloading",`下载 ${t.length} 个视频...`);const o=[];for(let s=0;s<t.length;s++){n==null||n(s/t.length*100,"downloading",`下载视频 ${s+1}/${t.length}...`);const a=await(await fetch(t[s])).blob();o.push(a)}return await k_(t,n,i)}catch(o){throw console.error("[WebCodecs] Merge failed:",o),new Error(`视频合并失败: ${o instanceof Error?o.message:String(o)}`)}}static isSupported(){return typeof VideoDecoder<"u"&&typeof VideoEncoder<"u"}}const S_=eo.getInstance();async function T_(e,t,n){return S_.mergeVideos(e,t,n)}function yg(e,t){return Math.abs(Math.log(e)-Math.log(t))}function BM(e,t,n){if(e<=0||t<=0)return;const i=e/t,o=Mx(n);if(o.length===0)return;const s=o.filter(c=>c.value!=="auto");if(s.length===0)return;let r,a=1/0;for(const c of s){const u=c.value.split("x");if(u.length!==2)continue;const d=parseFloat(u[0]),m=parseFloat(u[1]);if(isNaN(d)||isNaN(m)||m===0)continue;const f=d/m,h=yg(i,f);h<a&&(a=h,r=c.value)}if(!(a>.25))return r}function D_(e,t){if(e<=0||t<=0)return;const n=e/t,i=Ix.filter(r=>r.value!=="auto"&&r.width>0&&r.height>0);let o,s=1/0;for(const r of i){const a=r.width/r.height,c=yg(n,a);c<s&&(s=c,o=r.value)}if(!(s>.25))return o}const Gm="笔记",__="新笔记",j_=24;function P_(e){var t;return((t=e.title)==null?void 0:t.trim())||__}function C_(e){return(e.body||"").trim()}async function A_(){const{knowledgeBaseService:e}=await Re(async()=>{const{knowledgeBaseService:o}=await import("./tool-windows-DOIu9TAD.js").then(s=>s.pE);return{knowledgeBaseService:o}},__vite__mapDeps([0]),import.meta.url);await e.initialize();const n=(await e.getAllDirectories()).find(o=>o.name===Gm);if(n)return{knowledgeBaseService:e,directory:n};const i=await e.createDirectory(Gm);return{knowledgeBaseService:e,directory:i}}function M_(e,t,n){const i=e.children.findIndex(o=>o.id===t);i<0||ce.setNode(e,{noteId:n},[i])}function I_(e){var n,i;if(At(e)){const o=(n=e.title)!=null&&n.trim()?`# ${e.title.trim()}`:"",s=((i=e.body)==null?void 0:i.trim())||"";return[o,s].filter(Boolean).join(`
30
+
31
+ `).trim()}const t=[];if("data"in e&&Array.isArray(e.data)){for(const o of e.data)if(Vs.isNode(o)){const s=Vs.string(o).trim();s&&t.push(s)}}if("text"in e){if(typeof e.text=="string"){const o=e.text.trim();o&&t.push(o)}else if(e.text&&typeof e.text=="object"&&Vs.isNode(e.text)){const o=Vs.string(e.text).trim();o&&t.push(o)}}if("textContent"in e&&typeof e.textContent=="string"){const o=e.textContent.trim();o&&t.push(o)}return t.join(`
32
+ `).trim()}function V_(e){return F.isDrawElement(e)&&F.isText(e)}function U_(e,t){return[...t].sort((n,i)=>{const o=qt(e,[n],!1),s=qt(e,[i],!1);return Math.abs(o.x-s.x)<=j_&&Math.abs(o.y-s.y)>.5?o.y-s.y:o.x-s.x})}async function wg(e,t,n="zh"){if(!t)return null;if(t.noteId)return t.noteId;try{const{knowledgeBaseService:i,directory:o}=await A_(),s=await i.createNote(P_(t),o.id),r=C_(t);return r&&await i.updateNote(s.id,{content:r}),M_(e,t.id,s.id),s.id}catch(i){return console.error("Failed to create note for card:",i),se.error(n==="zh"?"保存到知识库失败":"Failed to save to knowledge base"),null}}async function R_(e,t){const n=[...new Set(e.filter(Boolean))];if(n.length===0)return;const{knowledgeBaseService:i}=await Re(async()=>{const{knowledgeBaseService:s}=await import("./tool-windows-DOIu9TAD.js").then(r=>r.pE);return{knowledgeBaseService:s}},__vite__mapDeps([0]),import.meta.url);await i.initialize();const o=n[0];await i.updateNote(o,{content:t});for(const s of n.slice(1))await i.deleteNote(s);return o}const vg=async(e,t,n="zh")=>{if(t){if(t.noteId){window.dispatchEvent(new CustomEvent("kb:open",{detail:{noteId:t.noteId}}));return}try{const i=await wg(e,t,n);if(!i)return;window.dispatchEvent(new CustomEvent("kb:open",{detail:{noteId:i}}))}catch(i){console.error("Failed to create note for card:",i),se.error(n==="zh"?"无法打开知识库笔记":"Failed to open knowledge base note")}}};function Un(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function q_(e){const t=e;return t.isAudio===!0||t.audioType==="music-card"||typeof t.audioUrl=="string"&&t.audioUrl.length>0}function L_(e){return F.isDrawElement(e)&&F.isImage(e)&&typeof e.url=="string"&&!q_(e)&&!e.pptImagePlaceholder}function Eg(e,t){const n=t.points;if(n&&n.length>=2)return fe.getRectangleByPoints(n);try{return qt(e,[t],!1)}catch{return null}}function B_(e,t){const n=Math.max(e.x,t.x),i=Math.max(e.y,t.y),o=Math.min(e.x+e.width,t.x+t.width),s=Math.min(e.y+e.height,t.y+t.height);return Math.max(0,o-n)*Math.max(0,s-i)}function O_(e,t){if(!t)return null;const n=e.children.find(i=>i.id===t&&Yt(i));return n&&Yt(n)?n:null}function kg(e,t){const n=O_(e,t.frameId);if(n)return n;const i=Eg(e,t);if(!i)return null;let o=null,s=0;for(const r of e.children){if(!Yt(r))continue;const a=fe.getRectangleByPoints(r.points),c=B_(i,a);c>s&&(s=c,o=r)}return s>0?o:null}function F_(e,t){return e.children.filter(n=>{var o;return n.id===t.id||Yt(n)||!L_(n)?!1:n.frameId===t.id?!0:((o=kg(e,n))==null?void 0:o.id)===t.id})}function H_(e,t){const n=e;return Un(n.width)&&Un(n.height)?n.width/n.height:Un(t.width)&&Un(t.height)?t.width/t.height:null}function z_(e){const t=e.toLowerCase();return t.includes("#video")||t.includes("#merged-video-")||[".mp4",".avi",".mov",".wmv",".flv",".webm",".mkv"].some(n=>t.includes(n))}function G_(e){return typeof Image>"u"||z_(e)?Promise.resolve(null):new Promise(t=>{const n=new Image;let i;const o=()=>{i&&clearTimeout(i),n.onload=null,n.onerror=null};n.referrerPolicy="no-referrer",n.onload=()=>{const s=n.naturalWidth||n.width,r=n.naturalHeight||n.height;o(),t(Un(s)&&Un(r)?s/r:null)},n.onerror=()=>{o(),t(null)},i=setTimeout(()=>{o(),t(null)},3e3),n.src=e})}async function W_(e){const t=e.url;return typeof t=="string"&&t.length>0?G_(t):null}function $_(e,t){if(!Un(e)||!Un(t.width)||!Un(t.height))return null;const n=t.width/t.height;let i,o;return e>n?(i=t.width,o=i/e):(o=t.height,i=o*e),{x:t.x+(t.width-i)/2,y:t.y+(t.height-o)/2,width:i,height:o}}function X_(e,t,n,i){const o=e.children.findIndex(d=>d.id===t.id);if(o===-1)return!1;const s=Eg(e,t);if(!s)return!1;const r=i||H_(t,s);if(!r)return!1;const a=fe.getRectangleByPoints(n.points),c=$_(r,a);if(!c)return!1;const u=[[c.x,c.y],[c.x+c.width,c.y+c.height]];return ce.setNode(e,{points:u,frameId:n.id},[o]),!0}async function K_(e,t,n){return X_(e,t,n,await W_(t))}async function Y_(e,t){let n=0,i=0;for(const o of F_(e,t)){const s=kg(e,o);if(!s||!await K_(e,o,s)){i+=1;continue}n+=1}return{fittedCount:n,skippedCount:i}}function Wm(e){return Rx(e).replace(/\u00a0/g," ").replace(/[ \t]+\n/g,`
33
+ `).replace(/\n{3,}/g,`
34
+
35
+ `).trim()}function Jn(e){if(!e)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(i=>Jn(i)).filter(Boolean).join(`
36
+ `);if(typeof e!="object")return"";const t=e,n=[];return typeof t.text=="string"&&n.push(t.text),Array.isArray(t.children)&&n.push(Jn(t.children)),Array.isArray(t.data)&&n.push(Jn(t.data)),n.filter(Boolean).join(`
37
+ `)}function Z_(e){if(!e||typeof window>"u")return"";const t=window.getSelection();if(!t||t.rangeCount===0||t.isCollapsed)return"";const n=t.getRangeAt(0);return e.contains(n.commonAncestorContainer)?t.toString().trim():""}function Q_(e,t){if(At(t))return[t.title,t.body].filter(Boolean).join(`
38
+
39
+ `);if(on.isMindElement(e,t))return Jn(t.data);if(F.isDrawElement(t)){const i=t,o=Jn(i.text);if(o)return o;const s=Jn(i.data);if(s)return s;if(typeof i.textContent=="string")return i.textContent}const n=t;return Jn(n.text)||Jn(n.data)}function J_(e,t){if(t.length===0)return{text:"",source:null,title:""};if(t.length===1&&At(t[0])){const s=t[0],r=Wm(Z_(Ux(s.id)));if(r)return{text:r,source:"selection",title:s.title||"卡片朗读",sourceId:`card:${s.id}:selection`,origin:{kind:"card",id:s.id}}}const n=t[0],i=t.length===1&&At(n)?n:null,o=Wm(t.map(s=>Q_(e,s)).filter(Boolean).join(`
40
+
41
+ `));return{text:o,source:o?"element":null,title:(i==null?void 0:i.title)||(t.length===1?"画布朗读":`已选 ${t.length} 个元素`),sourceId:t.length===1?`${t[0].type}:${t[0].id}`:`selection:${t.map(s=>s.id).sort().join("|")}`,origin:i?{kind:"card",id:i.id}:void 0}}function Sg(e){return!e.text||!e.sourceId?null:tf({elementId:e.sourceId,title:e.title,content:e.text,origin:e.origin||{kind:"card",id:e.sourceId}})}function ej(e,t){const n=Sg(t);if(!n)return[];if(!e.children||!t.origin||t.origin.kind!=="card")return[n];const i=Vx(e,e.children.filter(At));return i.length<=1?[n]:i.map(o=>{var s;return o.id===((s=t.origin)==null?void 0:s.id)?n:tf({elementId:`card:${o.id}`,title:o.title||"卡片朗读",content:[o.title,o.body].filter(Boolean).join(`
42
+
43
+ `),origin:{kind:"card",id:o.id}})}).filter(o=>!!o)}const tj=p.lazy(()=>Re(()=>import("./tool-windows-DOIu9TAD.js").then(e=>e.pD),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.ImageEditor}))),nj=p.lazy(()=>Re(()=>import("./tool-windows-DOIu9TAD.js").then(e=>e.pG),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.FrameSlideshow}))),ij=()=>{var Y,v,H,O,pe,me;const e=bt(),n=Oe(e).filter(_=>!qx(_)),{openDialog:i}=Gt(),{language:o,t:s}=je(),[r,a]=p.useState(!1),c=p.useRef(r),[u,d]=p.useState(!1),[m,f]=p.useState(null),[h,g]=p.useState(!1),[b,x]=p.useState(""),[y,N]=p.useState(null),[w,D]=p.useState(!1),S=p.useRef(!1),[E,k]=p.useState(!1),[V,R]=p.useState(),[z,I]=p.useState({text:"",title:"",source:null}),[U,A]=p.useState(),[j,C]=p.useState(),M=p.useRef(null);N_();const J=Lx(),ye=J.mediaType==="reading"?J.activeReadingSourceId:void 0,P=!!z.sourceId&&!!ye&&ye.startsWith(z.sourceId),G=p.useMemo(()=>n.map(_=>_.id).sort().join("|"),[n]),de=P?J.playing?o==="zh"?"暂停朗读":"Pause reading":o==="zh"?"继续朗读":"Resume reading":o==="zh"?"语音朗读":"Read aloud";p.useEffect(()=>{if(n.length===0||r){I(L=>L.text||L.source?{text:"",title:"",source:null}:L);return}const _=()=>{const L=J_(e,n);I(B=>B.text===L.text&&B.source===L.source&&B.title===L.title&&B.sourceId===L.sourceId?B:L)};return _(),document.addEventListener("selectionchange",_),()=>{document.removeEventListener("selectionchange",_)}},[e,G,r]);const W=n.length>0&&!os(e),{viewport:ae,selection:oe,children:ve}=e,{refs:ke,floatingStyles:Fe}=rc({placement:"top",middleware:[ac(12),nf({padding:16}),lc({fallbackPlacements:["bottom","right","left"]})]});let X={fill:"red"};if(W&&!r){const _=n.some(re=>rj(e,re))&&!q.hasBeenTextEditing(e),L=n.some(re=>lj(e,re)),B=n.length>0&&n.every(re=>F.isDrawElement(re)&&F.isText(re)),$=n.some(re=>Pg(e,re))&&!q.hasBeenTextEditing(e),Q=n.some(re=>aj(e,re))&&!q.hasBeenTextEditing(e),ee=n.some(re=>En(re)),Z=n.some(re=>cc(re)),te=n.some(re=>At(re)),le=n.length>1&&n.every(re=>At(re)||V_(re)),qe=n.length>0&&!ee&&!Z&&!te&&n.some(re=>F.isDrawElement(re)&&F.isImage(re))&&!q.hasBeenTextEditing(e),$e=n.length===1&&En(n[0])&&!q.hasBeenTextEditing(e),ne=!ee&&!Z&&!te&&!q.hasBeenTextEditing(e),_e=n[0],Ee=F.isDrawElement(_e)&&F.isImage(_e)&&((Y=_e.url)==null?void 0:Y.startsWith("data:image/svg+xml")),xe=n.length===1&&!ee&&!Z&&F.isDrawElement(n[0])&&F.isImage(n[0])&&!Ee&&!q.hasBeenTextEditing(e),yt=xe,Vt=xe,jt=n.length>0&&!Z&&n.some(re=>F.isDrawElement(re)&&F.isImage(re)||En(re)||Qn(re))&&!q.hasBeenTextEditing(e),Dt=n.length>1&&!le&&!ee&&!Z&&n.every(re=>F.isDrawElement(re)&&F.isImage(re)||F.isDrawElement(re)&&sc([re])||F.isDrawElement(re)&&F.isShapeElement(re)&&!F.isImage(re)||F.isDrawElement(re)&&F.isArrowLine(re)||F.isDrawElement(re)&&F.isVectorLine(re)||F.isDrawElement(re)&&F.isTable(re)||Xe.isFreehand(re)||Je.isPenPath(re)||on.isMindElement(e,re))&&!q.hasBeenTextEditing(e),Ht=n.filter(re=>En(re)).length>1&&!q.hasBeenTextEditing(e),sn=n.filter(re=>Je.isPenPath(re)),hi=sn.length>0&&!q.hasBeenTextEditing(e);let rn;if(sn.length>0){const re=sn[0].cornerRadius??0;rn=sn.every(Li=>(Li.cornerRadius??0)===re)?re:void 0}const Se=n.filter(re=>Xe.isFreehand(re)),He=(sn.length>0||Se.length>0)&&!q.hasBeenTextEditing(e);let Ne;const Ie=[...sn.map(re=>re.strokeWidth??2),...Se.map(re=>re.strokeWidth??2)];if(Ie.length>0){const re=Ie[0];Ne=Ie.every(Li=>Li===re)?re:void 0}const it=n.length>0&&!Z&&!q.hasBeenTextEditing(e),ze=n.length>0&&n.every(re=>on.isMindElement(e,re)),Le=n.length>1&&!ze&&!q.hasBeenTextEditing(e),pt=n.length>1&&!ze&&!q.hasBeenTextEditing(e),ft=n.length>1&&!q.hasBeenTextEditing(e)&&n.every(re=>cj(e,re)),Pt=n.length>0&&!q.hasBeenTextEditing(e)&&!!Iu(e,n),Ut=n.length===1&&At(n[0])&&!!n[0].noteId&&!q.hasBeenTextEditing(e),lt=n.length===1&&At(n[0])&&!n[0].noteId&&!q.hasBeenTextEditing(e),fn=le&&!q.hasBeenTextEditing(e),Na=n.length===1&&Yt(n[0])&&!q.hasBeenTextEditing(e),ya=n.length===1&&Qn(n[0])&&!q.hasBeenTextEditing(e),As=typeof window<"u"&&"speechSynthesis"in window&&!q.hasBeenTextEditing(e)&&z.text.length>0,_o=n.length===1&&!q.hasBeenTextEditing(e)&&Yt(n[0]);X={...oj(e),hasFill:_,hasFontColor:L,hasFontSize:L,hasStroke:$,hasStrokeStyle:Q,hasStrokeWidth:He,strokeWidth:Ne,hasText:L,isTextOnly:B,hasAIImage:ne,hasAIVideo:qe,hasVideoFrame:$e,hasSplitImage:yt,hasImageEdit:Vt,hasDownloadable:jt,hasMergeable:Dt,hasVideoMergeable:Ht,hasCornerRadius:hi,cornerRadius:rn,hasSizeInput:it,hasAlignment:Le,hasDistribute:pt,hasBoolean:ft,hasMindmapToPPT:Pt,hasCardEdit:Ut,hasCardSave:lt,hasContentMerge:fn,hasFramePlay:Na,hasAudioPlayer:ya,hasTextToSpeech:As,hasMediaFitPPT:_o}}const Ce=async(_,L)=>{if(!_)return;const B=_.title?`# ${_.title}
44
+
45
+ `:"",$=_.body||"",Q=`${B}${$}`.trim();try{console.info("[CardCopy] Copy text from card",{source:L,id:_.id}),await bN(Q),se.success(o==="zh"?"已复制到剪贴板":"Copied to clipboard",2e3)}catch{se.error(o==="zh"?"复制失败":"Copy failed",2e3)}},We=async()=>{const _=U_(e,n);if(_.length<2)return;const L=_[0],B=_.map((Q,ee)=>ee===0&&At(L)&&At(Q)?(Q.body||"").trim():I_(Q)).filter(Boolean).join(`
46
+
47
+ `).trim();if(!B){se.warning(o==="zh"?"没有可合并的内容":"No content to merge");return}const $=_.flatMap(Q=>At(Q)&&Q.noteId?[Q.noteId]:[]);try{const Q=await R_($,B),ee=_.slice(1).map(te=>e.children.findIndex(le=>le.id===te.id)).filter(te=>te>=0).sort((te,le)=>le-te);for(const te of ee)ce.removeNode(e,[te]);let Z;if(At(L)){const te=e.children.findIndex(qe=>qe.id===L.id);if(te<0)throw new Error(o==="zh"?"合并目标不存在":"Merge target missing");const le={body:B};Q&&(le.noteId=Q),ce.setNode(e,le,[te]),Z=e.children[te]}else{const te=qt(e,[L],!1),le=e.children.findIndex(_e=>_e.id===L.id);if(le<0)throw new Error(o==="zh"?"合并目标不存在":"Merge target missing");const qe=Math.max(te.width,320),$e=Math.max(te.height,180),ne={type:"card",id:`card-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,9)}`,body:B,fillColor:"#FA8C16",points:[[te.x,te.y],[te.x+qe,te.y+$e]],children:[],...Q?{noteId:Q}:{}};ce.insertNode(e,ne,[le]),ce.removeNode(e,[le+1]),Z=e.children[le]}ai(e),Z&&ji(e,Z),se.success(o==="zh"?`已合并 ${_.length} 个元素`:`Merged ${_.length} elements`)}catch(Q){console.error("[PopupToolbar] Failed to merge content:",Q),se.error((Q==null?void 0:Q.message)||(o==="zh"?"合并内容失败":"Failed to merge content"))}},mt=p.useCallback(()=>{var le;const _=n.length===1&&Yt(n[0])?n[0]:null;if(!_){i(Qt.aiImageGeneration);return}const L=fe.getRectangleByPoints(_.points),B=_.pptMeta,$=Bx(B),Q=B?((le=B.commonPrompt)==null?void 0:le.trim())||Ox(B.styleSpec):"",ee=Fx(e,_.id),Z=Hx(e,_.id),te=[];ee!=null&&ee.url&&te.push({url:ee.url,name:`${_.name||"frame"}-reference.png`}),Z!=null&&Z.url&&Z.url!==(ee==null?void 0:ee.url)&&te.push({url:Z.url,name:`${_.name||"frame"}-previous-reference.png`}),i(Qt.aiImageGeneration,{initialPrompt:zx(Q,$),initialImages:te,initialAspectRatio:D_(L.width,L.height),initialWidth:L.width,initialHeight:L.height,targetFrameId:_.id,targetFrameDimensions:{width:L.width,height:L.height},autoInsertToCanvas:!0,pptSlideImage:!0,pptSlidePrompt:$,pptReplaceElementId:ee==null?void 0:ee.elementId})},[e,i,n]);return p.useEffect(()=>{if(W){const _=n.length>0;if(!r&&_){let L,B;const $=Oe(e),Q=qt(e,$,!1),[ee,Z]=fe.getPoints(Q),te=Us(e,Fo(e,ee)),le=Us(e,Fo(e,Z));L=te[0]+(le[0]-te[0])/2,B=te[1],ke.setPositionReference({getBoundingClientRect(){return{width:1,height:1,x:L,y:B,top:B,left:L,right:L+1,bottom:B+1}}})}}},[ae,oe,ve,r]),p.useEffect(()=>{if(W&&!r&&M.current){const _=M.current.getBoundingClientRect();A({top:_.top,left:_.left,width:_.width,height:_.height});const L=Oe(e);if(L.length>0){const B=qt(e,L,!1),[$,Q]=fe.getPoints(B),ee=Us(e,Fo(e,$)),Z=Us(e,Fo(e,Q));C({top:ee[1],left:ee[0],right:Z[0],bottom:Z[1],width:Z[0]-ee[0],height:Z[1]-ee[1]})}}},[W,r,Fe,e]),p.useEffect(()=>{S.current=w},[w]),p.useEffect(()=>{if(n.length===0&&!r){const _=setTimeout(()=>{D(!1)},50);return()=>clearTimeout(_)}},[n.length,r]),p.useEffect(()=>{c.current=r},[r]),p.useEffect(()=>{const{pointerUp:_,pointerMove:L}=e;return e.pointerMove=B=>{(as(e)||ss(e))&&!c.current&&a(!0),L(B)},e.pointerUp=B=>{c.current&&(as(e)||ss(e))&&a(!1),_(B)},()=>{e.pointerUp=_,e.pointerMove=L}},[e]),l.jsxDEV(l.Fragment,{children:[W&&!r&&l.jsxDEV(Ye,{padding:1,className:K("popup-toolbar",It),ref:_=>{ke.setFloating(_),M.current=_},style:Fe,"data-testid":"popup-toolbar",children:l.jsxDEV(dt.Row,{gap:1,children:[X.hasFill&&l.jsxDEV(ZD,{board:e,currentColor:X.fill,title:s("toolbar.fillColor"),children:l.jsxDEV("label",{className:K("fill-label","color-label",{"color-white":X.fill&&rs(X.fill)&&Zp(Di(X.fill)),"color-mixed":X.fill===void 0,"color-gradient":X.fill&&Ln(X.fill)&&X.fill.type==="gradient","color-image":X.fill&&Ln(X.fill)&&X.fill.type==="image"}),style:X.fill===void 0?void 0:{background:rs(X.fill)?X.fill:Ln(X.fill)?X.fill.type==="gradient"&&X.fill.gradient?Gx(X.fill.gradient):X.fill.type==="solid"&&X.fill.solid?X.fill.solid.color:X.fill.type==="image"&&((v=X.fill.image)!=null&&v.imageUrl)?`url(${X.fill.image.imageUrl}) center/cover no-repeat`:void 0:void 0}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:982,columnNumber:17},void 0)},3,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:976,columnNumber:15},void 0),X.hasStroke&&l.jsxDEV(qD,{board:e,currentColor:X.strokeColor,title:s("toolbar.stroke"),hasStrokeStyle:X.hasStrokeStyle||!1,hasStrokeWidth:X.hasStrokeWidth||!1,currentStrokeWidth:X.strokeWidth,children:l.jsxDEV("label",{className:K("stroke-label","color-label",{"color-mixed":X.strokeColor===void 0}),style:{borderColor:X.strokeColor}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1032,columnNumber:17},void 0)},2,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1023,columnNumber:15},void 0),X.hasFontColor&&l.jsxDEV(VD,{board:e,currentColor:(H=X.marks)==null?void 0:H.color,title:s("toolbar.fontColor"),fontColorIcon:l.jsxDEV(Wx,{currentColor:(O=X.marks)==null?void 0:O.color},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1047,columnNumber:19},void 0)},0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1041,columnNumber:15},void 0),X.hasFontSize&&l.jsxDEV(RD,{board:e,currentFontSize:X.fontSize,title:s("toolbar.fontSize")},1,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1052,columnNumber:15},void 0),X.hasCornerRadius&&l.jsxDEV(QD,{board:e,currentRadius:X.cornerRadius,title:s("toolbar.cornerRadius"),selectionRect:j},"corner-radius",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1062,columnNumber:15},void 0),X.hasText&&l.jsxDEV(t_,{board:e,title:"Link"},4,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1071,columnNumber:15},void 0),X.isTextOnly&&l.jsxDEV(c_,{board:e,language:o,title:o==="zh"?"提示词":"Prompts"},"prompt",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1078,columnNumber:15},void 0),X.hasTextToSpeech&&l.jsxDEV(ie,{className:"text-to-speech",type:"icon",icon:P&&J.playing?l.jsxDEV(Kx,{size:15},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1092,columnNumber:21},void 0):l.jsxDEV(Yx,{size:15},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1094,columnNumber:21},void 0),visible:!0,selected:P&&J.playing,title:de,"aria-label":de,"data-track":"toolbar_click_text_to_speech",onPointerUp:()=>{if(!z.text)return;const _=Sg(z);if(!_)return;const L=ej(e,z);if(P){J.playing?J.pausePlayback():J.resumePlayback();return}Vu({source:_,queue:L.length>0?L:[_],queueTab:{queueId:Xx,queueName:$x}})}},"text-to-speech",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1086,columnNumber:15},void 0),X.hasText&&l.jsxDEV(ie,{className:"property-settings",type:"icon",icon:l.jsxDEV(Zx,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1139,columnNumber:23},void 0),visible:!0,selected:w,title:s("propertyPanel.title"),"aria-label":s("propertyPanel.title"),"data-track":"toolbar_click_property_settings",onPointerUp:()=>{D(!w)}},"property-settings",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1135,columnNumber:15},void 0),X.hasAlignment&&l.jsxDEV(d_,{board:e,title:s("toolbar.alignment")},"alignment",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1152,columnNumber:15},void 0),X.hasDistribute&&l.jsxDEV(m_,{board:e,title:s("toolbar.distribute")},"distribute",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1160,columnNumber:15},void 0),X.hasBoolean&&l.jsxDEV(p_,{board:e,title:s("toolbar.boolean")},"boolean",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1168,columnNumber:15},void 0),X.hasMindmapToPPT&&l.jsxDEV(ie,{className:"mindmap-to-ppt",type:"icon",icon:l.jsxDEV(Qx,{size:15},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1180,columnNumber:23},void 0),visible:!0,title:o==="zh"?"转换为PPT":"Convert to PPT","aria-label":o==="zh"?"转换为PPT":"Convert to PPT","data-track":"toolbar_click_mindmap_to_ppt",onPointerUp:async()=>{const _=Iu(e,n);if(!_)return;const L=se.loading(o==="zh"?"正在转换为PPT...":"Converting to PPT...",0);try{const{generatePPTFromMindmap:B}=await Re(async()=>{const{generatePPTFromMindmap:Q}=await import("./tool-windows-DOIu9TAD.js").then(ee=>ee.pl);return{generatePPTFromMindmap:Q}},__vite__mapDeps([0]),import.meta.url),$=await B(e,_);se.close(L),$.success?se.success(o==="zh"?`已生成 ${$.pageCount} 页PPT`:`Generated ${$.pageCount} PPT slides`):se.error($.error||(o==="zh"?"转换失败":"Conversion failed"))}catch(B){se.close(L),se.error(B.message||(o==="zh"?"转换失败":"Conversion failed"))}}},"mindmap-to-ppt",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1176,columnNumber:15},void 0),X.hasCardEdit&&l.jsxDEV(ie,{className:"card-edit",type:"icon",icon:l.jsxDEV(Uu,{size:15},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1238,columnNumber:23},void 0),visible:!0,title:o==="zh"?"在知识库中编辑":"Edit in Knowledge Base","aria-label":o==="zh"?"在知识库中编辑":"Edit in Knowledge Base","data-track":"toolbar_click_card_edit",onPointerUp:async()=>{const _=n[0];_&&await vg(e,_,o)}},"card-edit",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1234,columnNumber:15},void 0),X.hasCardSave&&l.jsxDEV(ie,{className:"card-save",type:"icon",icon:l.jsxDEV(of,{size:15},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1267,columnNumber:23},void 0),visible:!0,title:o==="zh"?"保存到知识库":"Save to Knowledge Base","aria-label":o==="zh"?"保存到知识库":"Save to Knowledge Base","data-track":"toolbar_click_card_save",onPointerUp:async()=>{const _=n[0];if(!_)return;await wg(e,_,o)&&se.success(o==="zh"?"已保存到知识库":"Saved to knowledge base")}},"card-save",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1263,columnNumber:15},void 0),(X.hasCardEdit||X.hasCardSave)&&l.jsxDEV(ie,{className:"card-copy",type:"icon",icon:l.jsxDEV(Jx,{size:15},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1300,columnNumber:23},void 0),visible:!0,title:o==="zh"?"复制文本内容":"Copy text content","aria-label":o==="zh"?"复制文本内容":"Copy text content","data-track":"toolbar_click_card_copy",onPointerDown:({event:_})=>{_.stopPropagation()},onPointerUp:async()=>{await Ce(n[0],"card-copy")}},"card-copy",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1296,columnNumber:15},void 0),X.hasContentMerge&&l.jsxDEV(ie,{className:"content-merge",type:"icon",icon:l.jsxDEV(Ru,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1320,columnNumber:23},void 0),visible:!0,title:o==="zh"?"合并内容":"Merge Content","aria-label":o==="zh"?"合并内容":"Merge Content","data-track":"toolbar_click_content_merge",onPointerUp:()=>{We()}},"content-merge",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1316,columnNumber:15},void 0),X.hasAIImage&&l.jsxDEV(ie,{className:"ai-image",type:"icon",icon:l.jsxDEV(Kr,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1335,columnNumber:23},void 0),visible:!0,title:o==="zh"?"AI图片生成":"AI Image Generation","aria-label":o==="zh"?"AI图片生成":"AI Image Generation","data-track":"toolbar_click_ai_image",onPointerUp:mt},5,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1331,columnNumber:15},void 0),X.hasAIVideo&&l.jsxDEV(ie,{className:"ai-video",type:"icon",icon:l.jsxDEV(Yr,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1350,columnNumber:23},void 0),visible:!0,title:o==="zh"?"AI视频生成":"AI Video Generation","aria-label":o==="zh"?"AI视频生成":"AI Video Generation","data-track":"toolbar_click_ai_video",onPointerUp:()=>{i(Qt.aiVideoGeneration)}},6,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1346,columnNumber:15},void 0),X.hasVideoFrame&&l.jsxDEV(ie,{className:"video-frame",type:"icon",icon:l.jsxDEV(eN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1367,columnNumber:23},void 0),visible:!0,title:o==="zh"?"视频帧选择":"Video Frame Selection","aria-label":o==="zh"?"视频帧选择":"Video Frame Selection","data-track":"toolbar_click_video_frame",onPointerUp:()=>{const _=n.find(L=>En(L));_&&(f(_),d(!0))}},7,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1363,columnNumber:15},void 0),X.hasMediaFitPPT&&l.jsxDEV(ie,{className:"media-fit-ppt",type:"icon",icon:l.jsxDEV(tN,{size:15},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1393,columnNumber:23},void 0),visible:!0,title:o==="zh"?"素材自适应PPT":"Fit media to PPT","aria-label":o==="zh"?"素材自适应PPT":"Fit media to PPT","data-track":"toolbar_click_media_fit_ppt",onPointerUp:()=>{(async()=>{const _=n[0];if(!Yt(_))return;const L=await Y_(e,_);if(L.fittedCount>0){se.success(o==="zh"?`已自适应 ${L.fittedCount} 个素材`:`Fitted ${L.fittedCount} media item${L.fittedCount>1?"s":""}`);return}se.warning(o==="zh"?"未找到可自适应的PPT素材":"No media item can be fitted to PPT")})()}},"media-fit-ppt",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1389,columnNumber:15},void 0),X.hasSplitImage&&l.jsxDEV(ie,{className:"split-image",type:"icon",icon:l.jsxDEV(iN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1434,columnNumber:23},void 0),visible:!0,title:o==="zh"?"智能拆图":"Smart Split","aria-label":o==="zh"?"智能拆图":"Smart Split","data-track":"toolbar_click_split_image",onPointerUp:async()=>{const _=n[0];if(F.isImage(_)&&_.url){const L=se.loading(o==="zh"?"正在分析图片...":"Analyzing image...",0);try{const B=qt(e,[_],!1),$=await nN(e,_.url,{sourceRect:{x:B.x,y:B.y,width:B.width,height:B.height},scrollToResult:!0});se.close(L),$.success?se.success(o==="zh"?`成功拆分为 ${$.count} 张图片`:`Split into ${$.count} images`):se.warning($.error||(o==="zh"?"拆图失败":"Split failed"))}catch(B){se.close(L),se.error(B.message||(o==="zh"?"拆图失败":"Split failed"))}}}},"split-image",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1430,columnNumber:15},void 0),X.hasImageEdit&&l.jsxDEV(ie,{className:"image-edit",type:"icon",icon:l.jsxDEV(Uu,{size:15},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1501,columnNumber:23},void 0),visible:!0,title:o==="zh"?"编辑图片":"Edit Image","aria-label":o==="zh"?"编辑图片":"Edit Image","data-track":"toolbar_click_image_edit",onPointerUp:()=>{const _=n[0];F.isImage(_)&&_.url&&(x(_.url),N(_),g(!0))}},"image-edit",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1497,columnNumber:15},void 0),X.hasDownloadable&&l.jsxDEV(ie,{className:"download",type:"icon",icon:l.jsxDEV(rN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1524,columnNumber:23},void 0),visible:!0,title:o==="zh"?"下载":"Download","aria-label":o==="zh"?"下载":"Download","data-track":"toolbar_click_download",onPointerUp:async()=>{const _=[];for(const $ of n)F.isDrawElement($)&&F.isImage($)&&$.url?_.push({url:$.url,type:"image"}):En($)&&$.url?_.push({url:$.url,type:"video"}):Qn($)&&$.audioUrl&&_.push({url:$.audioUrl,type:"audio",filename:oN($.title,"audio","mp3"),audioMetadata:{title:$.title,prompt:$.prompt,tags:$.tags,coverUrl:$.previewImageUrl,artist:$.modelVersion||"Aitu",album:"Aitu Generated"}});if(_.length===0){se.warning(o==="zh"?"没有可下载的内容":"No downloadable content");return}const L=_.length>1?o==="zh"?"正在打包下载...":"Packaging download...":o==="zh"?"正在下载...":"Downloading...",B=se.loading(L,0);try{const{unifiedCacheService:$}=await Re(async()=>{const{unifiedCacheService:te}=await import("./tool-windows-DOIu9TAD.js").then(le=>le.pj);return{unifiedCacheService:te}},__vite__mapDeps([0]),import.meta.url),{downloadFromBlob:Q}=await Re(async()=>{const{downloadFromBlob:te}=await import("./tool-windows-DOIu9TAD.js").then(le=>le.pi);return{downloadFromBlob:te}},__vite__mapDeps([0]),import.meta.url),ee=[];for(const te of _)if(te.url.startsWith("blob:")){const le=te.url.indexOf("#"),qe=le>0?te.url.substring(le+1):null;if(qe&&qe.startsWith("merged-video-")){const $e=await $.getCachedBlob(qe);if($e){const ne=$e.type||"video/webm",_e=ne.startsWith("video/mp4")?"mp4":ne.startsWith("video/webm")?"webm":"bin",Ee=`merged-video-${Date.now()}.${_e}`;Q($e,Ee);continue}else console.warn("[Download] Cache not found for taskId:",qe)}try{const ne=await(await fetch(te.url)).blob(),_e=ne.type.startsWith("video/mp4")?"mp4":ne.type.startsWith("video/webm")?"webm":ne.type.startsWith("image/")?"png":"bin",Ee=`${te.type}_${Date.now()}.${_e}`;Q(ne,Ee)}catch($e){throw console.error("[Download] Failed to fetch blob URL:",$e),new Error(`Failed to download ${te.type}: Blob URL inaccessible`)}}else ee.push(te);let Z;ee.length>0&&(Z=await sN(ee)),se.close(B),Z!=null&&Z.openedCount&&Z.downloadedCount===0?se.success(o==="zh"?Z.openedCount>1?`已打开 ${Z.openedCount} 个链接,请在新标签页下载`:"资源不支持直接下载,已打开链接":Z.openedCount>1?`Opened ${Z.openedCount} links for download`:"Opened link for download"):se.success(_.length>1?o==="zh"?`已下载 ${_.length} 个文件`:`Downloaded ${_.length} files`:o==="zh"?"下载成功":"Download complete")}catch($){se.close(B),se.error($.message||(o==="zh"?"下载失败":"Download failed"))}}},"download",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1520,columnNumber:15},void 0),X.hasMergeable&&l.jsxDEV(ie,{className:"merge",type:"icon",icon:l.jsxDEV(Ru,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1709,columnNumber:23},void 0),visible:!0,title:o==="zh"?"合并为图片":"Merge to Image","aria-label":o==="zh"?"合并为图片":"Merge to Image","data-track":"toolbar_click_merge",onPointerUp:async()=>{const _=aN("图片合并"),L=se.loading(o==="zh"?"正在合并...":"Merging...",0);try{const B=n.filter(it=>{const ze=it.url||it.imageUrl;if(!ze||ze.startsWith("/")||ze.startsWith("data:")||ze.startsWith("blob:"))return!1;try{return new URL(ze).origin!==location.origin}catch{return!1}});if(B.length>0){const it=B.map(async pt=>{const ft=pt.url||pt.imageUrl;try{const Pt=new AbortController,Ut=setTimeout(()=>Pt.abort(),3e3),lt=await fetch(ft,{method:"HEAD",mode:"cors",signal:Pt.signal});return clearTimeout(Ut),lt.ok}catch{return!1}});if((await Promise.all(it)).some(pt=>!pt)){se.close(L),se.warning(o==="zh"?"部分外部图片无法访问,请先下载到本地后再合并":"Some external images are inaccessible. Please download them locally first."),_();return}}const $=qt(e,n,!1),Q=[...n].sort((it,ze)=>{const Le=e.children.findIndex(ft=>ft.id===it.id),pt=e.children.findIndex(ft=>ft.id===ze.id);return Le-pt}),ee=await lN(e,{elements:Q,fillStyle:"transparent",inlineStyleClassNames:".extend,.emojis,.text",ratio:2});if(!ee)throw new Error(o==="zh"?"合并失败:无法生成图片":"Merge failed: Unable to generate image");const Z=new Image;await new Promise((it,ze)=>{Z.onload=()=>it(),Z.onerror=()=>ze(new Error("Failed to load merged image")),Z.src=ee});const te=document.createElement("canvas");te.width=Z.width,te.height=Z.height;const le=te.getContext("2d");if(!le)throw new Error("Failed to get canvas context");le.drawImage(Z,0,0);const qe=cN(te),{canvas:$e,left:ne,top:_e,trimmedWidth:Ee,trimmedHeight:xe}=qe,yt=await new Promise((it,ze)=>{$e.toBlob(Le=>{Le?it(Le):ze(new Error("Failed to convert canvas to blob"))},"image/png")}),{unifiedCacheService:Vt}=await Re(async()=>{const{unifiedCacheService:it}=await import("./tool-windows-DOIu9TAD.js").then(ze=>ze.pj);return{unifiedCacheService:it}},__vite__mapDeps([0]),import.meta.url),jt=`merged-image-${Date.now()}`,Dt=`/__aitu_cache__/image/${jt}.png`,Xn=Dt;await Vt.cacheMediaFromBlob(Xn,yt,"image",{taskId:jt});const Ht=2,sn=$.x+ne/Ht,hi=$.y+_e/Ht,rn=Ee/Ht,Se=xe/Ht;ol(e);const He=e.children.length,Ne={url:Dt,width:rn,height:Se};Fr.insertImage(e,Ne,[sn,hi]);const Ie=e.children[He];Ie&&(ai(e),ji(e,Ie)),se.close(L),_(),se.success(o==="zh"?`已将 ${n.length} 个元素合并为图片`:`Merged ${n.length} elements into image`)}catch(B){se.close(L),_(),se.error(B.message||(o==="zh"?"合并失败":"Merge failed"))}}},"merge",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1705,columnNumber:15},void 0),X.hasVideoMergeable&&l.jsxDEV(ie,{className:"video-merge",type:"icon",icon:l.jsxDEV(uN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1933,columnNumber:23},void 0),visible:!0,title:o==="zh"?"合成视频":"Merge Videos","aria-label":o==="zh"?"合成视频":"Merge Videos","data-track":"toolbar_click_video_merge",onPointerUp:async()=>{const _=[];for(const B of n)En(B)&&B.url&&_.push(B.url);if(_.length<2){se.warning(o==="zh"?"请选择至少2个视频":"Please select at least 2 videos");return}const L=se.loading(o==="zh"?"正在合成视频...":"Merging videos...",0);try{const B=await T_(_,($,Q)=>{const ee={downloading:o==="zh"?"下载视频...":"Downloading videos...",decoding:o==="zh"?"解码视频...":"Decoding videos...",encoding:o==="zh"?"编码视频...":"Encoding videos...",finalizing:o==="zh"?"生成文件中...":"Finalizing..."}});se.close(L);try{const{quickInsert:$}=await Re(async()=>{const{quickInsert:Q}=await import("./canvas-insertion-CdUQF7IV.js");return{quickInsert:Q}},__vite__mapDeps([0]),import.meta.url);await $("video",B.url),se.success(o==="zh"?`已合成并插入 ${_.length} 个视频`:`Merged and inserted ${_.length} videos`)}catch($){console.error("[VideoMerge] Failed to insert video:",$);const Q=B.blob.type||"video/webm",ee=Q.startsWith("video/mp4")?"mp4":"webm",Z=new Blob([B.blob],{type:Q}),te=URL.createObjectURL(Z),le=document.createElement("a");le.href=te,le.download=`merged-video-${Date.now()}.${ee}`,document.body.appendChild(le),le.click(),document.body.removeChild(le),setTimeout(()=>URL.revokeObjectURL(te),1e3),se.warning(o==="zh"?`视频已合成,但插入失败,已自动下载 (${ee.toUpperCase()})`:`Video merged but failed to insert, downloaded as ${ee.toUpperCase()}`)}}catch(B){se.close(L),se.error(B.message||(o==="zh"?"视频合成失败":"Video merge failed"))}}},"video-merge",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:1929,columnNumber:15},void 0),l.jsxDEV(u_,{board:e,title:s("textEffect.layer")},"layer-control",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2066,columnNumber:13},void 0),X.hasSizeInput&&l.jsxDEV(e_,{board:e},"size-input",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2071,columnNumber:36},void 0),X.hasFramePlay&&l.jsxDEV(ie,{className:"frame-play",type:"icon",icon:l.jsxDEV(qu,{size:15},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2078,columnNumber:23},void 0),visible:!0,title:o==="zh"?"播放幻灯片":"Play Slideshow","aria-label":o==="zh"?"播放幻灯片":"Play Slideshow","data-track":"toolbar_click_frame_play",onPointerUp:()=>{const _=n.find(L=>Yt(L));_&&(R(_.id),k(!0))}},"frame-play",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2074,columnNumber:15},void 0),X.hasAudioPlayer&&l.jsxDEV(ie,{className:"audio-player-play",type:"icon",icon:l.jsxDEV(qu,{size:15},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2099,columnNumber:23},void 0),visible:!0,title:o==="zh"?"在音乐播放器中播放":"Play in Music Player","aria-label":o==="zh"?"在音乐播放器中播放":"Play in Music Player","data-track":"toolbar_click_audio_player_play",onPointerUp:()=>{const _=n.find(L=>Qn(L));!_||!Qn(_)||Vu({source:{elementId:_.id,audioUrl:_.audioUrl,title:_.title,duration:_.duration,previewImageUrl:_.previewImageUrl,providerTaskId:_.providerTaskId,clipId:_.clipId,clipIds:_.clipIds},queue:ll(e.children),queueTab:{queueId:rf,queueName:sf}})}},"audio-player-play",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2095,columnNumber:15},void 0),l.jsxDEV(ie,{className:"duplicate",type:"icon",icon:l.jsxDEV(fN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2144,columnNumber:21},void 0),visible:!0,title:s("general.duplicate"),"aria-label":s("general.duplicate"),"data-track":"toolbar_click_duplicate",onPointerUp:()=>{if(n.length===1&&Yt(n[0])){const L=dN(e,n[0],o);L&&mN(e,L)}else pN(e)}},8,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2140,columnNumber:13},void 0),l.jsxDEV(ie,{className:"trash",type:"icon",icon:l.jsxDEV(br,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2177,columnNumber:21},void 0),visible:!0,title:s("general.delete"),"aria-label":s("general.delete"),"data-track":"toolbar_click_delete",onPointerUp:()=>{ol(e)}},9,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2173,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:973,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:961,columnNumber:9},void 0),u&&m&&l.jsxDEV(y_,{visible:u,videoUrl:m.url||"",onClose:()=>{d(!1),f(null)},onConfirm:async(_,L)=>{try{m&&await w_(e,m,_,L)}catch(B){console.error("Failed to insert video frame:",B)}}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2192,columnNumber:9},void 0),h&&b&&l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(tj,{visible:h,imageUrl:b,showOverwrite:!!y,onClose:()=>{g(!1),x(""),N(null)},onOverwrite:async _=>{if(y)try{const{unifiedCacheService:L}=await Re(async()=>{const{unifiedCacheService:le}=await import("./tool-windows-DOIu9TAD.js").then(qe=>qe.pj);return{unifiedCacheService:le}},__vite__mapDeps([0]),import.meta.url),B=`edited-image-${Date.now()}`,$=`/__aitu_cache__/image/${B}.png`,ee=await(await fetch(_)).blob();await L.cacheMediaFromBlob($,ee,"image",{taskId:B});const Z=new Image;await new Promise((le,qe)=>{Z.onload=()=>le(),Z.onerror=()=>qe(new Error("Failed to load edited image")),Z.src=_});const te=e.children.findIndex(le=>le.id===y.id);if(te>=0){const le=e.children[te],{newPoints:qe}=await af({url:le.url,width:le.width,height:le.height,points:le.points||[[0,0],[0,0]]},Z.naturalWidth,Z.naturalHeight);ce.setNode(e,{url:$,width:Z.naturalWidth,height:Z.naturalHeight,points:qe},[te])}}catch(L){console.error("Failed to update image:",L),se.error(o==="zh"?"更新失败":"Update failed")}},onInsert:async _=>{try{const{unifiedCacheService:L}=await Re(async()=>{const{unifiedCacheService:_e}=await import("./tool-windows-DOIu9TAD.js").then(Ee=>Ee.pj);return{unifiedCacheService:_e}},__vite__mapDeps([0]),import.meta.url),B=`edited-image-${Date.now()}`,$=`/__aitu_cache__/image/${B}.png`,ee=await(await fetch(_)).blob();await L.cacheMediaFromBlob($,ee,"image",{taskId:B});const Z=new Image;await new Promise((_e,Ee)=>{Z.onload=()=>_e(),Z.onerror=()=>Ee(new Error("Failed to load edited image")),Z.src=_});const te=vs(e),le=y?y.points[1][0]-y.points[0][0]+20:0,qe=y?y.points[0][0]:te?te[0]+100:100,$e=y?y.points[0][1]:te?te[1]+100:100,ne=[qe+le,$e];await uc(e,$,ne,!1,{width:Z.naturalWidth,height:Z.naturalHeight},!1,!0)}catch(L){console.error("Failed to insert image:",L),se.error(o==="zh"?"插入失败":"Insert failed")}}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2220,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2219,columnNumber:9},void 0),X.hasText&&l.jsxDEV(g_,{board:e,isOpen:w,onClose:()=>D(!1),currentFontSize:X.fontSize,currentFontFamily:(pe=X.marks)==null?void 0:pe["font-family"],currentColor:(me=X.marks)==null?void 0:me.color,toolbarRect:U,selectionRect:j},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2371,columnNumber:9},void 0),E&&l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(nj,{visible:E,board:e,onClose:()=>{k(!1),R(void 0)},initialFrameId:V},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2386,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:2385,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/popup-toolbar/popup-toolbar.tsx",lineNumber:959,columnNumber:5},void 0)},Tg=(e,t)=>{const n=cf(t);return{fill:Zr(t),strokeColor:xN(e,t),fontSize:n["font-size"],marks:n}},Dg=(e,t)=>{const n=cf(t);return{fill:Zr(t),strokeColor:NN(e,t),fontSize:n["font-size"],marks:n}},oj=e=>{const t=Oe(e);if(t.length===0)return{fill:void 0,strokeColor:void 0};if(t.length===1){const n=t[0];return At(n)?{fill:n.fillColor,strokeColor:void 0}:on.isMindElement(e,n)?Tg(e,n):Xe.isFreehand(n)?_g(e,n):Je.isPenPath(n)?jg(e,n):Dg(e,n)}return sj(e,t)},sj=(e,t)=>{const n=t.map(a=>At(a)?{fill:a.fillColor,strokeColor:void 0}:on.isMindElement(e,a)?Tg(e,a):Xe.isFreehand(a)?_g(e,a):Je.isPenPath(a)?jg(e,a):F.isDrawElement(a)?Dg(e,a):{fill:void 0,strokeColor:void 0}),i=n.map(a=>a.fill),o=n.map(a=>a.strokeColor),s=i.every(a=>a===i[0]),r=o.every(a=>a===o[0]);return{fill:s?i[0]:void 0,strokeColor:r?o[0]:void 0}},_g=(e,t)=>({fill:Zr(t),strokeColor:uf(e,t)}),jg=(e,t)=>({fill:Zr(t),strokeColor:t.strokeColor,cornerRadius:t.cornerRadius}),rj=(e,t)=>At(t)||on.isMindElement(e,t)||hN(e,t)?!0:Xe.isFreehand(t)?gN(t.points):Je.isPenPath(t)?t.closed:F.isDrawElement(t)?F.isShapeElement(t)&&!F.isImage(t)&&!F.isText(t)&&lf(t):!1,Pg=(e,t)=>on.isMindElement(e,t)||Xe.isFreehand(t)||Je.isPenPath(t)?!0:F.isDrawElement(t)?F.isShapeElement(t)&&!F.isImage(t)&&!F.isText(t)||F.isArrowLine(t)||F.isVectorLine(t)||F.isTable(t):!1,aj=(e,t)=>Pg(e,t),lj=(e,t)=>on.isMindElement(e,t)?!0:F.isDrawElement(t)?sc([t]):!1,cj=(e,t)=>{if(Je.isPenPath(t))return t.closed;if(Xe.isFreehand(t)){const n=t.points;if(!n||n.length<3)return!1;const i=n[0],o=n[n.length-1];return Math.hypot(o[0]-i[0],o[1]-i[1])<=10}return F.isDrawElement(t)?F.isImage(t)||F.isText(t)||F.isArrowLine(t)||F.isVectorLine(t)?!1:F.isShapeElement(t)&&lf(t):(on.isMindElement(e,t),!1)},ga=Pn.createContext({}),$m=(e="",t=!1)=>`menu-item menu-item-base ${e} ${t?"menu-item--active":""}`.trim(),uj=(e,t)=>{const n=p.useContext(ga);return yN(e,i=>{var s;const o=new CustomEvent(dc.MENU_ITEM_SELECT,{bubbles:!0,cancelable:!0});t==null||t(o),o.defaultPrevented||(s=n.onSelect)==null||s.call(n,o)})},dj=({icon:e,shortcut:t,children:n})=>l.jsxDEV(l.Fragment,{children:[e&&l.jsxDEV("div",{className:"menu-item__icon",children:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu-item-content.tsx",lineNumber:14,columnNumber:16},void 0),l.jsxDEV("div",{className:"menu-item__text",children:n},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu-item-content.tsx",lineNumber:15,columnNumber:7},void 0),t&&l.jsxDEV("div",{className:"menu-item__shortcut",children:t},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu-item-content.tsx",lineNumber:17,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu-item-content.tsx",lineNumber:13,columnNumber:5},void 0),Be=({icon:e,onSelect:t,children:n,shortcut:i,className:o,selected:s,submenu:r,...a})=>{const[c,u]=p.useState(!1),d=p.useRef(),m=uj(a.onClick,t),f=l.jsxDEV(dj,{icon:e,shortcut:i,children:n},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu-item.tsx",lineNumber:32,columnNumber:5},void 0),h=()=>{d.current&&window.clearTimeout(d.current),u(!0)},g=()=>{d.current=window.setTimeout(()=>{u(!1)},100)};return r?l.jsxDEV(st,{open:c,onOpenChange:u,placement:"right-start",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV("button",{...a,type:"button",className:$m(o,s||c),title:a.title??a["aria-label"],onClick:m,onMouseEnter:h,onMouseLeave:g,role:"menuitem","aria-haspopup":"true","aria-expanded":c,children:f},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu-item.tsx",lineNumber:58,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu-item.tsx",lineNumber:57,columnNumber:9},void 0),l.jsxDEV(at,{onMouseEnter:h,onMouseLeave:g,children:r},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu-item.tsx",lineNumber:73,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu-item.tsx",lineNumber:52,columnNumber:7},void 0):l.jsxDEV("button",{...a,onClick:m,type:"button",className:$m(o,s),title:a.title??a["aria-label"],role:"menuitem",children:f},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu-item.tsx",lineNumber:81,columnNumber:5},void 0)};Be.displayName="MenuItem";const Cg=({children:e})=>l.jsxDEV("div",{style:{display:"inline-flex",marginLeft:"auto",padding:"2px 4px",background:"var(--color-promo)",color:"var(--color-surface-lowest)",borderRadius:6,fontSize:9,fontFamily:"Cascadia, monospace"},children:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu-item.tsx",lineNumber:101,columnNumber:5},void 0);Cg.displayName="MenuItemBadge";Be.Badge=Cg;const _n=({children:e,className:t="",onSelect:n,style:i,onClose:o})=>{const s=K(`menu ${t}`).trim(),r=p.useRef(null),a=p.useCallback(()=>r.current?Array.from(r.current.querySelectorAll("button.menu-item:not([disabled])")):[],[]),c=p.useCallback(u=>{var f,h,g,b;const d=a();if(d.length===0)return;const m=d.findIndex(x=>x===document.activeElement);switch(u.key){case"ArrowDown":{u.preventDefault();const x=m<d.length-1?m+1:0;(f=d[x])==null||f.focus();break}case"ArrowUp":{u.preventDefault();const x=m>0?m-1:d.length-1;(h=d[x])==null||h.focus();break}case"Home":{u.preventDefault(),(g=d[0])==null||g.focus();break}case"End":{u.preventDefault(),(b=d[d.length-1])==null||b.focus();break}case"Escape":{u.preventDefault(),o==null||o();break}case"Enter":case" ":{m>=0&&d[m]&&(u.preventDefault(),d[m].click());break}}},[a,o]);return p.useEffect(()=>{const u=a();u.length>0&&requestAnimationFrame(()=>{var d;(d=u[0])==null||d.focus()})},[a]),l.jsxDEV(ga.Provider,{value:{onSelect:n},children:l.jsxDEV("div",{className:s,style:i,"data-testid":"menu",onKeyDown:c,ref:r,role:"menu",children:l.jsxDEV(Ye,{className:"menu-container",padding:2,children:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu.tsx",lineNumber:113,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu.tsx",lineNumber:104,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu.tsx",lineNumber:103,columnNumber:5},void 0)};_n.displayName="Menu";const Ag=()=>{const e=bt(),{t}=je();return l.jsxDEV(Be,{"data-testid":"save-button","data-track":"toolbar_click_menu_save",onSelect:()=>{df(e)},icon:l.jsxDEV(of,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:48,columnNumber:13},void 0),"aria-label":t("menu.saveFile"),shortcut:"Cmd+S",children:t("menu.saveFile")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:42,columnNumber:5},void 0)};Ag.displayName="SaveToFile";const Mg=()=>{const e=bt(),t=ag(),{t:n}=je(),i=(o,s,r)=>{e.children=o,e.viewport=s||{zoom:1},e.theme={themeColorMode:xi.default},t.update(e.children,{board:e,parent:e,parentG:q.getElementHost(e)}),ge.fitViewport(e)};return l.jsxDEV(Be,{"data-testid":"open-button","data-track":"toolbar_click_menu_open",onSelect:()=>{vN(e).then(o=>{o&&i(o.elements,o.viewport)})},icon:l.jsxDEV(wN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:87,columnNumber:13},void 0),"aria-label":n("menu.open"),children:n("menu.open")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:76,columnNumber:5},void 0)};Mg.displayName="OpenFile";const Ig=()=>{const e=bt(),t=p.useContext(ga),{t:n}=je();return l.jsxDEV(Be,{icon:l.jsxDEV(EN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:100,columnNumber:13},void 0),"data-testid":"image-export-button","data-track":"toolbar_click_menu_export",onSelect:()=>{tr(e,!0)},submenu:l.jsxDEV(_n,{onSelect:()=>{var o;const i=new CustomEvent(dc.MENU_ITEM_SELECT,{bubbles:!0,cancelable:!0});(o=t.onSelect)==null||o.call(t,i)},children:[l.jsxDEV(Be,{"data-track":"toolbar_click_menu_export_png",onSelect:()=>{tr(e,!0)},"aria-label":n("menu.exportImage.png"),children:n("menu.exportImage.png")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:114,columnNumber:11},void 0),l.jsxDEV(Be,{"data-track":"toolbar_click_menu_export_jpg",onSelect:()=>{tr(e,!1)},"aria-label":n("menu.exportImage.jpg"),children:n("menu.exportImage.jpg")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:123,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:107,columnNumber:9},void 0),shortcut:"Cmd+Shift+E","aria-label":n("menu.exportImage"),children:n("menu.exportImage")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:99,columnNumber:5},void 0)};Ig.displayName="SaveAsImage";const Vg=()=>{const{appState:e,setAppState:t}=Gt(),{t:n}=je();return l.jsxDEV(Be,{icon:l.jsxDEV(br,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:148,columnNumber:13},void 0),"data-testid":"reset-button","data-track":"toolbar_click_menu_clean",onSelect:()=>{t({...e,openCleanConfirm:!0})},shortcut:"Cmd+Backspace","aria-label":n("menu.cleanBoard"),children:n("menu.cleanBoard")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:147,columnNumber:5},void 0)};Vg.displayName="CleanBoard";const Ug=({onOpenBackupRestore:e})=>{const{t}=je();return l.jsxDEV(Be,{icon:l.jsxDEV(SN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:174,columnNumber:13},void 0),"data-track":"toolbar_click_menu_backup",onSelect:e,"aria-label":t("menu.backupRestore"),children:t("menu.backupRestore")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:173,columnNumber:5},void 0)};Ug.displayName="BackupRestore";const Rg=({onOpenCloudSync:e})=>{const{t}=je();return l.jsxDEV(Be,{icon:l.jsxDEV(DN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:193,columnNumber:13},void 0),"data-track":"toolbar_click_menu_cloud_sync",onSelect:e,"aria-label":t("menu.cloudSync"),children:t("menu.cloudSync")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:192,columnNumber:5},void 0)};Rg.displayName="CloudSync";const qg=()=>{const{t:e}=je();return l.jsxDEV(Be,{icon:l.jsxDEV(TN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:208,columnNumber:13},void 0),"data-track":"toolbar_click_menu_debug",onSelect:()=>{window.location.href="./sw-debug.html"},"aria-label":e("menu.debugPanel"),children:e("menu.debugPanel")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:207,columnNumber:5},void 0)};qg.displayName="DebugPanel";const Lg=()=>{const{appState:e,setAppState:t}=Gt(),{t:n}=je();return l.jsxDEV(Be,{icon:l.jsxDEV(_N,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:226,columnNumber:13},void 0),"data-track":"toolbar_click_menu_settings",onSelect:()=>{t({...e,openSettings:!0})},"aria-label":n("menu.settings"),children:n("menu.settings")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:225,columnNumber:5},void 0)};Lg.displayName="Settings";const Bg=()=>{const{appState:e,setAppState:t}=Gt(),{t:n}=je();return l.jsxDEV(Be,{icon:l.jsxDEV(jN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:264,columnNumber:13},void 0),"data-track":"toolbar_click_menu_commands",onSelect:()=>{t({...e,openCommandPalette:!0})},shortcut:"Cmd+K","aria-label":n("menu.commandPalette"),children:n("menu.commandPalette")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:263,columnNumber:5},void 0)};Bg.displayName="QuickCommands";const Og=()=>{const{t:e}=je();return l.jsxDEV(Be,{icon:l.jsxDEV(PN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:285,columnNumber:13},void 0),"data-track":"toolbar_click_menu_manual",onSelect:()=>{window.open("./user-manual/index.html","_blank")},"aria-label":e("menu.userManual"),children:e("menu.userManual")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:284,columnNumber:5},void 0)};Og.displayName="UserManual";const Fg=()=>{var n;const{t:e}=je(),t=((n=document.querySelector('meta[name="app-version"]'))==null?void 0:n.getAttribute("content"))||"0.0.0";return l.jsxDEV(Be,{"data-track":"toolbar_click_menu_version",onSelect:()=>{},"aria-label":e("menu.version"),children:l.jsxDEV("span",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},children:[l.jsxDEV("span",{style:{color:"#666"},children:[e("menu.version"),":",t]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:310,columnNumber:9},void 0),l.jsxDEV("span",{style:{display:"flex",alignItems:"center",gap:"12px"},children:[l.jsxDEV("span",{style:{color:"#1890ff",cursor:"pointer"},"data-track":"toolbar_click_menu_changelog",onClick:i=>{i.stopPropagation(),window.open("./versions.html","_blank")},children:e("menu.changelog")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:312,columnNumber:11},void 0),l.jsxDEV("span",{style:{color:"#1890ff",cursor:"pointer"},"data-track":"toolbar_click_menu_more_versions",onClick:i=>{i.stopPropagation(),window.open("https://release.opentu.ai/","_blank")},children:e("menu.more")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:322,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:311,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:309,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:304,columnNumber:5},void 0)};Fg.displayName="VersionInfo";async function mj(e){if(!e||typeof e!="string")return!1;if(e.startsWith("blob:")||e.startsWith("data:"))return!0;try{return(await fetch(e,{method:"HEAD",mode:"cors",cache:"no-cache"})).ok}catch{try{const t=await fetch(e,{method:"GET",mode:"no-cors",cache:"no-cache"});return t.type==="opaque"||t.ok}catch{return!1}}}const Hg=()=>{const e=bt(),{t}=je(),[n,i]=p.useState(!1),o=p.useCallback(async()=>{if(n)return;i(!0);const s=se.loading(t("menu.cleanInvalidLinks.scanning"),0);try{const r=[];for(let u=0;u<e.children.length;u++){const d=e.children[u],m=d.url;if(!m||typeof m!="string")continue;const f=F.isDrawElement(d)&&F.isImage(d),h=En(d);(f||h)&&r.push({element:d,index:u,url:m})}const a=[];if(await Promise.all(r.map(async({element:u,index:d,url:m})=>{await mj(m)||a.push({element:u,index:d})})),s.then(u=>{var d;return(d=u==null?void 0:u.close)==null?void 0:d.call(u)}),a.length===0){se.success(t("menu.cleanInvalidLinks.noInvalid")),i(!1);return}a.sort((u,d)=>d.index-u.index);for(const{index:u}of a)ce.removeNode(e,[u]);const c=t("menu.cleanInvalidLinks.success").replace("{count}",String(a.length));se.success(c)}catch(r){s.then(a=>{var c;return(c=a==null?void 0:a.close)==null?void 0:c.call(a)}),se.error(t("menu.cleanInvalidLinks.error")),console.error("[CleanInvalidLinks] Error:",r)}finally{i(!1)}},[e,t,n]);return l.jsxDEV(Be,{icon:l.jsxDEV(kN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:461,columnNumber:13},void 0),"data-track":"toolbar_click_menu_clean_invalid_links",onSelect:o,"aria-label":t("menu.cleanInvalidLinks"),disabled:n,children:t("menu.cleanInvalidLinks")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-menu-items.tsx",lineNumber:460,columnNumber:5},void 0)};Hg.displayName="CleanInvalidLinks";const zg=()=>{const{language:e,setLanguage:t,t:n}=je(),i=p.useContext(ga);return l.jsxDEV(Be,{icon:l.jsxDEV(mf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/language-switcher-menu.tsx",lineNumber:15,columnNumber:13},void 0),"data-testid":"language-switcher-button",onSelect:()=>{},submenu:l.jsxDEV(_n,{onSelect:()=>{var s;const o=new CustomEvent(dc.MENU_ITEM_SELECT,{bubbles:!0,cancelable:!0});(s=i.onSelect)==null||s.call(i,o)},children:[l.jsxDEV(Be,{onSelect:()=>{t("zh")},"aria-label":n("language.chinese"),selected:e==="zh",children:n("language.chinese")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/language-switcher-menu.tsx",lineNumber:28,columnNumber:11},void 0),l.jsxDEV(Be,{onSelect:()=>{t("en")},"aria-label":n("language.english"),selected:e==="en",children:n("language.english")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/language-switcher-menu.tsx",lineNumber:37,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/language-switcher-menu.tsx",lineNumber:21,columnNumber:9},void 0),"aria-label":n("language.switcher"),children:n("language.switcher")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/language-switcher-menu.tsx",lineNumber:14,columnNumber:5},void 0)};zg.displayName="LanguageSwitcherMenu";const xs=()=>l.jsxDEV("div",{style:{height:"1px",backgroundColor:"var(--color-gray-10)",margin:".5rem 0"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/menu/menu-separator.tsx",lineNumber:2,columnNumber:3},void 0);xs.displayName="MenuSeparator";const Ol=({children:e,buttonId:t,isVisible:n,visibleIndex:i=-1,disabled:o=!1})=>{const{t:s}=je(),{hideButton:r,showButton:a,resetToDefault:c,visibleButtons:u,reorderButton:d}=Qr(),[m,f]=p.useState(!1),[h,g]=p.useState({x:0,y:0}),b=p.useRef(null),x=p.useRef(null);p.useEffect(()=>{const I=x.current;if(!I)return;const U=A=>{A.button===2&&A.stopPropagation()};return I.addEventListener("pointerdown",U,!0),()=>{I.removeEventListener("pointerdown",U,!0)}},[]);const y=p.useCallback(I=>{o||(I.preventDefault(),I.stopPropagation(),g({x:I.clientX,y:I.clientY}),f(!0))},[o]),N=p.useCallback(()=>{f(!1)},[]),w=p.useCallback(()=>{n?r(t):a(t),N()},[n,t,r,a,N]),D=p.useCallback(()=>{i>0&&d(i,i-1,!0),N()},[i,d,N]),S=p.useCallback(()=>{i>=0&&i<u.length-1&&d(i,i+1,!0),N()},[i,u.length,d,N]),E=p.useCallback(()=>{i>0&&d(i,0,!0),N()},[i,d,N]),k=p.useCallback(()=>{i>=0&&i<u.length-1&&d(i,u.length-1,!0),N()},[i,u.length,d,N]),V=p.useCallback(()=>{c(),N()},[c,N]);p.useEffect(()=>{if(!m)return;const I=A=>{b.current&&!b.current.contains(A.target)&&N()},U=A=>{A.key==="Escape"&&N()};return document.addEventListener("mousedown",I),document.addEventListener("keydown",U),()=>{document.removeEventListener("mousedown",I),document.removeEventListener("keydown",U)}},[m,N]),p.useEffect(()=>{if(!m||!b.current)return;const U=b.current.getBoundingClientRect(),A=window.innerWidth,j=window.innerHeight;let C=h.x,M=h.y;h.x+U.width>A&&(C=A-U.width-8),h.y+U.height>j&&(M=j-U.height-8),(C!==h.x||M!==h.y)&&g({x:C,y:M})},[m,h]);const R=n&&i>0,z=n&&i>=0&&i<u.length-1;return l.jsxDEV(l.Fragment,{children:[l.jsxDEV("div",{ref:x,onContextMenu:y,children:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx",lineNumber:192,columnNumber:7},void 0),m&&Xr.createPortal(l.jsxDEV("div",{ref:b,className:"toolbar-context-menu",style:{position:"fixed",left:h.x,top:h.y,zIndex:tn.DROPDOWN_PORTAL},children:l.jsxDEV(_n,{children:[n&&l.jsxDEV(l.Fragment,{children:[l.jsxDEV(Be,{onSelect:D,disabled:!R,children:s("toolbar.moveUp")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx",lineNumber:208,columnNumber:19},void 0),l.jsxDEV(Be,{onSelect:S,disabled:!z,children:s("toolbar.moveDown")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx",lineNumber:211,columnNumber:19},void 0),l.jsxDEV(Be,{onSelect:E,disabled:!R,children:s("toolbar.moveToTop")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx",lineNumber:214,columnNumber:19},void 0),l.jsxDEV(Be,{onSelect:k,disabled:!z,children:s("toolbar.moveToBottom")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx",lineNumber:217,columnNumber:19},void 0),l.jsxDEV(xs,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx",lineNumber:220,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx",lineNumber:207,columnNumber:17},void 0),l.jsxDEV(Be,{onSelect:w,children:s(n?"toolbar.rightClickToHide":"toolbar.doubleClickToShow")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx",lineNumber:223,columnNumber:15},void 0),l.jsxDEV(xs,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx",lineNumber:226,columnNumber:15},void 0),l.jsxDEV(Be,{onSelect:V,children:s("toolbar.resetToDefault")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx",lineNumber:227,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx",lineNumber:205,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx",lineNumber:195,columnNumber:11},void 0),document.body)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx",lineNumber:191,columnNumber:5},void 0)},pj=({embedded:e=!1,iconMode:t=!1,onOpenBackupRestore:n,onOpenCloudSync:i})=>{const o=bt(),{t:s}=je(),{isButtonVisible:r,visibleButtons:a}=Qr(),c=q.getBoardContainer(o),[u,d]=p.useState(!1),m=o.history.undos.length<=0,f=o.history.redos.length<=0,h=r("undo"),g=r("redo"),b=a.findIndex(N=>N.id==="undo"),x=a.findIndex(N=>N.id==="redo"),y=l.jsxDEV(dt.Row,{gap:1,children:[l.jsxDEV(st,{sideOffset:12,open:u,onOpenChange:N=>{d(N)},placement:e?"right-start":"bottom-start",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{type:"icon",visible:!0,selected:u,icon:l.jsxDEV(mf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:71,columnNumber:21},void 0),tooltip:u?void 0:s("general.menu"),tooltipPlacement:e?"right":"bottom","aria-label":s("general.menu"),"data-track":"toolbar_click_menu",onPointerDown:()=>{d(!u)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:67,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:66,columnNumber:11},void 0),l.jsxDEV(at,{container:c,style:{zIndex:tn.POPOVER_APP},children:l.jsxDEV(_n,{onSelect:()=>{d(!1)},onClose:()=>{d(!1)},children:[l.jsxDEV(Mg,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:90,columnNumber:15},void 0),l.jsxDEV(Ag,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:91,columnNumber:15},void 0),l.jsxDEV(Ig,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:92,columnNumber:15},void 0),l.jsxDEV(Vg,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:93,columnNumber:15},void 0),l.jsxDEV(Hg,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:94,columnNumber:15},void 0),l.jsxDEV(xs,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:95,columnNumber:15},void 0),l.jsxDEV(zg,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:96,columnNumber:15},void 0),l.jsxDEV(Ug,{onOpenBackupRestore:()=>{d(!1),n==null||n()}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:97,columnNumber:15},void 0),l.jsxDEV(qg,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:101,columnNumber:15},void 0),l.jsxDEV(Rg,{onOpenCloudSync:()=>{d(!1),i==null||i()}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:102,columnNumber:15},void 0),l.jsxDEV(Lg,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:106,columnNumber:15},void 0),l.jsxDEV(xs,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:107,columnNumber:15},void 0),l.jsxDEV(Bg,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:108,columnNumber:15},void 0),l.jsxDEV(Og,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:109,columnNumber:15},void 0),l.jsxDEV(Fg,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:110,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:82,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:81,columnNumber:11},void 0)]},0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:57,columnNumber:9},void 0),h&&l.jsxDEV(Ol,{buttonId:"undo",isVisible:!0,visibleIndex:b,children:l.jsxDEV(ie,{type:"icon",icon:l.jsxDEV(pf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:123,columnNumber:21},void 0),visible:!0,tooltip:s("general.undo"),tooltipPlacement:e?"right":"bottom","aria-label":s("general.undo"),"data-track":"toolbar_click_undo",onPointerUp:()=>{o.undo()},disabled:m},1,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:120,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:115,columnNumber:11},void 0),g&&l.jsxDEV(Ol,{buttonId:"redo",isVisible:!0,visibleIndex:x,children:l.jsxDEV(ie,{type:"icon",icon:l.jsxDEV(ff,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:145,columnNumber:21},void 0),visible:!0,tooltip:s("general.redo"),tooltipPlacement:e?"right":"bottom","aria-label":s("general.redo"),"data-track":"toolbar_click_redo",onPointerUp:()=>{o.redo()},disabled:f},2,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:142,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:137,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:56,columnNumber:7},void 0);return e?l.jsxDEV("div",{className:K("app-toolbar",{"app-toolbar--embedded":e,"app-toolbar--icon-only":t}),children:[y,l.jsxDEV(ie,{type:"icon",icon:l.jsxDEV(CN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:169,columnNumber:17},void 0),visible:!0,tooltip:s("menu.github"),tooltipPlacement:"right","aria-label":s("menu.github"),"data-track":"toolbar_click_github",onPointerUp:()=>{window.open("https://github.com/ljquan/aitu","_blank")}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:167,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:162,columnNumber:7},void 0):l.jsxDEV(Ye,{padding:1,className:K("app-toolbar",It,{"app-toolbar--embedded":e,"app-toolbar--icon-only":t}),children:y},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/app-toolbar/app-toolbar.tsx",lineNumber:184,columnNumber:5},void 0)};function fj(e,t){return!e||e===ii.solid?null:e===ii.dashed?`${t*3},${t*2}`:e===ii.dotted?`${t},${t*2}`:null}function gi(e){return e!==void 0&&!isNaN(e[0])&&!isNaN(e[1])&&isFinite(e[0])&&isFinite(e[1])}class hj extends hf{constructor(t){super(t)}canDraw(t){return t.anchors&&t.anchors.length>0}draw(t){const n=mc();n.classList.add("pen-path");const i=gf(t),o=t.cornerRadius||0,s=bf(i,t.closed,o),r=t.strokeWidth||2,a=document.createElementNS("http://www.w3.org/2000/svg","path");a.setAttribute("d",s),a.setAttribute("fill",AN(t.fill)),a.setAttribute("stroke",t.strokeColor||"#000000"),a.setAttribute("stroke-width",String(r)),a.setAttribute("stroke-linecap","round"),a.setAttribute("stroke-linejoin","round");const c=fj(t.strokeStyle,r);return c&&a.setAttribute("stroke-dasharray",c),n.appendChild(a),n}}function gj(e,t){const n=e.point,i=IN;if(e.type==="corner"){const o=document.createElementNS("http://www.w3.org/2000/svg","rect");return o.setAttribute("x",String(n[0]-i/2)),o.setAttribute("y",String(n[1]-i/2)),o.setAttribute("width",String(i)),o.setAttribute("height",String(i)),o.setAttribute("fill",t?"#1890ff":"#ffffff"),o.setAttribute("stroke","#1890ff"),o.setAttribute("stroke-width","1.5"),o.classList.add("pen-anchor"),o}else{const o=document.createElementNS("http://www.w3.org/2000/svg","circle");return o.setAttribute("cx",String(n[0])),o.setAttribute("cy",String(n[1])),o.setAttribute("r",String(i/2)),o.setAttribute("fill",t?"#1890ff":"#ffffff"),o.setAttribute("stroke","#1890ff"),o.setAttribute("stroke-width","1.5"),o.classList.add("pen-anchor"),o}}function Xm(e){const t=document.createElementNS("http://www.w3.org/2000/svg","circle");return t.setAttribute("cx",String(e[0])),t.setAttribute("cy",String(e[1])),t.setAttribute("r",String(MN/2)),t.setAttribute("fill","#ffffff"),t.setAttribute("stroke","#1890ff"),t.setAttribute("stroke-width","1"),t.classList.add("pen-handle"),t}function Km(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","line");return n.setAttribute("x1",String(e[0])),n.setAttribute("y1",String(e[1])),n.setAttribute("x2",String(t[0])),n.setAttribute("y2",String(t[1])),n.setAttribute("stroke","#1890ff"),n.setAttribute("stroke-width","1"),n.setAttribute("stroke-dasharray","3,3"),n.classList.add("pen-handle-line"),n}function bj(e,t,n){const i="#ff4d4f";if(n.vertical&&n.verticalRefPoint){const s=n.verticalRefPoint,r=document.createElementNS("http://www.w3.org/2000/svg","line");r.setAttribute("x1",String(t[0])),r.setAttribute("y1",String(Math.min(t[1],s[1])-50)),r.setAttribute("x2",String(t[0])),r.setAttribute("y2",String(Math.max(t[1],s[1])+50)),r.setAttribute("stroke",i),r.setAttribute("stroke-width",String(1)),r.setAttribute("stroke-dasharray","4,4"),r.classList.add("pen-alignment-guide"),e.appendChild(r);const a=document.createElementNS("http://www.w3.org/2000/svg","circle");a.setAttribute("cx",String(s[0])),a.setAttribute("cy",String(s[1])),a.setAttribute("r","3"),a.setAttribute("fill",i),a.setAttribute("opacity","0.6"),a.classList.add("pen-alignment-marker"),e.appendChild(a)}if(n.horizontal&&n.horizontalRefPoint){const s=n.horizontalRefPoint,r=document.createElementNS("http://www.w3.org/2000/svg","line");if(r.setAttribute("x1",String(Math.min(t[0],s[0])-50)),r.setAttribute("y1",String(t[1])),r.setAttribute("x2",String(Math.max(t[0],s[0])+50)),r.setAttribute("y2",String(t[1])),r.setAttribute("stroke",i),r.setAttribute("stroke-width",String(1)),r.setAttribute("stroke-dasharray","4,4"),r.classList.add("pen-alignment-guide"),e.appendChild(r),!n.verticalRefPoint||n.horizontalRefPoint[0]!==n.verticalRefPoint[0]||n.horizontalRefPoint[1]!==n.verticalRefPoint[1]){const a=document.createElementNS("http://www.w3.org/2000/svg","circle");a.setAttribute("cx",String(s[0])),a.setAttribute("cy",String(s[1])),a.setAttribute("r","3"),a.setAttribute("fill",i),a.setAttribute("opacity","0.6"),a.classList.add("pen-alignment-marker"),e.appendChild(a)}}}function xj(e,t,n="#1890ff",i=2,o){const s=mc();if(s.classList.add("pen-preview"),e.length===0)return s;if(t&&gi(t)&&o&&(o.horizontal||o.vertical)&&bj(s,t,o),e.length>0){const r=bf(e,!1),a=document.createElementNS("http://www.w3.org/2000/svg","path");a.setAttribute("d",r),a.setAttribute("fill","none"),a.setAttribute("stroke",n),a.setAttribute("stroke-width",String(i)),a.setAttribute("stroke-linecap","round"),a.setAttribute("stroke-linejoin","round"),s.appendChild(a)}if(t&&gi(t)&&e.length>0){const r=e[e.length-1];if(gi(r.point)){const a=document.createElementNS("http://www.w3.org/2000/svg","line"),c=r.handleOut&&gi(r.handleOut)?r.handleOut:r.point;a.setAttribute("x1",String(c[0])),a.setAttribute("y1",String(c[1])),a.setAttribute("x2",String(t[0])),a.setAttribute("y2",String(t[1])),a.setAttribute("stroke",n),a.setAttribute("stroke-width","1"),a.setAttribute("stroke-dasharray","5,5"),a.setAttribute("opacity","0.6"),s.appendChild(a)}}for(let r=0;r<e.length;r++){const a=e[r];if(!gi(a.point))continue;if(a.handleIn&&gi(a.handleIn)){const u=Km(a.point,a.handleIn);s.appendChild(u);const d=Xm(a.handleIn);s.appendChild(d)}if(a.handleOut&&gi(a.handleOut)){const u=Km(a.point,a.handleOut);s.appendChild(u);const d=Xm(a.handleOut);s.appendChild(d)}const c=gj(a,r===e.length-1);s.appendChild(c)}return s}const Nj=3,yj=3,Ym=8,Fl=new WeakMap;function ei(e){let t=Fl.get(e);return t||(t={isCreating:!1,anchors:[],isDraggingHandle:!1,dragStartPoint:null,currentPoint:null,previewG:null,alignment:{horizontal:!1,vertical:!1,horizontalRefPoint:null,verticalRefPoint:null,referencePoint:null}},Fl.set(e,t)),t}function Zm(e,t,n=!1){const i={horizontal:!1,vertical:!1,horizontalRefPoint:null,verticalRefPoint:null,referencePoint:null},o=[...e],s=n&&t.length>1?t.slice(0,-1):t;if(s.length===0)return{snappedPoint:e,alignment:i};let r=Ym,a=null,c=null,u=Ym,d=null,m=null;for(const f of s){const h=Math.abs(e[0]-f.point[0]),g=Math.abs(e[1]-f.point[1]);h<r&&(r=h,a=f.point[0],c=f.point),g<u&&(u=g,d=f.point[1],m=f.point)}return a!==null&&(o[0]=a,i.vertical=!0,i.verticalRefPoint=c),d!==null&&(o[1]=d,i.horizontal=!0,i.horizontalRefPoint=m),i.referencePoint=i.verticalRefPoint||i.horizontalRefPoint,{snappedPoint:o,alignment:i}}function lo(e){const t=ei(e);t.previewG&&t.previewG.remove(),Gg(e),t.isCreating=!1,t.anchors=[],t.isDraggingHandle=!1,t.dragStartPoint=null,t.currentPoint=null,t.previewG=null,t.alignment={horizontal:!1,vertical:!1,horizontalRefPoint:null,verticalRefPoint:null,referencePoint:null}}function Gg(e){q.getElementHost(e).querySelectorAll(".pen-preview").forEach(i=>i.remove())}function Vo(e){const t=ei(e),n=q.getElementHost(e);t.previewG&&t.previewG.remove(),t.previewG=xj(t.anchors,t.currentPoint,"#1890ff",2,t.alignment),n.appendChild(t.previewG)}function Cr(e,t=!1){const n=ei(e),i=[...n.anchors];if(n.previewG&&(n.previewG.remove(),n.previewG=null),Gg(e),i.length>=2){const o=VN(e,i,t);n.isCreating=!1,n.anchors=[],n.isDraggingHandle=!1,n.dragStartPoint=null,n.currentPoint=null,ce.insertNode(e,o,[e.children.length]),t?(ai(e),ji(e,o)):ai(e)}else lo(e)}function Go(e){return q.getPointer(e)===Hn.pen}function wj(e){const t=ei(e);t.isCreating&&(Go(e)||(t.anchors.length>=2?Cr(e,!1):lo(e)))}const vj=e=>{const{pointerDown:t,pointerMove:n,pointerUp:i,globalPointerUp:o,keyDown:s,globalKeyDown:r}=e,a=u=>u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement||u instanceof HTMLElement&&u.isContentEditable,c=u=>{if(u.defaultPrevented||!Go(e)||a(u.target))return!1;const d=ei(e);return d.isCreating?u.key==="Enter"?(Cr(e,!1),u.preventDefault(),!0):u.key==="Escape"?(lo(e),u.preventDefault(),!0):tt.isHotkey(["mod+z"],{byKey:!0})(u)||u.key==="Backspace"||u.key==="Delete"?(d.anchors.length>0&&(d.anchors.pop(),Vo(e)),d.anchors.length===0&&lo(e),u.preventDefault(),!0):!1:!1};return e.pointerDown=u=>{if(wj(e),!Go(e)){t(u);return}const d=ei(e);let m=Ot(e,Ft(e,u.x,u.y));if(d.isCreating&&d.anchors.length>=yj){const b={anchors:d.anchors};if(UN(b,m)){Cr(e,!0);return}}if(d.anchors.length>0){const{snappedPoint:b}=Zm(m,d.anchors,!1);m=b}d.isCreating=!0,d.isDraggingHandle=!0,d.dragStartPoint=m;const h=cl(e).defaultAnchorType,g={point:m,type:h};d.anchors.push(g),d.alignment={horizontal:!1,vertical:!1,horizontalRefPoint:null,verticalRefPoint:null,referencePoint:null},Vo(e)},e.pointerMove=u=>{if(!Go(e)){n(u);return}const d=ei(e);let m=Ot(e,Ft(e,u.x,u.y));const f=d.isDraggingHandle,{snappedPoint:h,alignment:g}=Zm(m,d.anchors,f);if(d.currentPoint=h,d.alignment=g,d.isDraggingHandle&&d.dragStartPoint&&d.anchors.length>0&&RN(d.dragStartPoint,m)>Nj){const x=d.anchors.length-1,y=d.anchors[x];if(y.type!=="corner"){if(y.type==="smooth"||y.type==="symmetric"){const N=qN(y.point,m);d.anchors[x]={...y,handleIn:N.handleIn,handleOut:N.handleOut}}}}d.isCreating&&pc(e,"pen-preview",()=>{Vo(e)}),n(u)},e.pointerUp=u=>{if(!Go(e)){i(u);return}const d=ei(e);d.isDraggingHandle=!1,d.dragStartPoint=null,Vo(e),i(u)},e.globalPointerUp=u=>{o(u)},e.globalKeyDown=u=>{c(u)||r(u)},e.keyDown=u=>{c(u)||s(u)},e};function jn(e){const t=Fl.get(e);t!=null&&t.isCreating&&(t.anchors.length>=2?Cr(e,!1):lo(e))}const Yc=[{icon:l.jsxDEV(vo,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/freehand-panel/freehand-panel.tsx",lineNumber:32,columnNumber:13},void 0),pointer:ot.feltTipPen,titleKey:"toolbar.pen"},{icon:l.jsxDEV(LN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/freehand-panel/freehand-panel.tsx",lineNumber:37,columnNumber:13},void 0),pointer:Hn.pen,titleKey:"toolbar.vectorPen"},{icon:l.jsxDEV(BN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/freehand-panel/freehand-panel.tsx",lineNumber:42,columnNumber:13},void 0),pointer:ot.eraser,titleKey:"toolbar.eraser"},{icon:l.jsxDEV(ON,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/freehand-panel/freehand-panel.tsx",lineNumber:47,columnNumber:13},void 0),pointer:ot.laserPointer,titleKey:"toolbar.laserPointer"}],Ej=xf(Yc,5),Zc=({onPointerUp:e})=>{const{t}=je(),n=bt();return l.jsxDEV(Ye,{padding:1,children:l.jsxDEV(dt.Row,{gap:1,align:"center",children:l.jsxDEV(dt.Row,{gap:1,children:Ej.map((i,o)=>i.map((s,r)=>l.jsxDEV(ie,{className:K({fillable:!1}),selected:n.pointer===s.pointer,type:"icon",size:"small",visible:!0,icon:s.icon,tooltip:t(s.titleKey),"aria-label":t(s.titleKey),onPointerDown:()=>{s.pointer!==Hn.pen&&jn(n),ct(n,St.dnd),ge.updatePointerType(n,s.pointer)},onPointerUp:()=>{ct(n,St.drawing),e(s.pointer)}},`${o}-${r}`,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/freehand-panel/freehand-panel.tsx",lineNumber:73,columnNumber:17},void 0)))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/freehand-panel/freehand-panel.tsx",lineNumber:69,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/freehand-panel/freehand-panel.tsx",lineNumber:67,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/freehand-panel/freehand-panel.tsx",lineNumber:66,columnNumber:5},void 0)},kj=[{icon:l.jsxDEV(Nf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shape-picker.tsx",lineNumber:30,columnNumber:11},void 0),title:"Rectangle — R",pointer:Me.rectangle},{icon:l.jsxDEV(yf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shape-picker.tsx",lineNumber:35,columnNumber:11},void 0),title:"Ellipse — O",pointer:Me.ellipse},{icon:l.jsxDEV(wf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shape-picker.tsx",lineNumber:40,columnNumber:11},void 0),title:"Triangle",pointer:Me.triangle},{icon:l.jsxDEV(vf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shape-picker.tsx",lineNumber:45,columnNumber:11},void 0),title:"Terminal",pointer:fc.terminal},{icon:l.jsxDEV(Ef,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shape-picker.tsx",lineNumber:50,columnNumber:11},void 0),title:"Diamond",pointer:Me.diamond},{icon:l.jsxDEV(kf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shape-picker.tsx",lineNumber:55,columnNumber:11},void 0),title:"Parallelogram",pointer:Me.parallelogram},{icon:l.jsxDEV(Sf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shape-picker.tsx",lineNumber:60,columnNumber:11},void 0),title:"RoundRectangle",pointer:Me.roundRectangle}],Sj=xf(kj,5),Qc=({onPointerUp:e})=>{const t=bt();return l.jsxDEV(Ye,{padding:1,children:l.jsxDEV(dt.Col,{gap:1,children:Sj.map((n,i)=>l.jsxDEV(dt.Row,{gap:1,children:n.map((o,s)=>l.jsxDEV(ie,{className:K({fillable:!1}),type:"icon",size:"small",visible:!0,icon:o.icon,tooltip:o.title,"aria-label":o.title,onPointerDown:()=>{jn(t),ct(t,St.dnd),ge.updatePointerType(t,o.pointer)},onPointerUp:()=>{ct(t,St.drawing),e(o.pointer)}},s,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shape-picker.tsx",lineNumber:84,columnNumber:19},void 0))},i,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shape-picker.tsx",lineNumber:81,columnNumber:13},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shape-picker.tsx",lineNumber:78,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shape-picker.tsx",lineNumber:77,columnNumber:5},void 0)},Tj=[{icon:l.jsxDEV(FN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/arrow-picker.tsx",lineNumber:21,columnNumber:11},void 0),title:"Straight Arrow Line",pointer:Dn.straight},{icon:l.jsxDEV(HN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/arrow-picker.tsx",lineNumber:26,columnNumber:11},void 0),title:"Elbow Arrow Line",pointer:Dn.elbow},{icon:l.jsxDEV(zN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/arrow-picker.tsx",lineNumber:31,columnNumber:11},void 0),title:"Curve Arrow Line",pointer:Dn.curve}],Jc=({onPointerUp:e})=>{const t=bt();return l.jsxDEV(Ye,{padding:1,children:l.jsxDEV(dt.Row,{gap:1,children:Tj.map((n,i)=>l.jsxDEV(ie,{className:K({fillable:!1}),type:"icon",size:"small",visible:!0,icon:n.icon,tooltip:n.title,"aria-label":n.title,onPointerDown:()=>{jn(t),ct(t,St.drawing),ge.updatePointerType(t,n.pointer)},onPointerUp:()=>{e(n.pointer)}},i,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/arrow-picker.tsx",lineNumber:48,columnNumber:13},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/arrow-picker.tsx",lineNumber:45,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/arrow-picker.tsx",lineNumber:44,columnNumber:5},void 0)},Wg=[{value:xi.default,labelKey:"theme.default"},{value:xi.colorful,labelKey:"theme.colorful"},{value:xi.soft,labelKey:"theme.soft"},{value:xi.retro,labelKey:"theme.retro"},{value:xi.dark,labelKey:"theme.dark"},{value:xi.starry,labelKey:"theme.starry"}],$g=l.jsxDEV("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:{width:"1rem",height:"1rem"},children:l.jsxDEV("polyline",{points:"20 6 9 17 4 12"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-shared.tsx",lineNumber:37,columnNumber:5},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-shared.tsx",lineNumber:27,columnNumber:3},void 0),mr=e=>e===Et.hand||e===Et.selection||e===ls,Xg=l.jsxDEV("span",{style:{width:"1rem",display:"inline-block"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/toolbar-shared.tsx",lineNumber:55,columnNumber:26},void 0),Qm={hand:{icon:l.jsxDEV(Mf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:84,columnNumber:19},void 0),titleKey:"toolbar.hand",pointer:Et.hand},selection:{icon:l.jsxDEV(Af,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:85,columnNumber:24},void 0),titleKey:"toolbar.selection",pointer:Et.selection},lasso:{icon:l.jsxDEV(Cf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:86,columnNumber:20},void 0),titleKey:"toolbar.lasso",pointer:ls},mind:{icon:l.jsxDEV(xr,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:87,columnNumber:19},void 0),titleKey:"toolbar.mind",pointer:Pi.mind},text:{icon:l.jsxDEV(Nc,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:88,columnNumber:19},void 0),titleKey:"toolbar.text",pointer:Me.text},freehand:{icon:l.jsxDEV(vo,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:89,columnNumber:23},void 0),titleKey:"toolbar.pen",pointer:ot.feltTipPen,hasPopup:!0,popupKey:"freehand"},arrow:{icon:l.jsxDEV(xc,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:90,columnNumber:20},void 0),titleKey:"toolbar.arrow",pointer:Dn.straight,hasPopup:!0,popupKey:"arrow"},shape:{icon:l.jsxDEV(bc,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:91,columnNumber:20},void 0),titleKey:"toolbar.shape",pointer:Me.rectangle,hasPopup:!0,popupKey:"shape"},image:{icon:l.jsxDEV($r,{size:24},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:92,columnNumber:20},void 0),titleKey:"toolbar.image"},"media-library":{icon:l.jsxDEV(Wr,{size:24},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:93,columnNumber:28},void 0),titleKey:"toolbar.mediaLibrary"},"ai-image":{icon:l.jsxDEV(Kr,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:94,columnNumber:23},void 0),titleKey:"toolbar.aiImage"},"ai-video":{icon:l.jsxDEV(Yr,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:95,columnNumber:23},void 0),titleKey:"toolbar.aiVideo"},theme:{icon:l.jsxDEV(Pf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:96,columnNumber:20},void 0),titleKey:"toolbar.theme",hasPopup:!0,popupKey:"theme"},"mermaid-to-drawnix":{icon:l.jsxDEV(jf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:97,columnNumber:33},void 0),titleKey:"extraTools.mermaidToDrawnix"},"markdown-to-drawnix":{icon:l.jsxDEV(_f,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:98,columnNumber:34},void 0),titleKey:"extraTools.markdownToDrawnix"},undo:{icon:l.jsxDEV(pf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:100,columnNumber:19},void 0),titleKey:"general.undo"},redo:{icon:l.jsxDEV(ff,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:101,columnNumber:19},void 0),titleKey:"general.redo"}},Dj=({embedded:e=!1})=>{const{t}=je(),n=bt(),i=q.getBoardContainer(n),{hiddenButtons:o,showButton:s}=Qr(),[r,a]=p.useState(!1),[c,u]=p.useState(!1),d=p.useRef(null),m=p.useRef(null),f=p.useCallback(()=>{d.current&&(clearTimeout(d.current),d.current=null),m.current&&(clearTimeout(m.current),m.current=null)},[]),h=p.useCallback(()=>"ontouchstart"in window||navigator.maxTouchPoints>0,[]),g=p.useCallback(()=>{h()||(f(),u(!0),d.current=setTimeout(()=>{a(!0)},200))},[f,h]),b=p.useCallback(()=>{h()||(d.current&&(clearTimeout(d.current),d.current=null),m.current=setTimeout(()=>{u(!1),a(!1)},150))},[h]),x=p.useCallback(()=>{h()&&(a(w=>!w),u(!1))},[h]),y=p.useCallback(()=>{f(),u(!0)},[f]),N=p.useCallback(()=>{m.current=setTimeout(()=>{u(!1),a(!1)},150)},[]);return l.jsxDEV(st,{open:r,onOpenChange:w=>{!w&&(h()||!c)&&a(!1)},placement:e?"right-start":"bottom",sideOffset:12,children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV("div",{onMouseEnter:g,onMouseLeave:b,onClick:x,children:l.jsxDEV(ie,{type:"icon",icon:l.jsxDEV(GN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:213,columnNumber:19},void 0),tooltip:r?void 0:t("toolbar.more"),tooltipPlacement:e?"right":"bottom","aria-label":t("toolbar.more"),selected:r,visible:!0,"data-testid":"toolbar-more","data-track":"toolbar_click_more"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:211,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:206,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:205,columnNumber:7},void 0),l.jsxDEV(at,{container:i,style:{zIndex:tn.POPOVER},onMouseEnter:y,onMouseLeave:N,children:l.jsxDEV(_j,{hiddenButtons:o,showButton:s},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:230,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:224,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:193,columnNumber:5},void 0)},_j=({hiddenButtons:e,showButton:t})=>{const{t:n}=je(),i=bt(),o=q.getBoardContainer(i),{openDialog:s}=Gt(),r=hc(),[a,c]=p.useState(null),[u,d]=p.useState(null),m=p.useRef({}),[f,h]=p.useState(null),g=p.useRef(null),[b,x]=p.useState(ot.feltTipPen),y=p.useCallback(()=>{c(null),d(null),Object.values(m.current).forEach(P=>{P&&clearTimeout(P)})},[]),N=p.useCallback(P=>{if(Object.values(m.current).forEach(G=>{G&&clearTimeout(G)}),u===P){d(null);return}a===P&&!u?c(null):(d(null),c(P))},[a,u]),w=p.useCallback(P=>{a&&!u||(m.current[P]&&clearTimeout(m.current[P]),Object.entries(m.current).forEach(([G,de])=>{G!==P&&de&&(clearTimeout(de),m.current[G]=null)}),u&&u!==P?(c(P),d(P)):a||(m.current[P]=setTimeout(()=>{c(P),d(P)},300)))},[u,a]),D=p.useCallback(P=>{m.current[P]&&(clearTimeout(m.current[P]),m.current[P]=null),u===P&&(m.current[P]=setTimeout(()=>{c(null),d(null)},400))},[u]),S=p.useCallback(P=>{m.current[P]&&(clearTimeout(m.current[P]),m.current[P]=null)},[]),E=p.useCallback(P=>{u===P&&(c(null),d(null))},[u]),k=p.useCallback(P=>{jn(i),P===Me.text?ct(i,null):ct(i,St.dnd),ge.updatePointerType(i,P),r(P)},[i,r]),V=p.useCallback(P=>{P!==Me.text&&ct(i,St.drawing)},[i]),R=p.useCallback(P=>{const G=Qm[P];if(G){if(G.hasPopup&&G.popupKey){N(G.popupKey);return}switch(y(),jn(i),G.pointer&&(mr(G.pointer)?(ge.updatePointerType(i,G.pointer),r(G.pointer)):(k(G.pointer),V(G.pointer))),P){case"image":Jr(i);break;case"ai-image":s(Qt.aiImageGeneration);break;case"ai-video":s(Qt.aiVideoGeneration);break;case"mermaid-to-drawnix":s(Qt.mermaidToDrawnix);break;case"markdown-to-drawnix":s(Qt.markdownToDrawnix);break;case"undo":i.undo();break;case"redo":i.redo();break}}},[i,s,k,V,y,r,N]),z=p.useCallback((P,G)=>{P.preventDefault(),P.stopPropagation(),h({buttonId:G,x:P.clientX,y:P.clientY})},[]),I=p.useCallback(()=>{h(null)},[]),U=p.useCallback(()=>{f&&(t(f.buttonId),I())},[f,t,I]);Pn.useEffect(()=>{if(!f)return;const P=de=>{g.current&&!g.current.contains(de.target)&&I()},G=de=>{de.key==="Escape"&&I()};return document.addEventListener("mousedown",P),document.addEventListener("keydown",G),()=>{document.removeEventListener("mousedown",P),document.removeEventListener("keydown",G)}},[f,I]);const A=p.useCallback(P=>{switch(P){case"freehand":return l.jsxDEV(Zc,{onPointerUp:G=>{y(),r(G),x(G)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:489,columnNumber:11},void 0);case"shape":return l.jsxDEV(Qc,{onPointerUp:G=>{y(),r(G)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:499,columnNumber:11},void 0);case"arrow":return l.jsxDEV(Jc,{onPointerUp:G=>{y(),r(G)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:508,columnNumber:11},void 0);case"theme":return l.jsxDEV(_n,{children:Wg.map(G=>{const de=i.theme.themeColorMode===G.value;return l.jsxDEV(Be,{icon:de?$g:Xg,"data-track":`toolbar_click_theme_${G.value}`,onSelect:()=>{ge.updateThemeColor(i,G.value),y()},"aria-label":n(G.labelKey),selected:de,children:n(G.labelKey)},G.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:521,columnNumber:17},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:517,columnNumber:11},void 0);default:return null}},[i,y,r,n]),j=p.useMemo(()=>{const P=Yc.find(G=>G.pointer===b);return(P==null?void 0:P.icon)||l.jsxDEV(vo,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:547,columnNumber:30},void 0)},[b]),[C,M]=p.useState(!1),J=p.useCallback(()=>{var P;return l.jsxDEV("div",{className:"more-tools-panel__zoom-row",onContextMenu:G=>z(G,"zoom"),children:l.jsxDEV(dt.Row,{gap:1,children:[l.jsxDEV(ie,{type:"button",icon:l.jsxDEV(Tf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:564,columnNumber:19},void 0),visible:!0,tooltip:n("zoom.out"),tooltipPlacement:"top","aria-label":n("zoom.out"),"data-track":"toolbar_click_zoom_out",onPointerUp:()=>{ge.updateZoom(i,i.viewport.zoom-.1)},className:"zoom-out-button"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:562,columnNumber:11},void 0),l.jsxDEV(st,{sideOffset:12,open:C,onOpenChange:G=>{M(G)},placement:"right-start",children:[l.jsxDEV(_t,{content:n("zoom.fit"),showArrow:!1,children:l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV("div",{"aria-label":n("zoom.fit"),"data-track":"toolbar_click_zoom_menu",className:`zoom-menu-trigger ${C?"active":""}`,onPointerUp:()=>{M(!C)},children:[Number(((((P=i==null?void 0:i.viewport)==null?void 0:P.zoom)||1)*100).toFixed(0)),"%"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:585,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:584,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:583,columnNumber:13},void 0),l.jsxDEV(at,{container:o,style:{zIndex:tn.POPOVER+1},children:l.jsxDEV(_n,{onSelect:()=>{M(!1)},children:[l.jsxDEV(Be,{"data-track":"toolbar_click_zoom_fit",onSelect:()=>{ge.fitViewport(i)},"aria-label":n("zoom.fit"),shortcut:"Cmd+Shift+=",children:n("zoom.fit")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:603,columnNumber:17},void 0),l.jsxDEV(Be,{"data-track":"toolbar_click_zoom_fit_frame",onSelect:()=>{gc(i)},"aria-label":n("zoom.fitFrame"),children:n("zoom.fitFrame")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:611,columnNumber:17},void 0),l.jsxDEV(Be,{"data-track":"toolbar_click_zoom_100",onSelect:()=>{ge.updateZoom(i,1)},"aria-label":n("zoom.100"),shortcut:"Cmd+0",children:n("zoom.100")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:618,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:598,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:597,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:575,columnNumber:11},void 0),l.jsxDEV(ie,{type:"button",icon:l.jsxDEV(Df,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:631,columnNumber:19},void 0),visible:!0,tooltip:n("zoom.in"),tooltipPlacement:"top","aria-label":n("zoom.in"),"data-track":"toolbar_click_zoom_in",onPointerUp:()=>{ge.updateZoom(i,i.viewport.zoom+.1)},className:"zoom-in-button"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:629,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:561,columnNumber:9},void 0)},"zoom",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:556,columnNumber:7},void 0)},[i,o,z,n,C]),ye=p.useCallback(P=>{var ke,Fe,X,Ce;if(P==="zoom")return J();const G=Qm[P];if(!G)return null;const de=n(G.titleKey),W=P==="freehand"?j:G.icon,ae=P==="undo"&&(((Fe=(ke=i.history)==null?void 0:ke.undos)==null?void 0:Fe.length)??0)<=0,oe=P==="redo"&&(((Ce=(X=i.history)==null?void 0:X.redos)==null?void 0:Ce.length)??0)<=0,ve=ae||oe;if(G.hasPopup&&G.popupKey){const We=G.popupKey;return l.jsxDEV("div",{className:"more-tools-panel__item",onContextMenu:mt=>z(mt,P),children:l.jsxDEV(st,{open:a===We,sideOffset:2,onOpenChange:mt=>{mt||y()},placement:"right-start",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV("div",{onMouseEnter:()=>w(We),onMouseLeave:()=>D(We),children:l.jsxDEV(ie,{type:"icon",icon:W,tooltip:de,tooltipPlacement:"left","aria-label":de,visible:!0,selected:a===We,"data-track":`toolbar_click_${P}`,onPointerUp:()=>R(P)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:687,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:683,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:682,columnNumber:13},void 0),l.jsxDEV(at,{container:o,style:{zIndex:tn.POPOVER+1},onMouseEnter:()=>S(We),onMouseLeave:()=>E(We),children:A(We)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:700,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:672,columnNumber:11},void 0)},P,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:667,columnNumber:9},void 0)}return l.jsxDEV("div",{className:"more-tools-panel__item",onContextMenu:We=>z(We,P),children:l.jsxDEV(ie,{type:"icon",icon:W,tooltip:de,tooltipPlacement:"right","aria-label":de,visible:!0,selected:!1,disabled:ve,"data-track":`toolbar_click_${P}`,onPointerUp:()=>R(P)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:720,columnNumber:9},void 0)},P,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:715,columnNumber:7},void 0)},[n,i,o,a,j,R,z,w,D,S,E,A,y,J]);return e.length===0?l.jsxDEV("div",{className:"more-tools-panel",children:[l.jsxDEV("div",{className:"more-tools-panel__header",children:l.jsxDEV("span",{className:"more-tools-panel__title",children:n("toolbar.moreTools")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:755,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:754,columnNumber:9},void 0),l.jsxDEV("div",{className:"more-tools-panel__empty",children:l.jsxDEV("span",{className:"more-tools-panel__empty-text",children:n("toolbar.allToolsVisible")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:758,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:757,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:753,columnNumber:7},void 0):l.jsxDEV(l.Fragment,{children:[l.jsxDEV("div",{className:"more-tools-panel",children:[l.jsxDEV("div",{className:"more-tools-panel__header",children:l.jsxDEV("span",{className:"more-tools-panel__title",children:n("toolbar.moreTools")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:768,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:767,columnNumber:9},void 0),l.jsxDEV("div",{className:"more-tools-panel__content",children:e.map(P=>ye(P.id))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:770,columnNumber:9},void 0),l.jsxDEV("div",{className:"more-tools-panel__footer",children:l.jsxDEV("span",{className:"more-tools-panel__hint",children:n("toolbar.rightClickToAdd")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:774,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:773,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:766,columnNumber:7},void 0),f&&Xr.createPortal(l.jsxDEV("div",{ref:g,className:"toolbar-context-menu",style:{position:"fixed",left:f.x,top:f.y,zIndex:tn.DROPDOWN_PORTAL},children:l.jsxDEV(_n,{children:l.jsxDEV(Be,{onSelect:U,children:n("toolbar.addToToolbar")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:790,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:789,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:779,columnNumber:9},void 0),document.body)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/more-tools-button.tsx",lineNumber:765,columnNumber:5},void 0)},jj=p.lazy(()=>Re(()=>import("./tool-windows-DOIu9TAD.js").then(e=>e.pF),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.MediaLibraryModal}))),Pj=p.lazy(()=>Re(()=>import("./tool-windows-DOIu9TAD.js").then(e=>e.pH),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.MinimizedToolsBar})));var Kg=(e=>(e.shape="shape",e.arrow="arrow",e.freehand="freehand",e.theme="theme",e))(Kg||{});const Jm=[{icon:l.jsxDEV(Mf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:123,columnNumber:11},void 0),pointer:Et.hand,titleKey:"toolbar.hand",visibilityKey:"hand"},{icon:l.jsxDEV(Af,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:129,columnNumber:11},void 0),pointer:Et.selection,titleKey:"toolbar.selection",visibilityKey:"selection"},{icon:l.jsxDEV(Cf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:135,columnNumber:11},void 0),pointer:ls,titleKey:"toolbar.lasso",visibilityKey:"lasso"},{icon:l.jsxDEV(xr,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:141,columnNumber:11},void 0),pointer:Pi.mind,titleKey:"toolbar.mind",visibilityKey:"mind"},{icon:l.jsxDEV(Nc,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:147,columnNumber:11},void 0),pointer:Me.text,titleKey:"toolbar.text",visibilityKey:"text"},{icon:l.jsxDEV($r,{size:24},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:153,columnNumber:11},void 0),titleKey:"toolbar.image",key:"image",visibilityKey:"image"},{icon:l.jsxDEV(Wr,{size:24},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:159,columnNumber:11},void 0),titleKey:"toolbar.mediaLibrary",key:"media-library",visibilityKey:"media-library"},{icon:l.jsxDEV(Kr,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:165,columnNumber:11},void 0),titleKey:"toolbar.aiImage",key:"ai-image",visibilityKey:"ai-image"},{icon:l.jsxDEV(Yr,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:171,columnNumber:11},void 0),titleKey:"toolbar.aiVideo",key:"ai-video",visibilityKey:"ai-video"},{icon:l.jsxDEV(xr,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:177,columnNumber:11},void 0),pointer:Pi.mind,titleKey:"toolbar.mind",visibilityKey:"mind"},{icon:l.jsxDEV(vo,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:183,columnNumber:11},void 0),pointer:ot.feltTipPen,titleKey:"toolbar.pen",key:"freehand",visibilityKey:"freehand"},{icon:l.jsxDEV(xc,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:190,columnNumber:11},void 0),titleKey:"toolbar.arrow",key:"arrow",pointer:Dn.straight,visibilityKey:"arrow"},{icon:l.jsxDEV(bc,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:197,columnNumber:11},void 0),titleKey:"toolbar.shape",key:"shape",pointer:Me.rectangle,visibilityKey:"shape"},{icon:l.jsxDEV(Pf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:204,columnNumber:11},void 0),titleKey:"toolbar.theme",key:"theme",visibilityKey:"theme"},{icon:l.jsxDEV(jf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:210,columnNumber:11},void 0),titleKey:"extraTools.mermaidToDrawnix",key:"mermaid-to-drawnix",visibilityKey:"mermaid-to-drawnix"},{icon:l.jsxDEV(_f,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:216,columnNumber:11},void 0),titleKey:"extraTools.markdownToDrawnix",key:"markdown-to-drawnix",visibilityKey:"markdown-to-drawnix"}],Cj=e=>Object.keys(Dn).includes(e.pointer),Aj=e=>Object.keys(Me).includes(e.pointer)||Object.keys(fc).includes(e.pointer),Mj=({embedded:e=!1,iconMode:t=!1,onOpenMediaLibrary:n,minimizedToolsBarEnabled:i=!1,onEnableToolWindows:o})=>{const s=bt(),{appState:r,openDialog:a}=Gt(),{t:c}=je(),u=hc(),d=q.getBoardContainer(s),{visibleButtons:m,loading:f,reorderButton:h}=Qr(),{getDragProps:g}=WN({items:m,getId:v=>v.id,onReorder:(v,H)=>{h(v,H,!0)},enabled:e}),[b,x]=p.useState({freehand:!1,arrow:!1,shape:!1,theme:!1}),[y,N]=p.useState(null),w=p.useRef({freehand:null,arrow:null,shape:null,theme:null}),[D,S]=p.useState(Jm.find(v=>v.key==="freehand")),[E,k]=p.useState(!1),V=p.useCallback(async v=>{try{v.type===qn.IMAGE?await uc(s,v.url):v.type===qn.VIDEO?await If(s,v.url):v.type===qn.AUDIO&&await tc(s,v.url,{title:v.name,duration:v.duration,previewImageUrl:v.thumbnail,prompt:v.prompt,mv:v.modelName,clipId:v.clipId,providerTaskId:v.providerTaskId}),se.success("素材已插入到画板")}catch(H){console.error("Failed to insert asset:",H),se.error("插入素材失败")}},[s]),R=p.useCallback(()=>{if(n){n({mode:ri.SELECT,onSelect:V,selectButtonText:"插入"});return}k(!0)},[V,n]),z=p.useCallback(()=>{k(!1)},[]),I=()=>{x({freehand:!1,arrow:!1,shape:!1,theme:!1}),N(null),Object.values(w.current).forEach(v=>{v&&clearTimeout(v)})},U=v=>{N(null),Object.values(w.current).forEach(H=>{H&&clearTimeout(H)}),x({freehand:!1,arrow:!1,shape:!1,theme:!1,[v]:!0})},A=v=>{w.current[v]&&clearTimeout(w.current[v]),Object.entries(w.current).forEach(([H,O])=>{H!==v&&O&&(clearTimeout(O),w.current[H]=null)}),y&&y!==v?(x(H=>({...H,[y]:!1,[v]:!0})),N(v)):b[v]||(w.current[v]=setTimeout(()=>{x(H=>({...H,[v]:!0})),N(v)},300))},j=v=>{w.current[v]&&(clearTimeout(w.current[v]),w.current[v]=null),y===v&&(w.current[v]=setTimeout(()=>{x(H=>({...H,[v]:!1})),N(null)},200))},C=v=>{w.current[v]&&(clearTimeout(w.current[v]),w.current[v]=null)},M=v=>{y===v&&(x(H=>({...H,[v]:!1})),N(null))},J=v=>{jn(s),v===Me.text?(ct(s,null),ge.updatePointerType(s,v),u(v)):(ct(s,St.dnd),ge.updatePointerType(s,v),u(v))},ye=v=>{v!==Me.text&&ct(s,St.drawing)},P=()=>Object.values(b).some(v=>v),G=v=>q.isPointer(s,v.pointer)&&!P(),de=v=>q.isInPointer(v,[ot.feltTipPen,ot.eraser,ot.laserPointer,Hn.pen]),W=v=>{I(),jn(s),v.pointer&&!mr(v.pointer)?ye(v.pointer):v.pointer&&mr(v.pointer)&&(ge.updatePointerType(s,v.pointer),u(v.pointer)),v.key==="image"?Jr(s):v.key==="media-library"?R():v.key==="ai-image"?a(Qt.aiImageGeneration):v.key==="ai-video"?a(Qt.aiVideoGeneration):v.key==="mermaid-to-drawnix"?a(Qt.mermaidToDrawnix):v.key==="markdown-to-drawnix"&&a(Qt.markdownToDrawnix)},ae=(v,H,O)=>{const pe=()=>{switch(O){case"freehand":return l.jsxDEV(Zc,{onPointerUp:B=>{I(),u(B),S(Yc.find($=>$.pointer===B))}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:520,columnNumber:13},void 0);case"shape":return l.jsxDEV(Qc,{onPointerUp:B=>{I(),u(B)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:532,columnNumber:13},void 0);case"arrow":return l.jsxDEV(Jc,{onPointerUp:B=>{I(),u(B)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:541,columnNumber:13},void 0);case"theme":return l.jsxDEV(_n,{children:Wg.map(B=>{const $=s.theme.themeColorMode===B.value;return l.jsxDEV(Be,{icon:$?$g:Xg,"data-track":`toolbar_click_theme_${B.value}`,onSelect:()=>{ge.updateThemeColor(s,B.value),I()},"aria-label":c(B.labelKey),selected:$,children:c(B.labelKey)},B.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:554,columnNumber:19},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:550,columnNumber:13},void 0)}},me=()=>{const B=b[O],$=Object.entries(b).some(([Q,ee])=>Q!==O&&ee);switch(O){case"freehand":return B||de(s)&&!$;case"shape":return B||Aj(s)&&!q.isPointer(s,Me.text);case"arrow":return B||Cj(s);default:return B}},_=O==="freehand"?D.icon:v.icon,L=O==="freehand"?D.titleKey?c(D.titleKey):"Freehand":v.titleKey?c(v.titleKey):"";return l.jsxDEV(st,{open:b[O],sideOffset:12,onOpenChange:B=>{B||I()},placement:e?"right-start":"bottom",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV("div",{onMouseEnter:()=>A(O),onMouseLeave:()=>j(O),children:l.jsxDEV(ie,{type:"icon",visible:!0,selected:me(),icon:_,tooltip:L,"aria-label":L,"data-track":`toolbar_click_${O}`,onPointerDown:()=>{U(O),O==="freehand"&&D.pointer&&J(D.pointer)},onPointerUp:()=>{O==="freehand"&&ye()}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:627,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:623,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:622,columnNumber:9},void 0),l.jsxDEV(at,{container:d,style:{zIndex:tn.POPOVER},onMouseEnter:()=>C(O),onMouseLeave:()=>M(O),children:pe()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:652,columnNumber:9},void 0)]},H,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:611,columnNumber:7},void 0)},oe=(v,H)=>l.jsxDEV(ie,{type:"radio",icon:v.icon,checked:G(v),tooltip:v.titleKey?c(v.titleKey):"",tooltipPlacement:e?"right":"bottom","aria-label":v.titleKey?c(v.titleKey):"","data-track":`toolbar_click_${v.pointer||v.key}`,onPointerDown:()=>{v.pointer&&!mr(v.pointer)&&J(v.pointer)},onPointerUp:()=>{W(v)}},H,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:667,columnNumber:7},void 0),ve=p.useMemo(()=>{const v=new Map;return Jm.forEach(H=>{H.visibilityKey&&v.set(H.visibilityKey,H)}),v},[]),[ke,Fe]=p.useState(!1),X=p.useCallback(v=>{var O;const H=e?dt.Col:dt.Row;return l.jsxDEV("div",{className:K("creation-toolbar__zoom-inline",{"creation-toolbar__zoom-inline--vertical":e}),children:l.jsxDEV(H,{gap:0,children:[l.jsxDEV(ie,{type:"button",icon:l.jsxDEV(Tf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:721,columnNumber:21},void 0),visible:!0,tooltip:c("zoom.out"),tooltipPlacement:e?"right":"bottom","aria-label":c("zoom.out"),"data-track":"toolbar_click_zoom_out",onPointerUp:()=>{ge.updateZoom(s,s.viewport.zoom-.1)},className:"zoom-out-button"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:719,columnNumber:13},void 0),l.jsxDEV(st,{sideOffset:12,open:ke,onOpenChange:pe=>{Fe(pe)},placement:e?"right-start":"bottom",children:[l.jsxDEV(_t,{content:c("zoom.fit"),showArrow:!1,children:l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV("div",{"aria-label":c("zoom.fit"),"data-track":"toolbar_click_zoom_menu",className:K("zoom-menu-trigger",{active:ke}),onPointerUp:()=>{Fe(!ke)},children:[Number(((((O=s==null?void 0:s.viewport)==null?void 0:O.zoom)||1)*100).toFixed(0)),"%"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:742,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:741,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:740,columnNumber:15},void 0),l.jsxDEV(at,{container:d,style:{zIndex:tn.POPOVER},children:l.jsxDEV(_n,{onSelect:()=>{Fe(!1)},children:[l.jsxDEV(Be,{"data-track":"toolbar_click_zoom_fit",onSelect:()=>{ge.fitViewport(s)},"aria-label":c("zoom.fit"),shortcut:"Cmd+Shift+=",children:c("zoom.fit")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:765,columnNumber:19},void 0),l.jsxDEV(Be,{"data-track":"toolbar_click_zoom_fit_frame",onSelect:()=>{gc(s)},"aria-label":c("zoom.fitFrame"),children:c("zoom.fitFrame")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:775,columnNumber:19},void 0),l.jsxDEV(Be,{"data-track":"toolbar_click_zoom_100",onSelect:()=>{ge.updateZoom(s,1)},"aria-label":c("zoom.100"),shortcut:"Cmd+0",children:c("zoom.100")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:784,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:760,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:756,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:732,columnNumber:13},void 0),l.jsxDEV(ie,{type:"button",icon:l.jsxDEV(Df,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:799,columnNumber:21},void 0),visible:!0,tooltip:c("zoom.in"),tooltipPlacement:e?"right":"bottom","aria-label":c("zoom.in"),"data-track":"toolbar_click_zoom_in",onPointerUp:()=>{ge.updateZoom(s,s.viewport.zoom+.1)},className:"zoom-in-button"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:797,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:718,columnNumber:11},void 0)},`zoom-${v}`,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:712,columnNumber:9},void 0)},[s,d,e,c,ke]),Ce=p.useCallback((v,H)=>{if(v==="zoom")return X(H);const O=ve.get(v);return!O||r.isMobile&&O.pointer===Et.hand?null:O.key&&Object.values(Kg).includes(O.key)?ae(O,H,O.key):oe(O,H)},[ve,r.isMobile,ae,oe,X]),We=p.useCallback((v,H,O=!0,pe=-1)=>{const me=Ce(v,H);if(!me)return null;const _=g(v,H);return l.jsxDEV(Ol,{buttonId:v,isVisible:O,visibleIndex:pe,children:l.jsxDEV("div",{className:K("toolbar-button-wrapper",{"toolbar-button-wrapper--dragging":_["data-dragging"],"toolbar-button-wrapper--drag-over":_["data-drag-over"],"toolbar-button-wrapper--drag-before":_["data-drag-position"]==="before","toolbar-button-wrapper--drag-after":_["data-drag-position"]==="after"}),"data-button-id":v,..._,children:me},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:873,columnNumber:11},void 0)},`ctx-${v}-${H}`,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:867,columnNumber:9},void 0)},[Ce,g]),mt=l.jsxDEV(dt.Row,{gap:1,children:[!f&&m.map((v,H)=>e?We(v.id,H,!0,H):Ce(v.id,H)),l.jsxDEV(Dj,{embedded:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:902,columnNumber:7},void 0),e&&i&&l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(Pj,{ensureToolWindowsEnabled:o},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:906,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:905,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:894,columnNumber:5},void 0),Y=E?l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(jj,{isOpen:E,onClose:z,mode:ri.SELECT,onSelect:V,selectButtonText:"插入"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:915,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:914,columnNumber:5},void 0):null;return e?l.jsxDEV(l.Fragment,{children:[l.jsxDEV("div",{className:K("draw-toolbar",{"draw-toolbar--embedded":e,"draw-toolbar--icon-only":t}),children:mt},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:928,columnNumber:9},void 0),Y]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:927,columnNumber:7},void 0):l.jsxDEV(l.Fragment,{children:[l.jsxDEV(Ye,{padding:1,className:K("draw-toolbar",It,{"draw-toolbar--embedded":e,"draw-toolbar--icon-only":t}),children:mt},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:943,columnNumber:7},void 0),Y]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/creation-toolbar.tsx",lineNumber:942,columnNumber:5},void 0)},ep="https://tuziai.oss-cn-shenzhen.aliyuncs.com/aitu/AiTu.png",Ij="https://tuziai.oss-cn-shenzhen.aliyuncs.com/linkme.png",Vj=()=>{const e=bt(),t=q.getBoardContainer(e),[n,i]=p.useState(!1);return p.useEffect(()=>{const o=new Image;o.src=ep;const s=new Image;s.src=Ij},[]),l.jsxDEV(st,{placement:"right-end",sideOffset:12,open:n,onOpenChange:i,children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{type:"icon",icon:l.jsxDEV($N,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/feedback-button/feedback-button.tsx",lineNumber:38,columnNumber:17},void 0),"aria-label":"用户反馈群",title:"用户反馈群",tooltipPlacement:"right",selected:n,visible:!0,"data-track":"toolbar_click_feedback",onPointerDown:o=>{o.event.stopPropagation()},onClick:()=>i(!n)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/feedback-button/feedback-button.tsx",lineNumber:36,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/feedback-button/feedback-button.tsx",lineNumber:35,columnNumber:7},void 0),l.jsxDEV(at,{container:t,style:{zIndex:tn.POPOVER_FEEDBACK},children:l.jsxDEV("div",{className:"feedback-qrcode-content",children:l.jsxDEV("div",{className:"feedback-qrcode-grid",children:l.jsxDEV("div",{className:"feedback-qrcode-item",children:[l.jsxDEV("img",{src:ep,alt:"用户反馈群二维码",className:"feedback-qrcode-image"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/feedback-button/feedback-button.tsx",lineNumber:55,columnNumber:15},void 0),l.jsxDEV("div",{className:"feedback-qrcode-text",children:"用户反馈群"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/feedback-button/feedback-button.tsx",lineNumber:60,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/feedback-button/feedback-button.tsx",lineNumber:54,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/feedback-button/feedback-button.tsx",lineNumber:53,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/feedback-button/feedback-button.tsx",lineNumber:52,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/feedback-button/feedback-button.tsx",lineNumber:51,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/feedback-button/feedback-button.tsx",lineNumber:34,columnNumber:5},void 0)},Uj=({projectDrawerOpen:e,onProjectDrawerToggle:t,toolboxDrawerOpen:n=!1,onToolboxDrawerToggle:i,taskPanelExpanded:o,onTaskPanelToggle:s})=>{const{activeTasks:r,completedTasks:a,failedTasks:c}=XN(),d=r.length+a.length+c.length>0?`任务队列 (生成中: ${r.length}, 已完成: ${a.length}, 失败: ${c.length})`:"任务队列 (暂无任务)";return l.jsxDEV("div",{className:"bottom-actions-section",children:[l.jsxDEV(Vj,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/bottom-actions-section.tsx",lineNumber:50,columnNumber:7},void 0),l.jsxDEV(ie,{type:"icon",icon:l.jsxDEV(KN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/bottom-actions-section.tsx",lineNumber:55,columnNumber:15},void 0),"aria-label":e?"关闭项目":"打开项目",tooltip:e?"关闭项目":"打开项目",tooltipPlacement:"right",selected:e,visible:!0,"data-track":"toolbar_click_project_drawer","data-testid":"toolbar-project",onPointerDown:m=>{m.event.stopPropagation()},onClick:t},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/bottom-actions-section.tsx",lineNumber:53,columnNumber:7},void 0),i&&l.jsxDEV(ie,{type:"icon",icon:l.jsxDEV(YN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/bottom-actions-section.tsx",lineNumber:73,columnNumber:17},void 0),"aria-label":n?"关闭工具箱":"打开工具箱",tooltip:n?"关闭工具箱":"打开工具箱",tooltipPlacement:"right",selected:n,visible:!0,"data-track":"toolbar_click_toolbox","data-testid":"toolbar-toolbox",onPointerDown:m=>{m.event.stopPropagation()},onClick:i},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/bottom-actions-section.tsx",lineNumber:71,columnNumber:9},void 0),l.jsxDEV("div",{className:"bottom-actions-section__task-wrapper",children:[l.jsxDEV(ZN,{count:r.length>0?r.length:0,showZero:!1,offset:[6,-6],children:l.jsxDEV(ie,{type:"icon",icon:l.jsxDEV(QN,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/bottom-actions-section.tsx",lineNumber:98,columnNumber:19},void 0),"aria-label":"任务队列",tooltip:d,tooltipPlacement:"right",selected:o,visible:!0,"data-track":"toolbar_click_tasks","data-testid":"toolbar-tasks",onPointerDown:m=>{m.event.stopPropagation()},onClick:s},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/bottom-actions-section.tsx",lineNumber:96,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/bottom-actions-section.tsx",lineNumber:91,columnNumber:9},void 0),r.length>0&&l.jsxDEV("div",{className:"bottom-actions-section__status bottom-actions-section__status--active"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/bottom-actions-section.tsx",lineNumber:115,columnNumber:11},void 0),c.length>0&&r.length===0&&l.jsxDEV("div",{className:"bottom-actions-section__status bottom-actions-section__status--failed"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/bottom-actions-section.tsx",lineNumber:118,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/bottom-actions-section.tsx",lineNumber:90,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/bottom-actions-section.tsx",lineNumber:48,columnNumber:5},void 0)},Rj=p.lazy(()=>Re(()=>import("./TaskQueuePanel-BNhNzGp5.js"),__vite__mapDeps([0,2,3]),import.meta.url).then(e=>({default:e.TaskQueuePanel}))),qj=460,Lj=["ai-image","ai-video"],Bj=Pn.memo(({className:e,projectDrawerOpen:t=!1,onProjectDrawerToggle:n,toolboxDrawerOpen:i=!1,onToolboxDrawerToggle:o,taskPanelExpanded:s=!1,onTaskPanelToggle:r,onOpenBackupRestore:a,onOpenCloudSync:c,onOpenMediaLibrary:u,deferredFeaturesEnabled:d=!1,minimizedToolsBarEnabled:m=!1,onEnableToolWindows:f})=>{const[h,g]=p.useState(!1),[b,x]=p.useState(!0),y=p.useRef(!1),N=p.useRef(null),w=p.useRef(null),D=p.useRef(!1),{isMobile:S,isTablet:E}=JN(),k=S||E;ea(N,{enablePositionTracking:!0,enableScaleCompensation:!0});const V=p.useCallback(C=>{if(C[0]){const M=C[0].contentRect.height;g(M<qj)}},[]);p.useEffect(()=>{const C=N.current;if(!C)return;const M=new ResizeObserver(V);return M.observe(C),()=>{M.disconnect()}},[V]),p.useEffect(()=>{if(D.current)return;const C=w.current;if(!C)return;const M=()=>{D.current=!0;let ye=null;for(const W of Lj){const ae=C.querySelector(`[data-button-id="${W}"]`);if(ae){ye=ae;break}}if(!ye)return;const P=C.getBoundingClientRect(),G=ye.getBoundingClientRect();if(!(G.bottom<=P.bottom&&G.top>=P.top)&&P.height>0){const W=G.top-P.top;C.scrollTop+=W}},J=setTimeout(()=>{requestAnimationFrame(M)},100);return()=>{clearTimeout(J)}},[]);const R=p.useCallback(()=>{!s&&!y.current&&(y.current=!0),r==null||r()},[s,r]),z=p.useCallback(()=>{s&&(r==null||r())},[s,r]),I=p.useCallback(()=>{x(C=>!C)},[]),{openDialog:U}=Gt(),A=p.useCallback(()=>{U(Qt.aiImageGeneration)},[U]),j=p.useCallback(()=>{U(Qt.aiVideoGeneration)},[U]);return l.jsxDEV(l.Fragment,{children:[y.current&&l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(Rj,{expanded:s,onClose:z},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:191,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:190,columnNumber:11},void 0),l.jsxDEV(Ye,{ref:N,className:K("unified-toolbar",It,{"unified-toolbar--icon-only":h||k,"unified-toolbar--mobile-collapsed":k&&b},e),padding:0,"data-testid":"unified-toolbar",children:[k&&b&&l.jsxDEV("div",{className:"unified-toolbar__collapsed-shortcuts",children:[l.jsxDEV("button",{className:"unified-toolbar__collapsed-btn unified-toolbar__collapsed-btn--toggle",onClick:I,"aria-label":"展开工具栏",children:l.jsxDEV(Jp,{size:18},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:222,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:217,columnNumber:15},void 0),l.jsxDEV("button",{className:"unified-toolbar__collapsed-btn",onClick:A,"aria-label":"AI 图片生成",children:l.jsxDEV(Kr,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:230,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:225,columnNumber:15},void 0),l.jsxDEV("button",{className:"unified-toolbar__collapsed-btn",onClick:j,"aria-label":"AI 视频生成",children:l.jsxDEV(Yr,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:238,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:233,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:215,columnNumber:13},void 0),k&&!b&&l.jsxDEV("button",{className:"unified-toolbar__mobile-toggle unified-toolbar__mobile-toggle--expanded",onClick:I,"aria-label":"收起工具栏",children:l.jsxDEV(oc,{size:18},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:250,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:245,columnNumber:13},void 0),l.jsxDEV("div",{className:"unified-toolbar__section unified-toolbar__section--fixed-top",children:l.jsxDEV(pj,{embedded:!0,iconMode:h||k,onOpenBackupRestore:a,onOpenCloudSync:c},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:256,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:255,columnNumber:11},void 0),l.jsxDEV("div",{ref:w,className:"unified-toolbar__scrollable",children:l.jsxDEV("div",{className:"unified-toolbar__section",children:l.jsxDEV(Mj,{embedded:!0,iconMode:h||k,onOpenMediaLibrary:u,deferredFeaturesEnabled:d,minimizedToolsBarEnabled:m,onEnableToolWindows:f},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:268,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:267,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:265,columnNumber:11},void 0),l.jsxDEV("div",{className:"unified-toolbar__section unified-toolbar__section--fixed-bottom",children:l.jsxDEV(Uj,{projectDrawerOpen:t,onProjectDrawerToggle:n||(()=>{}),toolboxDrawerOpen:i,onToolboxDrawerToggle:o,taskPanelExpanded:s,onTaskPanelToggle:R},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:281,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:280,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:198,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/unified-toolbar.tsx",lineNumber:187,columnNumber:7},void 0)}),Oj=e=>n=>{const{globalKeyDown:i,keyDown:o}=n;return n.globalKeyDown=s=>{const r=s.target instanceof HTMLInputElement||s.target instanceof HTMLTextAreaElement||s.target instanceof HTMLElement&&s.target.isContentEditable;if(!r){if(tt.isHotkey(["mod+k"])(s)){e({openCommandPalette:!0}),s.preventDefault();return}if(tt.isHotkey(["mod+f"])(s)){e({openCanvasSearch:!0}),s.preventDefault();return}}if(!r&&(q.getMovingPointInBoard(n)||q.isMovingPointInBoard(n))&&!q.hasBeenTextEditing(n)){if(tt.isHotkey(["mod+shift+e"],{byKey:!0})(s)){tr(n,!0),s.preventDefault();return}if(tt.isHotkey(["mod+s"],{byKey:!0})(s)){df(n),s.preventDefault();return}if(tt.isHotkey(["mod+backspace"])(s)||tt.isHotkey(["mod+delete"])(s)){e({openCleanConfirm:!0}),s.preventDefault();return}if(tt.isHotkey(["mod+u"])(s)&&Jr(n),Oe(n).length>1){if(tt.isHotkey(["alt+a"])(s)){un.alignLeft(n),s.preventDefault();return}if(tt.isHotkey(["alt+h"])(s)){un.alignCenter(n),s.preventDefault();return}if(tt.isHotkey(["alt+d"])(s)){un.alignRight(n),s.preventDefault();return}if(tt.isHotkey(["alt+w"])(s)){un.alignTop(n),s.preventDefault();return}if(tt.isHotkey(["alt+v"])(s)){un.alignMiddle(n),s.preventDefault();return}if(tt.isHotkey(["alt+s"])(s)){un.alignBottom(n),s.preventDefault();return}if(tt.isHotkey(["shift+h"])(s)){so.distributeHorizontal(n),s.preventDefault();return}if(tt.isHotkey(["shift+v"])(s)){so.distributeVertical(n),s.preventDefault();return}if(tt.isHotkey(["shift+a"])(s)){so.autoArrange(n),s.preventDefault();return}if(tt.isHotkey(["alt+shift+u"])(s)){kn.union(n,"zh"),s.preventDefault();return}if(tt.isHotkey(["alt+shift+s"])(s)){kn.subtract(n,"zh"),s.preventDefault();return}if(tt.isHotkey(["alt+shift+i"])(s)){kn.intersect(n,"zh"),s.preventDefault();return}if(tt.isHotkey(["alt+shift+e"])(s)){kn.exclude(n,"zh"),s.preventDefault();return}if(tt.isHotkey(["alt+shift+f"])(s)){kn.flatten(n,"zh"),s.preventDefault();return}}if(!s.altKey&&!s.metaKey&&!s.ctrlKey&&tt.isHotkey(["shift+p"],{byKey:!0})(s)){ct(n,St.drawing),ge.updatePointerType(n,Hn.pen),e({pointer:Hn.pen}),s.preventDefault();return}if(!s.altKey&&!s.metaKey&&!s.ctrlKey&&!s.shiftKey){if(s.key==="l"){ct(n,St.drawing),ge.updatePointerType(n,ot.laserPointer),e({pointer:ot.laserPointer}),s.preventDefault();return}if(s.key==="Escape"&&q.isPointer(n,ot.laserPointer)){ge.updatePointerType(n,Et.selection),e({pointer:Et.selection}),s.preventDefault();return}if(s.key==="h"&&(ge.updatePointerType(n,Et.hand),e({pointer:Et.hand})),s.key==="v"&&(ge.updatePointerType(n,Et.selection),e({pointer:Et.selection})),s.key==="q"&&(ge.updatePointerType(n,ls),e({pointer:ls})),s.key==="m"&&(ct(n,St.dnd),ge.updatePointerType(n,Pi.mind),e({pointer:Pi.mind})),s.key==="e"&&(ct(n,St.drawing),ge.updatePointerType(n,ot.eraser),e({pointer:ot.eraser})),s.key==="p"&&(ct(n,St.drawing),ge.updatePointerType(n,ot.feltTipPen),e({pointer:ot.feltTipPen})),s.key==="a"&&!tt.isHotkey(["mod+a"])(s)&&Oe(n).length===0&&(ct(n,St.drawing),ge.updatePointerType(n,Dn.straight),e({pointer:Dn.straight})),s.key==="f"&&(ct(n,St.drawing),ge.updatePointerType(n,Lu),e({pointer:Lu})),s.key==="r"||s.key==="o"||s.key==="t"){const c={r:Me.rectangle,o:Me.ellipse,t:Me.text};c[s.key]===Me.text?ct(n,null):ct(n,St.drawing),ge.updatePointerType(n,c[s.key]),e({pointer:c[s.key]})}s.preventDefault();return}}i(s)},n.keyDown=s=>{if(tt.isHotkey(["mod+z"],{byKey:!0})(s)){n.undo(),s.preventDefault();return}if(tt.isHotkey(["mod+shift+z"],{byKey:!0})(s)){n.redo(),s.preventDefault();return}o(s)},n};function eu(e){return e===Lt.square?"square":"round"}function tu(e,t){const n=Math.min(t/50,1),i=.2+n*.1,o=6-n*4,s=i+e*(o-i);return Math.max(.5,t*s)}function Fj(e,t,n,i,o,s){const r=document.createElementNS("http://www.w3.org/2000/svg","g"),a=eu(s);if(e.length<2){if(e.length===1){const f=tu(t[0]??.5,n);if(s===Lt.square){const h=document.createElementNS("http://www.w3.org/2000/svg","rect");h.setAttribute("x",String(e[0][0]-f/2)),h.setAttribute("y",String(e[0][1]-f/2)),h.setAttribute("width",String(f)),h.setAttribute("height",String(f)),h.setAttribute("fill",i),r.appendChild(h)}else{const h=document.createElementNS("http://www.w3.org/2000/svg","circle");h.setAttribute("cx",String(e[0][0])),h.setAttribute("cy",String(e[0][1])),h.setAttribute("r",String(f/2)),h.setAttribute("fill",i),r.appendChild(h)}}return r}const c=yc(e,1,3);if(o===vn.double){const f=n*.8,h=n*.4,[g,b]=zj(c,t,h,f);if(g){const x=document.createElementNS("http://www.w3.org/2000/svg","path");x.setAttribute("d",g),x.setAttribute("fill",i),x.setAttribute("stroke","none"),r.appendChild(x)}if(b){const x=document.createElementNS("http://www.w3.org/2000/svg","path");x.setAttribute("d",b),x.setAttribute("fill",i),x.setAttribute("stroke","none"),r.appendChild(x)}return r}const u=Vf(o,n),d=o!==ii.solid&&u?u.join(" "):"",m=Gj(c,t,n);if(m.length>0){const f=document.createElementNS("http://www.w3.org/2000/svg","path");f.setAttribute("d",m),f.setAttribute("fill",i),f.setAttribute("stroke","none"),d&&(f.setAttribute("fill","none"),f.setAttribute("stroke",i),f.setAttribute("stroke-width",String(n)),f.setAttribute("stroke-dasharray",d),f.setAttribute("stroke-linecap",a),f.setAttribute("stroke-linejoin",a==="square"?"miter":"round")),r.appendChild(f)}return r}function Hj(e,t,n,i){const o=document.createElementNS("http://www.w3.org/2000/svg","g"),s=eu(i);if(e.length<2){if(e.length===1){const b=t*.8,x=t*.4;if(i===Lt.square){const y=document.createElementNS("http://www.w3.org/2000/svg","rect");y.setAttribute("x",String(e[0][0]-x/2)),y.setAttribute("y",String(e[0][1]-b/2-x/2)),y.setAttribute("width",String(x)),y.setAttribute("height",String(x)),y.setAttribute("fill",n),o.appendChild(y);const N=document.createElementNS("http://www.w3.org/2000/svg","rect");N.setAttribute("x",String(e[0][0]-x/2)),N.setAttribute("y",String(e[0][1]+b/2-x/2)),N.setAttribute("width",String(x)),N.setAttribute("height",String(x)),N.setAttribute("fill",n),o.appendChild(N)}else{const y=document.createElementNS("http://www.w3.org/2000/svg","circle");y.setAttribute("cx",String(e[0][0])),y.setAttribute("cy",String(e[0][1]-b/2)),y.setAttribute("r",String(x/2)),y.setAttribute("fill",n),o.appendChild(y);const N=document.createElementNS("http://www.w3.org/2000/svg","circle");N.setAttribute("cx",String(e[0][0])),N.setAttribute("cy",String(e[0][1]+b/2)),N.setAttribute("r",String(x/2)),N.setAttribute("fill",n),o.appendChild(N)}}return o}const r=yc(e,1,3),a=t*.8,c=t*.4,u=[],d=[];for(let b=0;b<r.length;b++){let x,y;b===0?(x=r[1][0]-r[0][0],y=r[1][1]-r[0][1]):b===r.length-1?(x=r[b][0]-r[b-1][0],y=r[b][1]-r[b-1][1]):(x=r[b+1][0]-r[b-1][0],y=r[b+1][1]-r[b-1][1]);const N=Math.sqrt(x*x+y*y);if(N>0){const w=-y/N,D=x/N,S=a/2;u.push([r[b][0]+w*S,r[b][1]+D*S]),d.push([r[b][0]-w*S,r[b][1]-D*S])}else u.push(r[b]),d.push(r[b])}const m=document.createElementNS("http://www.w3.org/2000/svg","path");let f=`M ${u[0][0]} ${u[0][1]}`;for(let b=1;b<u.length;b++){const x=u[b-1],y=u[b],N=(x[0]+y[0])/2,w=(x[1]+y[1])/2;f+=` Q ${x[0]} ${x[1]} ${N} ${w}`}f+=` L ${u[u.length-1][0]} ${u[u.length-1][1]}`,m.setAttribute("d",f),m.setAttribute("fill","none"),m.setAttribute("stroke",n),m.setAttribute("stroke-width",String(c)),m.setAttribute("stroke-linecap",s),m.setAttribute("stroke-linejoin",s==="square"?"miter":"round"),o.appendChild(m);const h=document.createElementNS("http://www.w3.org/2000/svg","path");let g=`M ${d[0][0]} ${d[0][1]}`;for(let b=1;b<d.length;b++){const x=d[b-1],y=d[b],N=(x[0]+y[0])/2,w=(x[1]+y[1])/2;g+=` Q ${x[0]} ${x[1]} ${N} ${w}`}return g+=` L ${d[d.length-1][0]} ${d[d.length-1][1]}`,h.setAttribute("d",g),h.setAttribute("fill","none"),h.setAttribute("stroke",n),h.setAttribute("stroke-width",String(c)),h.setAttribute("stroke-linecap",s),h.setAttribute("stroke-linejoin",s==="square"?"miter":"round"),o.appendChild(h),o}function zj(e,t,n,i){if(e.length<2)return["",""];const o=[],s=[];for(let c=0;c<e.length;c++){let u,d;c===0?(u=e[1][0]-e[0][0],d=e[1][1]-e[0][1]):c===e.length-1?(u=e[c][0]-e[c-1][0],d=e[c][1]-e[c-1][1]):(u=e[c+1][0]-e[c-1][0],d=e[c+1][1]-e[c-1][1]);const m=Math.sqrt(u*u+d*d);if(m>0){const f=-d/m,h=u/m,g=i/2;o.push([e[c][0]+f*g,e[c][1]+h*g]),s.push([e[c][0]-f*g,e[c][1]-h*g])}else o.push(e[c]),s.push(e[c])}const r=tp(o,t,n),a=tp(s,t,n);return[r,a]}function tp(e,t,n){if(e.length<2)return"";const i=[],o=[];for(let r=0;r<e.length;r++){const a=t[r]??.5,u=tu(a,n)/2;let d,m;r===0?(d=e[1][0]-e[0][0],m=e[1][1]-e[0][1]):r===e.length-1?(d=e[r][0]-e[r-1][0],m=e[r][1]-e[r-1][1]):(d=e[r+1][0]-e[r-1][0],m=e[r+1][1]-e[r-1][1]);const f=Math.sqrt(d*d+m*m);if(f>0){const h=-m/f,g=d/f;i.push([e[r][0]+h*u,e[r][1]+g*u]),o.push([e[r][0]-h*u,e[r][1]-g*u])}else i.push(e[r]),o.push(e[r])}let s=`M ${i[0][0]} ${i[0][1]}`;for(let r=1;r<i.length;r++){const a=i[r-1],c=i[r],u=(a[0]+c[0])/2,d=(a[1]+c[1])/2;s+=` Q ${a[0]} ${a[1]} ${u} ${d}`}s+=` L ${i[i.length-1][0]} ${i[i.length-1][1]}`,s+=` L ${o[o.length-1][0]} ${o[o.length-1][1]}`;for(let r=o.length-2;r>=0;r--){const a=o[r+1],c=o[r],u=(a[0]+c[0])/2,d=(a[1]+c[1])/2;s+=` Q ${a[0]} ${a[1]} ${u} ${d}`}return s+=` L ${o[0][0]} ${o[0][1]}`,s+=" Z",s}function Gj(e,t,n){if(e.length<2)return"";const i=[],o=[];for(let r=0;r<e.length;r++){const a=t[r]??.5,u=tu(a,n)/2;let d,m;r===0?(d=e[1][0]-e[0][0],m=e[1][1]-e[0][1]):r===e.length-1?(d=e[r][0]-e[r-1][0],m=e[r][1]-e[r-1][1]):(d=e[r+1][0]-e[r-1][0],m=e[r+1][1]-e[r-1][1]);const f=Math.sqrt(d*d+m*m);if(f>0){const h=-m/f,g=d/f;i.push([e[r][0]+h*u,e[r][1]+g*u]),o.push([e[r][0]-h*u,e[r][1]-g*u])}else i.push(e[r]),o.push(e[r])}let s=`M ${i[0][0]} ${i[0][1]}`;for(let r=1;r<i.length;r++){const a=i[r-1],c=i[r],u=(a[0]+c[0])/2,d=(a[1]+c[1])/2;s+=` Q ${a[0]} ${a[1]} ${u} ${d}`}s+=` L ${i[i.length-1][0]} ${i[i.length-1][1]}`,s+=` L ${o[o.length-1][0]} ${o[o.length-1][1]}`;for(let r=o.length-2;r>=0;r--){const a=o[r+1],c=o[r],u=(a[0]+c[0])/2,d=(a[1]+c[1])/2;s+=` Q ${a[0]} ${a[1]} ${u} ${d}`}return s+=` L ${o[0][0]} ${o[0][1]}`,s+=" Z",s}class nu extends hf{draw(t){const n=ey(t),i=uf(this.board,t),o=ty(this.board,t),s=ny(this.board,t),r=Vf(s,n),a=t.brushShape,c=eu(a);if(t.pressures&&t.pressures.length>0)return Fj(t.points,t.pressures,n,i,s,a);if(s===vn.double)return Hj(t.points,n,i,a);const u={strokeWidth:n,stroke:i,fill:o,fillStyle:"solid",strokeLineDash:s!==ii.solid?r:void 0},d=q.getRoughSVG(this.board).curve(yc(t.points,1,3),u);return iy(d,c),d}canDraw(t){return!0}}class Wj extends wc{constructor(){super()}initializeGenerator(){this.activeGenerator=Uf(this.board,{getRectangle:t=>ta(t),getStrokeWidth:()=>Rf,getStrokeOpacity:()=>1,hasResizeHandle:()=>qf(this.board,this.element)}),this.generator=new nu(this.board)}initialize(){super.initialize(),this.initializeGenerator(),this.generator.processDrawing(this.element,this.getElementG())}onContextChanged(t,n){const i=t.board.viewport.zoom!==n.board.viewport.zoom||t.board.viewport.offsetX!==n.board.viewport.offsetX||t.board.viewport.offsetY!==n.board.viewport.offsetY;t.element!==n.element||t.hasThemeChanged?(this.generator.processDrawing(this.element,this.getElementG()),this.activeGenerator.processDrawing(this.element,q.getActiveHost(this.board),{selected:this.selected})):i&&t.selected?this.activeGenerator.processDrawing(this.element,q.getActiveHost(this.board),{selected:this.selected}):(t.selected!==n.selected||t.selected)&&this.activeGenerator.processDrawing(this.element,q.getActiveHost(this.board),{selected:this.selected})}destroy(){var t;super.destroy(),(t=this.activeGenerator)==null||t.destroy()}}class Yg{constructor(t={}){this.defaultOptions={smoothing:.65,velocityWeight:.2,curvatureWeight:.3,minDistance:.2,maxPoints:8,pressureSensitivity:.5,tiltSensitivity:.3,velocityThreshold:800,samplingRate:5},this.points=[],this.lastProcessedTime=0,this.movingAverageVelocity=[],this.velocityWindowSize=3,this.options={...this.defaultOptions,...t}}process(t,n={}){const i=n.timestamp??Date.now();if(this.points.length===0){const c={point:t,timestamp:i,...n};return this.points.push(c),this.lastProcessedTime=i,t}if(i-this.lastProcessedTime<this.options.samplingRate&&i-this.lastProcessedTime<2)return null;const o={point:t,timestamp:i,...n};if(!this.checkDistance(t)&&this.points.length>1&&i-this.lastProcessedTime<32)return null;this.updatePoints(o);const r=this.calculateDynamicParameters(o),a=this.smooth(t,r);return this.lastProcessedTime=i,a}reset(){this.points=[],this.lastProcessedTime=0,this.movingAverageVelocity=[]}updatePoints(t){this.points.push(t),this.points.length>this.options.maxPoints&&this.points.shift()}checkDistance(t){if(this.points.length===0)return!0;const n=this.points[this.points.length-1].point,i=this.getDistance(n,t);let o=this.options.minDistance;if(this.movingAverageVelocity.length>0){const s=this.getAverageVelocity();o*=Math.max(.5,Math.min(1.5,s/200))}return i>=o}calculateDynamicParameters(t){const n=this.calculateVelocity(t);this.updateMovingAverage(n);const i=this.getAverageVelocity(),o={...this.options};if(t.pressure!==void 0){const r=Math.pow(t.pressure,1.2);o.smoothing*=1-r*o.pressureSensitivity*.8}const s=Math.min(i/o.velocityThreshold,1);if(o.velocityWeight=.2+s*.3,o.smoothing*=1+s*.2,t.tiltX!==void 0&&t.tiltY!==void 0){const r=Math.sqrt(t.tiltX**2+t.tiltY**2)/90;o.smoothing*=1+r*o.tiltSensitivity*.7}return o}smooth(t,n){if(this.points.length<2)return t;const i=this.calculateWeights(n),o=i.reduce((r,a)=>r+a,0);if(o===0)return t;const s=[0,0];for(let r=0;r<this.points.length;r++){const a=i[r]/o;s[0]+=this.points[r].point[0]*a,s[1]+=this.points[r].point[1]*a}return s}calculateWeights(t){const n=[],i=this.points.length-1;for(let o=0;o<this.points.length;o++){let s=Math.pow(t.smoothing,(i-o)*.8);if(o<i){const r=this.getPointVelocity(o);s*=1+r*t.velocityWeight*.8}if(o>0&&o<i){const r=this.getPointCurvature(o);s*=1+r*t.curvatureWeight*.7}n.push(s)}return n}getDistance(t,n){return gr(t[0],t[1],n[0],n[1])}calculateVelocity(t){if(this.points.length<2)return 0;const n=this.points[this.points.length-1],i=this.getDistance(n.point,t.point),o=t.timestamp-n.timestamp;return o>0?i/o:0}updateMovingAverage(t){this.movingAverageVelocity.push(t),this.movingAverageVelocity.length>this.velocityWindowSize&&this.movingAverageVelocity.shift()}getAverageVelocity(){return this.movingAverageVelocity.length===0?0:this.movingAverageVelocity.reduce((t,n)=>t+n)/this.movingAverageVelocity.length}getPointVelocity(t){if(t>=this.points.length-1)return 0;const n=this.points[t],i=this.points[t+1],o=this.getDistance(n.point,i.point),s=i.timestamp-n.timestamp;return s>0?o/s:0}getPointCurvature(t){if(t<=0||t>=this.points.length-1)return 0;const n=this.points[t-1].point,i=this.points[t].point,o=this.points[t+1].point,s=this.getDistance(n,i),r=this.getDistance(i,o),a=this.getDistance(n,o),c=(s+r+a)/2;return 4*Math.sqrt(Math.max(0,c*(c-s)*(c-r)*(c-a)))/(s*r*a+1e-4)}}const $j=e=>{const{pointerDown:t,pointerMove:n,pointerUp:i,globalPointerUp:o}=e;let s=!1,r=!1,a=[],c=[],u=null;const d=new nu(e),m=new Yg({smoothing:.7,pressureSensitivity:.6});let f=null,h=null,g=null,b=0;const x=(w=!1)=>{if(!h||w){const D=li(e);h={strokeWidth:D.strokeWidth,strokeColor:D.strokeColor,strokeStyle:D.strokeStyle,pencilShape:D.pencilShape,pressureEnabled:D.pressureEnabled}}return h},y=(w,D)=>{if(!D)return 1;if(w.pointerType==="pen"&&w.pressure>0&&w.pressure!==.5)return w.pressure;const E=[w.x,w.y],k=performance.now();if(g&&b>0){const V=E[0]-g[0],R=E[1]-g[1],z=Math.sqrt(V*V+R*R),I=k-b;if(I>0){const U=z/I,A=.2,j=1,M=Math.min(U/1.5,1),J=j-M*(j-A);return g=E,b=k,J}}return g=E,b=k,.6},N=w=>{if(s){const D=q.getPointer(e);r&&(a.push(a[0]),c.length>0&&c.push(c[0]));const S=x();f=ul(D,a,{strokeWidth:S.strokeWidth,strokeColor:S.strokeColor,strokeStyle:S.strokeStyle,brushShape:S.pencilShape,pressures:S.pressureEnabled?c:void 0})}f&&!w&&ce.insertNode(e,f,[e.children.length]),d==null||d.destroy(),f=null,s=!1,a=[],c=[],g=null,b=0,h=null,m.reset()};return e.pointerDown=w=>{const D=vc();if(q.isInPointer(e,D)&&Ec(e)){s=!0;const E=x(!0);u=[w.x,w.y];const k=m.process(u);if(k){const V=Ot(e,Ft(e,k[0],k[1]));a.push(V),c.push(y(w,E.pressureEnabled))}}t(w)},e.pointerMove=w=>{if(s){const D=[w.x,w.y];u&&gr(u[0],u[1],D[0],D[1])<8?r=!0:r=!1;const S=m.process(D);if(S){d==null||d.destroy();const E=Ot(e,Ft(e,S[0],S[1]));a.push(E);const k=x();c.push(y(w,k.pressureEnabled));const V=q.getPointer(e);f=ul(V,a,{strokeWidth:k.strokeWidth,strokeColor:k.strokeColor,strokeStyle:k.strokeStyle,brushShape:k.pencilShape,pressures:k.pressureEnabled?c:void 0}),d.processDrawing(f,q.getElementTopHost(e))}return}n(w)},e.pointerUp=w=>{N(),i(w)},e.globalPointerUp=w=>{N(!0),o(w)},e},Xj=e=>{const t=e,{getDeletedFragment:n,buildFragment:i,insertFragment:o}=t;return t.getDeletedFragment=s=>{const r=Bu(t);return r.length&&s.push(...r),n(s)},t.buildFragment=(s,r,a,c)=>{const u=Bu(t);if(u.length){const d=Lf(t,u,r?[r.x,r.y]:[0,0]);s=Bf(s,{text:"",type:Of.elements,elements:d})}return i(s,r,a,c)},t.insertFragment=(s,r,a)=>{var u;const c=(u=s==null?void 0:s.elements)==null?void 0:u.filter(d=>Xe.isFreehand(d));c&&c.length>0&&Ff(t,c,r),o(s,r,a)},t};function Kj(e,t,n,i=0){const o=fe.getCenterPoint(t),s=Vi(t,pi);if(i){const r=Yj(n,o,-i);let a=s.find(c=>fe.isHit(fe.getRectangleByPoints([r,r]),c.rectangle));return a&&(a.cursorClass=na(a.cursorClass,i)),a}else return s.find(r=>fe.isHit(fe.getRectangleByPoints([n,n]),r.rectangle))}function Yj(e,t,n){const i=n*Math.PI/180,o=Math.cos(i),s=Math.sin(i),r=e[0]-t[0],a=e[1]-t[1];return[t[0]+r*o-a*s,t[1]+r*s+a*o]}function Zg(e){const t=Oe(e);return t.length===1&&Xe.isFreehand(t[0])?t[0]:null}function Zj(e){return Zg(e)!==null}function Qj(e,t){const n=Zg(e);if(!n)return null;const i=ta(n),o=n.angle||0,s=Kj(e,i,t,o);return s?{element:n,rectangle:i,handle:s.handle,cursorClass:s.cursorClass}:null}function Jj(e,t,n){const i=n.width/t.width,o=n.height/t.height;return e.map(s=>{const r=s[0]-t.x,a=s[1]-t.y;return[n.x+r*i,n.y+a*o]})}function eP(e,t,n){const{element:i,rectangle:o,handle:s}=t,{startPoint:r,endPoint:a}=n;if(!o)return;const c=a[0]-r[0],u=a[1]-r[1],d=Eo(o,s,c,u,Ss(),10),m=Jj(i.points,o,d),f=e.children.findIndex(h=>h.id===i.id);f>=0&&ce.setNode(e,{points:m},[f])}const tP=e=>Ii(e,{key:"freehand",canResize:()=>Zj(e),hitTest:(t=>Qj(e,t)),onResize:(t,n)=>eP(e,t,n)});function nP(e){return e.type==="video"}const Ns=1e3;async function iu(){const e=await Re(()=>import("./clipper-jvd5rF5a.js").then(t=>t.c),__vite__mapDeps([0]),import.meta.url);return e.default||e}function ys(e){return e.map(t=>({X:Math.round(t[0]*Ns),Y:Math.round(t[1]*Ns)}))}function Qg(e){return e.map(t=>[t.X/Ns,t.Y/Ns])}async function iP(e,t,n=Ou.circle){if(e.length<2)return[];const i=await iu(),o=ys(e),s=new i.ClipperOffset;n===Ou.square?s.AddPath(o,i.JoinType.jtMiter,i.EndType.etOpenSquare):s.AddPath(o,i.JoinType.jtRound,i.EndType.etOpenRound);const r=[];return s.Execute(r,t/2*Ns),r.length===0?[]:Qg(r[0])}function ou(e){const t=e.points;if(!t||t.length<3)return!1;const n=t[0],i=t[t.length-1];return Math.hypot(i[0]-n[0],i[1]-n[1])<=10}function oP(e,t=20){if(Je.isPenPath(e)){if(!e.closed)return null;const n=gf(e);return oy(n,!0,t)}if(Xe.isFreehand(e)){const n=e.points;return!n||n.length<3||!ou(e)?null:n}return F.isDrawElement(e)&&F.isShapeElement(e)?F.isImage(e)||F.isText(e)?null:sP(e,t):null}function sP(e,t=20){const n=e.points;if(!n||n.length<2)return[];const[i,o]=n,s=Math.min(i[0],o[0]),r=Math.min(i[1],o[1]),a=Math.abs(o[0]-i[0]),c=Math.abs(o[1]-i[1]),u=e.shape;if(u==="ellipse"||u==="circle"){const d=s+a/2,m=r+c/2,f=a/2,h=c/2,g=[],b=Math.PI*(3*(f+h)-Math.sqrt((3*f+h)*(f+3*h))),x=Math.max(180,Math.ceil(b/2));for(let y=0;y<x;y++){const N=2*Math.PI*y/x;g.push([d+f*Math.cos(N),m+h*Math.sin(N)])}return g}return[[s,r],[s+a,r],[s+a,r+c],[s,r+c]]}function rP(e,t,n,i){if(e.length<3)throw new Error("Polygon must have at least 3 points");let o=1/0,s=1/0,r=-1/0,a=-1/0;for(const m of e)o=Math.min(o,m[0]),s=Math.min(s,m[1]),r=Math.max(r,m[0]),a=Math.max(a,m[1]);const c=[o,s],u=e.map(m=>({point:[m[0]-c[0],m[1]-c[1]],type:"corner"}));return{id:sy(),type:Hf,shape:Hn.pen,points:[c,[r,a]],anchors:u,closed:!0,strokeColor:t,fill:n,strokeWidth:i}}function aP(e){let t="#333333",n="#FFFFFF",i=2;return Je.isPenPath(e)?(t=e.strokeColor||t,n=e.fill||n,i=e.strokeWidth||i):Xe.isFreehand(e)?(t=e.strokeColor||t,i=e.strokeWidth||i):F.isDrawElement(e)&&(t=e.strokeColor||t,n=e.fill||n,i=e.strokeWidth||i),{strokeColor:t,fill:n,strokeWidth:i}}async function lP(e,t){const n=await iu(),i=new n.Clipper,o=[];return i.AddPath(ys(e),n.PolyType.ptSubject,!0),i.AddPath(ys(t),n.PolyType.ptClip,!0),i.Execute(n.ClipType.ctIntersection,o,n.PolyFillType.pftNonZero,n.PolyFillType.pftNonZero),o.length>0}async function cP(e,t,n){const i=oP(t);if(!i||i.length<3||!await lP(i,n))return null;const s=await iu(),r=new s.Clipper,a=[];if(r.AddPath(ys(i),s.PolyType.ptSubject,!0),r.AddPath(ys(n),s.PolyType.ptClip,!0),!r.Execute(s.ClipType.ctDifference,a,s.PolyFillType.pftNonZero,s.PolyFillType.pftNonZero))return null;const{strokeColor:u,fill:d,strokeWidth:m}=aP(t),f=[];for(const N of a)if(N.length>=3){let w=0;for(let D=0;D<N.length;D++){const S=(D+1)%N.length;w+=N[D].X*N[S].Y,w-=N[S].X*N[D].Y}w=w/2,f.push({path:N,signedArea:w,absArea:Math.abs(w)})}if(f.length===0)return[];const h=[...f].sort((N,w)=>w.absArea-N.absArea),g=h[0],b=h.slice(1);let x;b.length>0?x=uP(g.path,b.map(N=>N.path)):x=g.path;const y=Qg(x);try{return[rP(y,u,d,m)]}catch{return[]}}function uP(e,t){let n=[...e];for(const i of t){let o=1/0,s=0,r=0;for(let c=0;c<n.length;c++)for(let u=0;u<i.length;u++){const d=n[c].X-i[u].X,m=n[c].Y-i[u].Y,f=d*d+m*m;f<o&&(o=f,s=c,r=u)}const a=[];for(let c=0;c<=s;c++)a.push(n[c]);for(let c=0;c<i.length;c++){const u=(r+c)%i.length;a.push(i[u])}a.push(i[r]);for(let c=s;c<n.length;c++)a.push(n[c]);n=a}return n}function Jg(e){if(Xe.isFreehand(e)){const o=e.points;if(!o||o.length<2)return null;const s=fe.getRectangleByPoints(o),r=e.strokeWidth??2,a=r/2;return{x:s.x-a,y:s.y-a,width:s.width+r,height:s.height+r}}if(Je.isPenPath(e)){const o=e.points;if(!o||o.length<2)return null;const[s,r]=o;return{x:Math.min(s[0],r[0]),y:Math.min(s[1],r[1]),width:Math.abs(r[0]-s[0]),height:Math.abs(r[1]-s[1])}}const t=e.points;if(!t||t.length<2)return null;const[n,i]=t;return{x:Math.min(n[0],i[0]),y:Math.min(n[1],i[1]),width:Math.abs(i[0]-n[0]),height:Math.abs(i[1]-n[1])}}function dP(e,t,n){if(t.length<2)return[];let i=1/0,o=1/0,s=-1/0,r=-1/0;for(const c of t)i=Math.min(i,c[0]-n),o=Math.min(o,c[1]-n),s=Math.max(s,c[0]+n),r=Math.max(r,c[1]+n);const a=[];for(const c of e.children){if(!mP(c))continue;const u=Jg(c);if(!u)continue;const{x:d,y:m,width:f,height:h}=u;d+f>=i&&d<=s&&m+h>=o&&m<=r&&a.push(c)}return a}function mP(e){return Je.isPenPath(e)?e.closed:Xe.isFreehand(e)?ou(e):F.isDrawElement(e)?F.isImage(e)||F.isText(e)||F.isArrowLine(e)||F.isVectorLine(e)?!1:F.isShapeElement(e):!1}function pP(e){if(Je.isPenPath(e))return e.closed?null:"openPath";if(Xe.isFreehand(e))return ou(e)?null:"openPath";if(F.isDrawElement(e)){if(F.isImage(e))return"image";if(F.isText(e))return"text";if(F.isArrowLine(e))return"arrowLine";if(F.isVectorLine(e))return"vectorLine";if(F.isShapeElement(e))return null}return"unsupported"}function fP(e,t,n){if(t.length<2)return[];let i=1/0,o=1/0,s=-1/0,r=-1/0;for(const c of t)i=Math.min(i,c[0]-n),o=Math.min(o,c[1]-n),s=Math.max(s,c[0]+n),r=Math.max(r,c[1]+n);const a=[];for(const c of e.children){const u=Jg(c);if(!u)continue;const{x:d,y:m,width:f,height:h}=u;d+f>=i&&d<=s&&m+h>=o&&m<=r&&pP(c)&&a.push(c)}return a}async function hP(e,t,n,i,o){if(o.length===0)return;const s=await iP(t,n,i);if(s.length<3)return;const r=[],a=[];for(const c of o){const u=await cP(e,c,s);u!==null&&(r.push(c),a.push(...u))}r.length>0&&dl.removeElements(e,r);for(const c of a)ce.insertNode(e,c,[e.children.length])}const gP=e=>{const{pointerDown:t,pointerMove:n,pointerUp:i,globalPointerUp:o}=e;let s=!1;const r=new Set;let a=[];const c=m=>{const f=Ot(e,Ft(e,m[0],m[1])),g=li(e).eraserWidth/2;e.children.filter(x=>Xe.isFreehand(x)).forEach(x=>{!r.has(x.id)&&ry(e,x,f,g)&&(no.getElementG(x).style.opacity="0.2",r.add(x.id))})},u=()=>{if(r.size>0){const m=e.children.filter(f=>r.has(f.id));m.length>0&&dl.removeElements(e,m)}},d=async()=>{if(s){if(u(),a.length>=2){const m=li(e),f=dP(e,a,m.eraserWidth).filter(g=>!Xe.isFreehand(g));if(f.length>0)try{await hP(e,a,m.eraserWidth,m.eraserShape,f)}catch(g){console.error("Precise erase error:",g)}const h=fP(e,a,m.eraserWidth).filter(g=>!Xe.isFreehand(g)&&!Yt(g)&&!nP(g)&&!(F.isDrawElement(g)&&F.isImage(g)));h.length>0&&dl.removeElements(e,h)}s=!1,r.clear(),a=[]}};return e.pointerDown=m=>{if(q.isInPointer(e,[ot.eraser])&&Ec(e)){s=!0,r.clear(),a=[];const h=[m.x,m.y],g=Ot(e,Ft(e,h[0],h[1]));a.push(g),c(h);return}t(m)},e.pointerMove=m=>{if(s){pc(e,"with-freehand-erase",()=>{const f=[m.x,m.y],h=Ot(e,Ft(e,f[0],f[1]));a.push(h),c(f)});return}n(m)},e.pointerUp=m=>{if(s){d();return}i(m)},e.globalPointerUp=m=>{if(s){d();return}o(m)},e},bP="#e91e63",xP=3,np=2e3,NP=e=>{const{pointerDown:t,pointerMove:n,pointerUp:i,globalPointerUp:o}=e;let s=!1,r=[];const a=new nu(e),c=new Yg({smoothing:.7,pressureSensitivity:0});let u=null;const d=[],m=()=>q.isPointer(e,ot.laserPointer),f=()=>{if(!s)return;s=!1;const g=a.g;g?(a.g=void 0,h(g)):a.destroy(),u=null,r=[],c.reset()},h=g=>{g.style.transition=`opacity ${np}ms ease-out`,g.style.opacity="1",g.getBoundingClientRect(),g.style.opacity="0";const b=window.setTimeout(()=>{g.remove();const x=d.findIndex(y=>y.g===g);x>=0&&d.splice(x,1)},np);d.push({g,timer:b})};return e.pointerDown=g=>{if(m()&&Ec(e)){s=!0;const b=[g.x,g.y],x=c.process(b);if(x){const y=Ot(e,Ft(e,x[0],x[1]));r.push(y)}return}t(g)},e.pointerMove=g=>{if(s){const b=[g.x,g.y],x=c.process(b);if(x){a.destroy();const y=Ot(e,Ft(e,x[0],x[1]));r.push(y),u=ul(ot.laserPointer,r,{strokeWidth:xP,strokeColor:bP}),a.processDrawing(u,q.getElementTopHost(e))}return}n(g)},e.pointerUp=g=>{s&&f(),i(g)},e.globalPointerUp=g=>{s&&f(),o(g)},e},yP=e=>{const{getRectangle:t,drawElement:n,isHit:i,isRectangleHit:o,getOneHitElement:s,isMovable:r,isAlign:a}=e;return e.drawElement=c=>Xe.isFreehand(c.element)?Wj:n(c),e.getRectangle=c=>Xe.isFreehand(c)?ta(c):t(c),e.isRectangleHit=(c,u)=>Xe.isFreehand(c)?ay(e,c,u):o(c,u),e.isHit=(c,u,d)=>Xe.isFreehand(c)?ly(e,c,u):i(c,u,d),e.getOneHitElement=c=>c.every(d=>Xe.isFreehand(d))?zf(e,c):s(c),e.isMovable=c=>Xe.isFreehand(c)?!0:r(c),e.isAlign=c=>Xe.isFreehand(c)?!0:a(c),e.setPluginOptions(Gf,{customGeometryTypes:[cy]}),NP(tP(gP(Xj($j(e)))))};class wP extends wc{constructor(){super()}initializeGenerator(){this.activeGenerator=Uf(this.board,{getRectangle:t=>ia(t),getStrokeWidth:()=>Rf,getStrokeOpacity:()=>1,hasResizeHandle:()=>qf(this.board,this.element)}),this.generator=new hj(this.board)}initialize(){super.initialize(),this.initializeGenerator(),this.generator.processDrawing(this.element,this.getElementG()),this.selected&&this.activeGenerator.processDrawing(this.element,q.getActiveHost(this.board),{selected:this.selected})}onContextChanged(t,n){const i=t.board.viewport.zoom!==n.board.viewport.zoom||t.board.viewport.offsetX!==n.board.viewport.offsetX||t.board.viewport.offsetY!==n.board.viewport.offsetY;t.element!==n.element||t.hasThemeChanged?(this.generator.processDrawing(this.element,this.getElementG()),this.activeGenerator.processDrawing(this.element,q.getActiveHost(this.board),{selected:this.selected})):i&&t.selected?this.activeGenerator.processDrawing(this.element,q.getActiveHost(this.board),{selected:this.selected}):(t.selected!==n.selected||t.selected)&&this.activeGenerator.processDrawing(this.element,q.getActiveHost(this.board),{selected:this.selected})}destroy(){var t;super.destroy(),(t=this.activeGenerator)==null||t.destroy()}}const vP=e=>e,EP=e=>{const t=e,{getDeletedFragment:n,buildFragment:i,insertFragment:o}=t;return t.getDeletedFragment=s=>{const r=Fu(t);return r.length&&s.push(...r),n(s)},t.buildFragment=(s,r,a,c)=>{const u=Fu(t);if(u.length){const d=Lf(t,u,r?[r.x,r.y]:[0,0]);s=Bf(s,{text:"",type:Of.elements,elements:d})}return i(s,r,a,c)},t.insertFragment=(s,r,a)=>{var u;const c=(u=s==null?void 0:s.elements)==null?void 0:u.filter(d=>Je.isPenPath(d));c&&c.length>0&&Ff(t,c,r),o(s,r,a)},t};function kP(e,t,n,i=0){const o=fe.getCenterPoint(t),s=Vi(t,pi);if(i){const r=SP(n,o,-i);let a=s.find(c=>fe.isHit(fe.getRectangleByPoints([r,r]),c.rectangle));return a&&(a.cursorClass=na(a.cursorClass,i)),a}else return s.find(r=>fe.isHit(fe.getRectangleByPoints([n,n]),r.rectangle))}function SP(e,t,n){const i=n*Math.PI/180,o=Math.cos(i),s=Math.sin(i),r=e[0]-t[0],a=e[1]-t[1];return[t[0]+r*o-a*s,t[1]+r*s+a*o]}function eb(e){const t=Oe(e);return t.length===1&&Je.isPenPath(t[0])?t[0]:null}function TP(e){return eb(e)!==null}function DP(e,t){const n=eb(e);if(!n)return null;const i=ia(n),o=n.angle||0,s=kP(e,i,t,o);return s?{element:n,rectangle:i,handle:s.handle,cursorClass:s.cursorClass}:null}function _P(e,t,n){return e.map(i=>({...i,point:[i.point[0]*t,i.point[1]*n],handleIn:i.handleIn?[i.handleIn[0]*t,i.handleIn[1]*n]:void 0,handleOut:i.handleOut?[i.handleOut[0]*t,i.handleOut[1]*n]:void 0}))}function jP(e,t,n){const{element:i,rectangle:o,handle:s}=t,{startPoint:r,endPoint:a}=n;if(!o)return;const c=a[0]-r[0],u=a[1]-r[1],d=Eo(o,s,c,u,Ss(),10),m=d.width/o.width,f=d.height/o.height,h=_P(i.anchors,m,f),b=[[d.x,d.y],[d.x+d.width,d.y+d.height]],x=e.children.findIndex(y=>y.id===i.id);x>=0&&ce.setNode(e,{points:b,anchors:h},[x])}const PP=e=>Ii(e,{key:"pen-path",canResize:()=>TP(e),hitTest:(t=>DP(e,t)),onResize:(t,n)=>jP(e,t,n)}),CP=e=>{const{getRectangle:t,drawElement:n,isHit:i,isRectangleHit:o,getOneHitElement:s,isMovable:r,isAlign:a}=e;return e.drawElement=c=>Je.isPenPath(c.element)?wP:n(c),e.getRectangle=c=>Je.isPenPath(c)?ia(c):t(c),e.isRectangleHit=(c,u)=>Je.isPenPath(c)?uy(e,c,u):o(c,u),e.isHit=(c,u,d)=>Je.isPenPath(c)?dy(e,c,u):i(c,u,d),e.getOneHitElement=c=>c.every(d=>Je.isPenPath(d))?zf(e,c):s(c),e.isMovable=c=>Je.isPenPath(c)?!0:r(c),e.isAlign=c=>Je.isPenPath(c)?!0:a(c),e.setPluginOptions(Gf,{customGeometryTypes:[Hf]}),PP(EP(vP(vj(e))))},tb=new WeakMap,ip=e=>!!tb.get(e),nb=(e,t)=>{tb.set(e,t)},AP=e=>n=>{const{pointerDown:i}=n;return n.pointerDown=o=>{Hu(o)&&!ip(n)&&(nb(n,!0),e({isPencilMode:!0})),!(ip(n)&&!Hu(o))&&i(o)},n},MP=()=>{const e=bt(),{appState:t,setAppState:n}=Gt();return l.jsxDEV(l.Fragment,{children:t.isPencilMode&&l.jsxDEV("div",{className:"pencil-mode-toolbar",children:l.jsxDEV(ie,{type:"button",visible:!0,tooltip:"X Pencil","aria-label":"Arrow",label:"Pencil X",onPointerDown:()=>{n({...t,isPencilMode:!1}),nb(e,!1)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-mode-toolbar.tsx",lineNumber:13,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-mode-toolbar.tsx",lineNumber:12,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-mode-toolbar.tsx",lineNumber:10,columnNumber:5},void 0)},IP="#f5f5f5";function VP(e,t){const n=Math.max(4,Math.min(256,t)),i=n+4,o=i/2,s=n/2,r=`<svg width="${i}" height="${i}" viewBox="0 0 ${i} ${i}" fill="none" xmlns="http://www.w3.org/2000/svg">
48
+ <circle cx="${o}" cy="${o}" r="${s}" fill="${e}" stroke="#fff" stroke-width="1"/>
49
+ <circle cx="${o}" cy="${o}" r="${s}" fill="none" stroke="#333" stroke-width="0.5" stroke-opacity="0.5"/>
50
+ </svg>`;return`url('data:image/svg+xml;base64,${btoa(r)}') ${o} ${o}, crosshair`}function UP(e,t){const n=Math.max(4,Math.min(256,t)),i=n+4,o=i/2,s=n/2,r=`<svg width="${i}" height="${i}" viewBox="0 0 ${i} ${i}" fill="none" xmlns="http://www.w3.org/2000/svg">
51
+ <rect x="${o-s}" y="${o-s}" width="${n}" height="${n}" fill="${e}" stroke="#fff" stroke-width="1"/>
52
+ <rect x="${o-s}" y="${o-s}" width="${n}" height="${n}" fill="none" stroke="#333" stroke-width="0.5" stroke-opacity="0.5"/>
53
+ </svg>`;return`url('data:image/svg+xml;base64,${btoa(r)}') ${o} ${o}, crosshair`}function op(e,t,n=Lt.circle){return n===Lt.square?UP(e,t):VP(e,t)}function ib(e){return vc().includes(e)&&e!==ot.eraser}function ob(e){return e===ot.eraser}function es(e,t){var r;const n=document.querySelector(".plait-board-container"),i=n==null?void 0:n.querySelector(".board-host-svg");if(!i)return;const o=li(e),s=((r=e.viewport)==null?void 0:r.zoom)||1;if(ib(t)){const a=o.strokeWidth*s,c=op(o.strokeColor,a,o.pencilShape);i.style.cursor=c}else if(ob(t)){const a=o.eraserWidth*s,c=op(IP,a,o.eraserShape);i.style.cursor=c}else t===Me.text?i.style.cursor="crosshair":i.style.cursor=""}function RP({board:e,pointer:t}){const n=p.useRef(1),i=p.useRef(null);return p.useEffect(()=>{var r;if(!e)return;es(e,t),n.current=((r=e.viewport)==null?void 0:r.zoom)||1;let s=null;return(ib(t)||ob(t))&&(s=setInterval(()=>{var c;const a=((c=e.viewport)==null?void 0:c.zoom)||1;Math.abs(a-n.current)>.01&&(n.current=a,es(e,t))},100)),()=>{s&&clearInterval(s),i.current&&cancelAnimationFrame(i.current);const a=document.querySelector(".plait-board-container"),c=a==null?void 0:a.querySelector(".board-host-svg");c&&(c.style.cursor="")}},[e,t]),{updateCursor:p.useCallback(()=>{e&&es(e,t)},[e,t])}}function Ks(e,t){es(e,t)}function sp(e){es(e,ot.eraser)}const qP=({color:e,size:t,zoom:n,shape:i=Lt.circle})=>{const o=t*n,s=Math.max(4,Math.min(256,o)),r=i===Lt.circle?"50%":"0";return l.jsxDEV("div",{className:"cursor-preview-dot",style:{width:s,height:s,backgroundColor:e,borderRadius:r}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:56,columnNumber:5},void 0)},LP=()=>{var ye;const e=bt(),{appState:t}=Gt(),{t:n}=je(),i=p.useRef(null);ea(i,{enablePositionTracking:!0,enableScaleCompensation:!0});const o=li(e),[s,r]=p.useState(o.strokeWidth),[a,c]=p.useState(o.strokeColor),[u,d]=p.useState(o.strokeStyle),[m,f]=p.useState(o.pencilShape),[h,g]=p.useState(o.pressureEnabled),[b,x]=p.useState(!1),[y,N]=p.useState(!1),[w,D]=p.useState(String(o.strokeWidth)),[S,E]=p.useState(!1),V=vc().includes(t.pointer)&&t.pointer!==ot.eraser;p.useEffect(()=>{const P=li(e);r(P.strokeWidth),c(P.strokeColor),d(P.strokeStyle),f(P.pencilShape),g(P.pressureEnabled),D(String(P.strokeWidth))},[e,t.pointer]);const R=p.useCallback(P=>{D(P.target.value)},[]),z=p.useCallback(()=>{const P=parseInt(w,10);!isNaN(P)&&P>=1&&P<=100?(P!==s&&Nt.trackUIInteraction({area:"canvas_tool_settings",action:"pencil_stroke_width_changed",control:"stroke_width_input",value:P,source:"pencil_settings_toolbar",metadata:{previousValue:s}}),r(P),zu(e,P),Ks(e,t.pointer)):D(String(s))},[e,w,s,t.pointer]),I=p.useCallback(P=>{P.key==="Enter"?(z(),P.target.blur()):P.key==="Escape"&&(D(String(s)),P.target.blur())},[z,s]),U=p.useCallback(P=>{P!==a&&Nt.trackUIInteraction({area:"canvas_tool_settings",action:"pencil_color_changed",control:"stroke_color_picker",value:"custom",source:"pencil_settings_toolbar",metadata:{hasColor:!!P}}),c(P),my(e,P),Ks(e,t.pointer)},[e,t.pointer,a]),A=p.useCallback(P=>{P!==u&&Nt.trackUIInteraction({area:"canvas_tool_settings",action:"pencil_stroke_style_changed",control:"stroke_style_button",value:P,source:"pencil_settings_toolbar"}),d(P),py(e,P)},[e,u]),j=p.useCallback(P=>{P!==m&&Nt.trackUIInteraction({area:"canvas_tool_settings",action:"pencil_shape_changed",control:"brush_shape_button",value:P,source:"pencil_settings_toolbar"}),f(P),fy(e,P),Ks(e,t.pointer)},[e,t.pointer,m]),C=p.useCallback(P=>{P!==h&&Nt.trackUIInteraction({area:"canvas_tool_settings",action:"pencil_pressure_changed",control:"pressure_switch",value:P,source:"pencil_settings_toolbar"}),g(P),hy(e,P)},[e,h]);if(!V)return null;const M=q.getBoardContainer(e),J=((ye=e.viewport)==null?void 0:ye.zoom)??1;return l.jsxDEV("div",{className:"pencil-settings-toolbar",onMouseEnter:()=>E(!0),onMouseLeave:()=>E(!1),children:[S&&l.jsxDEV(qP,{color:a||Gu,size:s,zoom:J,shape:m},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:255,columnNumber:9},void 0),l.jsxDEV(Ye,{ref:i,padding:1,children:l.jsxDEV(dt.Row,{gap:0,align:"center",children:[l.jsxDEV(st,{sideOffset:12,open:b,onOpenChange:x,placement:"bottom",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{className:"pencil-color-button",type:"button",visible:!0,tooltip:n("toolbar.strokeColor"),"aria-label":n("toolbar.strokeColor"),onPointerUp:()=>x(!b),children:l.jsxDEV("div",{className:"pencil-color-preview",style:{backgroundColor:a||Gu}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:280,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:272,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:271,columnNumber:13},void 0),l.jsxDEV(at,{container:M,children:l.jsxDEV(Ye,{padding:4,className:K("stroke-setting"),children:l.jsxDEV(_i,{value:a,onChange:U},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:288,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:287,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:286,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:265,columnNumber:11},void 0),l.jsxDEV("div",{className:"pencil-stroke-style-picker",children:[l.jsxDEV(ie,{className:K("pencil-stroke-style-button",{active:u===vn.solid}),type:"button",visible:!0,icon:l.jsxDEV($p,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:304,columnNumber:21},void 0),tooltip:"实线","aria-label":"实线",onPointerUp:()=>A(vn.solid)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:298,columnNumber:13},void 0),l.jsxDEV(ie,{className:K("pencil-stroke-style-button",{active:u===vn.dashed}),type:"button",visible:!0,icon:l.jsxDEV(Xp,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:317,columnNumber:21},void 0),tooltip:"虚线","aria-label":"虚线",onPointerUp:()=>A(vn.dashed)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:311,columnNumber:13},void 0),l.jsxDEV(ie,{className:K("pencil-stroke-style-button",{active:u===vn.dotted}),type:"button",visible:!0,icon:l.jsxDEV(Kp,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:330,columnNumber:21},void 0),tooltip:"点线","aria-label":"点线",onPointerUp:()=>A(vn.dotted)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:324,columnNumber:13},void 0),l.jsxDEV(ie,{className:K("pencil-stroke-style-button",{active:u===vn.double}),type:"button",visible:!0,icon:l.jsxDEV(gy,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:343,columnNumber:21},void 0),tooltip:"双层线","aria-label":"双层线",onPointerUp:()=>A(vn.double)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:337,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:297,columnNumber:11},void 0),l.jsxDEV("div",{className:"pencil-shape-picker",children:[l.jsxDEV(_t,{content:n("toolbar.pencilShape.circle"),children:l.jsxDEV(Nr,{variant:"text",size:"small",className:`pencil-shape-button ${m===Lt.circle?"active":""}`,onClick:()=>j(Lt.circle),children:l.jsxDEV(Wf,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:363,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:355,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:354,columnNumber:13},void 0),l.jsxDEV(_t,{content:n("toolbar.pencilShape.square"),children:l.jsxDEV(Nr,{variant:"text",size:"small",className:`pencil-shape-button ${m===Lt.square?"active":""}`,onClick:()=>j(Lt.square),children:l.jsxDEV($f,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:375,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:367,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:366,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:353,columnNumber:11},void 0),l.jsxDEV(st,{sideOffset:12,open:y,onOpenChange:N,placement:"bottom",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{className:"pencil-width-button",type:"button",visible:!0,tooltip:n("toolbar.strokeWidth"),"aria-label":n("toolbar.strokeWidth"),onPointerUp:()=>N(!y),children:l.jsxDEV("svg",{className:"pencil-width-icon",viewBox:"0 0 24 24",children:[l.jsxDEV("line",{x1:"4",y1:"8",x2:"20",y2:"8",strokeWidth:"1",stroke:"currentColor"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:397,columnNumber:19},void 0),l.jsxDEV("line",{x1:"4",y1:"12",x2:"20",y2:"12",strokeWidth:"2",stroke:"currentColor"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:405,columnNumber:19},void 0),l.jsxDEV("line",{x1:"4",y1:"16",x2:"20",y2:"16",strokeWidth:"3",stroke:"currentColor"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:413,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:396,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:388,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:387,columnNumber:13},void 0),l.jsxDEV(at,{container:M,children:l.jsxDEV(Ye,{padding:4,className:K("stroke-width-picker"),children:l.jsxDEV(dt.Row,{gap:3,align:"center",style:{padding:"4px 8px"},children:[l.jsxDEV("div",{className:"stroke-width-value",style:{minWidth:"40px",fontSize:"13px",fontWeight:500,color:"var(--color-on-surface)"},children:[s,"px"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:431,columnNumber:19},void 0),l.jsxDEV("div",{className:"stroke-width-slider-wrapper",style:{flex:1,minWidth:"160px"},children:l.jsxDEV(Hr,{value:s,min:1,max:100,step:1,onChange:P=>{const G=P;r(G),D(String(G)),zu(e,G),Ks(e,t.pointer)},label:!1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:446,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:442,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:426,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:425,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:424,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:381,columnNumber:11},void 0),l.jsxDEV("div",{className:"pencil-width-input-wrapper",children:[l.jsxDEV("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",value:w,onChange:R,onBlur:z,onKeyDown:I,className:"pencil-width-input"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:468,columnNumber:13},void 0),l.jsxDEV("span",{className:"pencil-width-input-unit",children:"px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:478,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:467,columnNumber:11},void 0),l.jsxDEV(_t,{content:"压力感应:支持压感笔;鼠标/触控板使用速度模拟(慢=粗,快=细)",children:l.jsxDEV("div",{className:"pencil-pressure-switch",children:l.jsxDEV(by,{size:"small",value:h,onChange:C},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:484,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:483,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:482,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:263,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:262,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/pencil-settings-toolbar.tsx",lineNumber:248,columnNumber:5},void 0)},BP=({color:e,size:t,zoom:n,shape:i=Lt.circle})=>{const o=t*n,s=Math.max(4,Math.min(256,o)),r=i===Lt.circle?"50%":"0";return l.jsxDEV("div",{className:"cursor-preview-dot",style:{width:s,height:s,backgroundColor:e,borderRadius:r}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/cursor-preview.tsx",lineNumber:34,columnNumber:5},void 0)},OP=()=>l.jsxDEV("svg",{className:"size-picker-icon",viewBox:"0 0 24 24",children:[l.jsxDEV("line",{x1:"4",y1:"8",x2:"20",y2:"8",strokeWidth:"1",stroke:"currentColor"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:38,columnNumber:5},void 0),l.jsxDEV("line",{x1:"4",y1:"12",x2:"20",y2:"12",strokeWidth:"2",stroke:"currentColor"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:39,columnNumber:5},void 0),l.jsxDEV("line",{x1:"4",y1:"16",x2:"20",y2:"16",strokeWidth:"3",stroke:"currentColor"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:40,columnNumber:5},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:37,columnNumber:3},void 0),FP=({size:e,onSizeChange:t,onSizeCommit:n,presets:i,previewColor:o,title:s,container:r,icon:a})=>{const{t:c}=je(),[u,d]=p.useState(!1),[m,f]=p.useState(String(e)),[h,g]=p.useState(e);Pn.useEffect(()=>{f(String(e))},[e]),Pn.useEffect(()=>{u||g(e)},[u,e]);const b=p.useCallback(w=>{w!==h&&(n==null||n(w),g(w))},[h,n]),x=p.useCallback(w=>{f(w.target.value)},[]),y=p.useCallback(()=>{const w=parseInt(m,10);!isNaN(w)&&w>=1?(t(w),b(w)):f(String(e))},[b,m,e,t]),N=p.useCallback(w=>{w.key==="Enter"?(y(),w.target.blur()):w.key==="Escape"&&(f(String(e)),w.target.blur())},[y,e]);return l.jsxDEV(l.Fragment,{children:[l.jsxDEV(st,{sideOffset:12,open:u,onOpenChange:w=>{w||b(e),d(w)},placement:"bottom",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV(ie,{className:"size-picker-button",type:"button",visible:!0,tooltip:s,"aria-label":s,onPointerUp:()=>d(!u),children:a||l.jsxDEV(OP,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:127,columnNumber:22},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:119,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:118,columnNumber:9},void 0),l.jsxDEV(at,{container:r,children:l.jsxDEV(Ye,{padding:4,className:K("size-picker-popover"),children:l.jsxDEV(dt.Row,{gap:3,align:"center",style:{padding:"4px 8px"},children:[l.jsxDEV("div",{className:"size-picker-value",style:{minWidth:"40px",fontSize:"13px",fontWeight:500,color:"var(--color-on-surface)"},children:[e,"px"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:136,columnNumber:15},void 0),l.jsxDEV("div",{className:"size-picker-slider-wrapper",style:{flex:1,minWidth:"160px"},children:l.jsxDEV(Hr,{value:e,min:1,max:Math.max(256,...i),step:1,onChange:w=>{const D=w;f(String(D)),t(D)},label:!1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:140,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:139,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:135,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:131,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:130,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:107,columnNumber:7},void 0),l.jsxDEV("div",{className:"size-picker-input-wrapper",children:[l.jsxDEV("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",value:m,onChange:x,onBlur:y,onKeyDown:N,className:"size-picker-input"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:160,columnNumber:9},void 0),l.jsxDEV("span",{className:"size-picker-input-unit",children:"px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:170,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:159,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/size-picker.tsx",lineNumber:105,columnNumber:5},void 0)},HP=[16,32,48,64,96,128,192,256],zP="#f5f5f5",GP=()=>{var y;const e=bt(),{appState:t}=Gt(),{t:n}=je(),i=p.useRef(null);ea(i,{enablePositionTracking:!0,enableScaleCompensation:!0});const o=li(e),[s,r]=p.useState(o.eraserWidth),[a,c]=p.useState(o.eraserShape),[u,d]=p.useState(!1),m=t.pointer===ot.eraser;p.useEffect(()=>{const N=li(e);r(N.eraserWidth),c(N.eraserShape)},[e,t.pointer]);const f=p.useCallback(N=>{r(N),xy(e,N),sp(e)},[e]),h=p.useCallback(N=>{Nt.trackUIInteraction({area:"canvas_tool_settings",action:"eraser_size_changed",control:"eraser_size_picker",value:N,source:"eraser_settings_toolbar"})},[]),g=p.useCallback(N=>{N!==a&&Nt.trackUIInteraction({area:"canvas_tool_settings",action:"eraser_shape_changed",control:"eraser_shape_button",value:N,source:"eraser_settings_toolbar"}),c(N),Ny(e,N),sp(e)},[e,a]);if(!m)return null;const b=q.getBoardContainer(e),x=((y=e.viewport)==null?void 0:y.zoom)??1;return l.jsxDEV("div",{className:"pencil-settings-toolbar eraser-settings-toolbar",onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),children:[u&&l.jsxDEV(BP,{color:zP,size:s,zoom:x,shape:a},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/eraser-settings-toolbar.tsx",lineNumber:129,columnNumber:9},void 0),l.jsxDEV(Ye,{ref:i,padding:1,children:l.jsxDEV(dt.Row,{gap:1,align:"center",children:[l.jsxDEV(FP,{size:s,onSizeChange:f,onSizeCommit:h,presets:HP,previewColor:"#999",title:n("toolbar.eraserSize"),container:b},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/eraser-settings-toolbar.tsx",lineNumber:138,columnNumber:11},void 0),l.jsxDEV("div",{className:"toolbar-divider"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/eraser-settings-toolbar.tsx",lineNumber:148,columnNumber:11},void 0),l.jsxDEV("div",{className:"eraser-shape-picker",children:[l.jsxDEV(_t,{content:n("toolbar.eraserShape.circle"),children:l.jsxDEV(Nr,{variant:"text",size:"small",className:`eraser-shape-button ${a===Lt.circle?"active":""}`,onClick:()=>g(Lt.circle),children:l.jsxDEV(Wf,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/eraser-settings-toolbar.tsx",lineNumber:160,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/eraser-settings-toolbar.tsx",lineNumber:152,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/eraser-settings-toolbar.tsx",lineNumber:151,columnNumber:13},void 0),l.jsxDEV(_t,{content:n("toolbar.eraserShape.square"),children:l.jsxDEV(Nr,{variant:"text",size:"small",className:`eraser-shape-button ${a===Lt.square?"active":""}`,onClick:()=>g(Lt.square),children:l.jsxDEV($f,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/eraser-settings-toolbar.tsx",lineNumber:172,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/eraser-settings-toolbar.tsx",lineNumber:164,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/eraser-settings-toolbar.tsx",lineNumber:163,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/eraser-settings-toolbar.tsx",lineNumber:150,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/eraser-settings-toolbar.tsx",lineNumber:137,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/eraser-settings-toolbar.tsx",lineNumber:136,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pencil-settings-toolbar/eraser-settings-toolbar.tsx",lineNumber:122,columnNumber:5},void 0)},WP=[{icon:l.jsxDEV(wy,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pen-settings-toolbar/pen-settings-toolbar.tsx",lineNumber:38,columnNumber:11},void 0),type:"corner",titleKey:"toolbar.anchorCorner"},{icon:l.jsxDEV(vy,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pen-settings-toolbar/pen-settings-toolbar.tsx",lineNumber:43,columnNumber:11},void 0),type:"smooth",titleKey:"toolbar.anchorSmooth"},{icon:l.jsxDEV(Ey,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pen-settings-toolbar/pen-settings-toolbar.tsx",lineNumber:48,columnNumber:11},void 0),type:"symmetric",titleKey:"toolbar.anchorSymmetric"}],$P=()=>{const e=bt(),{appState:t}=Gt(),{t:n}=je(),i=p.useRef(null);ea(i,{enablePositionTracking:!0,enableScaleCompensation:!0});const o=cl(e),[s,r]=p.useState(o.defaultAnchorType),a=t.pointer===Hn.pen&&e.pointer===Hn.pen;p.useEffect(()=>{const u=cl(e);r(u.defaultAnchorType)},[e,t.pointer,e.pointer]);const c=p.useCallback(u=>{u!==s&&Nt.trackUIInteraction({area:"canvas_tool_settings",action:"pen_anchor_type_changed",control:"anchor_type_button",value:u,source:"pen_settings_toolbar"}),r(u),yy(e,u)},[s,e]);return a?l.jsxDEV("div",{className:"pen-settings-toolbar",children:l.jsxDEV(Ye,{ref:i,padding:1,children:l.jsxDEV(dt.Row,{gap:0,align:"center",children:l.jsxDEV("div",{className:"pen-anchor-type-picker",children:WP.map(u=>l.jsxDEV(ie,{className:K("pen-anchor-type-button",{active:s===u.type}),type:"button",visible:!0,icon:u.icon,tooltip:n(u.titleKey),"aria-label":n(u.titleKey),onPointerUp:()=>c(u.type)},u.type,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pen-settings-toolbar/pen-settings-toolbar.tsx",lineNumber:111,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pen-settings-toolbar/pen-settings-toolbar.tsx",lineNumber:109,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pen-settings-toolbar/pen-settings-toolbar.tsx",lineNumber:107,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pen-settings-toolbar/pen-settings-toolbar.tsx",lineNumber:103,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/pen-settings-toolbar/pen-settings-toolbar.tsx",lineNumber:102,columnNumber:5},void 0):null},XP=({container:e})=>{const{appState:t,setAppState:n}=Gt(),{t:i}=je(),o=bt();return l.jsxDEV(ky,{open:t.openCleanConfirm,container:e,title:i("cleanConfirm.title"),description:i("cleanConfirm.description"),confirmText:i("cleanConfirm.ok"),cancelText:i("cleanConfirm.cancel"),danger:!0,onOpenChange:s=>{n({...t,openCleanConfirm:s})},onConfirm:()=>{o.deleteFragment(o.children)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/clean-confirm/clean-confirm.tsx",lineNumber:15,columnNumber:5},void 0)},rp=e=>{const{appState:t}=e;return t&&t.linkState&&t.linkState.isHovering},ap=e=>{const{appState:t}=e;return t&&t.linkState&&t.linkState.isEditing},KP=e=>n=>{const{pointerMove:i}=n;let o=null,s=null;return n.pointerMove=r=>{(q.isPointer(n,Et.selection)||q.isPointer(n,Et.hand))&&!as(n)&&!Hp(n)&&!rp(n)&&!ap(n)&&pc(n,"with-text-link",()=>{const a=r.target.closest(".plait-board-link");if(a&&a!==o){const c=a.closest(".plait-text-container"),u=Sn.toSlateNode(void 0,c),d=Sn.toSlateNode(void 0,a);o=a,e({linkState:{targetDom:a,targetElement:d,editor:u,isEditing:!1,isHovering:!1,isHoveringOrigin:!0}}),clearTimeout(s)}else!a&&o&&(s=setTimeout(()=>{!rp(n)&&!ap(n)&&e({linkState:null})},300),o=null)}),i(r)},n},YP=()=>{var x,y,N,w;const[e,t]=p.useState(""),{appState:n,setAppState:i}=Gt(),o=bt(),{refs:s,floatingStyles:r}=rc({placement:"top",middleware:[ac(20),lc()]}),a=n.linkState,c=((x=n.linkState)==null?void 0:x.targetDom)||null,u=((y=n.linkState)==null?void 0:y.isEditing)||!1,d=((N=n.linkState)==null?void 0:N.isHoveringOrigin)||!1,m=((w=n.linkState)==null?void 0:w.isHovering)||!1,f=u||d||m,h=p.useRef(n.linkState);p.useEffect(()=>{h.current=n.linkState,n.linkState?t(n.linkState.targetElement.url):t("")},[n.linkState]),p.useEffect(()=>{if(c){const D=c.getBoundingClientRect();s.setPositionReference({getBoundingClientRect(){return{x:D.x,y:D.y,width:D.width,height:D.height,top:D.y,left:D.x,right:D.x+D.width,bottom:D.y+D.height}}})}},[o.viewport,c,s]);const g=p.useRef();g.current=D=>{if(s.floating.current&&!s.floating.current.contains(D.target)){if(h.current){const S=oo.getLinkElement(h.current.editor);S&&!S[0].url.trim()&&oo.unwrapLink(h.current.editor)}i({...n,linkState:null})}},p.useEffect(()=>{const D=S=>{var E;(E=g.current)==null||E.call(g,S)};return document.addEventListener("mousedown",D),()=>{document.removeEventListener("mousedown",D)}},[]);const b=()=>{if(!a)return;if(e!==a.targetElement.url){const S=a.editor,E=a.targetElement,k=Sn.findPath(S,E);_a.setNodes(S,{url:e},{at:k})}const D=oo.getLinkElement(a.editor);D&&i({...n,linkState:{...n.linkState,targetElement:D[0],isEditing:!1,isHoveringOrigin:!0}})};return f&&l.jsxDEV(Ye,{ref:s.setFloating,style:r,padding:1,className:K("link-popup"),onPointerEnter:()=>{!m&&n.linkState&&i({...n,linkState:{...n.linkState,isHovering:!0}})},onPointerLeave:()=>{!u&&n.linkState&&i({...n,linkState:{...n.linkState,isHovering:!1}})},children:l.jsxDEV(dt.Row,{gap:1,align:"center",children:u?l.jsxDEV(l.Fragment,{children:[l.jsxDEV("input",{type:"text",value:e,onChange:D=>{t(D.target.value)},onKeyDown:D=>{D.key==="Enter"&&b()},className:"link-popup__input",autoFocus:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/popup/link-popup/link-popup.tsx",lineNumber:151,columnNumber:15},void 0),l.jsxDEV(ie,{type:"icon",visible:!0,icon:l.jsxDEV(br,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/popup/link-popup/link-popup.tsx",lineNumber:168,columnNumber:23},void 0),tooltip:"Delete link","aria-label":"Delete link",onPointerDown:()=>{if(!a)return;const D=a.editor,S=a.targetElement,E=Sn.findPath(D,S);_a.unwrapNodes(D,{at:E}),i({...n,linkState:null})}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/popup/link-popup/link-popup.tsx",lineNumber:165,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/popup/link-popup/link-popup.tsx",lineNumber:150,columnNumber:13},void 0):l.jsxDEV(l.Fragment,{children:[l.jsxDEV("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"link-popup__link",children:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/popup/link-popup/link-popup.tsx",lineNumber:188,columnNumber:15},void 0),l.jsxDEV(ie,{className:"link-popup__edit",type:"icon",visible:!0,icon:l.jsxDEV(vo,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/popup/link-popup/link-popup.tsx",lineNumber:200,columnNumber:23},void 0),tooltip:"Edit link","aria-label":"Edit link",onPointerDown:({event:D})=>{D.preventDefault(),n.linkState&&i({...n,linkState:{...n.linkState,isEditing:!0}})}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/popup/link-popup/link-popup.tsx",lineNumber:196,columnNumber:15},void 0),l.jsxDEV(ie,{type:"icon",visible:!0,icon:l.jsxDEV(br,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/popup/link-popup/link-popup.tsx",lineNumber:218,columnNumber:23},void 0),tooltip:"Delete link","aria-label":"Delete link",onPointerDown:()=>{if(!a)return;const D=a.editor,S=a.targetElement,E=Sn.findPath(D,S);_a.unwrapNodes(D,{at:E}),i({...n,linkState:null})}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/popup/link-popup/link-popup.tsx",lineNumber:215,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/popup/link-popup/link-popup.tsx",lineNumber:187,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/popup/link-popup/link-popup.tsx",lineNumber:148,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/popup/link-popup/link-popup.tsx",lineNumber:120,columnNumber:7},void 0)},Wo={autoTrack:!1,debounceTime:500,retryPolicy:{maxRetries:3,retryInterval:2e3,exponentialBackoff:!0},cacheConfig:{maxCacheSize:100,cacheTTL:3600*1e3,storageKey:"tracking_cache"},logLevel:"error",batchConfig:{batchSize:10,batchTimeout:5e3,enabled:!0},excludedSelectors:["nav","header","footer","[data-track-ignore]"],devMode:!1};function ZP(){return"0.6.78"}function lp(e){return{...Wo,...e,retryPolicy:{...Wo.retryPolicy,...e.retryPolicy||{}},cacheConfig:{...Wo.cacheConfig,...e.cacheConfig||{}},batchConfig:{...Wo.batchConfig,...e.batchConfig||{}}}}class QP{isAvailable(){return Nt.isAnalyticsEnabled()}async track(t){if(!this.isAvailable())return;const n={...t.params,version:t.metadata.version,url:t.metadata.url,timestamp:t.metadata.timestamp,sessionId:t.metadata.sessionId,eventType:t.metadata.eventType};t.metadata.viewport&&(n.viewport=`${t.metadata.viewport.width}x${t.metadata.viewport.height}`);try{Nt.track(t.eventName,n)}catch(i){throw console.error("[Tracking] PostHog track failed:",i),i}}async trackBatch(t){const n=[];for(const i of t)try{await this.track(i),n.push({success:!0})}catch(o){n.push({success:!1,error:o})}return n}getSDKInfo(){return{available:this.isAvailable(),version:this.isAvailable()?"PostHog JS":void 0}}}const cp=new QP;class JP{constructor(t){this.queue=[],this.timer=null,this.uploading=!1,this.config=t}enqueue(t){if(!this.config.enabled){this.uploadImmediate(t);return}this.queue.push(t),this.timer||(this.timer=setTimeout(()=>{this.flush()},this.config.batchTimeout)),this.queue.length>=this.config.batchSize&&this.flush()}async flush(){if(this.timer&&(clearTimeout(this.timer),this.timer=null),this.queue.length===0||this.uploading)return;this.uploading=!0;const t=[...this.queue];this.queue=[];try{const n=await cp.trackBatch(t),i=n.filter(o=>!o.success);if(i.length>0){console.error(`Batch upload: ${i.length}/${t.length} events failed`);const o=t.filter((s,r)=>!n[r].success);this.requeueFailedEvents(o)}}catch(n){console.error("Batch upload failed:",n),this.requeueFailedEvents(t)}finally{this.uploading=!1}}async uploadImmediate(t){try{await cp.track(t)}catch(n){console.error("Immediate upload failed:",n)}}requeueFailedEvents(t){this.queue=[...t,...this.queue]}getQueueSize(){return this.queue.length}isUploading(){return this.uploading}updateConfig(t){this.config={...this.config,...t},!this.config.enabled&&this.queue.length>0&&this.flush()}clear(){this.timer&&(clearTimeout(this.timer),this.timer=null),this.queue=[],this.uploading=!1}flushOnUnload(){this.queue.length!==0&&this.flush()}}class eC{constructor(t=500){this.debounceMap=new WeakMap,this.globalDebounceMap=new Map,this.globalDebounceTime=200,this.debounceTime=t}shouldTrack(t,n,i=!1){const o=Date.now(),s=this.globalDebounceMap.get(n);if(s&&o-s<this.globalDebounceTime)return i&&console.warn(`[Tracking] 🚫 Global debounce: ${n} (${o-s}ms ago)`),!1;const r=this.debounceMap.get(t);if(!r){const c=new Map;return c.set(n,o),this.debounceMap.set(t,c),this.globalDebounceMap.set(n,o),!0}const a=r.get(n);return!a||o-a>this.debounceTime?(r.set(n,o),this.globalDebounceMap.set(n,o),!0):(i&&console.warn(`[Tracking] 🚫 Element debounce: ${n} (${o-a}ms ago)`),!1)}clear(t){this.debounceMap.delete(t)}setDebounceTime(t){this.debounceTime=t}}const tC=["button:not([data-track-ignore])","a:not([data-track-ignore])",'input[type="button"]:not([data-track-ignore])','input[type="submit"]:not([data-track-ignore])','[role="button"]:not([data-track-ignore])','[role="link"]:not([data-track-ignore])'].join(", ");function nC(e,t){if(!e.matches(tC))return!1;for(const i of t)if(e.matches(i)||e.closest(i))return!1;return e.hasAttribute("data-track-ignore")?!1:(e.onclick!==null,!0)}function iC(e,t="click"){var a;const n=`auto_${t}_`;if(e.id)return`${n}${e.id}`;const i=e.getAttribute("aria-label");if(i)return`${n}${up(i)}`;const o=(a=e.textContent)==null?void 0:a.trim();if(o&&o.length>0){const c=up(o.substring(0,20));return`${n}${c}`}const s=e.tagName.toLowerCase(),r=e.className?`.${e.className.split(" ")[0]}`:"";return`${n}${s}${r}`}function up(e){return e.toLowerCase().trim().replace(/\s+/g,"_").replace(/[^a-z0-9_-]/g,"").substring(0,50)}function oC(e){if(e.id)return`#${e.id}`;const t=[];let n=e;for(;n&&n!==document.body;){let i=n.tagName.toLowerCase();if(n.className){const o=n.className.split(" ").filter(Boolean);o.length>0&&(i+=`.${o[0]}`)}t.unshift(i),n=n.parentElement}return t.join(" > ")}function Ka(e){const t=e.getAttribute("data-track-params")||e.getAttribute("track-params");if(!t)return null;try{return JSON.parse(t)}catch(n){return console.warn("Invalid track params JSON on element:",e,n),null}}function sb(){return`${Date.now()}-${Math.random().toString(36).substring(2,9)}`}function sC(){if(typeof window>"u")return"server-side";const e="tracking_session_id";let t=sessionStorage.getItem(e);return t||(t=sb(),sessionStorage.setItem(e,t)),t}function rC(){return typeof window>"u"?{width:0,height:0}:{width:window.innerWidth||0,height:window.innerHeight||0}}class aC{constructor(t={}){this.state$=new Sy({initialized:!1,config:Wo,pendingEvents:[],uploading:!1,cachedEventCount:0,stats:{totalEvents:0,successfulUploads:0,failedUploads:0,batchUploadCount:0,debouncedEvents:0}}),this.clickListener=null,this.mutationObserver=null,this.attachedListeners=new WeakMap,this.config=lp(t),this.batchService=new JP(this.config.batchConfig),this.debouncer=new eC(this.config.debounceTime),this.updateState({config:this.config,initialized:!1})}initialize(){if(this.state$.value.initialized){this.log("debug","Tracking service already initialized");return}this.setupClickDelegation(),this.setupMultiEventListeners(),this.setupMutationObserver(),this.setupBeforeUnload(),this.updateState({initialized:!0}),this.log("debug","Tracking service initialized")}setupClickDelegation(){typeof window>"u"||typeof document>"u"||(this.clickListener=t=>{const n=t.target;if(!n)return;const i=n.closest("[data-track]");if(i){const o=i.getAttribute("data-track");if(o){if(this.isElementExcluded(i))return;this.trackClick(i,o);return}}if(this.config.autoTrack&&nC(n,this.config.excludedSelectors)){if(this.isElementExcluded(n))return;const o=iC(n,"click");this.trackClick(n,o)}},document.body.addEventListener("click",this.clickListener,!0))}setupMultiEventListeners(){if(typeof document>"u")return;document.querySelectorAll("[track-hover]").forEach(i=>{this.attachHoverListener(i)}),document.querySelectorAll("[track-focus]").forEach(i=>{this.attachFocusListener(i)})}attachHoverListener(t){const n=t.getAttribute("track-hover");if(!n||this.hasAttachedListener(t,"hover"))return;const i=()=>{if(!this.debouncer.shouldTrack(t,n,this.config.devMode)){this.incrementStat("debouncedEvents");return}const o=Ka(t),s=this.createTrackEvent(n,o,"hover",t);this.track(s)};t.addEventListener("mouseenter",i),this.markListenerAttached(t,"hover")}attachFocusListener(t){const n=t.getAttribute("track-focus");if(!n||this.hasAttachedListener(t,"focus"))return;const i=()=>{if(!this.debouncer.shouldTrack(t,n,this.config.devMode)){this.incrementStat("debouncedEvents");return}const o=Ka(t),s=this.createTrackEvent(n,o,"focus",t);this.track(s)};t.addEventListener("focus",i,!0),this.markListenerAttached(t,"focus")}hasAttachedListener(t,n){const i=this.attachedListeners.get(t);return i?i.has(n):!1}markListenerAttached(t,n){let i=this.attachedListeners.get(t);i||(i=new Set,this.attachedListeners.set(t,i)),i.add(n)}setupMutationObserver(){typeof window>"u"||typeof MutationObserver>"u"||(this.mutationObserver=new MutationObserver(t=>{t.forEach(n=>{n.addedNodes.forEach(i=>{if(i.nodeType===Node.ELEMENT_NODE){const o=i;o.hasAttribute("track-hover")&&this.attachHoverListener(o),o.hasAttribute("track-focus")&&this.attachFocusListener(o),o.querySelectorAll("[track-hover]").forEach(a=>this.attachHoverListener(a)),o.querySelectorAll("[track-focus]").forEach(a=>this.attachFocusListener(a))}})})}),this.mutationObserver.observe(document.body,{childList:!0,subtree:!0}))}trackClick(t,n){if(!this.debouncer.shouldTrack(t,n,this.config.devMode)){this.incrementStat("debouncedEvents"),this.log("debug",`Event debounced: ${n}`);return}const i=Ka(t),o=this.createTrackEvent(n,i,"click",t);this.track(o)}createTrackEvent(t,n,i,o){const s={timestamp:Date.now(),url:typeof window<"u"?window.location.href:"",version:ZP(),sessionId:sC(),userAgent:typeof navigator<"u"?navigator.userAgent:void 0,viewport:rC(),eventType:i},r={eventName:t,params:n||void 0,metadata:s,id:sb(),createdAt:Date.now()};return this.config.devMode&&this.log("debug",`Event created: ${t}`,{params:n,element:o?oC(o):void 0}),r}track(t){this.incrementStat("totalEvents"),this.batchService.enqueue(t),this.log("debug",`Event tracked: ${t.eventName}`)}isElementExcluded(t){if(t.hasAttribute("data-track-ignore"))return!0;for(const n of this.config.excludedSelectors)if(t.matches(n)||t.closest(n))return!0;return!1}setupBeforeUnload(){typeof window>"u"||window.addEventListener("beforeunload",()=>{this.batchService.flushOnUnload()})}getState(){return this.state$.asObservable()}getStats(){return this.state$.value.stats}updateConfig(t){this.config=lp({...this.config,...t}),t.batchConfig&&this.batchService.updateConfig(t.batchConfig),t.debounceTime&&this.debouncer.setDebounceTime(t.debounceTime),this.updateState({config:this.config}),this.log("debug","Configuration updated",t)}destroy(){this.clickListener&&typeof document<"u"&&(document.body.removeEventListener("click",this.clickListener,!0),this.clickListener=null),this.mutationObserver&&(this.mutationObserver.disconnect(),this.mutationObserver=null),this.attachedListeners=new WeakMap,this.batchService.flush(),this.updateState({initialized:!1}),this.log("debug","Tracking service destroyed")}updateState(t){this.state$.next({...this.state$.value,...t})}incrementStat(t){const n={...this.state$.value.stats};n[t]++,this.updateState({stats:n})}log(t,n,i){this.config.logLevel!=="silent"&&(t==="error"||t==="debug"&&this.config.devMode)}}let Vn=null;function lC(){Vn&&(Vn.destroy(),Vn=null)}function cC(e,t){return Vn||(Vn=new aC(t),typeof window<"u"&&setTimeout(()=>{Vn==null||Vn.initialize()},0),typeof module<"u"&&module.hot&&module.hot.dispose(()=>{lC()})),e.trackingService=Vn,e}class uC extends wc{initialize(){super.initialize()}}const dC=e=>{const{drawElement:t}=e;return e.drawElement=n=>{try{return t(n)}catch{return console.warn(`[Drawnix] Unknown element type "${n.element.type}" — may be from a newer version, hidden but preserved.`),uC}},e};function mC(e,t,n,i=0){const o=fe.getCenterPoint(t),s=Vi(t,pi);if(i){const r=pC(n,o,-i);let a=s.find(c=>fe.isHit(fe.getRectangleByPoints([r,r]),c.rectangle));return a&&(a.cursorClass=na(a.cursorClass,i)),a}else return s.find(r=>fe.isHit(fe.getRectangleByPoints([n,n]),r.rectangle))}function pC(e,t,n){const i=n*Math.PI/180,o=Math.cos(i),s=Math.sin(i),r=e[0]-t[0],a=e[1]-t[1];return[t[0]+r*o-a*s,t[1]+r*s+a*o]}function fC(e){const t=Oe(e);return t.length!==1?!1:cc(t[0])}function hC(e,t){const n=Oe(e);if(n.length!==1||!cc(n[0]))return null;const i=n[0],o=fe.getRectangleByPoints(i.points),s=i.angle||0,r=mC(e,o,t,s);return r?{element:i,rectangle:o,handle:r.handle,cursorClass:r.cursorClass}:null}function gC(e,t,n){const{element:i,rectangle:o,handle:s}=t,{startPoint:r,endPoint:a}=n;if(!o){console.warn("startRectangle is undefined");return}const c=a[0]-r[0],u=a[1]-r[1],d=Eo(o,s,c,u,Ss(),100),m=[[d.x,d.y],[d.x+d.width,d.y+d.height]],f=e.children.findIndex(h=>h.id===i.id);f>=0&&ce.setNode(e,{points:m},[f])}const bC=e=>Ii(e,{key:"tool-elements",canResize:()=>fC(e),hitTest:(t=>hC(e,t)),onResize:(t,n)=>gC(e,t,n)});let Ar=null;function xC(e,t){return Xe.isFreehand(t)?ta(t):Je.isPenPath(t)?ia(t):e.getRectangle(t)}function NC(e,t){return Vi(e,pi).find(i=>fe.isHit(fe.getRectangleByPoints([t,t]),i.rectangle))}function su(e){return e.some(t=>Xe.isFreehand(t)||Je.isPenPath(t)||F.isText(t))}function yC(e){return e.some(t=>F.isText(t))}function rb(e){const t=Oe(e);if(t.length<2||!su(t))return null;try{const n=qt(e,t,!1);return{elements:t,rectangle:n}}catch{return null}}function wC(e){return rb(e)!==null}function vC(e,t){const n=rb(e);if(!n)return null;const i=NC(n.rectangle,t);if(i){Ar=new Map;for(const o of n.elements){const s=xC(e,o);s&&Ar.set(o.id,{element:JSON.parse(JSON.stringify(o)),rectangle:{...s}})}return{element:n.elements,rectangle:n.rectangle,handle:i.handle,cursorClass:i.cursorClass}}return null}function EC(e,t,n,i,o,s){const r=s.width/o.width,a=s.height/o.height,c=i.x-o.x,u=i.y-o.y,d=s.x+c*r,m=s.y+u*a,f=n.points.map(g=>{const b=g[0]-i.x,x=g[1]-i.y,y=b*r,N=x*a;return[d+y,m+N]}),h=e.children.findIndex(g=>g.id===t);h>=0&&ce.setNode(e,{points:f},[h])}function kC(e,t,n,i,o,s){const r=s.width/o.width,a=s.height/o.height,c=i.x-o.x,u=i.y-o.y,d=s.x+c*r,m=s.y+u*a,f=n.anchors.map(N=>({...N,point:[N.point[0]*r,N.point[1]*a],handleIn:N.handleIn?[N.handleIn[0]*r,N.handleIn[1]*a]:void 0,handleOut:N.handleOut?[N.handleOut[0]*r,N.handleOut[1]*a]:void 0})),h=i.width*r,g=i.height*a,x=[[d,m],[d+h,m+g]],y=e.children.findIndex(N=>N.id===t);y>=0&&ce.setNode(e,{points:x,anchors:f},[y])}const ab=14;function lb(e,t){const n={...e};if("text"in e&&typeof e.text=="string"){const i=e["font-size"]?parseFloat(e["font-size"]):ab,o=Math.max(1,Math.round(i*t*10)/10);n["font-size"]=`${o}`}return Array.isArray(e.children)&&(n.children=e.children.map(i=>lb(i,t))),n}function SC(e,t,n,i,o,s){const r=s.width/o.width,a=s.height/o.height,c=i.x-o.x,u=i.y-o.y,d=s.x+c*r,m=s.y+u*a,f=i.width*r,h=i.height*a,g=[[d,m],[d+f,m+h]],b=e.children.findIndex(x=>x.id===t);if(b>=0)if(F.isDrawElement(n)&&F.isImage(n))ce.setNode(e,{points:g,width:f,height:h},[b]);else if(F.isText(n)){const x=n,y=lb(x.text,r),N=x.textHeight||ab*1.4;ce.setNode(e,{points:g,text:y,textHeight:N*r,autoSize:!1},[b])}else ce.setNode(e,{points:g},[b])}function TC(e,t,n){const{element:i,rectangle:o,handle:s}=t,{startPoint:r,endPoint:a}=n;if(!o||!Array.isArray(i)||!Ar)return;const c=a[0]-r[0],u=a[1]-r[1],d=Ss()||yC(i),m=Eo(o,s,c,u,d);for(const f of i){const h=Ar.get(f.id);if(!h)continue;const{element:g,rectangle:b}=h;Xe.isFreehand(g)?EC(e,f.id,g,b,o,m):Je.isPenPath(g)?kC(e,f.id,g,b,o,m):SC(e,f.id,g,b,o,m)}}function DC(e){const t=Oe(e);if(t.length<2||!su(t))return null;try{const n=mc(),i=qt(e,t,!1),o=Ty(e,i);return fe.getCornerPoints(o).forEach(r=>{const a=Dy(e,r);n.append(a)}),n}catch{return null}}const _C=e=>{const{afterChange:t}=e;let n=null;return e.afterChange=()=>{t(),n&&(n.remove(),n=null);const i=Oe(e);i.length>1&&su(i)&&!os(e)&&(n=DC(e),n&&q.getActiveHost(e).append(n))},Ii(e,{key:"multi-resize",canResize:()=>wC(e),hitTest:(i=>vC(e,i)),onResize:(i,o)=>TC(e,i,o)})},cb=14;let pr=null,Hl=null;function jC(e,t){return Vi(e,pi).find(i=>fe.isHit(fe.getRectangleByPoints([t,t]),i.rectangle))}function ub(e,t){const n={...e};if("text"in e&&typeof e.text=="string"){const i=e["font-size"]?parseFloat(e["font-size"]):cb,o=Math.max(1,Math.round(i*t*10)/10);n["font-size"]=`${o}`}return Array.isArray(e.children)&&(n.children=e.children.map(i=>ub(i,t))),n}function PC(e){const t=Oe(e);return t.length!==1?!1:F.isText(t[0])}function CC(e,t){const n=Oe(e);if(n.length!==1||!F.isText(n[0]))return null;const i=n[0],o=fe.getRectangleByPoints(i.points),s=jC(o,t);return s?(pr=JSON.parse(JSON.stringify(i)),Hl={...o},{element:i,rectangle:o,handle:s.handle,cursorClass:s.cursorClass}):null}function AC(e,t,n){const{element:i,rectangle:o,handle:s}=t,{startPoint:r,endPoint:a}=n;if(!o||!pr||!Hl)return;const c=a[0]-r[0],u=a[1]-r[1],d=Eo(o,s,c,u,!0,20),m=d.width/Hl.width;if(m<=0)return;const f=ub(pr.text,m),g=(pr.textHeight||cb*1.4)*m,b=[[d.x,d.y],[d.x+d.width,d.y+d.height]],x=e.children.findIndex(y=>y.id===i.id);x>=0&&ce.setNode(e,{points:b,text:f,textHeight:g,autoSize:!1},[x])}const MC=e=>Ii(e,{key:"text-resize",canResize:()=>PC(e),hitTest:t=>CC(e,t),onResize:(t,n)=>AC(e,t,n)});function IC(e){return e.some(n=>Xe.isFreehand(n)||Je.isPenPath(n))}function VC(e){const t=Oe(e);if(t.length<2||!IC(t))return null;try{return qt(e,t,!1)}catch{return null}}const UC=()=>{const e=bt(),[t,n]=p.useState([]),[i,o]=p.useState(!1),[s,r]=p.useState(!1),a=p.useRef(!1),c=p.useCallback(()=>{const m=ss(e)||as(e)||os(e);if(r(m),m)return;Oe(e);const f=VC(e);if(!f){o(!1);return}const g=[{x:f.x,y:f.y,cursor:"nwse-resize"},{x:f.x+f.width,y:f.y,cursor:"nesw-resize"},{x:f.x+f.width,y:f.y+f.height,cursor:"nwse-resize"},{x:f.x,y:f.y+f.height,cursor:"nesw-resize"}].map(b=>{const x=Fo(e,[b.x,b.y]);return{x:x[0],y:x[1],cursor:b.cursor}});n(g),o(!0)},[e]);if(p.useEffect(()=>{a.current=s},[s]),p.useEffect(()=>{c();let m,f=JSON.stringify(e.viewport),h=JSON.stringify(e.selection),g=e.children.length;const b=()=>{const x=JSON.stringify(e.viewport),y=JSON.stringify(e.selection),N=e.children.length,w=ss(e)||as(e)||os(e);(x!==f||y!==h||N!==g||w!==a.current)&&(f=x,h=y,g=N,c()),m=requestAnimationFrame(b)};return m=requestAnimationFrame(b),()=>{cancelAnimationFrame(m)}},[e,c]),!i||t.length===0||s)return null;const u=pi,d=u/2;return l.jsxDEV("div",{className:K("multi-selection-handles",It),children:t.map((m,f)=>l.jsxDEV("div",{className:"multi-selection-handle",style:{left:m.x-d,top:m.y-d,width:u,height:u,cursor:m.cursor}},f,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/multi-selection-handles/multi-selection-handles.tsx",lineNumber:169,columnNumber:9},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/multi-selection-handles/multi-selection-handles.tsx",lineNumber:167,columnNumber:5},void 0)},db=p.createContext(null),RC=typeof window<"u"?Math.max(375,window.innerWidth*.5):600,qC=({children:e})=>{const t=p.useRef(null),n=p.useRef(null),[i,o]=p.useState([]),[s,r]=p.useState(!1),[a,c]=p.useState(RC),u=p.useCallback(m=>{n.current=m},[]),d=p.useCallback(async(m,f)=>{n.current?await n.current(m,f):console.warn("[ChatDrawerContext] No retry handler registered")},[]);return l.jsxDEV(db.Provider,{value:{chatDrawerRef:t,registerRetryHandler:u,executeRetry:d,selectedContent:i,setSelectedContent:o,isDrawerOpen:s,setIsDrawerOpen:r,drawerWidth:a,setDrawerWidth:c},children:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/contexts/ChatDrawerContext.tsx",lineNumber:79,columnNumber:5},void 0)};function mb(){const e=p.useContext(db);if(!e)throw new Error("useChatDrawer must be used within a ChatDrawerProvider");return e}function LC(){const{chatDrawerRef:e,registerRetryHandler:t,executeRetry:n,selectedContent:i,setSelectedContent:o,isDrawerOpen:s,setIsDrawerOpen:r,drawerWidth:a,setDrawerWidth:c}=mb();return{openChatDrawer:()=>{var u;(u=e.current)==null||u.open()},closeChatDrawer:()=>{var u;(u=e.current)==null||u.close()},toggleChatDrawer:()=>{var u;(u=e.current)==null||u.toggle()},sendMessageToChatDrawer:async u=>{var d;await((d=e.current)==null?void 0:d.sendMessage(u))},sendWorkflowMessage:async u=>{var d;await((d=e.current)==null?void 0:d.sendWorkflowMessage(u))},updateWorkflowMessage:u=>{var d;(d=e.current)==null||d.updateWorkflowMessage(u)},appendAgentLog:u=>{var d;(d=e.current)==null||d.appendAgentLog(u)},updateThinkingContent:u=>{var d;(d=e.current)==null||d.updateThinkingContent(u)},isChatDrawerOpen:()=>{var u;return((u=e.current)==null?void 0:u.isOpen())??!1},isDrawerOpen:s,setIsDrawerOpen:r,drawerWidth:a,setDrawerWidth:c,registerRetryHandler:t,retryWorkflowFromStep:async(u,d)=>{await n(u,d)},selectedContent:i,setSelectedContent:o}}class BC{constructor(){this.board=null}setBoard(t){this.board=t}getBoard(){return this.board||console.error("❌ Board instance not set. Call testToolbox.setBoard(board) first"),this.board}insertBananaPrompt(){const t=this.getBoard();if(!t)return;const n=Rs.getToolById("banana-prompt");if(!n){console.error('❌ Tool "banana-prompt" not found');return}Oi.insertTool(t,n.id,n.url,[100,100],{width:n.defaultWidth||Fi.defaultWidth,height:n.defaultHeight||Fi.defaultHeight},{name:n.name,category:n.category,permissions:n.permissions})}insertXiaohongshuTool(){const t=this.getBoard();if(!t)return;const n=Rs.getToolById("xiaohongshu-tool");if(!n){console.error('❌ Tool "xiaohongshu-tool" not found');return}Oi.insertTool(t,n.id,n.url,[300,300],{width:n.defaultWidth||Fi.defaultWidth,height:n.defaultHeight||Fi.defaultHeight},{name:n.name,category:n.category,permissions:n.permissions})}insertToolById(t,n=200,i=200){const o=this.getBoard();if(!o)return;const s=Rs.getToolById(t);if(!s){console.error(`❌ Tool "${t}" not found`);return}Oi.insertTool(o,s.id,s.url,[n,i],{width:s.defaultWidth||Fi.defaultWidth,height:s.defaultHeight||Fi.defaultHeight},{name:s.name,category:s.category,permissions:s.permissions})}listAllTools(){Rs.getAvailableTools().forEach((n,i)=>{})}getAllToolElements(){const t=this.getBoard();if(!t)return;Oi.getAllTools(t).forEach((i,o)=>{})}removeAllTools(){const t=this.getBoard();if(!t)return;Oi.getAllTools(t).forEach(i=>{Oi.removeTool(t,i.id)})}help(){}}const pb=new BC;typeof window<"u"&&(window.testToolbox=pb);const OC={width:200,height:150,position:"bottom-right",margin:16,collapsible:!0,defaultExpanded:!1,backgroundColor:"rgba(255, 255, 255, 0.95)",borderColor:"rgba(0, 0, 0, 0.1)",viewportColor:"rgba(90, 79, 207, 0.3)",elementColor:"rgba(0, 0, 0, 0.5)"},FC={autoHideDelay:3e3},HC=e=>{if(!e)return null;const[t,n]=e.trim().split(/[\s,]+/).map(i=>Number(i));return!Number.isFinite(t)||!Number.isFinite(n)?null:{x:t,y:n}},zC=e=>{const t=e.viewport.zoom;if(!Number.isFinite(t)||t<=0)return null;try{const n=q.getViewportContainer(e),i=q.getHost(e),o=HC(i.getAttribute("viewBox"));return o?[n.scrollLeft/t+o.x,n.scrollTop/t+o.y]:null}catch{return null}},fb=e=>{const t=zC(e);return t||vs(e)||e.viewport.origination||[0,0]},GC=e=>{const[t,n]=fb(e);return{zoom:e.viewport.zoom,originX:t,originY:n}},WC=({board:e,config:t,className:n,displayMode:i="auto",autoTriggerConfig:o})=>{const s=p.useRef(null),r=p.useRef(null);p.useRef(null);const a={...OC,...t},c={...FC,...o},[u,d]=p.useState(()=>({expanded:i==="always"?!0:a.defaultExpanded,dragging:!1,autoMode:i==="auto",manuallyExpanded:!1})),m=p.useRef({isDragging:!1,startPoint:null}),f=p.useRef(null),[h,g]=p.useState(null),b=p.useRef(null),[x,y]=p.useState(!1),N=120,w=p.useRef(0),D=p.useRef(null),S=p.useCallback(()=>{if(!e||!e.children)return[];const Y=[];return e.children.forEach(v=>{try{let H=null;v.points&&Array.isArray(v.points)?H=fe.getRectangleByPoints(v.points):v.x!==void 0&&v.y!==void 0&&(H={x:v.x,y:v.y,width:v.width||100,height:v.height||100}),H&&H.width>0&&H.height>0&&Y.push({id:v.id,bounds:H,type:v.type})}catch(H){console.warn("Failed to get bounds for element:",v.id,H)}}),Y},[e]),E=p.useCallback(()=>{const v=q.getBoardContainer(e).getBoundingClientRect(),H=e.viewport.zoom,O=fb(e),pe=O[0],me=O[1],_=v.width/H,L=v.height/H;return{x:pe,y:me,width:_,height:L}},[e]),k=p.useRef(u.expanded);k.current=u.expanded;const V=p.useRef(null),R=p.useRef(1);p.useEffect(()=>{if(i==="always"){k.current||d(v=>({...v,expanded:!0}));return}if(i!=="auto")return;const Y=setInterval(()=>{const v=GC(e),H=D.current;if(!H){D.current=v;return}const O=Math.abs(v.zoom-H.zoom)>.001,pe=Math.abs(v.originX-H.originX)>.5||Math.abs(v.originY-H.originY)>.5;(O||pe)&&(D.current=v,w.current=Date.now(),k.current||d(_=>({..._,expanded:!0,manuallyExpanded:!1})))},100);return()=>{clearInterval(Y)}},[i,e]),p.useEffect(()=>{if(i!=="auto"||!u.expanded||u.manuallyExpanded||u.dragging)return;const Y=setTimeout(()=>{d(v=>!v.autoMode||v.manuallyExpanded||v.dragging?v:{...v,expanded:!1})},c.autoHideDelay);return()=>{clearTimeout(Y)}},[i,u.expanded,u.manuallyExpanded,u.dragging,c.autoHideDelay]);const z=p.useCallback((Y,v)=>{if(Y.length===0)return{x:v.x-200,y:v.y-200,width:v.width+400,height:v.height+400};let H=v.x,O=v.y,pe=v.x+v.width,me=v.y+v.height;Y.forEach(L=>{const{x:B,y:$,width:Q,height:ee}=L.bounds;H=Math.min(H,B),O=Math.min(O,$),pe=Math.max(pe,B+Q),me=Math.max(me,$+ee)});const _=100;return{x:H-_,y:O-_,width:pe-H+_*2,height:me-O+_*2}},[]),I=p.useCallback(Y=>{const H=(a.width-20)/Y.width,O=(a.height-20)/Y.height;return Math.min(H,O)},[a.width,a.height]),U=p.useCallback((Y,v,H,O)=>{const me=(Y-H.x)*O+10,_=(v-H.y)*O+10;return[me,_]},[]),A=p.useCallback((Y,v,H,O)=>{const me=(Y-10)/O+H.x,_=(v-10)/O+H.y;return[me,_]},[]),j=p.useCallback((Y,v,H)=>{if(100*H<5)return;Y.strokeStyle="rgba(0, 0, 0, 0.05)",Y.lineWidth=.5;const me=Math.floor(v.x/100)*100,_=Math.floor(v.y/100)*100,L=v.x+v.width,B=v.y+v.height;for(let $=me;$<=L;$+=100){const[Q]=U($,0,v,H);Y.beginPath(),Y.moveTo(Q,0),Y.lineTo(Q,a.height),Y.stroke()}for(let $=_;$<=B;$+=100){const[,Q]=U(0,$,v,H);Y.beginPath(),Y.moveTo(0,Q),Y.lineTo(a.width,Q),Y.stroke()}},[U,a.width,a.height]),C=p.useCallback(()=>{const Y=s.current;if(!Y)return;const v=Y.getContext("2d");if(!v)return;v.clearRect(0,0,a.width,a.height);const H=S(),O=E();if(H.length===0&&!O){v.fillStyle="#999",v.font="12px sans-serif",v.textAlign="center",v.textBaseline="middle",v.fillText("空画布",a.width/2,a.height/2);return}const pe=z(H,O),me=I(pe);V.current=pe,R.current=me,j(v,pe,me),v.fillStyle=a.elementColor,v.strokeStyle="rgba(0, 0, 0, 0.1)",v.lineWidth=.5,H.forEach(Z=>{const{x:te,y:le,width:qe,height:$e}=Z.bounds,[ne,_e]=U(te,le,pe,me),Ee=qe*me,xe=$e*me;v.fillRect(ne,_e,Ee,xe),v.strokeRect(ne,_e,Ee,xe)});const[_,L]=U(O.x,O.y,pe,me),B=O.width*me,$=O.height*me;v.fillStyle=a.viewportColor,v.fillRect(_,L,B,$),v.strokeStyle=a.viewportColor.replace("0.3","1"),v.lineWidth=2,v.strokeRect(_,L,B,$);const Q=8;v.fillStyle=a.viewportColor.replace("0.3","0.8"),v.fillRect(_,L,Q,2),v.fillRect(_,L,2,Q),v.fillRect(_+B-Q,L,Q,2),v.fillRect(_+B-2,L,2,Q),v.fillRect(_,L+$-2,Q,2),v.fillRect(_,L+$-Q,2,Q),v.fillRect(_+B-Q,L+$-2,Q,2),v.fillRect(_+B-2,L+$-Q,2,Q);const ee=b.current;if(ee){const Z=ee.x-B/2,te=ee.y-$/2;v.fillStyle="rgba(243, 156, 18, 0.15)",v.fillRect(Z,te,B,$),v.strokeStyle="rgba(243, 156, 18, 0.8)",v.lineWidth=2,v.strokeRect(Z,te,B,$)}},[e,a,S,E,z,I,U,j]),M=p.useCallback(Y=>{Y.preventDefault(),Y.stopPropagation();const v=s.current;if(!v||!V.current)return;const H=v.getBoundingClientRect(),O=Y.clientX-H.left,pe=Y.clientY-H.top;Nt.track("minimap_navigate",{action:"click",displayMode:i});const[me,_]=A(O,pe,V.current,R.current);m.current={isDragging:!0,startPoint:[O,pe]},d(L=>({...L,dragging:!0})),J(me,_)},[A,e]),J=p.useCallback((Y,v)=>{const O=q.getBoardContainer(e).getBoundingClientRect(),pe=e.viewport.zoom,me=Y-O.width/(2*pe),_=v-O.height/(2*pe);ge.updateViewport(e,[me,_],pe),requestAnimationFrame(()=>C())},[e,C]),ye=p.useCallback(Y=>{if(!m.current.isDragging||!V.current)return;Y.preventDefault(),Y.stopPropagation();const v=s.current;if(!v)return;const H=v.getBoundingClientRect(),O=Y.clientX-H.left,pe=Y.clientY-H.top,[me,_]=A(O,pe,V.current,R.current);J(me,_)},[A,J]),P=p.useCallback(()=>{m.current.isDragging&&Nt.track("minimap_navigate",{action:"drag",displayMode:i}),m.current={isDragging:!1,startPoint:null},d(Y=>({...Y,dragging:!1}))},[i]),G=p.useCallback((Y,v)=>{const H=f.current;if(!H||!V.current)return;const O=H.getContext("2d");if(!O)return;const[pe,me]=A(Y,v,V.current,R.current),_=E(),L=_.width,B=_.height,$=L,Q=B;O.clearRect(0,0,N,N),O.fillStyle="#fff",O.fillRect(0,0,N,N);const ee=pe-$/2,Z=me-Q/2,te=N/$,le=N/Q,qe=Math.min(te,le),$e=(N-$*qe)/2,ne=(N-Q*qe)/2;S().forEach(Ee=>{const{bounds:xe}=Ee;if(xe.x+xe.width>=ee&&xe.x<=ee+$&&xe.y+xe.height>=Z&&xe.y<=Z+Q){const yt=(xe.x-ee)*qe+$e,Vt=(xe.y-Z)*qe+ne,jt=xe.width*qe,Dt=xe.height*qe;O.fillStyle="rgba(0, 0, 0, 0.6)",O.fillRect(yt,Vt,jt,Dt)}}),O.strokeStyle="rgba(90, 79, 207, 0.6)",O.lineWidth=1,O.setLineDash([4,4]),O.beginPath(),O.moveTo(0,N/2),O.lineTo(N,N/2),O.stroke(),O.beginPath(),O.moveTo(N/2,0),O.lineTo(N/2,N),O.stroke(),O.setLineDash([]),O.strokeStyle="rgba(90, 79, 207, 0.3)",O.lineWidth=2,O.strokeRect(0,0,N,N)},[S,E,A]),de=p.useCallback(()=>{u.dragging||y(!0)},[u.dragging]),W=p.useCallback(()=>{y(!1),g(null),b.current=null},[]),ae=p.useCallback(Y=>{if(u.dragging){y(!1),b.current=null;return}const v=s.current;if(!v)return;const H=v.getBoundingClientRect(),O=Y.clientX-H.left,pe=Y.clientY-H.top,me={x:O,y:pe};g(me),b.current=me,y(!0),G(O,pe),C()},[u.dragging,G,C]),oe=p.useRef(!1),ve=p.useCallback(Y=>{oe.current=!0;const v=s.current;if(!v)return;const H=Y.touches[0],O=v.getBoundingClientRect(),pe=H.clientX-O.left,me=H.clientY-O.top,_={x:pe,y:me};g(_),b.current=_,y(!0),G(pe,me),C()},[G,C]),ke=p.useCallback(Y=>{const v=s.current;if(!v)return;const H=Y.touches[0],O=v.getBoundingClientRect(),pe=H.clientX-O.left,me=H.clientY-O.top,_={x:pe,y:me};g(_),b.current=_,y(!0),G(pe,me),C()},[G,C]),Fe=p.useCallback(()=>{oe.current=!1,setTimeout(()=>{oe.current||(y(!1),g(null),b.current=null,C())},500)},[C]);p.useEffect(()=>{if(!u.expanded)return;C();const Y=setInterval(()=>{C()},100);return()=>{clearInterval(Y)}},[e,u.expanded,C]);const X=p.useCallback(()=>{d(Y=>{const v=!Y.expanded;return{...Y,expanded:v,manuallyExpanded:v}})},[]),Ce={bottom:a.position.includes("bottom")?a.margin:void 0,top:a.position.includes("top")?a.margin:void 0,right:a.position.includes("right")?a.margin:void 0,left:a.position.includes("left")?a.margin:void 0},We=x&&(oe.current||!u.dragging),mt=h?{position:"absolute",right:a.width+8,top:Math.max(0,Math.min(h.y-N/2,a.height-N)),width:N,height:N,opacity:We?1:0,pointerEvents:"none",transition:"opacity 0.15s ease-out, top 0.1s ease-out"}:{display:"none"};return l.jsxDEV("div",{ref:r,className:`minimap ${u.expanded?"minimap--expanded":"minimap--collapsed"} ${i==="auto"?"minimap--auto":""} ${n||""}`,style:{...Ce,zIndex:tn.MINIMAP},"data-track":"minimap_container",children:[u.expanded&&l.jsxDEV("div",{className:"minimap__content",children:[l.jsxDEV("canvas",{ref:s,width:a.width,height:a.height,className:"minimap__canvas",onPointerDown:M,onPointerMove:ye,onPointerUp:P,onPointerLeave:P,onMouseEnter:de,onMouseLeave:W,onMouseMove:ae,onTouchStart:ve,onTouchMove:ke,onTouchEnd:Fe,style:{cursor:u.dragging?"grabbing":"pointer"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/minimap/Minimap.tsx",lineNumber:868,columnNumber:11},void 0),l.jsxDEV("div",{className:"minimap__preview",style:mt,children:l.jsxDEV("canvas",{ref:f,width:N,height:N,className:"minimap__preview-canvas"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/minimap/Minimap.tsx",lineNumber:890,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/minimap/Minimap.tsx",lineNumber:889,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/minimap/Minimap.tsx",lineNumber:867,columnNumber:9},void 0),a.collapsible&&l.jsxDEV("button",{className:`minimap__toggle ${u.expanded?"minimap__toggle--expanded":""}`,onClick:X,title:u.expanded?"折叠小地图":"展开小地图","data-track":"minimap_click_toggle",children:l.jsxDEV(_y,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/minimap/Minimap.tsx",lineNumber:907,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/minimap/Minimap.tsx",lineNumber:901,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/minimap/Minimap.tsx",lineNumber:858,columnNumber:5},void 0)},dp=10,$C=3e3,XC=e=>{var n;const t=e?vs(e)||e.viewport.origination:void 0;return{zoom:((n=e==null?void 0:e.viewport)==null?void 0:n.zoom)||1,originX:(t==null?void 0:t[0])||0,originY:(t==null?void 0:t[1])||0}},KC=({showMinimap:e=!0,container:t})=>{var V;const n=bt(),{t:i}=je(),{isDrawerOpen:o,drawerWidth:s}=LC(),[r,a]=p.useState(!1),[c,u]=p.useState(!0),[d,m]=p.useState(!1),f=p.useRef(null),h=p.useRef(null),g=p.useRef(null),b=p.useMemo(()=>o?s+dp:dp,[o,s]),x=p.useCallback(()=>{ge.updateZoom(n,n.viewport.zoom-.1)},[n]),y=p.useCallback(()=>{ge.updateZoom(n,n.viewport.zoom+.1)},[n]),N=p.useCallback(()=>{ge.fitViewport(n),a(!1)},[n]),w=p.useCallback(()=>{ge.updateZoom(n,1),a(!1)},[n]),D=p.useCallback(()=>{gc(n),a(!1)},[n]),S=p.useCallback(()=>{u(R=>{const z=!R;return m(z),z})},[]);p.useEffect(()=>{if(!c||!n)return;const R=q.getBoardContainer(n);if(!R)return;const z=I=>{var A;const U=I.target;(A=f.current)!=null&&A.contains(U)||(u(!1),m(!1))};return R.addEventListener("mousedown",z),()=>{R.removeEventListener("mousedown",z)}},[c,n]),p.useEffect(()=>{if(!e||!n)return;const R=setInterval(()=>{const z=XC(n),I=h.current;if(!I){h.current=z;return}const U=Math.abs(z.zoom-I.zoom)>.001,A=Math.abs(z.originX-I.originX)>.5||Math.abs(z.originY-I.originY)>.5;(U||A)&&(h.current=z,c||(u(!0),m(!1)),g.current&&clearTimeout(g.current))},100);return()=>{clearInterval(R)}},[e,n,c]),p.useEffect(()=>{if(!(!c||d))return g.current=setTimeout(()=>{u(!1)},$C),()=>{g.current&&clearTimeout(g.current)}},[c,d]);const E=p.useCallback(()=>{a(R=>!R)},[]),k=Math.round((((V=n==null?void 0:n.viewport)==null?void 0:V.zoom)||1)*100);return l.jsxDEV("div",{className:"view-navigation",style:{right:b,zIndex:tn.VIEW_NAVIGATION},ref:f,"data-testid":"view-navigation",children:[l.jsxDEV("div",{className:"view-navigation__zoom",children:[l.jsxDEV(_t,{content:i("zoom.out"),showArrow:!1,children:l.jsxDEV("button",{className:"view-navigation__zoom-btn",onClick:x,"aria-label":i("zoom.out"),"data-track":"view_nav_zoom_out","data-testid":"zoom-out",children:l.jsxDEV(jy,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:217,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:210,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:209,columnNumber:9},void 0),l.jsxDEV(st,{sideOffset:8,open:r,onOpenChange:a,placement:"bottom",children:[l.jsxDEV(_t,{content:i("zoom.fit"),showArrow:!1,children:l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV("button",{className:"view-navigation__zoom-percent",onClick:E,"aria-label":i("zoom.fit"),"data-track":"view_nav_zoom_menu","data-testid":"zoom-display",children:[k,"%"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:229,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:228,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:227,columnNumber:11},void 0),l.jsxDEV(at,{container:t,style:{zIndex:tn.POPOVER},children:l.jsxDEV("div",{className:"view-navigation-zoom-menu",children:[l.jsxDEV("button",{className:"zoom-menu-item",onClick:N,"data-track":"view_nav_zoom_fit",children:[l.jsxDEV("span",{className:"zoom-menu-item__label",children:i("zoom.fit")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:247,columnNumber:17},void 0),l.jsxDEV("span",{className:"zoom-menu-item__shortcut",children:"⌘⇧="},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:248,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:242,columnNumber:15},void 0),l.jsxDEV("button",{className:"zoom-menu-item",onClick:D,"data-track":"view_nav_zoom_fit_frame",children:l.jsxDEV("span",{className:"zoom-menu-item__label",children:i("zoom.fitFrame")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:255,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:250,columnNumber:15},void 0),l.jsxDEV("button",{className:"zoom-menu-item",onClick:w,"data-track":"view_nav_zoom_100",children:[l.jsxDEV("span",{className:"zoom-menu-item__label",children:i("zoom.100")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:262,columnNumber:17},void 0),l.jsxDEV("span",{className:"zoom-menu-item__shortcut",children:"⌘0"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:263,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:257,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:241,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:240,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:221,columnNumber:9},void 0),l.jsxDEV(_t,{content:i("zoom.in"),showArrow:!1,children:l.jsxDEV("button",{className:"view-navigation__zoom-btn",onClick:y,"aria-label":i("zoom.in"),"data-track":"view_nav_zoom_in","data-testid":"zoom-in",children:l.jsxDEV(Py,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:277,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:270,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:269,columnNumber:9},void 0),e&&l.jsxDEV(_t,{content:c?"折叠小地图":"展开小地图",showArrow:!1,children:l.jsxDEV("button",{className:`view-navigation__minimap-toggle ${c?"view-navigation__minimap-toggle--expanded":""}`,onClick:S,"aria-label":c?"折叠小地图":"展开小地图","data-track":"view_nav_minimap_toggle",children:l.jsxDEV(Cy,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:293,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:287,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:283,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:208,columnNumber:7},void 0),e&&c&&l.jsxDEV("div",{className:"view-navigation__minimap",children:l.jsxDEV(WC,{board:n,displayMode:"always",config:{width:180,height:120,position:"top-right",margin:0,collapsible:!1,defaultExpanded:!0}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:302,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:301,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/view-navigation/ViewNavigation.tsx",lineNumber:198,columnNumber:5},void 0)},YC=p.lazy(()=>Re(()=>import("./tool-windows-DOIu9TAD.js").then(e=>e.pF),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.MediaLibraryModal}))),ZC=({position:e,visible:t,onClose:n,onOpenMediaLibrary:i})=>{const o=bt(),{t:s}=je(),r=hc(),a=q.getBoardContainer(o),[c,u]=p.useState({freehand:!1,arrow:!1,shape:!1}),[d,m]=p.useState(!1),{refs:f,floatingStyles:h}=rc({placement:"bottom",middleware:[ac(12),nf({padding:16}),lc({fallbackPlacements:["top","right","left"]})]});p.useEffect(()=>{if(e&&t){const[I,U]=e;f.setPositionReference({getBoundingClientRect(){return{width:1,height:1,x:I,y:U,top:U,left:I,right:I+1,bottom:U+1}}})}},[e,t,f]),p.useEffect(()=>{if(!t)return;const I=A=>{const j=A.target,C=j.closest(".quick-creation-toolbar"),M=j.closest(".quick-toolbar-popover")||j.closest("[data-radix-popper-content-wrapper]")||j.closest(".plait-popover")||j.closest(".shape-picker")||j.closest(".arrow-picker")||j.closest(".freehand-panel"),J=j.closest(".media-library-modal");!C&&!M&&!J&&n()},U=setTimeout(()=>{document.addEventListener("mousedown",I)},100);return()=>{clearTimeout(U),document.removeEventListener("mousedown",I)}},[t,n]);const g=()=>{u({freehand:!1,arrow:!1,shape:!1})},b=I=>{u({freehand:!1,arrow:!1,shape:!1,[I]:!0})},x=()=>{g(),jn(o),ct(o,null),ge.updatePointerType(o,Me.text),r(Me.text),n()},y=()=>{g(),jn(o),ct(o,St.dnd),ge.updatePointerType(o,Pi.mind),r(Pi.mind),n()},N=()=>{g(),Jr(o),n()},w=async I=>{try{I.type===qn.IMAGE?await uc(o,I.url):I.type===qn.VIDEO?await If(o,I.url):I.type===qn.AUDIO&&await tc(o,I.url,{title:I.name,duration:I.duration,previewImageUrl:I.thumbnail,prompt:I.prompt,mv:I.modelName,clipId:I.clipId,providerTaskId:I.providerTaskId}),se.success(s("toolbar.assetInserted")||"素材已插入到画板"),m(!1),n()}catch(U){console.error("Failed to insert asset:",U),se.error(s("toolbar.assetInsertFailed")||"插入素材失败")}},D=()=>{if(g(),i){i({mode:ri.SELECT,onSelect:w,selectButtonText:s("toolbar.insert")||"插入"}),n();return}m(!0)},[S,E]=p.useState(ot.feltTipPen),k=300,V=p.useRef(null),R=p.useCallback(()=>{V.current&&(clearTimeout(V.current),V.current=null)},[]);p.useEffect(()=>()=>{R()},[R]);const z=(I,U,A,j)=>l.jsxDEV(st,{open:c[U],sideOffset:12,onOpenChange:C=>{C||g()},placement:"bottom",children:[l.jsxDEV(rt,{asChild:!0,children:l.jsxDEV("div",{onPointerEnter:()=>{R(),V.current=setTimeout(()=>{b(U)},k)},onPointerLeave:()=>{R()},children:l.jsxDEV(ie,{type:"icon",visible:!0,selected:c[U],icon:I,"aria-label":A,"data-track":`quick_toolbar_click_${U}`,onPointerDown:()=>{R(),b(U),jn(o),U==="freehand"&&(ct(o,St.dnd),ge.updatePointerType(o,S),r(S))},onPointerUp:()=>{U==="freehand"&&ct(o,St.drawing)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:304,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:290,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:289,columnNumber:9},void 0),l.jsxDEV(at,{container:a,style:{zIndex:tn.POPOVER},className:"quick-toolbar-popover",children:j},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:333,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:279,columnNumber:7},void 0);return t?l.jsxDEV(l.Fragment,{children:[l.jsxDEV(Ye,{padding:1,className:`quick-creation-toolbar ${It}`,ref:f.setFloating,style:h,children:l.jsxDEV(dt.Row,{gap:1,children:[l.jsxDEV(ie,{type:"icon",visible:!0,icon:l.jsxDEV(Nc,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:359,columnNumber:19},void 0),"aria-label":s("toolbar.text"),"data-track":"quick_toolbar_click_text",onPointerUp:x},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:356,columnNumber:11},void 0),l.jsxDEV(ie,{type:"icon",visible:!0,icon:l.jsxDEV($r,{size:24},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:369,columnNumber:19},void 0),"aria-label":s("toolbar.image"),"data-track":"quick_toolbar_click_image",onPointerUp:N},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:366,columnNumber:11},void 0),l.jsxDEV(ie,{type:"icon",visible:!0,icon:l.jsxDEV(Wr,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:379,columnNumber:19},void 0),"aria-label":s("toolbar.mediaLibrary"),"data-track":"quick_toolbar_click_media_library",onPointerUp:D},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:376,columnNumber:11},void 0),z(l.jsxDEV(vo,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:387,columnNumber:13},void 0),"freehand",s("toolbar.pen"),l.jsxDEV(Zc,{onPointerUp:I=>{g(),E(I),ge.updatePointerType(o,I),r(I),n()}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:390,columnNumber:13},void 0)),z(l.jsxDEV(xc,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:405,columnNumber:13},void 0),"arrow",s("toolbar.arrow"),l.jsxDEV(Jc,{onPointerUp:I=>{g(),ge.updatePointerType(o,I),r(I),n()}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:408,columnNumber:13},void 0)),z(l.jsxDEV(bc,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:420,columnNumber:13},void 0),"shape",s("toolbar.shape"),l.jsxDEV(Qc,{onPointerUp:I=>{g(),ge.updatePointerType(o,I),r(I),n()}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:423,columnNumber:13},void 0)),l.jsxDEV(ie,{type:"icon",visible:!0,icon:l.jsxDEV(xr,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:437,columnNumber:19},void 0),"aria-label":s("toolbar.mind"),"data-track":"quick_toolbar_click_mind",onPointerUp:y},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:434,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:354,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:348,columnNumber:7},void 0),d&&l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(YC,{isOpen:d,onClose:()=>{m(!1)},mode:ri.SELECT,onSelect:w,selectButtonText:s("toolbar.insert")||"插入"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:448,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:447,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/toolbar/quick-creation-toolbar/quick-creation-toolbar.tsx",lineNumber:347,columnNumber:5},void 0):null},QC=({children:e,onOpenMediaLibrary:t})=>{const[n,i]=p.useState(!1),{confirm:o,confirmDialog:s}=Gr(),r=p.useCallback(()=>{n||(i(!0),o({title:"缓存空间已满",description:"图片缓存空间已满,无法继续缓存新图片。是否打开素材库清理缓存?",confirmText:"打开素材库",cancelText:"稍后处理",confirmTheme:"warning"}).then(a=>{i(!1),a&&(t==null||t())}))},[o,n,t]);return Ay(r),l.jsxDEV(l.Fragment,{children:[e,s]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/cache-quota-provider/CacheQuotaProvider.tsx",lineNumber:52,columnNumber:5},void 0)},Mr={visible:!1,position:{x:0,y:0},sourceElement:null,currentShape:null,hitIndex:-1,hitPoint:null,mode:"hover",arrowLineElement:null,arrowLineEndPoint:null},hb=new WeakMap,zl=new WeakMap;function Ir(e){return hb.get(e)||Mr}function $o(e,t){hb.set(e,t);const n=zl.get(e);n&&n(t)}function JC(e,t){return zl.set(e,t),()=>{zl.delete(e)}}function ru(e){$o(e,Mr)}const Uo=100;function e2(e,t,n,i,o){const s=qy(n),r=fe.getRectangleByPoints(t.points),a=r.width,c=r.height,u=r.x+a/2,d=r.y+c/2,f=fe.getEdgeCenterPoints(r)[n];let h,g;switch(s){case ut.right:h=u+a/2+Uo+a/2,g=d;break;case ut.bottom:h=u,g=d+c/2+Uo+c/2;break;case ut.left:h=u-a/2-Uo-a/2,g=d;break;case ut.top:h=u,g=d-c/2-Uo-c/2;break;default:h=u+a/2+Uo+a/2,g=d}const b=[[h-a/2,g-c/2],[h+a/2,g+c/2]],x=kc(e,b,o);if(x.fill="#ffffff",F.isShapeElement(t)&&!F.isText(t)){const I=t;I.angle!==void 0&&(x.angle=I.angle),I.fill&&I.fill!=="none"&&(x.fill=I.fill),I.strokeColor!==void 0&&(x.strokeColor=I.strokeColor),I.strokeStyle!==void 0&&(x.strokeStyle=I.strokeStyle),I.strokeWidth!==void 0&&(x.strokeWidth=I.strokeWidth)}const y=yr(f,t)||f,N=F.isShapeElement(t)?cs(e,y,t):void 0;let w;switch(s){case ut.right:w=3;break;case ut.bottom:w=0;break;case ut.left:w=1;break;case ut.top:w=2;break;default:w=3}const D=fe.getRectangleByPoints(x.points),E=fe.getEdgeCenterPoints(D)[w],k=yr(E,x)||E,V=cs(e,k,x),R=Yf(Dn.straight,[y,k],{marker:us.none,connection:N,boundId:t.id},{marker:us.arrow,connection:V,boundId:x.id},[],{});ce.insertNode(e,R,[e.children.length]),Kf(e,x),ru(e);const z=x.id;setTimeout(()=>{const I=e.children.findIndex(A=>A.id===z),U=I>=0?e.children[I]:null;U&&(ai(e),ji(e,U),ge.updatePointerType(e,Et.selection),ce.setNode(e,{_forceRender:Date.now()},[I]),ce.setNode(e,{_forceRender:void 0},[I]))},50)}function t2(e,t,n,i){var g;let o=100,s=100;const r=t,a=(g=r.source)==null?void 0:g.boundId;if(a){const b=e.children.find(x=>x.id===a);if(b&&F.isShapeElement(b)){const x=fe.getRectangleByPoints(b.points);o=x.width,s=x.height}}const c=[[n[0]-o/2,n[1]-s/2],[n[0]+o/2,n[1]+s/2]],u=kc(e,c,i);u.fill="#ffffff";const d=fe.getRectangleByPoints(u.points),m=fe.getEdgeCenterPoints(d),f=r.points||[];if(f.length>=2){const b=f[0],x=f[f.length-1],y=x[0]-b[0],N=x[1]-b[1];let w;Math.abs(y)>Math.abs(N)?w=y>0?3:1:w=N>0?0:2;const D=m[w],S=cs(e,D,u),E=e.children.findIndex(k=>k.id===t.id);E!==-1&&ce.setNode(e,{target:{marker:us.arrow,connection:S,boundId:u.id},points:[b,D]},[E])}Kf(e,u),ru(e);const h=u.id;setTimeout(()=>{const b=e.children.findIndex(y=>y.id===h),x=b>=0?e.children[b]:null;x&&(ai(e),ji(e,x),ge.updatePointerType(e,Et.selection),ce.setNode(e,{_forceRender:Date.now()},[b]),ce.setNode(e,{_forceRender:void 0},[b]))},50)}const n2=e=>{const{pointerMove:t,pointerLeave:n,globalPointerUp:i}=e;let o=null,s=-1,r=e.children.length,a={x:0,y:0};return e.pointerMove=c=>{var D;a={x:c.clientX,y:c.clientY},o&&(clearTimeout(o),o=null);const u=Xf(e),d=u.length===1&&u[0],m=Ir(e);if(!d||!F.isShapeElement(d)||F.isText(d)){if(m.visible&&m.mode==="hover"&&$o(e,{...Mr}),s=-1,d&&F.isShapeElement(d)&&!no.getElementRef(d))return;t(c);return}if(!no.getElementRef(d)){s=-1;return}const h=My(e,c.x,c.y),g=Iy(e,d,!0),b=Vy(e,h,d,!0)||h,x=Uy(b,g),y=g[x];if(y){if(x!==s||!m.visible){s=x;const S=c.clientX,E=c.clientY;o=setTimeout(()=>{const k=F.isImage(d)?Me.rectangle:d.shape||Me.rectangle;$o(e,{visible:!0,position:{x:S-140,y:E+20},sourceElement:d,currentShape:k,hitIndex:x,hitPoint:y,mode:"hover"})},50)}}else s=-1,m.visible&&m.mode==="hover"&&(o=setTimeout(()=>{const S=Ir(e);S.visible&&S.mode==="hover"&&$o(e,{...Mr})},300));const N=no.getElementRef(d);(D=N==null?void 0:N.getGenerator)!=null&&D.call(N,Ry.key)&&t(c)},e.pointerLeave=c=>{o&&(clearTimeout(o),o=null),n(c)},e.globalPointerUp=c=>{var d;i(c);const u=e.children.length;if(u>r){const m=e.children[u-1];if(F.isArrowLine(m)){const f=m;if(!((d=f.target)==null?void 0:d.boundId)){const g=f.points||[];if(g.length>=2){const b=g[g.length-1];setTimeout(()=>{$o(e,{visible:!0,position:{x:a.x-140,y:a.y+20},sourceElement:null,currentShape:Me.rectangle,hitIndex:-1,hitPoint:null,mode:"arrowLine",arrowLineElement:m,arrowLineEndPoint:b})},50)}}}}r=e.children.length},e},Ro=100;function i2(e){switch(e){case"ArrowRight":return ut.right;case"ArrowDown":return ut.bottom;case"ArrowLeft":return ut.left;case"ArrowUp":return ut.top;default:return null}}function o2(e){switch(e){case ut.top:return 0;case ut.right:return 1;case ut.bottom:return 2;case ut.left:return 3;default:return 1}}function s2(e){return(e+2)%4}function r2(e,t,n,i,o,s){const r={x:t-i/2,y:n-o/2,width:i,height:o};for(const a of e.children)if(a.id!==s&&F.isDrawElement(a)&&!F.isArrowLine(a))try{const c=fe.getRectangleByPoints(a.points);if(r.x<c.x+c.width&&r.x+r.width>c.x&&r.y<c.y+c.height&&r.y+r.height>c.y)return!0}catch{}return!1}function a2(e,t,n){const i=fe.getRectangleByPoints(t.points),o=i.width,s=i.height,r=i.x+o/2,a=i.y+s/2;let c,u;switch(n){case ut.right:c=r+o/2+Ro+o/2,u=a;break;case ut.bottom:c=r,u=a+s/2+Ro+s/2;break;case ut.left:c=r-o/2-Ro-o/2,u=a;break;case ut.top:c=r,u=a-s/2-Ro-s/2;break;default:c=r+o/2+Ro+o/2,u=a}let d=0;const m=n===ut.right||n===ut.left?s+20:o+20;for(;r2(e,c,u,o,s,t.id)&&(d+=m,n===ut.right||n===ut.left?u=a+d:c=r+d,!(d>1e3)););const f=[[c-o/2,u-s/2],[c+o/2,u+s/2]],g=t.shape||"rectangle",b=kc(e,f,g);if(b.fill="#ffffff",F.isShapeElement(t)&&!F.isText(t)){const A=t;A.fill&&A.fill!=="none"&&(b.fill=A.fill),A.strokeColor!==void 0&&(b.strokeColor=A.strokeColor),A.strokeWidth!==void 0&&(b.strokeWidth=A.strokeWidth)}const x=o2(n),y=s2(x),w=fe.getEdgeCenterPoints(i)[x],D=yr(w,t)||w,S=F.isShapeElement(t)?cs(e,D,t):void 0,E=fe.getRectangleByPoints(b.points),V=fe.getEdgeCenterPoints(E)[y],R=yr(V,b)||V,z=cs(e,R,b),I=Yf(Dn.elbow,[D,R],{marker:us.none,connection:S,boundId:t.id},{marker:us.arrow,connection:z,boundId:b.id},[],{});ce.insertNode(e,I,[e.children.length]),ce.insertNode(e,b,[e.children.length]);const U=b.id;setTimeout(()=>{const A=e.children.find(j=>j.id===U);A&&(ai(e),ji(e,A),ge.updatePointerType(e,Et.selection),Zf(e,[c,u]))},50)}function l2(e,t){var o,s,r,a;const n=[],i=[];for(const c of e.children){if(!F.isArrowLine(c))continue;const u=c;if(((o=u.source)==null?void 0:o.boundId)===t.id&&((s=u.target)!=null&&s.boundId)){const d=e.children.find(m=>m.id===u.target.boundId);d&&i.push(d)}if(((r=u.target)==null?void 0:r.boundId)===t.id&&((a=u.source)!=null&&a.boundId)){const d=e.children.find(m=>m.id===u.source.boundId);d&&n.push(d)}}return{incoming:n,outgoing:i}}function c2(e,t,n){const{incoming:i,outgoing:o}=l2(e,t),s=n?[...o,...i]:[...i,...o];if(s.length===0)return!1;const r=s[0];ai(e),ji(e,r);try{const a=qt(e,[r],!1),c=a.x+a.width/2,u=a.y+a.height/2;Zf(e,[c,u])}catch{}return!0}const u2=e=>{const{keyDown:t}=e;return e.keyDown=n=>{if(!n.altKey&&!n.metaKey&&!n.ctrlKey){if(!n.shiftKey){const i=i2(n.key);if(i!==null){const o=Xf(e);if(o.length===1){const s=o[0];if(F.isShapeElement(s)&&!F.isText(s)&&!F.isImage(s)){a2(e,s,i),n.preventDefault();return}}}}if(n.key==="Tab"){const i=Oe(e);if(i.length===1){const o=i[0];if(F.isDrawElement(o)&&F.isShapeElement(o)&&c2(e,o,!n.shiftKey)){n.preventDefault();return}}}}t(n)},e},d2=240,m2=new Set(["5","7"]);function p2(e,t,n){const i=n*Math.PI/180,o=Math.cos(i),s=Math.sin(i),r=e[0]-t[0],a=e[1]-t[1];return[t[0]+r*o-a*s,t[1]+r*s+a*o]}function f2(e,t,n=0){const i=fe.getCenterPoint(e),s=Vi(e,pi).filter(r=>m2.has(String(r.handle)));if(n){const r=p2(t,i,-n),a=s.find(c=>fe.isHit(fe.getRectangleByPoints([r,r]),c.rectangle));return a&&(a.cursorClass=na(a.cursorClass,n)),a}return s.find(r=>fe.isHit(fe.getRectangleByPoints([t,t]),r.rectangle))}function h2(e){const t=Oe(e);return t.length===1&&Qn(t[0])}function g2(e,t){const n=Oe(e);if(n.length!==1||!Qn(n[0]))return null;const i=n[0],o=fe.getRectangleByPoints(i.points),s=f2(o,t,0);return s?{element:i,rectangle:o,handle:s.handle,cursorClass:s.cursorClass}:null}function b2(e,t,n,i){const o=e.width/e.height,s=t==="7",r=s?-n:n,a=Math.max(d2,e.width+r),c=a/o,u=(e.height-c)/2;return{x:s?e.x+(e.width-a):e.x,y:e.y+u,width:a,height:c}}function x2(e,t,n){const{element:i,rectangle:o,handle:s}=t,{startPoint:r,endPoint:a}=n;if(!o)return;const c=a[0]-r[0];a[1]-r[1];const u=b2(o,s,c),d=[[u.x,u.y],[u.x+u.width,u.y+u.height]],m=e.children.findIndex(f=>f.id===i.id);m>=0&&ce.setNode(e,{points:d},[m])}const N2=e=>Ii(e,{key:"audio-nodes",canResize:()=>h2(e),hitTest:(t=>g2(e,t)),onResize:(t,n)=>x2(e,t,n)}),y2=[{icon:l.jsxDEV(Nf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/auto-complete-shape-picker/auto-complete-shape-picker.tsx",lineNumber:27,columnNumber:11},void 0),title:"Rectangle",pointer:Me.rectangle},{icon:l.jsxDEV(yf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/auto-complete-shape-picker/auto-complete-shape-picker.tsx",lineNumber:28,columnNumber:11},void 0),title:"Ellipse",pointer:Me.ellipse},{icon:l.jsxDEV(wf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/auto-complete-shape-picker/auto-complete-shape-picker.tsx",lineNumber:29,columnNumber:11},void 0),title:"Triangle",pointer:Me.triangle},{icon:l.jsxDEV(vf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/auto-complete-shape-picker/auto-complete-shape-picker.tsx",lineNumber:30,columnNumber:11},void 0),title:"Terminal",pointer:fc.terminal},{icon:l.jsxDEV(Ef,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/auto-complete-shape-picker/auto-complete-shape-picker.tsx",lineNumber:31,columnNumber:11},void 0),title:"Diamond",pointer:Me.diamond},{icon:l.jsxDEV(kf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/auto-complete-shape-picker/auto-complete-shape-picker.tsx",lineNumber:32,columnNumber:11},void 0),title:"Parallelogram",pointer:Me.parallelogram},{icon:l.jsxDEV(Sf,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/auto-complete-shape-picker/auto-complete-shape-picker.tsx",lineNumber:33,columnNumber:11},void 0),title:"RoundRectangle",pointer:Me.roundRectangle}],w2=({visible:e,position:t,currentShape:n,onSelectShape:i,onClose:o,container:s})=>{const r=p.useRef(null);p.useEffect(()=>{if(!e)return;const f=b=>{r.current&&!r.current.contains(b.target)&&o()},h=b=>{b.key==="Escape"&&o()},g=setTimeout(()=>{document.addEventListener("mousedown",f),document.addEventListener("keydown",h)},50);return()=>{clearTimeout(g),document.removeEventListener("mousedown",f),document.removeEventListener("keydown",h)}},[e,o]);const a=p.useCallback(f=>{i(f)},[i]);if(!e)return null;const c={x:isNaN(t.x)?0:t.x,y:isNaN(t.y)?0:t.y},u=200,d=80;typeof window<"u"&&(c.x+u>window.innerWidth&&(c.x=window.innerWidth-u-10),c.y+d>window.innerHeight&&(c.y=t.y-d-20));const m=l.jsxDEV("div",{ref:r,className:K("auto-complete-shape-picker",It),style:{left:c.x,top:c.y},children:l.jsxDEV(Ye,{padding:1,children:l.jsxDEV(dt.Col,{gap:1,children:l.jsxDEV(dt.Row,{gap:1,children:y2.map((f,h)=>l.jsxDEV(ie,{className:K("shape-button",{"is-current":n===f.pointer}),type:"icon",size:"small",visible:!0,icon:f.icon,tooltip:f.title,"aria-label":f.title,onPointerDown:({event:g})=>{g.stopPropagation(),a(f.pointer)}},h,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/auto-complete-shape-picker/auto-complete-shape-picker.tsx",lineNumber:127,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/auto-complete-shape-picker/auto-complete-shape-picker.tsx",lineNumber:125,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/auto-complete-shape-picker/auto-complete-shape-picker.tsx",lineNumber:124,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/auto-complete-shape-picker/auto-complete-shape-picker.tsx",lineNumber:123,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/auto-complete-shape-picker/auto-complete-shape-picker.tsx",lineNumber:115,columnNumber:5},void 0);return s?Xr.createPortal(m,s):m},v2={visible:!1,position:{x:0,y:0},sourceElement:null,currentShape:null,hitIndex:-1,hitPoint:null,mode:"hover"};function E2(e){const[t,n]=p.useState(v2);p.useEffect(()=>{if(!e)return;n(Ir(e));const s=JC(e,r=>{n(r)});return()=>{s()}},[e]);const i=p.useCallback(s=>{if(!e)return;const r=Ir(e);r.mode==="arrowLine"?r.arrowLineElement&&r.arrowLineEndPoint&&t2(e,r.arrowLineElement,r.arrowLineEndPoint,s):r.sourceElement&&r.hitPoint&&r.hitIndex>=0&&e2(e,r.sourceElement,r.hitIndex,r.hitPoint,s)},[e]),o=p.useCallback(()=>{e&&ru(e)},[e]);return{state:t,selectShape:i,closePicker:o}}const k2="#ffffff",S2=[Me.rectangle,Me.ellipse,Me.triangle,Me.diamond,Me.parallelogram,Me.roundRectangle];function mp(e){if(!F.isGeometry(e)||F.isText(e)||F.isImage(e))return!1;const t=e;return!(!t.shape||!S2.includes(t.shape)||t.fill&&t.fill!=="none")}const T2=e=>{const{afterChange:t}=e,n=new Set;return e.afterChange=()=>{t();const i=[];e.children.forEach((o,s)=>{mp(o)&&!n.has(o.id)&&(i.push({path:[s],element:o}),n.add(o.id))}),i.length>0&&setTimeout(()=>{i.forEach(({path:o})=>{const s=e.children[o[0]];s&&mp(s)&&ce.setNode(e,{fill:k2},o)})},0)},e},Vr=new WeakMap;let Ya=null,Mn=null;function gb(e,t){try{const n=no.getElementG(t);if(n)return n}catch{}if(t!=null&&t.id){const n=q.getElementHost(e);if(n){const i=n.querySelector(`g[id="${t.id}"]`);if(i)return i}}return null}function bb(e){return e.querySelector("path, rect, ellipse, polygon, circle")}function xb(e){let t=e.querySelector("defs");return t||(t=Ly(),e.insertBefore(t,e.firstChild)),t}function D2(e,t){const n=Vr.get(t);if(n){const i=e.querySelector(`#${n}`);i&&i.remove()}}function Ur(e,t,n){const i=gb(e,t);if(!i)return;const o=bb(i);if(!o)return;const s=i.closest("svg");if(!s)return;const r=qt(e,[t],!1),a=(r==null?void 0:r.width)||100,c=(r==null?void 0:r.height)||100,u=Qf(n,t.id,a,c),d=xb(s);if(u.defElement){const m=u.defElement.id,f=d.querySelector(`#${m}`);f?f.replaceWith(u.defElement):d.appendChild(u.defElement),o.setAttribute("fill",u.fillValue),Vr.set(t,m);const h=Vr.get(t);if(h&&h!==m){const g=d.querySelector(`#${h}`);g&&g.remove()}}else o.setAttribute("fill",u.fillValue),D2(s,t)}function fr(e,t){return e.children.find(n=>n.id===t)||null}function Rn(e){const t=e.fillConfig;return t&&Ln(t)?t:e.fill&&Ln(e.fill)?e.fill:null}function Nb(e,t){if(!e)return!1;if(e==="[object Object]")return!0;if(e.startsWith("url(#")){const n=e.match(/url\(#([^)]+)\)/);if(n){const i=n[1];if(!document.getElementById(i))return!0}return!1}if(t){const n=Rn(t);if(n&&(n.type==="gradient"||n.type==="image"))return!0}return!1}function _2(e){if(!Mn)return;const t=new Set;e.forEach(n=>{if(n.type==="attributes"&&n.attributeName==="fill"){const i=n.target,o=i.getAttribute("fill"),s=i.closest("g[id]");if(s){const r=s.getAttribute("id");if(r){const a=fr(Mn,r),c=a?Rn(a):null;a&&c&&mn(Mn,a)&&Nb(o,a)&&t.add(a)}}}n.type==="childList"&&n.addedNodes.forEach(i=>{if(i instanceof SVGGElement&&i.hasAttribute("id")){const o=i.getAttribute("id");if(o){const s=fr(Mn,o),r=s?Rn(s):null;s&&r&&mn(Mn,s)&&t.add(s)}}if(i instanceof Element){const o=i.closest("g[id]");if(o){const s=o.getAttribute("id");if(s){const r=fr(Mn,s),a=r?Rn(r):null;r&&a&&mn(Mn,r)&&t.add(r)}}}})}),t.size>0&&t.forEach(n=>{const i=Rn(n);i&&Ur(Mn,n,i)})}function j2(e){if(Ya)return;const t=q.getElementHost(e);t&&(Mn=e,Ya=new MutationObserver(_2),Ya.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["fill"]}))}function P2(e){const t=q.getElementHost(e);if(!t)return;t.querySelectorAll("path[fill], rect[fill], ellipse[fill], polygon[fill], circle[fill]").forEach(i=>{const o=i.getAttribute("fill"),s=i.closest("g[id]");if(s){const r=s.getAttribute("id");if(r){const a=fr(e,r),c=a?Rn(a):null;a&&c&&mn(e,a)&&Nb(o,a)&&Ur(e,a,c)}}})}function Gl(e,t=!1){e.children.forEach(n=>{const i=Rn(n);i&&mn(e,n)&&(t?Ur(e,n,i):requestAnimationFrame(()=>{Ur(e,n,i)}))}),t&&P2(e)}let pp=!0;const fp=new WeakSet;function yb(e){const t=q.getElementHost(e);if(!t)return;const n=t.closest("svg")||t.querySelector("svg");n&&e.children.forEach(i=>{const o=Rn(i);if(o&&(o.type==="gradient"||o.type==="image")&&mn(e,i)){const s=qt(e,[i],!1),r=(s==null?void 0:s.width)||100,a=(s==null?void 0:s.height)||100,c=Qf(o,i.id,r,a);if(c.defElement){const u=xb(n);u.querySelector(`#${c.defElement.id}`)||(u.appendChild(c.defElement),Vr.set(i,c.defElement.id))}}})}function C2(e){let t=0;return e.children.forEach(n=>{const i=Rn(n);if(i&&(i.type==="gradient"||i.type==="image")&&mn(e,n)){const o=gb(e,n);(o?bb(o):null)||t++}}),t}function A2(e){if(fp.has(e))return;fp.add(e);const t=15,n=16;let i=0;const o=()=>{i++;try{if(!q.getElementHost(e))return;if(yb(e),Gl(e,!0),C2(e)>0&&i<t){const a=Math.min(n*Math.pow(1.5,i),500);setTimeout(o,a)}}catch{}};requestAnimationFrame(()=>{o(),setTimeout(o,0)})}const M2=e=>{const{afterChange:t}=e;return e.afterChange=()=>{t(),j2(e),yb(e),pp?(pp=!1,Gl(e,!0),A2(e)):Gl(e,!0)},e};function I2(e,t){return Vi(e,pi).find(i=>fe.isHit(fe.getRectangleByPoints([t,t]),i.rectangle))}function V2(e){const t=Oe(e);return t.length!==1?!1:Yt(t[0])}function U2(e,t){const n=Oe(e);if(n.length!==1||!Yt(n[0]))return null;const i=n[0],o=fe.getRectangleByPoints(i.points),s=I2(o,t);return s?{element:i,rectangle:o,handle:s.handle,cursorClass:s.cursorClass}:null}function R2(e,t,n){const{element:i,rectangle:o,handle:s}=t;if(!o)return;const{startPoint:r,endPoint:a}=n,c=a[0]-r[0],u=a[1]-r[1],d=Eo(o,s,c,u,Ss(),60),m=[[d.x,d.y],[d.x+d.width,d.y+d.height]],f=e.children.findIndex(h=>h.id===i.id);f>=0&&ce.setNode(e,{points:m},[f])}function q2(e,t){const{element:n}=t,i=e.children.find(o=>o.id===n.id);i&&By.updateFrameMembers(e,i)}const L2=e=>Ii(e,{key:"frame-elements",canResize:()=>V2(e),hitTest:t=>U2(e,t),onResize:(t,n)=>R2(e,t,n),afterResize:t=>q2(e,t)});function Za(e){return!!e.locked}const B2=e=>{const{isHit:t,isRectangleHit:n,isMovable:i}=e;return e.isHit=(o,s,r)=>Za(o)?!1:t(o,s,r),e.isRectangleHit=(o,s)=>Za(o)?!1:n(o,s),e.isMovable=o=>Za(o)?!1:i(o),e},Wl="aitu-tab-sync-version",O2=500,$l=`tab-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;function wb({onSyncNeeded:e,enabled:t=!0,currentBoardId:n}){const i=p.useRef(-1),o=p.useRef();p.useEffect(()=>{if(!t)return;const s=localStorage.getItem(Wl);if(s)try{const r=JSON.parse(s);i.current=r.version}catch{i.current=parseInt(s,10)||Date.now()}else i.current=Date.now()},[t]),p.useEffect(()=>{if(!t)return;const s=()=>{const a=localStorage.getItem(Wl);if(a)try{const c=JSON.parse(a);if(c.version>i.current&&c.tabId!==$l){const u=n&&c.boardId&&c.boardId===n;i.current=c.version,u&&e()}else c.version>i.current&&c.tabId===$l&&(i.current=c.version)}catch{const c=parseInt(a,10);c>i.current&&(i.current=c)}};o.current=setInterval(()=>{document.hidden||s()},O2);const r=()=>{document.hidden||s()};return document.addEventListener("visibilitychange",r),()=>{o.current&&clearInterval(o.current),document.removeEventListener("visibilitychange",r)}},[t,e,n])}function vb(e){try{const n={version:Date.now(),tabId:$l,boardId:e};localStorage.setItem(Wl,JSON.stringify(n))}catch{}}const OM=Object.freeze(Object.defineProperty({__proto__:null,markTabSyncVersion:vb,useTabSync:wb},Symbol.toStringTag,{value:"Module"})),Xl=new Set,hp=4,Ys=1e3;function Zn(e,t){if(t===void 0){console.info(`[StartupPrefetch] ${e}`);return}console.info(`[StartupPrefetch] ${e}`,t)}function gp(e){e.forEach(t=>Xl.delete(t))}function bp(){const e=typeof navigator<"u"?navigator.connection:void 0;return e?e.saveData?!1:e.effectiveType!=="slow-2g"&&e.effectiveType!=="2g":!0}function Eb(e){if(typeof window>"u"||!("serviceWorker"in navigator)||e.length===0||!bp()){Zn("skip idle prefetch request",{hasWindow:typeof window<"u",hasServiceWorker:typeof navigator<"u"&&"serviceWorker"in navigator,groupCount:e.length,canUseConnection:bp()});return}const t=e.filter(s=>Xl.has(s)?!1:(Xl.add(s),!0));if(t.length===0){Zn("skip idle prefetch request: all groups already requested",{groups:e});return}const n={type:"SW_PREFETCH_GROUPS",groups:t},i=(s=1)=>{const r=navigator.serviceWorker.controller;if(r){r.postMessage(n),Zn("posted idle prefetch request via controller",{groups:t,attempt:s});return}navigator.serviceWorker.ready.then(a=>{if(a.active){a.active.postMessage(n),Zn("posted idle prefetch request via registration.active",{groups:t,attempt:s});return}if(s>=hp){gp(t),console.warn("[StartupPrefetch] idle prefetch request dropped: no active service worker",{groups:t,attempt:s});return}Zn("retry idle prefetch request: no active service worker yet",{groups:t,attempt:s,retryDelayMs:Ys}),window.setTimeout(()=>i(s+1),Ys)}).catch(a=>{if(s>=hp){gp(t),console.warn("[StartupPrefetch] idle prefetch request failed after retries",{groups:t,attempt:s,error:a});return}Zn("retry idle prefetch request after navigator.serviceWorker.ready failure",{groups:t,attempt:s,retryDelayMs:Ys}),window.setTimeout(()=>i(s+1),Ys)})},o=window.requestIdleCallback;typeof o=="function"?(Zn("queue idle prefetch request with requestIdleCallback",{groups:t}),o(()=>i(),{timeout:1500})):(Zn("queue idle prefetch request with setTimeout fallback",{groups:t}),window.setTimeout(i,400))}const F2=p.lazy(()=>Re(()=>import("./DeferredAIInputBar-CPkD8Cv9.js"),__vite__mapDeps([0,4,5,6]),import.meta.url).then(e=>({default:e.DeferredAIInputBar}))),H2=p.lazy(()=>Re(()=>import("./index-BqHZCcen.js"),__vite__mapDeps([0,4,7]),import.meta.url).then(e=>({default:e.ChatDrawer}))),cn=["tool-windows","runtime-static-assets"],z2=p.lazy(()=>Re(()=>import("./DrawnixDeferredFeatures-Cul76-88.js"),__vite__mapDeps([0,8]),import.meta.url).then(e=>({default:e.DrawnixDeferredFeatures}))),G2=p.lazy(()=>Re(()=>import("./tool-windows-DOIu9TAD.js").then(e=>e.pI),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.DrawnixDeferredRuntime}))),W2=p.lazy(()=>Re(()=>import("./ttd-dialog-DI4kQSg8.js"),__vite__mapDeps([0,5,2,3,9,10]),import.meta.url).then(e=>({default:e.TTDDialog}))),$2=p.lazy(()=>Re(()=>import("./settings-dialog-CQM4v791.js"),__vite__mapDeps([0,11]),import.meta.url).then(e=>({default:e.SettingsDialog}))),X2=p.lazy(()=>Re(()=>import("./tool-windows-DOIu9TAD.js").then(e=>e.pC),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.UnifiedMediaViewer}))),K2=p.lazy(()=>Re(()=>import("./CanvasAudioPlayer-DutgwdiU.js"),__vite__mapDeps([0,12]),import.meta.url).then(e=>({default:e.CanvasAudioPlayer}))),Y2=[],Z2="project-drawer-active-tab",Q2="frames",J2=()=>{try{return localStorage.getItem(Z2)===Q2}catch{return!1}},hr=()=>!Sc(Tc.project),eA=()=>hr()&&!J2(),Xi=()=>!Sc(Tc.toolbox),Ki=()=>!Sc(Tc.task),tA=({value:e,viewport:t,theme:n,onChange:i,onSelectionChange:o,onViewportChange:s,onThemeChange:r,onValueChange:a,afterInit:c,onBoardSwitch:u,onTabSyncNeeded:d,isDataReady:m=!1,currentBoardId:f})=>{const h={readonly:!1,hideScrollbar:!1,disabledScrollOnNonFocus:!1,themeColors:aw},[g,b]=p.useState(()=>{const ne=new bT(window.navigator.userAgent);return{pointer:Et.hand,isMobile:ne.mobile()!==null,isPencilMode:!1,openDialogTypes:new Set,dialogInitialData:null,dialogInitialDataByType:{},openCleanConfirm:!1,openSettings:!1}}),[x,y]=p.useState(null),[N,w]=p.useState(!1),[D,S]=p.useState(!1),[E,k]=p.useState(!1),[V,R]=p.useState(!1),[z,I]=p.useState({mode:ri.BROWSE}),[U,A]=p.useState(!1),[j,C]=p.useState(!1),[M,J]=p.useState(!1),[ye,P]=p.useState(!1),[G,de]=p.useState(!1),[W,ae]=p.useState(!1),[oe,ve]=p.useState(!1),ke=p.useRef(null),Fe=p.useCallback(()=>{hr()&&w(!1),Xi()&&S(!1),Ki()&&k(!1),R(!1)},[]),X=p.useCallback((ne=Y2)=>{Eb(ne),J(!0)},[]),Ce=p.useCallback((ne=cn)=>{X(ne),ve(!0),ae(!0)},[X]),We=p.useCallback(()=>{Ce(cn),Promise.all([Re(()=>import("./tool-windows-DOIu9TAD.js").then(ne=>ne.ps),__vite__mapDeps([0]),import.meta.url),Re(()=>import("./tool-windows-DOIu9TAD.js").then(ne=>ne.pr),__vite__mapDeps([0]),import.meta.url)]).then(([{toolWindowService:ne},{BUILT_IN_TOOLS:_e}])=>{const Ee=_e.find(yt=>yt.id==="knowledge-base");if(!Ee)return;const xe=ne.getToolState(Ee.id);xe&&xe.status==="open"?ne.closeTool(Ee.id):ne.openTool(Ee)})},[Ce]);p.useEffect(()=>{const ne=_e=>{const{noteId:Ee}=_e.detail;Ce(cn),Promise.all([Re(()=>import("./tool-windows-DOIu9TAD.js").then(xe=>xe.ps),__vite__mapDeps([0]),import.meta.url),Re(()=>import("./tool-windows-DOIu9TAD.js").then(xe=>xe.pr),__vite__mapDeps([0]),import.meta.url)]).then(([{toolWindowService:xe},{BUILT_IN_TOOLS:yt}])=>{const Vt=yt.find(Dt=>Dt.id==="knowledge-base");if(!Vt)return;const jt=xe.isToolOpen(Vt.id);xe.openTool(Vt,{componentProps:Ee?{initialNoteId:Ee}:{}}),jt&&Ee&&window.setTimeout(()=>{window.dispatchEvent(new CustomEvent("kb:open-note",{detail:{noteId:Ee}}))},50)})};return window.addEventListener("kb:open",ne),()=>window.removeEventListener("kb:open",ne)},[Ce]);const mt=p.useCallback(()=>{if(Ce(cn),N){w(!1);return}Xi()&&S(!1),Ki()&&k(!1),R(!1),w(!0)},[Ce,N]);p.useEffect(()=>{const ne=()=>{Ce(cn),Xi()&&S(!1),Ki()&&k(!1),R(!1),w(!0)};return window.addEventListener(Wu,ne),()=>window.removeEventListener(Wu,ne)},[Ce]);const Y=p.useCallback(()=>{if(Ce(cn),D){S(!1);return}hr()&&w(!1),Ki()&&k(!1),R(!1),S(!0)},[Ce,D]),v=p.useCallback(()=>{if(X(cn),E){k(!1);return}hr()&&w(!1),Xi()&&S(!1),R(!1),k(!0)},[X,E]),H=p.useCallback(ne=>{Ce(cn);const{keepProjectDrawerOpen:_e,...Ee}=ne||{};_e?(Xi()&&S(!1),Ki()&&k(!1),R(!1)):Fe(),I({mode:ri.BROWSE,...Ee}),R(!0)},[Fe,Ce]),O=p.useCallback(()=>{X(cn),A(!0)},[X]),pe=p.useCallback(()=>{X(cn),C(!0)},[X]),me=p.useCallback(ne=>{b(ne)},[]),_=p.useCallback(ne=>{b(_e=>({..._e,...ne}))},[]);p.useEffect(()=>{x&&(x.appState=g,x.__setAppState=me,ke.current=x)},[x,g,me]),p.useEffect(()=>{if(new URLSearchParams(window.location.search).has("tool")){Ce(cn);return}},[Ce]),p.useEffect(()=>{if(typeof window>"u"||!("serviceWorker"in navigator))return;let ne=!1;const _e=window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1",Ee=jt=>{var Dt;((Dt=jt.data)==null?void 0:Dt.type)==="SW_IDLE_PREFETCH_STATUS"&&cn.every(Xn=>{var Ht;return(Ht=jt.data.completedGroups)==null?void 0:Ht.includes(Xn)})&&(ne=!0,ve(!0))};navigator.serviceWorker.addEventListener("message",Ee);const xe={type:"SW_IDLE_PREFETCH_STATUS_GET"},yt=navigator.serviceWorker.controller;yt?yt.postMessage(xe):navigator.serviceWorker.ready.then(jt=>{var Dt;(Dt=jt.active)==null||Dt.postMessage(xe)}).catch(()=>{});const Vt=window.setTimeout(()=>{ne||oe||(_e?console.info("[Drawnix] SW idle prefetch status unresolved in dev, enabling minimized tools bar fallback"):console.warn("[Drawnix] SW idle prefetch status unresolved, enabling minimized tools bar fallback"),ve(!0))},2200);return()=>{window.clearTimeout(Vt),navigator.serviceWorker.removeEventListener("message",Ee)}},[oe]),p.useEffect(()=>{const ne=window.requestIdleCallback;let _e;const Ee=window.setTimeout(()=>{const xe=()=>{P(!0),de(!0)};if(typeof ne=="function"){_e=ne(xe,{timeout:2500});return}xe()},5e3);return()=>{var xe;window.clearTimeout(Ee),typeof _e=="number"&&((xe=window.cancelIdleCallback)==null||xe.call(window,_e))}},[]),p.useEffect(()=>{const ne=_e=>{const Ee=_e,{message:xe}=Ee.detail;se.error({content:"API Key 无效或已过期,请重新配置",duration:5e3}),console.error("[Drawnix] API auth error:",xe),b(yt=>({...yt,openSettings:!0}))};return window.addEventListener($u,ne),()=>{window.removeEventListener($u,ne)}},[]);const L=[Xy,Ky,Yy,xT,sD,Oj(_),yP,CP,MC,_C,AP(_),KP(_),Zy,Qy,bC,Jy,ew,tw,n2,u2,nw,L2,iw,ow,sw,N2,T2,M2,rw,B2,cC,dC],B=p.useRef(null),{saveBoard:$,createBoard:Q,switchBoard:ee}=Oy(),Z=p.useCallback(async()=>{if(i&&ke.current){const ne={children:ke.current.children||[],viewport:ke.current.viewport,theme:ke.current.theme};await $(ne)}},[i,$]),te=p.useCallback(async()=>{await Z();const ne=await Q({name:"新画布"});ne&&(await ee(ne.id),setTimeout(()=>{ds()},500))},[Z,Q,ee]),le=p.useCallback(ne=>{const _e=ke.current;if(_e&&ne){const xe=Oe(_e).map(yt=>yt.id).filter(Boolean);_({lastSelectedElementIds:xe})}o&&o(ne)},[o,_]),qe=p.useMemo(()=>({appState:g,setAppState:me,board:x}),[g,me,x]),$e=ye||G||W||g.openCommandPalette||g.openCanvasSearch||N||D||V||U||j;return l.jsxDEV(Fy,{children:l.jsxDEV(Hy,{children:l.jsxDEV(zy,{children:l.jsxDEV(Gy,{children:l.jsxDEV(Wy,{children:l.jsxDEV(QC,{onOpenMediaLibrary:H,children:l.jsxDEV(qC,{children:l.jsxDEV($y.Provider,{value:qe,children:l.jsxDEV(nA,{value:e,viewport:t,theme:n,options:h,plugins:L,containerRef:B,appState:g,board:x,setBoard:y,projectDrawerOpen:N,toolboxDrawerOpen:D,taskPanelExpanded:E,mediaLibraryOpen:V,mediaLibraryConfig:z,backupRestoreOpen:U,onChange:i,onSelectionChange:le,onViewportChange:s,onThemeChange:r,onValueChange:a,afterInit:c,onBoardSwitch:u,onTabSyncNeeded:d,handleProjectDrawerToggle:mt,handleToolboxDrawerToggle:Y,handleKnowledgeBaseToggle:We,handleTaskPanelToggle:v,handleOpenMediaLibrary:H,handleOpenBackupRestore:O,handleOpenCloudSync:pe,setProjectDrawerOpen:w,setToolboxDrawerOpen:S,setTaskPanelExpanded:k,setMediaLibraryOpen:R,setBackupRestoreOpen:A,cloudSyncOpen:j,setCloudSyncOpen:C,handleBeforeSwitch:Z,isDataReady:m,onCreateProjectForMemory:te,currentBoardId:f,deferredRuntimeEnabled:M,shouldRenderDeferredFeatures:$e,versionUpdateEnabled:ye,performancePanelEnabled:G,toolWindowManagerEnabled:W,minimizedToolsBarEnabled:oe,enableToolWindows:Ce},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:807,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:806,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:805,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:804,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:803,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:802,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:801,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:800,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:799,columnNumber:5},void 0)},nA=({value:e,viewport:t,theme:n,options:i,plugins:o,containerRef:s,appState:r,board:a,setBoard:c,projectDrawerOpen:u,toolboxDrawerOpen:d,taskPanelExpanded:m,mediaLibraryOpen:f,mediaLibraryConfig:h,backupRestoreOpen:g,deferredRuntimeEnabled:b,shouldRenderDeferredFeatures:x,versionUpdateEnabled:y,performancePanelEnabled:N,toolWindowManagerEnabled:w,minimizedToolsBarEnabled:D,enableToolWindows:S,cloudSyncOpen:E,onChange:k,onSelectionChange:V,onViewportChange:R,onThemeChange:z,onValueChange:I,afterInit:U,onBoardSwitch:A,onTabSyncNeeded:j,handleProjectDrawerToggle:C,handleToolboxDrawerToggle:M,handleKnowledgeBaseToggle:J,handleTaskPanelToggle:ye,handleOpenMediaLibrary:P,handleOpenBackupRestore:G,handleOpenCloudSync:de,setProjectDrawerOpen:W,setToolboxDrawerOpen:ae,setTaskPanelExpanded:oe,setMediaLibraryOpen:ve,setBackupRestoreOpen:ke,setCloudSyncOpen:Fe,handleBeforeSwitch:X,isDataReady:Ce,onCreateProjectForMemory:We,currentBoardId:mt})=>{const{setAppState:Y}=Gt(),{chatDrawerRef:v}=mb(),{language:H}=je(),O=Xu(Se=>Se.error),pe=Xu(Se=>Se.playing||!!Se.activeAudioUrl||!!Se.activeReadingSourceId),me=p.useRef(void 0),[_,L]=p.useState(pe);RP({board:a,pointer:r.pointer}),wb({onSyncNeeded:p.useCallback(()=>{j?j():ds()},[j]),enabled:!0,currentBoardId:mt});const[B,$]=p.useState(!1),[Q,ee]=p.useState(null),[Z,te]=p.useState(null),le=p.useRef(null),[qe,$e]=p.useState(!1),[ne,_e]=p.useState([]),[Ee,xe]=p.useState(0);p.useEffect(()=>{if(!O){me.current=void 0;return}O!==me.current&&(me.current=O,se.error(O))},[O]),p.useEffect(()=>{pe&&L(!0)},[pe]),p.useEffect(()=>{ja.setCanvasQueue(ll(e))},[e]),p.useEffect(()=>()=>{ja.stopAndClear()},[]);const yt=p.useCallback(()=>{if(!a||!a.children)return{items:[],elementIds:[]};const Se=[],He=[];for(const Ne of a.children){const Ie=Ne.url;if(!Ie||typeof Ie!="string"||Pa(Ne))continue;const it=F.isDrawElement(Ne)&&F.isImage(Ne),ze=En(Ne);(it||ze)&&(Se.push({id:Ne.id,url:Ie,type:ze?"video":"image",title:Ne.name||void 0}),He.push(Ne.id))}return{items:Se,elementIds:He}},[a]),Vt=p.useCallback(Se=>{const{items:He,elementIds:Ne}=yt();if(He.length===0)return;const Ie=Ne.indexOf(Se);Ie!==-1&&(_e(He),xe(Ie),$e(!0))},[yt]),jt=p.useCallback(()=>{$e(!1)},[]),Dt=p.useCallback(async(Se,He)=>{const Ne=He.id;if(!(!Ne||!a))try{const{unifiedCacheService:Ie}=await Re(async()=>{const{unifiedCacheService:lt}=await import("./tool-windows-DOIu9TAD.js").then(fn=>fn.pj);return{unifiedCacheService:lt}},__vite__mapDeps([0]),import.meta.url),{Transforms:it}=await Re(async()=>{const{Transforms:lt}=await import("./tool-windows-DOIu9TAD.js").then(fn=>fn.ph);return{Transforms:lt}},__vite__mapDeps([0]),import.meta.url),ze=`edited-image-${Date.now()}`,Le=`/__aitu_cache__/image/${ze}.png`,ft=await(await fetch(Se)).blob();await Ie.cacheMediaFromBlob(Le,ft,"image",{taskId:ze});const Pt=new Image;await new Promise((lt,fn)=>{Pt.onload=()=>lt(),Pt.onerror=()=>fn(new Error("Failed to load edited image")),Pt.src=Se});const Ut=a.children.findIndex(lt=>lt.id===Ne);if(Ut>=0){const lt=a.children[Ut],{newPoints:fn}=await af({url:lt.url,width:lt.width,height:lt.height,points:lt.points||[[0,0],[0,0]]},Pt.naturalWidth,Pt.naturalHeight);it.setNode(a,{url:Le,width:Pt.naturalWidth,height:Pt.naturalHeight,points:fn},[Ut])}}catch(Ie){console.error("Failed to update image:",Ie),se.error("更新失败")}},[a]),Xn=p.useCallback(async Se=>{if(a)try{const{unifiedCacheService:He}=await Re(async()=>{const{unifiedCacheService:Ut}=await import("./tool-windows-DOIu9TAD.js").then(lt=>lt.pj);return{unifiedCacheService:Ut}},__vite__mapDeps([0]),import.meta.url),{insertImageFromUrl:Ne}=await Re(async()=>{const{insertImageFromUrl:Ut}=await import("./tool-windows-DOIu9TAD.js").then(lt=>lt.pn);return{insertImageFromUrl:Ut}},__vite__mapDeps([0]),import.meta.url),Ie=`edited-image-${Date.now()}`,it=`/__aitu_cache__/image/${Ie}.png`,Le=await(await fetch(Se)).blob();await He.cacheMediaFromBlob(it,Le,"image",{taskId:Ie});const pt=new Image;await new Promise((Ut,lt)=>{pt.onload=()=>Ut(),pt.onerror=()=>lt(new Error("Failed to load edited image")),pt.src=Se});const ft=vs(a),Pt=[((ft==null?void 0:ft[0])??0)+100,((ft==null?void 0:ft[1])??0)+100];await Ne(a,it,Pt,!1,{width:pt.naturalWidth,height:pt.naturalHeight},!1,!0)}catch(He){console.error("Failed to insert image:",He),se.error("插入失败")}},[a]),{state:Ht,selectShape:sn,closePicker:hi}=E2(a);p.useEffect(()=>{Z&&le.current&&le.current.focus()},[Z]);const rn=p.useCallback(()=>{if(!a||!Z||!le.current){te(null);return}const Se=le.current.innerText||"";Se.trim()&&(Fr.insertText(a,Z.worldPoint,Se),requestAnimationFrame(()=>{const He=a.children[a.children.length-1];if(F.isText(He)){const Ne=He;if(!isFinite(Ne.textHeight)){const Ie=fe.getRectangleByPoints(Ne.points);ce.setNode(a,{textHeight:Ie.height},[a.children.length-1])}}})),te(null),ge.updatePointerType(a,Et.selection),Y(He=>({...He,pointer:Et.selection}))},[a,Z,Y]);return p.useEffect(()=>{if(!a)return;const Se=Ne=>{const Ie=Ne.target;if(!(Ie.closest(".board-host-svg")||Ie.closest(".plait-board-container")))return;const ze=Ot(a,Ft(a,Ne.clientX,Ne.clientY)),Le=al(a,ze);if(Le&&At(Le)){vg(a,Le,H),Ne.preventDefault(),Ne.stopPropagation();return}if(Le){if(Pa(Le)){Ne.preventDefault(),Ne.stopPropagation();return}const ft=Le.url;if(ft&&typeof ft=="string"){const Pt=F.isDrawElement(Le)&&F.isImage(Le),Ut=En(Le);if(Pt||Ut){Vt(Le.id),Ne.preventDefault(),Ne.stopPropagation();return}}}const pt=Ie.closest(".plait-tool-container")||Ie.closest(".plait-workzone-container")||Ie.closest("foreignObject");if(!Le&&!pt){const ft=[Ne.clientX,Ne.clientY];ee(ft),$(!0)}},He=s.current;return He&&He.addEventListener("dblclick",Se),()=>{He&&He.removeEventListener("dblclick",Se)}},[a,s,Vt,H]),p.useEffect(()=>{if(!a)return;const Se=Ne=>{const Ie=Ne.target;if(Ie.closest(".side-drawer")||Ie.closest(".project-drawer")||!(Ie.closest(".board-host-svg")||Ie.closest(".plait-board-container")))return;const ze=Ot(a,Ft(a,Ne.clientX,Ne.clientY)),Le=al(a,ze);if(Le&&Pa(Le)&&!Qn(Le)){L(!0);const pt=lw(Le);if(pt){Ne.preventDefault(),Ne.stopPropagation(),ja.togglePlaybackInQueue(pt,ll(a.children),{queueSource:"canvas",queueId:rf,queueName:sf}).catch(()=>{});return}}if(q.isPointer(a,Me.text)&&!(Ie.closest(".plait-tool-container")||Ie.closest(".plait-workzone-container")||Ie.closest("foreignObject"))&&!Le){te({screenX:Ne.clientX,screenY:Ne.clientY,worldPoint:ze,zoom:a.viewport.zoom}),Ne.preventDefault(),Ne.stopPropagation();return}u&&eA()&&W(!1),d&&Xi()&&ae(!1),m&&Ki()&&oe(!1)},He=s.current;return He&&He.addEventListener("click",Se),()=>{He&&He.removeEventListener("click",Se)}},[a,s,u,d,m,W,ae,oe]),l.jsxDEV("div",{className:K("drawnix",{"drawnix--mobile":r.isMobile}),ref:s,children:l.jsxDEV("div",{className:"drawnix__main",children:[l.jsxDEV(QS,{value:e,viewport:t,theme:n,options:i,plugins:o,onChange:Se=>{k&&k(Se)},onSelectionChange:V,onViewportChange:R,onThemeChange:z,onValueChange:I,children:[l.jsxDEV(XS,{afterInit:Se=>{c(Se),window.__drawnixBoard=Se,pb.setBoard(Se),U&&U(Se),Se.afterChange&&Se.afterChange()}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1507,columnNumber:11},void 0),l.jsxDEV(UC,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1528,columnNumber:11},void 0),l.jsxDEV(Bj,{projectDrawerOpen:u,onProjectDrawerToggle:C,toolboxDrawerOpen:d,onToolboxDrawerToggle:M,taskPanelExpanded:m,onTaskPanelToggle:ye,onOpenBackupRestore:G,onOpenCloudSync:de,onKnowledgeBaseToggle:J,onOpenMediaLibrary:P,deferredFeaturesEnabled:w,minimizedToolsBarEnabled:D,onEnableToolWindows:S},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1530,columnNumber:11},void 0),_&&l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(K2,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1547,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1546,columnNumber:13},void 0),l.jsxDEV(ij,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1551,columnNumber:11},void 0),l.jsxDEV(YP,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1552,columnNumber:11},void 0),l.jsxDEV(MP,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1553,columnNumber:11},void 0),l.jsxDEV(LP,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1554,columnNumber:11},void 0),l.jsxDEV($P,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1555,columnNumber:11},void 0),l.jsxDEV(GP,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1556,columnNumber:11},void 0),r.openDialogTypes.size>0&&l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(W2,{container:s.current},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1559,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1558,columnNumber:13},void 0),r.openSettings&&l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV($2,{container:s.current},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1564,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1563,columnNumber:13},void 0),l.jsxDEV(XP,{container:s.current},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1567,columnNumber:11},void 0),l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(F2,{isDataReady:Ce,activationKey:0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1569,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1568,columnNumber:11},void 0),l.jsxDEV(ZC,{position:Q,visible:B,onClose:()=>$(!1),onOpenMediaLibrary:P},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1572,columnNumber:11},void 0),Z&&l.jsxDEV("div",{ref:le,contentEditable:!0,suppressContentEditableWarning:!0,style:{position:"fixed",left:Z.screenX,top:Z.screenY-14*Z.zoom/2,minWidth:"2px",minHeight:"1.5em",outline:"none",border:"none",background:"transparent",fontSize:`${14*Z.zoom}px`,lineHeight:"1.5",color:"#333",caretColor:"#333",zIndex:1e4,whiteSpace:"pre-wrap",fontFamily:"inherit"},onBlur:rn,onKeyDown:Se=>{Se.key==="Escape"&&te(null),Se.stopPropagation()}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1580,columnNumber:13},void 0),qe&&l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(X2,{visible:qe,items:ne,initialIndex:Ee,onClose:jt,showThumbnails:!0,useBuiltInEditor:!0,showEditOverwrite:!0,onEditOverwrite:Dt,onEditInsert:Xn},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1613,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1612,columnNumber:13},void 0),l.jsxDEV(w2,{visible:Ht.visible,position:Ht.position,currentShape:Ht.currentShape||void 0,onSelectShape:sn,onClose:hi,container:s.current},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1627,columnNumber:11},void 0),l.jsxDEV(KC,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1636,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1493,columnNumber:9},void 0),l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(H2,{ref:v},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1639,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1638,columnNumber:9},void 0),b&&l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(G2,{board:a,value:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1643,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1642,columnNumber:11},void 0),x&&l.jsxDEV(p.Suspense,{fallback:null,children:l.jsxDEV(z2,{board:a,value:e,containerRef:s,versionUpdateEnabled:y,performancePanelEnabled:N,toolWindowManagerEnabled:w,projectDrawerOpen:u,toolboxDrawerOpen:d,mediaLibraryOpen:f,mediaLibraryConfig:h,backupRestoreOpen:g,cloudSyncOpen:E,onBoardSwitch:A,setProjectDrawerOpen:W,setToolboxDrawerOpen:ae,setMediaLibraryOpen:ve,setBackupRestoreOpen:ke,setCloudSyncOpen:Fe,handleOpenMediaLibrary:P,handleBeforeSwitch:X,onCreateProjectForMemory:We},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1648,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1647,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1492,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/drawnix.tsx",lineNumber:1486,columnNumber:5},void 0)},iA="Opentu",oA="Opentu - AI应用平台";function Rr(e){e&&e.trim()?document.title=`${iA} - ${e.trim()}`:document.title=oA}function sA(e){if(!e){Rr();return}const t=Jf.getBoard(e);Rr(t==null?void 0:t.name)}function rA(e,t){return p.useEffect(()=>{sA(e)},[e,t]),p.useEffect(()=>{const i=Jf.observeEvents().subscribe(o=>{if(o.type==="boardUpdated"){const s=o.payload;s&&s.id===e&&Rr(s.name)}});return()=>{i.unsubscribe()}},[e]),{updateTitle:p.useCallback(i=>{Rr(i)},[])}}const kb="main_board_content",Sb=er.createInstance({name:"Drawnix",storeName:cw,driver:[er.INDEXEDDB,er.LOCALSTORAGE]});async function Tb(){try{const e=await ml.loadState();return(e==null?void 0:e.migrationCompleted)===!0}catch(e){return console.error("[WorkspaceMigration] Failed to check migration status:",e),!1}}async function xp(){try{const e=await ml.loadState();e.migrationCompleted=!0,await ml.saveState(e)}catch(e){console.error("[WorkspaceMigration] Failed to mark migration completed:",e)}}async function aA(){try{const e=await Sb.getItem(kb);if(e&&e.children&&e.children.length>0)return e;const t=localStorage.getItem(eh);if(t){const n=JSON.parse(t);if(Array.isArray(n)&&n.length>0)return{children:n}}return null}catch(e){return console.error("[WorkspaceMigration] Failed to get legacy data:",e),null}}async function lA(){try{if(await Tb())return null;const t=await aA();if(!t||!t.children||t.children.length===0)return await xp(),null;const n=wn.getInstance();await n.initialize();const i=await n.createBoard({name:"迁移的画板",elements:t.children,viewport:t.viewport,theme:t.theme});return i?(await n.switchBoard(i.id),await xp(),await cA(),i.id):(console.error("[WorkspaceMigration] Failed to create board"),null)}catch(e){return console.error("[WorkspaceMigration] Migration failed:",e),null}}async function cA(){try{await Sb.removeItem(kb),localStorage.removeItem(eh)}catch(e){console.error("[WorkspaceMigration] Failed to clear legacy data:",e)}}function qo(e){if(!Nt.isAnalyticsEnabled())return;const t=uA(e.name,e.value),n=document.referrer,i={[`$web_vitals_${e.name}_value`]:e.value,[`$web_vitals_${e.name}_event`]:{id:e.id,delta:e.delta,rating:t,navigationType:e.navigationType},page_path:window.location.pathname,referrer:n.length>200?n.slice(0,200):n,timestamp:Date.now()};setTimeout(()=>{Nt.track("$web_vitals",i)},0)}function uA(e,t){const i={LCP:{good:2500,poor:4e3},FID:{good:100,poor:300},CLS:{good:.1,poor:.25},FCP:{good:1800,poor:3e3},TTFB:{good:800,poor:1800},INP:{good:200,poor:500}}[e];return i?t<=i.good?"good":t<=i.poor?"needs-improvement":"poor":"needs-improvement"}async function dA(){try{const e=await Re(()=>import("./web-vitals-DcvjKPr-.js"),[],import.meta.url),{onCLS:t,onFCP:n,onLCP:i,onTTFB:o,onINP:s}=e;t(qo),n(qo),i(qo),o(qo),s(qo)}catch(e){console.error("[Web Vitals] Failed to initialize monitoring:",e)}}const ws="page_report",mA="app_page_view";let Np=!1,yp="";function pA(){const e=window.innerWidth;return e<768?"mobile":e<1024?"tablet":"desktop"}const wp=200;function fA(){const e=navigator.userAgent;return{page_url:window.location.href,page_path:window.location.pathname,page_title:document.title,referrer:document.referrer,viewport_width:window.innerWidth,viewport_height:window.innerHeight,screen_width:window.screen.width,screen_height:window.screen.height,device_type:pA(),user_agent:e.length>wp?e.slice(0,wp):e,language:navigator.language,timestamp:Date.now()}}function hA(){if(!window.performance)return null;const e={page_url:window.location.pathname,page_path:window.location.pathname,timestamp:Date.now()};if(window.performance.getEntriesByType){const t=window.performance.getEntriesByType("navigation");if(t&&t.length>0){const n=t[0];n.domainLookupEnd&&n.domainLookupStart&&(e.dns_time=n.domainLookupEnd-n.domainLookupStart),n.connectEnd&&n.connectStart&&(e.tcp_time=n.connectEnd-n.connectStart),n.responseStart&&n.requestStart&&(e.request_time=n.responseStart-n.requestStart),n.responseEnd&&n.responseStart&&(e.response_time=n.responseEnd-n.responseStart),n.domComplete&&n.domInteractive&&(e.dom_processing_time=n.domComplete-n.domInteractive),n.domInteractive&&n.fetchStart&&(e.dom_interactive_time=n.domInteractive-n.fetchStart),n.domComplete&&n.fetchStart&&(e.dom_complete_time=n.domComplete-n.fetchStart),n.loadEventEnd&&n.fetchStart&&(e.load_time=n.loadEventEnd-n.fetchStart)}}if(window.performance.getEntriesByType){const t=window.performance.getEntriesByType("resource");e.total_resources=t.length,e.total_size=t.reduce((n,i)=>n+(i.transferSize||0),0)}return e}function Qa(){if(!Nt.isAnalyticsEnabled())return;const e=fA();e.page_url!==yp&&(yp=e.page_url,Nt.track(mA,{category:ws,...e}))}function vp(){if(!Nt.isAnalyticsEnabled())return;const e=hA();if(!e){console.warn("[Page Report] Performance data not available");return}Nt.track("page_performance",{category:ws,...e})}function gA(){if(!Nt.isAnalyticsEnabled())return;const e=Math.round(performance.now());Nt.track("page_unload",{category:ws,page_url:window.location.href,page_path:window.location.pathname,time_on_page:e,timestamp:Date.now()})}function bA(){try{if(Np)return;Np=!0,Qa(),document.readyState==="complete"?vp():window.addEventListener("load",()=>{setTimeout(()=>{vp()},0)}),window.addEventListener("beforeunload",()=>{gA()}),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"?Nt.track("page_hidden",{category:ws,page_url:window.location.href,page_path:window.location.pathname,timestamp:Date.now()}):document.visibilityState==="visible"&&Nt.track("page_visible",{category:ws,page_url:window.location.href,page_path:window.location.pathname,timestamp:Date.now()})}),window.addEventListener("popstate",()=>{setTimeout(()=>{Qa()},100)});const e=history.pushState;history.pushState=function(...t){e.apply(this,t),setTimeout(()=>{Qa()},100)}}catch(e){console.error("[Page Report] Failed to initialize monitoring:",e)}}function Ep(e){if(!e||!(e instanceof Element))return!1;const t=e,n=["input","textarea","select","button",".unified-toolbar",".chat-drawer",".side-drawer",".toolbox-drawer",".project-drawer",".popup-toolbar",".t-dialog",".t-drawer",".t-popup",".t-popover",".Dialog",".winbox",".ai-input-bar",".view-navigation",".minimap",".task-queue-panel",".t-slider",".unified-color-picker",".color-picker",".media-library",".viewer-container",".viewer-canvas",".viewer-footer",".viewer-toolbar",".unified-viewer",".media-viewport",".thumbnail-queue",'[role="button"]','[role="slider"]','[role="menu"]','[role="menuitem"]','[role="dialog"]',"[data-allow-touch]"];for(const i of n)if(t.matches(i)||t.closest(i))return!0;if(t.scrollHeight>t.clientHeight||t.scrollWidth>t.clientWidth){const i=window.getComputedStyle(t);if(i.overflowY==="auto"||i.overflowY==="scroll"||i.overflowX==="auto"||i.overflowX==="scroll")return!0}return!1}function kp(e){if(!e||!(e instanceof Element))return!1;const t=e,n=[".plait-board-container",".plait-board","[plait-board]","svg.rough-svg"];for(const i of n)if(t.matches(i)||t.closest(i))return!0;return!1}function xA(){if(typeof window>"u")return()=>{};const e=i=>{if(i.touches.length>1){const o=i.target;if(Ep(o))return;kp(o)&&(i.preventDefault(),i.stopPropagation())}},t=i=>{const o=i.target;Ep(o)||kp(o)&&(i.preventDefault(),i.stopPropagation())},n=i=>{(i.ctrlKey||i.metaKey)&&i.preventDefault()};return document.addEventListener("touchstart",e,{passive:!1,capture:!0}),document.addEventListener("touchmove",e,{passive:!1,capture:!0}),document.addEventListener("touchend",e,{passive:!1,capture:!0}),document.addEventListener("gesturestart",t,{passive:!1,capture:!0}),document.addEventListener("gesturechange",t,{passive:!1,capture:!0}),document.addEventListener("gestureend",t,{passive:!1,capture:!0}),window.addEventListener("wheel",n,{passive:!1}),()=>{document.removeEventListener("touchstart",e,!0),document.removeEventListener("touchmove",e,!0),document.removeEventListener("touchend",e,!0),document.removeEventListener("gesturestart",t,!0),document.removeEventListener("gesturechange",t,!0),document.removeEventListener("gestureend",t,!0),window.removeEventListener("wheel",n)}}const Kl=oa.DB_CLEANUP_DONE;function Db(){let e=0;for(const t of th)try{localStorage.getItem(t)!==null&&(localStorage.removeItem(t),e++)}catch(n){console.warn(`[DBCleanup] Failed to remove LocalStorage key ${t}:`,n)}return e}async function _b(){localStorage.getItem(Kl)||(Db(),localStorage.setItem(Kl,Date.now().toString()))}function NA(){localStorage.removeItem(Kl)}typeof window<"u"&&(window.__dbCleanup={run:_b,reset:NA,cleanupLS:Db,LS_KEYS_DEPRECATED:th});const au=[{lsKey:Ct.PROMPT_HISTORY,idbKey:Ct.PROMPT_HISTORY,deleteAfterMigration:!0},{lsKey:Ct.VIDEO_PROMPT_HISTORY,idbKey:Ct.VIDEO_PROMPT_HISTORY,deleteAfterMigration:!0},{lsKey:Ct.PRESET_SETTINGS,idbKey:Ct.PRESET_SETTINGS,deleteAfterMigration:!0},{lsKey:Ct.BATCH_IMAGE_CACHE,idbKey:Ct.BATCH_IMAGE_CACHE,deleteAfterMigration:!0},{lsKey:Ct.RECENT_TEXT_COLORS,idbKey:Ct.RECENT_TEXT_COLORS,deleteAfterMigration:!0},{lsKey:Ct.CUSTOM_GRADIENTS,idbKey:Ct.CUSTOM_GRADIENTS,deleteAfterMigration:!0},{lsKey:Ct.CUSTOM_FONTS,idbKey:Ct.CUSTOM_FONTS,deleteAfterMigration:!0},{lsKey:Ct.TOOLBAR_CONFIG,idbKey:Ct.TOOLBAR_CONFIG,deleteAfterMigration:!0}];function lu(){try{return localStorage.getItem(oa.LS_TO_IDB_MIGRATION_DONE)!==null}catch{return!1}}function yA(){try{localStorage.setItem(oa.LS_TO_IDB_MIGRATION_DONE,Date.now().toString())}catch(e){console.error("[StorageMigration] Failed to mark migration done:",e)}}function wA(e){try{const t=localStorage.getItem(e);return t===null?null:JSON.parse(t)}catch(t){return console.warn(`[StorageMigration] Failed to read ${e} from LocalStorage:`,t),null}}function Sp(e){try{localStorage.removeItem(e)}catch(t){console.warn(`[StorageMigration] Failed to delete ${e} from LocalStorage:`,t)}}async function vA(e){const{lsKey:t,idbKey:n,deleteAfterMigration:i}=e;try{const o=wA(t);return o===null?{key:t,success:!0}:await Tn.get(n)!==null?(i&&Sp(t),{key:t,success:!0}):(await Tn.set(n,o),await Tn.get(n)===null?{key:t,success:!1,error:"Verification failed: data not found after write"}:(i&&Sp(t),{key:t,success:!0}))}catch(o){const s=o instanceof Error?o.message:String(o);return console.error(`[StorageMigration] Failed to migrate ${t}:`,o),{key:t,success:!1,error:s}}}async function jb(){if(!Tn.isAvailable())return console.warn("[StorageMigration] IndexedDB not available, skipping migration"),[];if(lu())return[];const e=[];for(const n of au){const i=await vA(n);e.push(i),i.success||console.warn(`[StorageMigration] Failed: ${i.key} - ${i.error}`)}return e.filter(n=>n.success).length,e.filter(n=>!n.success).length===0&&yA(),e}function Pb(){try{localStorage.removeItem(oa.LS_TO_IDB_MIGRATION_DONE)}catch(e){console.error("[StorageMigration] Failed to reset migration status:",e)}}const EA={isMigrationDone:lu,runMigration:jb,resetMigration:Pb,MIGRATION_CONFIGS:au};typeof window<"u"&&(window.__storageMigration={run:jb,reset:Pb,isDone:lu,configs:au});const Xt={LOADING_STATE:"aitu_page_loading_state",CRASH_COUNT:"aitu_crash_count",LAST_SUCCESS_LOAD:"aitu_last_success_load",SAFE_MODE:"aitu_safe_mode",CRASH_HISTORY:"aitu_crash_history"};class kA{constructor(){this.state={crashDetected:!1,crashCount:0,isSafeMode:!1,crashHistory:[]}}markLoadingStart(){try{localStorage.getItem(Xt.LOADING_STATE)==="loading"&&(this.state.crashDetected=!0,this.incrementCrashCount(),this.recordCrash()),localStorage.setItem(Xt.LOADING_STATE,"loading"),this.state.isSafeMode=localStorage.getItem(Xt.SAFE_MODE)==="true",this.loadCrashHistory()}catch(t){console.warn("[CrashRecovery] Failed to mark loading start:",t)}}markLoadingComplete(){try{localStorage.setItem(Xt.LOADING_STATE,"complete"),localStorage.setItem(Xt.LAST_SUCCESS_LOAD,Date.now().toString()),this.state.isSafeMode||(localStorage.setItem(Xt.CRASH_COUNT,"0"),this.state.crashCount=0)}catch(t){console.warn("[CrashRecovery] Failed to mark loading complete:",t)}}incrementCrashCount(){try{const t=parseInt(localStorage.getItem(Xt.CRASH_COUNT)||"0",10);this.state.crashCount=t+1,localStorage.setItem(Xt.CRASH_COUNT,this.state.crashCount.toString())}catch{}}recordCrash(){try{const t=performance,n={timestamp:Date.now(),url:window.location.href,memoryStats:t.memory?{usedJSHeapSize:t.memory.usedJSHeapSize,totalJSHeapSize:t.memory.totalJSHeapSize,jsHeapSizeLimit:t.memory.jsHeapSizeLimit}:null};this.state.crashHistory.unshift(n),this.state.crashHistory=this.state.crashHistory.slice(0,10),this.saveCrashHistory()}catch{}}loadCrashHistory(){try{const t=localStorage.getItem(Xt.CRASH_HISTORY);t&&(this.state.crashHistory=JSON.parse(t))}catch{this.state.crashHistory=[]}}saveCrashHistory(){try{localStorage.setItem(Xt.CRASH_HISTORY,JSON.stringify(this.state.crashHistory))}catch{}}getState(){return{...this.state}}isCrashDetected(){return this.state.crashDetected}getCrashCount(){return this.state.crashCount}isSafeMode(){return this.state.isSafeMode}shouldShowSafeModePrompt(){return this.state.crashDetected&&this.state.crashCount>=2}enableSafeMode(){try{localStorage.setItem(Xt.SAFE_MODE,"true"),this.state.isSafeMode=!0}catch{}}disableSafeMode(){try{localStorage.removeItem(Xt.SAFE_MODE),this.state.isSafeMode=!1,localStorage.setItem(Xt.CRASH_COUNT,"0"),this.state.crashCount=0}catch{}}clearCrashState(){try{localStorage.setItem(Xt.CRASH_COUNT,"0"),this.state.crashCount=0,this.state.crashDetected=!1}catch{}}checkUrlSafeMode(){try{const t=new URLSearchParams(window.location.search);if(t.get("safe")==="1"||t.get("safe_mode")==="1")return this.enableSafeMode(),!0}catch{}return!1}getMemoryInfo(){try{const t=performance;if(!t.memory)return null;const n=i=>i<1024*1024?`${(i/1024).toFixed(1)} KB`:i<1024*1024*1024?`${(i/1024/1024).toFixed(1)} MB`:`${(i/1024/1024/1024).toFixed(2)} GB`;return{used:n(t.memory.usedJSHeapSize),limit:n(t.memory.jsHeapSizeLimit),percent:t.memory.usedJSHeapSize/t.memory.jsHeapSizeLimit*100}}catch{return null}}}const Kt=new kA,SA=3e4,TA=800,DA=.6,_A=3,cu="aitu_last_snapshot",jA=50,ts=[],PA=20,CA=2e3;let ns=null;const Tp=3e3,AA=1e4,MA=200,IA=5e3,VA=10,UA=5e3,RA=30,qA=20,Dp=20,LA=100,BA=30,OA=240;let _p=null,jp=!1,Pp=null,Cp=null,Ja=null,el=0,ki=60,Xo=!1,tl=!1;const oi=[],si=[],gn=[];function FA(e){const t=Bt(),n=Date.now();return()=>{const i=Bt();if(!t||!i)return;const o=(i.usedJSHeapSize-t.usedJSHeapSize)/(1024*1024),s=Date.now()-n;if(Math.abs(o)>=jA){const r=o>=0?"+":"";console.warn(`[MemoryLog] ${e}: ${r}${o.toFixed(0)} MB (${s}ms)`)}}}function bn(e){if(e)return e.slice(0,OA)}function HA(){return"0.6.78"}function zA(){if(typeof navigator>"u"||typeof window>"u"||!("serviceWorker"in navigator))return{supported:!1,readyState:document.readyState,visibilityState:document.visibilityState};const e=navigator.serviceWorker.controller;return{supported:!0,controller:e?{scriptURL:bn(e.scriptURL),state:e.state}:null,readyState:document.readyState,visibilityState:document.visibilityState}}function GA(){const e=Array.from(document.scripts).map(i=>bn(Bn(i.src))).filter(Boolean).slice(-8),t=Array.from(document.querySelectorAll('link[rel="stylesheet"]')).map(i=>bn(Bn(i.href))).filter(Boolean).slice(-8),n=Array.from(document.querySelectorAll('link[rel="modulepreload"]')).map(i=>bn(Bn(i.href))).filter(Boolean).slice(-8);return{scripts:e,stylesheets:t,modulePreloads:n}}function Cb(e){if(!(e instanceof HTMLElement))return;const t=e;return{tagName:e.tagName.toLowerCase(),id:bn(e.id||void 0),className:typeof e.className=="string"?bn(e.className):void 0,src:bn(t.currentSrc||t.src?Bn(t.currentSrc||t.src||""):void 0),href:bn(t.href?Bn(t.href):void 0),rel:bn(t.rel),crossOrigin:bn(t.crossOrigin||void 0)}}function Yl(e){return{appVersion:HA(),recentActions:oi.slice(-10),recentErrors:si.slice(-5),recentNetworkErrors:gn.slice(-5),serviceWorker:zA(),loadedResources:GA(),...e}}function Bt(){if(typeof performance<"u"&&"memory"in performance){const e=performance.memory;return{usedJSHeapSize:e.usedJSHeapSize,totalJSHeapSize:e.totalJSHeapSize,jsHeapSizeLimit:e.jsHeapSizeLimit}}}function No(){try{const e={domNodeCount:document.getElementsByTagName("*").length,canvasCount:document.getElementsByTagName("canvas").length,imageCount:document.getElementsByTagName("img").length,videoCount:document.getElementsByTagName("video").length,iframeCount:document.getElementsByTagName("iframe").length,plaitBoardExists:!!document.querySelector(".plait-board-container")},t=document.querySelector(".plait-board-container");if(t){const n=t.querySelectorAll("svg > g > g");e.plaitElementCount=n.length}return window.getEventListeners,e}catch{return{domNodeCount:0,canvasCount:0,imageCount:0,videoCount:0,iframeCount:0,plaitBoardExists:!1}}}function Ab(){if(!gt.isInitialized()||ts.length===0)return;const e=ts.splice(0,ts.length);for(const t of e)gt.reportCrashSnapshot(t).catch(()=>{});ns&&(clearInterval(ns),ns=null)}function WA(){ns||(ns=setInterval(()=>{gt.isInitialized()&&Ab()},CA))}function nn(e){try{gt.isInitialized()?(Ab(),gt.reportCrashSnapshot(e).catch(()=>{})):ts.length<PA&&(ts.push(e),WA())}catch(t){console.warn("[MemoryLog] Failed to send snapshot to SW:",t)}}function $A(e){try{localStorage.setItem(cu,JSON.stringify(e))}catch{}}function XA(){try{const e=localStorage.getItem(cu);if(e)return JSON.parse(e)}catch{}return null}function KA(){try{localStorage.removeItem(cu)}catch{}}function YA(){const e={id:`startup-${Date.now()}`,timestamp:Date.now(),type:"startup",userAgent:navigator.userAgent,url:location.href,memory:Bt()};nn(e)}function ZA(){if(_p!==null)return;let e=0;_p=window.setInterval(()=>{const t=Bt();if(!t)return;const n=t.usedJSHeapSize/(1024*1024),i=t.jsHeapSizeLimit/(1024*1024),o=n/i;if(n>TA||o>DA){e++;const a=e>=_A?No():void 0,c={id:`periodic-${Date.now()}`,timestamp:Date.now(),type:"periodic",memory:t,pageStats:a,userAgent:navigator.userAgent,url:location.href};nn(c)}else e=0},SA)}function QA(){window.addEventListener("error",e=>{var n;if(e.error instanceof DOMException&&(e.error.name==="AbortError"||e.error.name==="NotAllowedError"))return;const t={id:`error-${Date.now()}`,timestamp:Date.now(),type:"error",error:{message:e.message||"Unknown error",stack:(n=e.error)==null?void 0:n.stack,type:"uncaughtError"},memory:Bt(),userAgent:navigator.userAgent,url:location.href,customData:Yl({filename:e.filename,lineno:e.lineno,colno:e.colno,eventTarget:Cb(e.target)})};nn(t),console.error("[MemoryLog] Uncaught error captured:",e.message)}),window.addEventListener("unhandledrejection",e=>{const t=e.reason,n=(t==null?void 0:t.message)||String(t)||"",i=(t==null?void 0:t.stack)||"";if(t instanceof DOMException&&(t.name==="AbortError"||t.name==="NotAllowedError"||t.name==="DataError"&&n.includes("No key or key range specified"))||n.includes("posthog.com")||n.includes("sentry.io")||i.includes("posthog")||i.includes("sentry"))return;const o={id:`rejection-${Date.now()}`,timestamp:Date.now(),type:"error",error:{message:n||"Unhandled Promise rejection",stack:i,type:"unhandledRejection"},memory:Bt(),userAgent:navigator.userAgent,url:location.href,customData:Yl()};nn(o),console.error("[MemoryLog] Unhandled rejection captured:",t)}),window.addEventListener("beforeunload",()=>{const e=Bt();if(e){const t={id:`beforeunload-${Date.now()}`,timestamp:Date.now(),type:"beforeunload",memory:e,userAgent:navigator.userAgent,url:location.href};$A(t),nn(t)}})}function JA(){if(Pp!==null)return;let e=Date.now();document.addEventListener("visibilitychange",()=>{document.hidden?tl=!0:(e=Date.now(),setTimeout(()=>{tl=!1},Tp+100))}),Pp=window.setInterval(()=>{const t=Date.now(),n=t-e;if(n>AA&&!tl&&!document.hidden){const i={id:`freeze-${Date.now()}`,timestamp:Date.now(),type:"freeze",memory:Bt(),pageStats:No(),performance:{freezeDuration:n,lastHeartbeat:e,fps:ki},userAgent:navigator.userAgent,url:location.href,customData:{recentActions:oi.slice(-10),recentErrors:si.slice(-5),recentNetworkErrors:gn.slice(-5)}};nn(i)}e=t,gt.isInitialized()&&gt.sendHeartbeat(t).catch(()=>{})},Tp)}function eM(){if(Ja===null&&!(typeof PerformanceObserver>"u"))try{Ja=new PerformanceObserver(e=>{for(const t of e.getEntries())if(t.duration>MA){const i=t.attribution;let o;if(i&&i.length>0){const r=i[0];o={name:r.name,containerType:r.containerType,containerSrc:r.containerSrc,containerId:r.containerId,containerName:r.containerName}}const s={id:`longtask-${Date.now()}`,timestamp:Date.now(),type:"longtask",memory:Bt(),performance:{longTaskDuration:t.duration,fps:ki},userAgent:navigator.userAgent,url:location.href,customData:{taskName:t.name,startTime:t.startTime,attribution:o,debugTip:"Use Chrome DevTools Performance panel to record and analyze the call stack"}};nn(s)}}),Ja.observe({entryTypes:["longtask"]})}catch{}}function tM(){if(Cp!==null)return;let e=0;const t=()=>{if(e++,e>=BA){const n=performance.now(),i=n-el;i>0&&(ki=Math.round(e*1e3/i)),e=0,el=n}requestAnimationFrame(t)};el=performance.now(),requestAnimationFrame(t),Cp=window.setInterval(()=>{if(ki<VA&&ki>0){const n={id:`lowfps-${Date.now()}`,timestamp:Date.now(),type:"freeze",memory:Bt(),performance:{fps:ki},userAgent:navigator.userAgent,url:location.href};nn(n)}},IA)}function nM(){setTimeout(()=>{Ap()},UA),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&!Xo&&setTimeout(Ap,1e3)})}function Ap(){if(Xo)return;const e=document.getElementById("root"),t=e&&e.children.length>0,i=!!document.querySelector(".plait-board-container");if(document.body.children.length>1,e&&!t){Xo=!0;const o={id:`whitescreen-${Date.now()}`,timestamp:Date.now(),type:"whitescreen",memory:Bt(),pageStats:{domNodeCount:document.getElementsByTagName("*").length,canvasCount:0,imageCount:0,videoCount:0,iframeCount:0,plaitBoardExists:i},userAgent:navigator.userAgent,url:location.href,customData:{rootExists:!!e,rootChildCount:(e==null?void 0:e.children.length)||0,bodyChildCount:document.body.children.length,hasPlaitBoard:i}};nn(o),console.error("[MemoryLog] 白屏检测: React 未渲染内容")}t&&!i&&location.pathname==="/"&&setTimeout(()=>{if(!document.querySelector(".plait-board-container")&&!Xo){Xo=!0;const o={id:`whitescreen-noboard-${Date.now()}`,timestamp:Date.now(),type:"whitescreen",memory:Bt(),pageStats:No(),userAgent:navigator.userAgent,url:location.href,customData:{reason:"画板未加载",rootChildCount:(e==null?void 0:e.children.length)||0}};nn(o),console.error("[MemoryLog] 白屏检测: 画板组件未加载")}},5e3)}function Ko(e,t,n){oi.push({time:Date.now(),action:e,target:t,detail:n}),oi.length>RA&&oi.shift()}function iM(){let e=0;document.addEventListener("click",t=>{const n=Date.now();if(n-e<LA)return;e=n;const i=t.target;if(!i)return;const o=()=>{var a,c,u,d,m,f,h,g,b,x,y,N,w,D,S;let s="";const r=(c=(a=i.closest)==null?void 0:a.call(i,"[data-track]"))==null?void 0:c.getAttribute("data-track");if(r)s=r;else if(i.tagName==="BUTTON"||(u=i.closest)!=null&&u.call(i,"button")){const E=((d=i.closest)==null?void 0:d.call(i,"button"))||i,k=(m=E.textContent)==null?void 0:m.trim().slice(0,20),V=(b=(g=(h=(f=E.className)==null?void 0:f.split)==null?void 0:h.call(f," "))==null?void 0:g[0])==null?void 0:b.slice(0,20);s=`btn:${k||V||"unknown"}`}else if(i.tagName==="A")s=`link:${((x=i.pathname)==null?void 0:x.slice(0,30))||""}`;else if(i.tagName==="INPUT"||i.tagName==="TEXTAREA"){const E=i;s=`input:${E.name||E.type||((y=E.placeholder)==null?void 0:y.slice(0,15))||""}`}else if(i.id)s=`#${i.id}`;else{const E=(D=(w=(N=i.className)==null?void 0:N.split)==null?void 0:w.call(N," "))==null?void 0:D[0];s=E?`.${E.slice(0,20)}`:((S=i.tagName)==null?void 0:S.toLowerCase())||"unknown"}Ko("click",s)};"requestIdleCallback"in window?window.requestIdleCallback(o,{timeout:100}):setTimeout(o,0)},{capture:!0,passive:!0}),document.addEventListener("keydown",t=>{if(t.ctrlKey||t.metaKey||t.altKey){const n=[];(t.ctrlKey||t.metaKey)&&n.push("Cmd"),t.altKey&&n.push("Alt"),t.shiftKey&&n.push("Shift"),n.push(t.key),Ko("shortcut",n.join("+"))}},{capture:!0,passive:!0}),window.addEventListener("popstate",()=>{Ko("navigate",location.pathname)}),window.addEventListener("hashchange",()=>{Ko("navigate",location.hash)})}function oM(){const e=window.fetch;window.fetch=async function(t,n){const i=Date.now();try{const o=await e.call(this,t,n);if(!o.ok){const s=typeof t=="string"?t:t.url,r=Date.now()-i,a=Bn(s).slice(0,300);gn.push({time:Date.now(),url:a,method:(n==null?void 0:n.method)||"GET",status:o.status,statusText:o.statusText,duration:r}),gn.length>Dp&&gn.shift()}return o}catch(o){const s=typeof t=="string"?t:t.url,r=Date.now()-i,a=Bn(s).slice(0,300);throw gn.push({time:Date.now(),url:a,method:(n==null?void 0:n.method)||"GET",error:o.message,duration:r}),gn.length>Dp&&gn.shift(),o}}}function sM(){window.addEventListener("error",e=>{var n;const t=e.target;if(t&&t!==window&&t instanceof HTMLElement&&("src"in t||"href"in t)){const i=t.src||t.href,o=(n=t.tagName)==null?void 0:n.toLowerCase();Ko("resource_error",o,i==null?void 0:i.slice(0,100));const s={id:`resource-error-${Date.now()}`,timestamp:Date.now(),type:"error",error:{message:`Resource load failed: ${o||"unknown"}`,type:"resourceError"},memory:Bt(),userAgent:navigator.userAgent,url:location.href,customData:Yl({resourceUrl:bn(i?Bn(i):void 0),eventTarget:Cb(t)})};nn(s)}},{capture:!0})}function rM(){const e=console.error;console.error=function(...t){e.apply(this,t);const n=t[0];if(typeof n=="string"&&n.includes("[MemoryLog]"))return;const i=[...t];setTimeout(()=>{var r;let o="",s;for(let a=0;a<Math.min(i.length,5);a++){const c=i[a];if(typeof c=="string")o+=c+" ";else if(typeof c=="number"||typeof c=="boolean")o+=String(c)+" ";else if(c instanceof Error)o+=`Error: ${c.message} `,s=c.stack;else if(c&&typeof c=="object")try{const d=Object.keys(c).slice(0,5).map(m=>{const f=c[m];return`${m}:${typeof f=="string"?f.slice(0,20):typeof f}`}).join(",");o+=`{${d}} `}catch{o+=`[${((r=c.constructor)==null?void 0:r.name)||"Object"}] `}}si.push({time:Date.now(),message:o.trim().slice(0,500),stack:s}),si.length>qA&&si.shift()},0)}}function Mb(){return{userActions:[...oi],consoleErrors:[...si],networkErrors:[...gn],memory:Bt(),pageStats:No(),fps:ki}}function aM(){typeof window>"u"||(window.__memoryLog={getMemory:()=>{const e=Bt();return e?{usedMB:(e.usedJSHeapSize/1024/1024).toFixed(1),limitMB:(e.jsHeapSizeLimit/1024/1024).toFixed(0),percent:(e.usedJSHeapSize/e.jsHeapSizeLimit*100).toFixed(1)}:null},track:FA,diagnose:()=>{const e=Bt(),t=No();if(console.group("[MemoryLog] 内存诊断"),e){const n=e.usedJSHeapSize/1048576,i=e.jsHeapSizeLimit/(1024*1024),o=n/i*100;console.log(`内存: ${n.toFixed(0)} MB / ${i.toFixed(0)} MB (${o.toFixed(1)}%)`)}return console.log(`页面: DOM ${t.domNodeCount} | Canvas ${t.canvasCount} | Img ${t.imageCount} | Video ${t.videoCount}`),t.plaitElementCount!==void 0&&console.log(`Plait 元素: ${t.plaitElementCount}`),t.imageCount>50&&console.warn("图片较多,考虑懒加载"),t.domNodeCount>5e3&&console.warn("DOM 节点较多"),console.groupEnd(),{memory:e,pageStats:t}},snapshot:()=>{const e={id:`manual-${Date.now()}`,timestamp:Date.now(),type:"periodic",memory:Bt(),pageStats:No(),userAgent:navigator.userAgent,url:location.href};nn(e)},getDiagnostics:Mb,getActions:()=>(console.table(oi.map(e=>({time:new Date(e.time).toLocaleTimeString("zh-CN"),action:e.action,target:e.target,detail:e.detail}))),oi),getNetworkErrors:()=>(console.table(gn.map(e=>({time:new Date(e.time).toLocaleTimeString("zh-CN"),url:e.url,status:e.status,error:e.error}))),gn),getConsoleErrors:()=>(console.table(si.map(e=>({time:new Date(e.time).toLocaleTimeString("zh-CN"),message:e.message.slice(0,100)}))),si)})}function lM(){if(jp)return;jp=!0,YA(),QA(),ZA(),JA(),eM(),tM(),nM(),iM(),oM(),sM(),rM(),aM();const e=XA();e&&(e.customData={...e.customData,recovered:!0,recoveredAt:Date.now()},nn(e),KA())}function Zl(e,t){try{const n=cM(e,t),i=JSON.stringify(n,null,2),o=new Blob([i],{type:"application/json"}),s=URL.createObjectURL(o),r=new Date().toISOString().replace(/[:.]/g,"-").slice(0,19),a=document.createElement("a");a.href=s,a.download=`opentu-error-log-${r}.json`,a.style.display="none",document.body.appendChild(a),a.click(),setTimeout(()=>{document.body.removeChild(a),URL.revokeObjectURL(s)},100)}catch(n){console.error("[ErrorLogExporter] Failed to export:",n)}}function cM(e,t){const n={exportTime:new Date().toISOString(),version:"1.0",environment:{userAgent:navigator.userAgent,url:window.location.href,timestamp:Date.now(),language:navigator.language,platform:navigator.platform,screenSize:`${window.screen.width}x${window.screen.height}`},crashRecovery:Kt.getState(),diagnostics:Mb(),unifiedLogs:uw.getMemoryLogs()};return e&&(n.currentError={message:e.message,stack:e.stack,componentStack:(t==null?void 0:t.componentStack)??void 0}),n}const uM="aitu:lazy-chunk-retry",dM="_lazy_chunk_retry",mM="_t",pM=[/Failed to fetch dynamically imported module/i,/Importing a module script failed/i,/Loading chunk [\w-]+ failed/i,/ChunkLoadError/i];function fM(){var e;return typeof document>"u"?"unknown":((e=document.querySelector('meta[name="app-version"]'))==null?void 0:e.getAttribute("content"))||"unknown"}function Ib(e){if(e instanceof Error){const t=[e.name,e.message,e.stack];return e.cause&&t.push(String(e.cause)),t.filter(Boolean).join(`
54
+ `)}return String(e??"")}function hM(e){const t=e.match(/https?:\/\/[^\s)'"]+\.js(?:\?[^\s)'"]*)?/i);if(!t)return"unknown-module";try{return new URL(t[0]).pathname}catch{return t[0]}}function gM(e){const t=Ib(e);return pM.some(n=>n.test(t))}function bM(e){if(typeof window>"u"||typeof sessionStorage>"u"||!gM(e))return!1;const t=Ib(e),n=`${uM}:${fM()}:${hM(t)}`;try{if(sessionStorage.getItem(n)==="1")return!1;sessionStorage.setItem(n,"1")}catch{return!1}const i=new URL(window.location.href);return i.searchParams.set(dM,"1"),i.searchParams.set(mM,String(Date.now())),console.warn("[ErrorBoundary] Detected stale lazy chunk. Reloading once to recover.",e),window.setTimeout(()=>{window.location.replace(i.toString())},0),!0}class xM extends p.Component{constructor(){super(...arguments),this.state={hasError:!1,error:null,errorInfo:null,recoveringFromChunkError:!1}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,n){const i=bM(t);this.setState({errorInfo:n,recoveringFromChunkError:i}),!i&&console.error("[ErrorBoundary] React render error:",t,n)}render(){var t,n,i,o,s,r;return this.state.hasError?this.state.recoveringFromChunkError?l.jsxDEV(Lr,{variant:"error",title:"检测到静态资源已更新",description:"当前页面引用的懒加载资源已失效,正在自动刷新一次以恢复工作台。若长时间未恢复,可手动点击安全模式。",errorMessage:((t=this.state.error)==null?void 0:t.message)||"动态资源加载失败",errorStack:(n=this.state.error)==null?void 0:n.stack,componentStack:((i=this.state.errorInfo)==null?void 0:i.componentStack)??void 0,onExportLog:()=>Zl(this.state.error,this.state.errorInfo),onSafeModeReload:Ql,onGoToDebug:qr},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:153,columnNumber:9},this):l.jsxDEV(Lr,{variant:"error",errorMessage:((o=this.state.error)==null?void 0:o.message)||"未知错误",errorStack:(s=this.state.error)==null?void 0:s.stack,componentStack:((r=this.state.errorInfo)==null?void 0:r.componentStack)??void 0,onExportLog:()=>Zl(this.state.error,this.state.errorInfo),onSafeModeReload:Ql,onGoToDebug:qr},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:170,columnNumber:7},this):this.props.children}}function Ql(){try{localStorage.setItem("aitu_safe_mode","true")}catch{}window.location.reload()}function qr(){const e="/sw-debug.html";window.location.href=e}const NM={crash:{iconBg:"#FFF3E0",iconStroke:"#F57C00",iconPath:l.jsxDEV(l.Fragment,{children:[l.jsxDEV("circle",{cx:"12",cy:"12",r:"10"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:235,columnNumber:9},void 0),l.jsxDEV("line",{x1:"12",y1:"8",x2:"12",y2:"12"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:236,columnNumber:9},void 0),l.jsxDEV("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:237,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:234,columnNumber:7},void 0),defaultTitle:"检测到页面异常退出",defaultDesc:""},error:{iconBg:"#FFEBEE",iconStroke:"#E53935",iconPath:l.jsxDEV(l.Fragment,{children:[l.jsxDEV("circle",{cx:"12",cy:"12",r:"10"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:248,columnNumber:9},void 0),l.jsxDEV("line",{x1:"15",y1:"9",x2:"9",y2:"15"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:249,columnNumber:9},void 0),l.jsxDEV("line",{x1:"9",y1:"9",x2:"15",y2:"15"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:250,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:247,columnNumber:7},void 0),defaultTitle:"应用渲染出错",defaultDesc:"页面遇到了意外错误,可能是画布数据异常或浏览器内存不足。"}},Lr=e=>{const{variant:t,crashCount:n,memoryInfo:i,onIgnore:o,title:s,description:r,errorMessage:a,errorStack:c,componentStack:u,onExportLog:d,onSafeModeReload:m,onGoToDebug:f}=e,[h,g]=Pn.useState(!1),b=NM[t],x=s||b.defaultTitle,y=r||b.defaultDesc;return l.jsxDEV("div",{style:wt.overlay,children:l.jsxDEV("div",{style:wt.card,children:[l.jsxDEV("div",{style:{...wt.iconWrap,backgroundColor:b.iconBg},children:l.jsxDEV("svg",{width:"32",height:"32",viewBox:"0 0 24 24",fill:"none",stroke:b.iconStroke,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:b.iconPath},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:277,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:276,columnNumber:9},void 0),l.jsxDEV("h2",{style:wt.title,children:x},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:284,columnNumber:9},void 0),t==="crash"&&n!=null&&l.jsxDEV("p",{style:wt.desc,children:["页面已连续 ",n," 次未能正常加载,可能是因为:",l.jsxDEV("br",{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:290,columnNumber:13},void 0),"• 画布元素过多导致内存不足",l.jsxDEV("br",{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:291,columnNumber:13},void 0),"• 浏览器内存限制",l.jsxDEV("br",{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:292,columnNumber:13},void 0),l.jsxDEV("br",{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:292,columnNumber:19},void 0),"建议使用「安全模式」创建空白画布,稍后可从侧边栏切换到其他画布。"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:288,columnNumber:11},void 0),t==="error"&&y&&l.jsxDEV("p",{style:wt.desc,children:y},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:299,columnNumber:11},void 0),i&&l.jsxDEV(yM,{info:i},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:303,columnNumber:24},void 0),t==="error"&&a&&l.jsxDEV("div",{style:wt.errorBox,children:[l.jsxDEV("div",{style:wt.errorMsg,children:a},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:308,columnNumber:13},void 0),(c||u)&&l.jsxDEV("button",{onClick:()=>g(N=>!N),style:wt.detailToggle,children:h?"收起详情":"展开详情"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:310,columnNumber:15},void 0),h&&l.jsxDEV("pre",{style:wt.errorDetail,children:[c,u&&`
55
+
56
+ Component Stack:${u}`]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:316,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:307,columnNumber:11},void 0),l.jsxDEV("div",{style:wt.btnRow,children:[t==="crash"&&o&&l.jsxDEV(Zs,{label:"继续加载",onClick:o,bg:"#f5f5f5",bgHover:"#e8e8e8",color:"#666"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:327,columnNumber:13},void 0),t==="error"&&d&&l.jsxDEV(Zs,{label:"导出错误日志",onClick:d,bg:"#f5f5f5",bgHover:"#e8e8e8",color:"#333"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:331,columnNumber:13},void 0),l.jsxDEV(Zs,{label:"安全模式",onClick:m,bg:"#F39C12",bgHover:"#E67E22",color:"#fff"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:334,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:325,columnNumber:9},void 0),l.jsxDEV("div",{style:wt.divider},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:339,columnNumber:9},void 0),l.jsxDEV("div",{style:wt.helpSection,children:l.jsxDEV("div",{style:wt.helpRow,children:[l.jsxDEV("img",{src:"https://nav.ourzhishi.top/api/dynamic-image/qr-code",alt:"企业微信二维码",style:wt.qrcode,referrerPolicy:"no-referrer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:345,columnNumber:13},void 0),l.jsxDEV("div",{style:wt.helpText,children:[l.jsxDEV("p",{style:wt.helpTitle,children:"需要帮助?"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:350,columnNumber:15},void 0),l.jsxDEV("p",{style:wt.helpDesc,children:"扫码联系客服,或前往调试页面导出完整日志与备份数据"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:351,columnNumber:15},void 0),l.jsxDEV(Zs,{label:"打开调试页面",onClick:f,bg:"#f0eefa",bgHover:"#e2ddf7",color:"#5A4FCF",small:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:352,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:349,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:343,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:342,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:274,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:273,columnNumber:5},void 0)},yM=({info:e})=>{const t=e.percent>75?"#E53935":e.percent>50?"#FB8C00":"#43A047";return l.jsxDEV("div",{style:wt.memoryBox,children:[l.jsxDEV("div",{style:{fontSize:12,color:"#888",marginBottom:8},children:"当前内存使用情况"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:370,columnNumber:7},void 0),l.jsxDEV("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[l.jsxDEV("span",{style:{fontSize:14,color:"#333"},children:[e.used," / ",e.limit]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:372,columnNumber:9},void 0),l.jsxDEV("span",{style:{fontSize:14,fontWeight:500,color:t},children:[e.percent.toFixed(0),"%"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:373,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:371,columnNumber:7},void 0),l.jsxDEV("div",{style:{height:4,backgroundColor:"#e0e0e0",borderRadius:2,marginTop:8,overflow:"hidden"},children:l.jsxDEV("div",{style:{height:"100%",width:`${Math.min(e.percent,100)}%`,backgroundColor:t,transition:"width 0.3s ease"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:376,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:375,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:369,columnNumber:5},void 0)},Zs=({label:e,onClick:t,bg:n,bgHover:i,color:o,small:s})=>{const[r,a]=Pn.useState(!1),c=s?{...wt.btnSmall,backgroundColor:r?i:n,color:o}:{...wt.btn,backgroundColor:r?i:n,color:o};return l.jsxDEV("button",{onClick:t,onMouseOver:()=>a(!0),onMouseOut:()=>a(!1),style:c,children:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/ErrorBoundary.tsx",lineNumber:392,columnNumber:5},void 0)},wt={overlay:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0,0,0,0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:99999},card:{backgroundColor:"#fff",borderRadius:12,padding:32,maxWidth:520,width:"90%",maxHeight:"90vh",overflowY:"auto",boxShadow:"0 20px 60px rgba(0,0,0,0.3)"},iconWrap:{width:64,height:64,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 24px"},title:{margin:"0 0 12px",fontSize:20,fontWeight:600,textAlign:"center",color:"#1a1a1a"},desc:{margin:"0 0 20px",fontSize:14,color:"#666",textAlign:"center",lineHeight:1.6},memoryBox:{backgroundColor:"#f5f5f5",borderRadius:8,padding:"12px 16px",marginBottom:24},errorBox:{backgroundColor:"#f5f5f5",borderRadius:8,padding:"12px 16px",marginBottom:24},errorMsg:{fontSize:13,color:"#E53935",wordBreak:"break-word"},detailToggle:{marginTop:8,padding:0,border:"none",background:"none",color:"#888",fontSize:12,cursor:"pointer",textDecoration:"underline"},errorDetail:{marginTop:8,padding:8,backgroundColor:"#eee",borderRadius:4,fontSize:11,color:"#555",maxHeight:150,overflow:"auto",whiteSpace:"pre-wrap",wordBreak:"break-all"},btnRow:{display:"flex",gap:12},btn:{flex:1,padding:"12px 24px",fontSize:14,fontWeight:500,border:"none",borderRadius:8,cursor:"pointer",transition:"background-color 0.2s ease"},btnSmall:{padding:"8px 16px",fontSize:13,fontWeight:500,border:"none",borderRadius:6,cursor:"pointer",transition:"background-color 0.2s ease"},divider:{height:1,backgroundColor:"#eee",margin:"24px 0"},helpSection:{padding:0},helpRow:{display:"flex",gap:16,alignItems:"center"},qrcode:{width:96,height:96,borderRadius:8,flexShrink:0},helpText:{flex:1,minWidth:0},helpTitle:{margin:"0 0 4px",fontSize:14,fontWeight:500,color:"#333"},helpDesc:{margin:"0 0 12px",fontSize:12,color:"#999",lineHeight:1.5}},wM=500,Jl="board",uu="aitu_board_close_snapshot_v1";let nl=!1;function vM(){if(!(typeof window>"u"))return window.__OPENTU_BOOT__}function Mp(){return new URLSearchParams(window.location.search).get(Jl)}function Ip(e,t=!1){const n=new URL(window.location.href);e?n.searchParams.set(Jl,e):n.searchParams.delete(Jl),t?window.history.replaceState({boardId:e},"",n.toString()):window.history.pushState({boardId:e},"",n.toString())}function EM(e){try{localStorage.setItem(uu,JSON.stringify(e))}catch(t){console.warn("[App] Failed to save board close snapshot:",t)}}function Vb(){try{const e=localStorage.getItem(uu);if(!e)return null;const t=JSON.parse(e);return!t||typeof t.boardId!="string"||typeof t.updatedAt!="number"||!Array.isArray(t.children)?null:t}catch(e){return console.warn("[App] Failed to load board close snapshot:",e),null}}function Qs(e){try{const t=Vb();if(!t)return;(!e||t.boardId===e)&&localStorage.removeItem(uu)}catch(t){console.warn("[App] Failed to clear board close snapshot:",t)}}function kM(){const[e,t]=p.useState(!0),[n,i]=p.useState(!1),o=p.useRef(!1),[s,r]=p.useState(!1),[a,c]=p.useState(null),[u,d]=p.useState({children:[]}),[m,f]=p.useState(null),h=p.useRef(null),g=p.useRef(),b=p.useRef(null),x=p.useRef(null),y=p.useRef(!1),N=p.useRef(null),w=p.useRef(!1),D=p.useRef(!1),S=p.useRef(!1);rA(m),p.useEffect(()=>{h.current=m},[m]);const E=p.useCallback((A,j,C=Date.now())=>{g.current=j.viewport,b.current={boardId:A,children:j.children,viewport:j.viewport,theme:j.theme,updatedAt:C}},[]),k=p.useCallback(A=>{const j=b.current,C=h.current;if(!j||!C||j.boardId!==C||!S.current)return;EM({...j,updatedAt:Date.now()}),wn.getInstance().saveCurrentBoard({children:j.children,viewport:j.viewport,theme:j.theme}).catch(J=>{console.warn(`[App] Failed to flush board on ${A}:`,J)})},[]);p.useEffect(()=>{const A=vM();A&&(s||a||!e)&&A.markReady()},[a,e,s]),p.useEffect(()=>{s||a||e||Eb(["offline-static-assets"])},[a,e,s]),p.useEffect(()=>{(async()=>{if(Kt.shouldShowSafeModePrompt()&&!Kt.isSafeMode()){r(!0),t(!1);return}if(nl){const j=wn.getInstance();t(!1),await j.waitForInitialization();const C=j.getState().currentBoardId;if(C&&j.getBoardMetadata(C)){const M=await j.switchBoard(C),J={children:M.elements||[],viewport:M.viewport,theme:M.theme};E(M.id,J,M.updatedAt),S.current=!1,d(J)}t(!1),Kt.markLoadingComplete();return}nl=!0;try{const j=wn.getInstance();if(t(!1),await j.initialize(),await Tb()||await lA(),Kt.isSafeMode()){console.log("[App] Safe mode: looking for existing safe mode board");const de=j.getAllBoards().find(oe=>oe.name.startsWith("安全模式")&&(!oe.elements||oe.elements.length===0));if(de)console.log("[App] Safe mode: reusing existing board:",de.name),await j.switchBoard(de.id),f(de.id);else{console.log("[App] Safe mode: creating new blank board");const oe=new Date().toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).replace(/\//g,"-"),ve=await j.createBoard({name:`安全模式 ${oe}`,elements:[]});ve&&(await j.switchBoard(ve.id),f(ve.id))}const W={children:[]},ae=(de==null?void 0:de.id)||h.current||"safe-mode";E(ae,W,Date.now()),d(W),o.current=!0,i(!0),t(!1),Kt.markLoadingComplete(),Kt.disableSafeMode(),setTimeout(()=>{se.warning({content:"当前处于安全模式,已创建空白画布。可从侧边栏切换到其他画布。",duration:8e3,closeBtn:!0})},500);return}let M=null;const J=Mp(),ye=j.getState().currentBoardId;let P=null;if(J&&j.getBoardMetadata(J)?P=J:ye&&j.getBoardMetadata(ye)&&(P=ye),P)M=await j.switchBoard(P);else if(j.hasBoards()){const G=j.getTree(),de=Ub(G);de&&(M=await j.switchBoard(de.id))}else{const G=await j.createBoard({name:"我的画板1",elements:[]});G&&(M=await j.switchBoard(G.id))}if(M&&(Ip(M.id,!0),f(M.id),j.persistCurrentBoardId(M.id),S.current=!1),M){const G=Vb();let de={children:M.elements||[],viewport:M.viewport,theme:M.theme};if(G&&G.boardId===M.id&&G.updatedAt>M.updatedAt){de={children:G.children,viewport:G.viewport,theme:G.theme},M={...M,...de,updatedAt:G.updatedAt};const W=M.id;j.saveBoard(W,de).then(()=>{S.current=!1,Qs(W)}).catch(ae=>{console.warn("[App] Failed to rehydrate board from close snapshot:",ae)}),se.warning({content:"检测到上次关闭前的未落盘画布,已自动恢复",duration:5e3,closeBtn:!0})}else G&&G.boardId&&!j.getBoardMetadata(G.boardId)&&Qs(G.boardId);E(M.id,de,M.updatedAt),S.current=!1,d(de),il(de.children).then(W=>{if(W!==de.children){const ae={...de,children:W};E(M.id,ae,Date.now()),d(ae)}}).catch(W=>{console.error("[App] Video URL recovery failed:",W)})}}catch(j){console.error("[App] Initialization failed:",j),c(j instanceof Error?j:new Error(String(j)))}finally{o.current=!0,i(!0),t(!1),Kt.markLoadingComplete()}})()},[E]);const V=p.useCallback(async(A,j=!1)=>{try{j||(Ip(A.id),wn.getInstance().persistCurrentBoardId(A.id)),f(A.id),D.current=!1,S.current=!1;const M={children:await il(A.elements||[]),viewport:A.viewport,theme:A.theme};E(A.id,M,A.updatedAt),d(M),setTimeout(()=>{N.current&&(Es(N.current),Fp(N.current),ks(N.current))},0)}catch(C){console.error("[App] Board switch failed:",C),se.error({content:`切换画板失败: ${C instanceof Error?C.message:"未知错误"}`,duration:5e3,closeBtn:!0})}},[E]);p.useEffect(()=>{const A=async()=>{if(!y.current){y.current=!0;try{const j=Mp();if(j&&j!==m){const C=wn.getInstance(),M=await C.switchBoard(j);M&&(await V(M,!0),C.persistCurrentBoardId(M.id))}}catch(j){console.error("[App] Failed to handle browser navigation:",j)}finally{y.current=!1}}};return window.addEventListener("popstate",A),()=>{window.removeEventListener("popstate",A)}},[m,V]);const R=p.useCallback(async()=>{w.current=!0;try{const A=wn.getInstance();let j=A.getCurrentBoard();if(!j){const M=A.getState().currentBoardId;if(!M){console.warn("[App] handleTabSyncNeeded: no current board ID");return}if(!A.getBoardMetadata(M)){console.warn("[App] handleTabSyncNeeded: board not found",M);return}try{j=await A.switchBoard(M)}catch(J){console.error("[App] handleTabSyncNeeded: failed to load board",J);return}}const C=await A.reloadBoard(j.id);if(C){const J={children:await il(C.elements||[]),viewport:C.viewport,theme:C.theme};E(C.id,J,C.updatedAt),S.current=!1,d(J)}}catch(A){console.error("[App] Failed to sync board data:",A),ds()}finally{setTimeout(()=>{w.current=!1},100)}},[E]),z=p.useCallback(A=>{if(d(A),g.current=A.viewport,!o.current||w.current)return;D.current=!0,S.current=!0;const j=wn.getInstance(),C=j.getCurrentBoard();if(!C){console.warn("[App] handleBoardChange: board not fully loaded, skipping save");return}E(C.id,A),j.saveCurrentBoard(A).then(()=>{S.current=!1,Qs(C.id),vb(C.id)}).catch(M=>{console.error("[App] Failed to save board:",M)})},[E]),I=p.useCallback(A=>{g.current=A;const j=b.current;j&&(b.current={...j,viewport:A,updatedAt:Date.now()}),!w.current&&(S.current=!0,x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{if(w.current)return;const C=wn.getInstance(),M=C.getCurrentBoard();M&&C.saveCurrentBoard({children:M.elements,viewport:A,theme:M.theme}).then(()=>{S.current=!1,Qs(M.id)}).catch(J=>{console.error("[App] Failed to save viewport:",J)})},wM))},[E]);p.useEffect(()=>{const A=J=>{if(x.current&&(clearTimeout(x.current),x.current=null),w.current)return;const P=wn.getInstance().getCurrentBoard(),G=b.current,de=g.current,W=h.current;P&&W&&(!G||G.boardId!==W)&&E(P.id,{children:P.elements,viewport:de??P.viewport,theme:P.theme},Date.now()),!(J==="visibilitychange"&&!D.current)&&k(J)},j=()=>{A("beforeunload")},C=()=>{document.visibilityState==="hidden"&&A("visibilitychange")},M=()=>{A("pagehide")};return window.addEventListener("beforeunload",j),window.addEventListener("pagehide",M),document.addEventListener("visibilitychange",C),()=>{window.removeEventListener("beforeunload",j),window.removeEventListener("pagehide",M),document.removeEventListener("visibilitychange",C),x.current&&clearTimeout(x.current)}},[k,E]);const U=p.useCallback(A=>{r(!1),A?Kt.enableSafeMode():Kt.clearCrashState(),t(!0),nl=!1,setTimeout(()=>{ds()},100)},[]);return s?l.jsxDEV(Lr,{variant:"crash",crashCount:Kt.getCrashCount(),memoryInfo:Kt.getMemoryInfo(),onIgnore:()=>U(!1),onSafeModeReload:()=>U(!0),onGoToDebug:qr},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/app.tsx",lineNumber:874,columnNumber:7},this):a?l.jsxDEV(Lr,{variant:"error",title:"应用初始化失败",description:"无法加载画板数据,可能是存储损坏或浏览器限制。",errorMessage:a.message,errorStack:a.stack,onExportLog:()=>Zl(a),onSafeModeReload:Ql,onGoToDebug:qr},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/app.tsx",lineNumber:888,columnNumber:7},this):e?l.jsxDEV("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100vh"},children:"加载中..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/app.tsx",lineNumber:903,columnNumber:7},this):l.jsxDEV("div",{style:{height:"100vh"},children:l.jsxDEV(tA,{value:u.children,viewport:u.viewport,theme:u.theme,onChange:z,onViewportChange:I,onBoardSwitch:V,onTabSyncNeeded:R,isDataReady:n,currentBoardId:m,afterInit:A=>{N.current=A,window.__drawnix__web__console=j=>{SM(A,j)}}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/app.tsx",lineNumber:918,columnNumber:7},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/app/app.tsx",lineNumber:917,columnNumber:5},this)}const SM=(e,t)=>{const n=q.getBoardContainer(e).closest(".drawnix");let i=n.querySelector(".drawnix-console");i||(i=document.createElement("div"),i.classList.add("drawnix-console"),n.append(i));const o=document.createElement("div");o.innerHTML=t,i.append(o)};async function il(e){return e.map(t=>{const n=t.url;if(n!=null&&n.startsWith("/__aitu_cache__/video/"))return t;if(n!=null&&n.startsWith("blob:")&&n.includes("#merged-video-")){const i=n.indexOf("#merged-video-");if(i!==-1){const o=n.substring(i+1),s=o.indexOf("#",1),a=`/__aitu_cache__/video/${s>0?o.substring(0,s):o}.mp4`;return{...t,url:a}}}return t})}function Ub(e){for(const t of e){if(t.type==="board")return t.data;if(t.type==="folder"&&t.children){const n=Ub(t.children);if(n)return n}}return null}const Vp=window.addEventListener.bind(window),TM=window.removeEventListener.bind(window);let du=null;window.addEventListener=function(e,t,n){if(e==="unload"){console.warn("[Permissions Policy] Blocked unload event listener");return}return e==="beforeunload"&&(du=t),Vp.call(window,e,t,n)};window.removeEventListener=function(e,t,n){return e==="beforeunload"&&(du=null),TM.call(window,e,t,n)};window.__checkBeforeUnload=()=>!!du;let Up=!1;const Rb="sw-debug-enabled";function DM(){try{return sessionStorage.getItem(Rb)==="true"}catch{return!1}}function Rp(e){try{sessionStorage.setItem(Rb,e===!0?"true":"false")}catch{}}let Lo=DM();const vi=[];let co=null,ti=0;const Br=15e3,_M=200,Bo={error:console.error,warn:console.warn,info:console.info,log:console.log,debug:console.debug};function bi(e,t,n){if(t.includes("[SW]")||t.includes("[SWTaskQueue]")||t.includes("[SWChannelManager]")||t.includes("[SWChannelClient]")||t.includes("[ServiceWorkerChannel]")||t.includes("Invalid message structure")||t.includes("posthog.com")||t.includes("sentry.io")||n&&(n.includes("posthog")||n.includes("sentry")))return;const i=()=>{gt.isInitialized()&&gt.reportConsoleLog(e,[{message:t,stack:n||"",source:window.location.href}],Date.now()).catch(()=>{})},o=()=>{for(;vi.length>0&&gt.isInitialized();){const r=vi.shift();r&&gt.reportConsoleLog(r.level,[{message:r.message,stack:r.stack||"",source:window.location.href}],Date.now()).catch(()=>{})}},s=()=>{const r=Date.now();co||r<ti||(co=gt.initialize().then(a=>{if(!a){ti=Date.now()+Br;return}ti=0,o()}).catch(()=>{ti=Date.now()+Br}).finally(()=>{co=null}))};gt.isInitialized()?i():(vi.length>=_M&&vi.shift(),vi.push({level:e,message:t,stack:n}),s())}function Oo(e){return e.map(t=>{if(t instanceof Error)return t.message;if(typeof t=="object")try{return JSON.stringify(t)}catch{return String(t)}return String(t)}).join(" ")}function qp(e){for(const t of e)if(t instanceof Error&&t.stack)return t.stack;return""}function jM(){if(Up||!("serviceWorker"in navigator))return;Up=!0;const e=()=>{if(gt.isInitialized())gt.subscribeToEvent("debug:statusChanged",t=>{const n=t,i=n.enabled??n.debugModeEnabled??!1;Lo=i,Rp(i)}),gt.getDebugStatus().then(t=>{const n=t.enabled??t.debugModeEnabled??!1;Lo=n,Rp(n)});else{const t=Date.now();!co&&t>=ti&&(co=gt.initialize().then(n=>{if(!n){ti=Date.now()+Br;return}for(ti=0;vi.length>0&&gt.isInitialized();){const i=vi.shift();i&&gt.reportConsoleLog(i.level,[{message:i.message,stack:i.stack||"",source:window.location.href}],Date.now()).catch(()=>{})}}).catch(()=>{ti=Date.now()+Br}).finally(()=>{co=null})),setTimeout(e,500)}};e(),console.error=function(...t){Bo.error.apply(console,t),bi("error",Oo(t),qp(t))},console.warn=function(...t){Bo.warn.apply(console,t),bi("warn",Oo(t),qp(t))},console.log=function(...t){Bo.log.apply(console,t),Lo&&bi("log",Oo(t),"")},console.info=function(...t){Bo.info.apply(console,t),Lo&&bi("info",Oo(t),"")},console.debug=function(...t){Bo.debug.apply(console,t),Lo&&bi("debug",Oo(t),"")},window.addEventListener("error",t=>{var i;const n=`${t.message} at ${t.filename}:${t.lineno}:${t.colno}`;bi("error",n,((i=t.error)==null?void 0:i.stack)||"")}),window.addEventListener("unhandledrejection",t=>{const n=t.reason,i=n instanceof Error?n.message:`Unhandled Promise: ${String(n)}`,o=n instanceof Error&&n.stack||"";bi("error",i,o)})}const ba=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),qb=typeof window<"u"?new URLSearchParams(window.location.search).get("sw"):null,Lb=qb==="1",PM=qb==="0",Bb=typeof navigator<"u"&&"serviceWorker"in navigator,Ob=Bb&&!PM&&(!ba||Lb);Ob&&jM();Kt.markLoadingStart();Kt.checkUrlSafeMode();lM();const CM=typeof window<"u"&&new URLSearchParams(window.location.search).get("report")==="1",AM=CM||!ba&&!1,Fb="0.6.78",xa=dw(),Lp="_lazy_chunk_retry",MM="_t";function IM(){if(typeof window>"u")return;const e=new URL(window.location.href);if(e.searchParams.has(Lp)){e.searchParams.delete(Lp),e.searchParams.delete(MM);try{window.history.replaceState(window.history.state,"",e.toString())}catch{}}}IM();function Hb(e){return e==="jsdelivr"||e==="unpkg"||e==="local"}function VM(){return window.__OPENTU_BOOT__||null}function to(e){var t,n;(n=(t=VM())==null?void 0:t.setProgress)==null||n.call(t,e==null?void 0:e.progress,e)}function UM(){const e=window.__OPENTU_CDN__||window.__AITU_CDN__;return!e||!Hb(e.cdn)?null:{cdn:e.cdn,latency:Number.isFinite(e.latency)&&e.latency>=0?e.latency:0,timestamp:Number.isFinite(e.timestamp)&&e.timestamp>0?e.timestamp:Date.now()}}function Bp(e){const t=UM();if(!t)return;const n={type:"SW_CDN_SET_PREFERENCE",...t,version:Fb},i=new Set,o=[navigator.serviceWorker.controller,e==null?void 0:e.active,e==null?void 0:e.waiting,e==null?void 0:e.installing];for(const s of o)s&&i.add(s);i.forEach(s=>{s.postMessage(n)})}function Op(e){Bp(e);const t=window.__OPENTU_CDN_API__||window.__AITU_CDN_API__;t!=null&&t.selectBestCDN&&t.selectBestCDN().then(n=>{n&&Hb(n.cdn)&&(window.__OPENTU_CDN__=n),Bp(e)}).catch(n=>{console.warn("[Main] Failed to sync CDN preference to Service Worker:",n)})}function RM(){navigator.serviceWorker.getRegistration().then(e=>e==null?void 0:e.unregister()).catch(e=>{console.warn("[Main] Development service worker cleanup failed:",e)})}function Js(e,t={}){if(typeof window>"u")return;const{delay:n=0,timeout:i=2e3}=t,o=()=>{const r=window.requestIdleCallback;if(typeof r=="function"){r(e,{timeout:i});return}window.setTimeout(e,Math.min(i,500))},s=()=>{if(n>0){window.setTimeout(o,n);return}o()};window.requestAnimationFrame(()=>{window.requestAnimationFrame(s)})}iS({dsn:"https://a18e755345995baaa0e1972c4cf24497@o4510700882296832.ingest.us.sentry.io/4510700883869696",enabled:AM,sendDefaultPii:!1,tracesSampleRate:.1,beforeSend(e){return e.extra&&(e.extra=Hi(e.extra)),e.contexts&&(e.contexts=Hi(e.contexts)),e.breadcrumbs&&(e.breadcrumbs=e.breadcrumbs.map(t=>({...t,data:t.data?Hi(t.data):void 0,message:t.message?String(Hi(t.message)):void 0}))),e.request&&(e.request.headers&&(e.request.headers=Hi(e.request.headers)),e.request.data&&(e.request.data=Hi(e.request.data)),e.request.url&&(e.request.url=Bn(e.request.url))),e}});pa("app_version",Fb);pa("deployment_env",xa.deployment_env);pa("release_channel",xa.release_channel);pa("host",xa.host||"unknown");to({tip:"正在初始化启动服务...",source:"phase",progress:12});if(typeof window<"u"){xA();const e=()=>{if(window.posthog){fw(xa),bA();return}setTimeout(e,300)};Js(e,{delay:0,timeout:1e3}),Js(()=>{_b().catch(n=>{console.warn("[Main] Database cleanup failed:",n)}),EA.runMigration().then(()=>Promise.all([mw(),pw.initializeAsync()])).catch(n=>{console.warn("[Main] Storage migration/init failed:",n)})},{delay:400,timeout:2500}),Js(()=>{Ku.start(),Ku.logMemoryStatus()},{delay:5e3,timeout:2500});const t=()=>{window.posthog?dA():setTimeout(t,500)};Js(t,{delay:1500,timeout:3e3})}Bb&&ba&&!Lb&&RM();if(Ob){const e=ba;let t=null,n=!1,i=!1,o=null,s=null;const r=g=>{o!==g&&(o=g,window.dispatchEvent(new CustomEvent("sw-update-available",{detail:{version:g}})))},a=g=>{if(g.pendingVersion&&g.pendingVersion!==g.committedVersion&&(g.upgradeState==="ready"||g.upgradeState==="committing")){r(g.pendingVersion);return}g.pendingVersion||(o=null)},c=g=>{const b=g||t||(s==null?void 0:s.waiting)||navigator.serviceWorker.controller||(s==null?void 0:s.active)||null;b&&b.postMessage({type:"GET_VERSION_STATE"})},u=g=>{!n||i||(i=!0,console.info("[Main] Scheduling reload after service worker takeover:",{reason:g}),setTimeout(()=>{ds()},1e3))},d=async()=>{const g=[t,s==null?void 0:s.waiting];try{const b=await navigator.serviceWorker.getRegistration()||null;b&&(s=b,g.push(b.waiting))}catch(b){console.warn("[Main] Failed to get live service worker registration:",b)}try{const b=await navigator.serviceWorker.ready;g.push(b.waiting)}catch(b){console.warn("[Main] Failed to inspect ready service worker registration:",b)}for(const b of g)if(!(!b||b.state==="redundant")&&b!==navigator.serviceWorker.controller)return t=b,b;return null},m=window.__OPENTU_SW_REGISTRATION_PROMISE__||navigator.serviceWorker.register("./sw.js").catch(g=>(console.warn("[Main] Service worker registration failed:",g),null));window.__OPENTU_SW_REGISTRATION_PROMISE__=m,m.then(g=>{if(!g){to({tip:"离线加速未启用,正在直接启动工作台...",source:"phase",progress:70});return}s=g,to({tip:"启动缓存服务已连接,正在准备资源清单...",source:"phase",progress:72}),Op(g),e?(g.update().catch(b=>console.warn("Forced update check failed:",b)),g.waiting&&g.waiting.postMessage({type:"FORCE_UPGRADE"})):g.waiting&&navigator.serviceWorker.controller&&(t=g.waiting,c(g.waiting)),g.addEventListener("updatefound",()=>{const b=g.installing;b&&b.addEventListener("statechange",()=>{b.state==="installed"&&navigator.serviceWorker.controller&&(t=b,e?b.postMessage({type:"FORCE_UPGRADE"}):(c(b),setTimeout(()=>c(b),5e3)))})}),g.active&&!g.installing&&!g.waiting&&to({tip:"启动缓存服务已就绪,正在恢复工作台状态...",source:"phase",progress:78}),c(),setInterval(()=>{g.update().catch(b=>{console.warn("Update check failed:",b)})},300*1e3),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&c()})}).catch(g=>{to({tip:"离线加速未启用,正在直接启动工作台...",source:"phase",progress:70})});const f=()=>{if(!gt.isInitialized()){setTimeout(f,500);return}gt.setEventHandlers({onSWUpdated:g=>{c()},onSWNewVersionReady:g=>{r(g.version),c()},onSWActivated:g=>{if(n){u("sw:activated");return}t=null,c()}}),s!=null&&s.waiting&&navigator.serviceWorker.controller&&(t=s.waiting,c(s.waiting))};setTimeout(f,1e3);const h=async()=>{if(!gt.isInitialized()){setTimeout(h,500);return}gt.registerVideoThumbnailHandler(async(g,b)=>{try{const{generateVideoThumbnailFromBlob:x}=await Re(async()=>{const{generateVideoThumbnailFromBlob:E}=await import("./tool-windows-DOIu9TAD.js").then(k=>k.pi);return{generateVideoThumbnailFromBlob:E}},__vite__mapDeps([0]),import.meta.url);let y=null;const w=await(await caches.open("drawnix-images")).match(g);if(w&&(y=await w.blob()),!y&&(g.startsWith("http://")||g.startsWith("https://")))try{const E=await fetch(g);E.ok&&(y=await E.blob())}catch{y=null}if(!y)return{error:"Video not found in cache or network"};const D=await x(y,b||400);return{thumbnailUrl:await new Promise((E,k)=>{const V=new FileReader;V.onloadend=()=>E(V.result),V.onerror=k,V.readAsDataURL(D)})}}catch(x){return{error:x instanceof Error?x.message:String(x)}}})};h(),navigator.serviceWorker.addEventListener("message",g=>{var b;((b=g.data)==null?void 0:b.type)==="SW_VERSION_STATE"&&a(g.data)}),navigator.serviceWorker.addEventListener("controllerchange",()=>{Op(s),c(),u("controllerchange")}),window.addEventListener("user-confirmed-upgrade",()=>{(async()=>{const g=await d();if(!g){console.warn("[Main] No waiting service worker available for COMMIT_UPGRADE"),c(),s==null||s.update().catch(b=>{console.warn("[Main] Update check after missing waiting worker failed:",b)});return}n=!0,g.postMessage({type:"COMMIT_UPGRADE"})})()})}to({tip:"正在挂载工作台界面...",source:"phase",progress:88});const qM=Or.createRoot(document.getElementById("root"));qM.render(l.jsxDEV(p.StrictMode,{children:l.jsxDEV(xM,{children:l.jsxDEV(kM,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/main.tsx",lineNumber:817,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/main.tsx",lineNumber:816,columnNumber:5},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/apps/web/src/main.tsx",lineNumber:815,columnNumber:3},void 0));const FM=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));export{XS as B,QS as W,mb as a,BM as b,bt as c,D_ as d,OM as e,FM as f,nP as i,T_ as m,LC as u,sD as w};