@forsion/unit 2.13.4 → 2.13.6

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 (307) hide show
  1. package/README.md +2 -2
  2. package/main.mjs +129 -10
  3. package/package.json +1 -1
  4. package/release.json +6 -5
  5. package/web/assets/ArtificialView-DHqb9CTL.js +1 -0
  6. package/web/assets/AutomationBuilder-CzBKmOiw.js +1 -0
  7. package/web/assets/CalendarConfigView-Blw47NCs.js +1 -0
  8. package/web/assets/CalendarSide-CFSzme3H.js +1 -0
  9. package/web/assets/CalendarView-B8sQfgZt.js +3 -0
  10. package/web/assets/CalendarView-t91KpUG7.css +1 -0
  11. package/web/assets/CapabilityMenu-Dzn6RbB1.js +1 -0
  12. package/web/assets/Chrome-owLewFu4.js +1 -0
  13. package/web/assets/{CodeView-GZ0BAgoW.js → CodeView-E18NDilX.js} +3 -3
  14. package/web/assets/CtxMenuButtons-CAiwQkOK.js +1 -0
  15. package/web/assets/DashboardGridView-CBbYKcCo.js +25 -0
  16. package/web/assets/DashboardGridView-RoVFSkNO.css +1 -0
  17. package/web/assets/EventCard-D9uQe7g4.js +1 -0
  18. package/web/assets/ExcalidrawCanvas-BSOERegJ.js +1 -0
  19. package/web/assets/ExcalidrawCanvas-BgcFPMpU.css +1 -0
  20. package/web/assets/FloatingToc-iK08Qpjc.js +1 -0
  21. package/web/assets/{GitCloneDialog-Bj9G3o-n.css → GitCloneDialog-DOxZk2K0.css} +1 -1
  22. package/web/assets/GitCloneDialog-DfY0kqhP.js +1 -0
  23. package/web/assets/HomepageView-BCqFe1Ym.js +4 -0
  24. package/web/assets/HomepageView-Bx8FbWlY.css +1 -0
  25. package/web/assets/ImageStudioPanels-DdwihAkT.js +3 -0
  26. package/web/assets/ImageStudioView-gJSYrmu1.js +1 -0
  27. package/web/assets/InlineAiPanel-CjYOW0_0.js +1 -0
  28. package/web/assets/InlineFiles-3g2jMUeA.js +1 -0
  29. package/web/assets/{MarkdownBlock-DQTuoen3.css → MarkdownBlock-Cqfk5DhC.css} +1 -1
  30. package/web/assets/MarkdownBlock-DjsGkPZ_.js +58 -0
  31. package/web/assets/{ModelPill-CzdNh7Mt.css → ModelPill-BiUsuhy3.css} +1 -1
  32. package/web/assets/ModelPill-DgyXBsL9.js +2 -0
  33. package/web/assets/MuseLibraryView-D_HBijmU.js +2 -0
  34. package/web/assets/MuseView-BVDlmM6i.js +7 -0
  35. package/web/assets/{PageHistoryPanel-Bn4-XmdK.js → PageHistoryPanel-B1EAPZeX.js} +2 -2
  36. package/web/assets/{PdfAnnotator-Cq8cklTz.js → PdfAnnotator-bdB9evsY.js} +3 -3
  37. package/web/assets/PenRow-DCOIGlfY.js +1 -0
  38. package/web/assets/PluginToolCard-BXE5vA1h.js +2 -0
  39. package/web/assets/PluginToolCard-BmTRr5JT.css +1 -0
  40. package/web/assets/ProductView-l5Q7uBy6.js +1 -0
  41. package/web/assets/SettingsPage-fjxfS_Mt.js +3 -0
  42. package/web/assets/StudioGuestSurface-360CWUwf.js +1 -0
  43. package/web/assets/TodoListView-BsPt2GUU.js +1 -0
  44. package/web/assets/Tooltip-CuXpWtdJ.js +1 -0
  45. package/web/assets/UnifiedPage-6xbFLtXT.js +712 -0
  46. package/web/assets/UnifiedPage-CTmQpf2T.css +1 -0
  47. package/web/assets/{ViewSelectionBar-35x8TiLA.js → ViewSelectionBar-C5FDh7fO.js} +2 -2
  48. package/web/assets/appStore-BskcSDl6.js +455 -0
  49. package/web/assets/appStore-iy8_Tmac.css +1 -0
  50. package/web/assets/arrow-up-right-DEykpgsH.js +1 -0
  51. package/web/assets/{artificial-BzLFkChP.css → artificial-BubVxExB.css} +1 -1
  52. package/web/assets/astryxBridge-B2IZdPvo.js +69 -0
  53. package/web/assets/astryxBridge-djzCiy4v.css +1 -0
  54. package/web/assets/automationListSource-Cm09JKkK.js +1 -0
  55. package/web/assets/boardSurface-Dv-aVaUJ.js +1 -0
  56. package/web/assets/calendarNavStore-FKStA7Hh.js +1 -0
  57. package/web/assets/canvasPrefs-CMulOS0k.js +1 -0
  58. package/web/assets/chatBoxSurface-BR_G6cxG.js +1 -0
  59. package/web/assets/chevron-up-C_EDOZzI.js +1 -0
  60. package/web/assets/{client-CaivGZFR.js → client-DD5czSuF.js} +5 -5
  61. package/web/assets/code-xml-vTB4LtTf.js +1 -0
  62. package/web/assets/{codeStudioStore-DhyMazGT.js → codeStudioStore-OswE1_s0.js} +8 -8
  63. package/web/assets/codingNavigation-BrkLENBZ.css +1 -0
  64. package/web/assets/contextMenuSurface-DqdYEGuH.js +1 -0
  65. package/web/assets/copy-plus-CVHqDNny.js +1 -0
  66. package/web/assets/create-DZWy4zBR.js +14 -0
  67. package/web/assets/dashboardSurface-Co4byEQm.js +1 -0
  68. package/web/assets/dbStore-Bc2lC8ZI.js +2 -0
  69. package/web/assets/deskCapture-BfTzH2aO.js +1 -0
  70. package/web/assets/{diff2html-Daje9Kkm.js → diff2html-0MkNy2ws.js} +2 -2
  71. package/web/assets/{docx-preview-CABR7n30.js → docx-preview-CwNWZegI.js} +1 -1
  72. package/web/assets/draft-DTzuTatQ.js +2 -0
  73. package/web/assets/drawingStore-BD5m2eqn.js +7 -0
  74. package/web/assets/file-down-Cjo_T6By.js +1 -0
  75. package/web/assets/floatingTocSurface-D3IIVNnq.js +1 -0
  76. package/web/assets/foldActions-utwZpRrA.js +1 -0
  77. package/web/assets/folder-DiaFWdCg.js +1 -0
  78. package/web/assets/folder-minus-DUEOcs12.js +1 -0
  79. package/web/assets/folder-plus-Cmhq0GcR.js +1 -0
  80. package/web/assets/gestures-Bx9M0le5.js +1 -0
  81. package/web/assets/git-branch-DzGWffyD.js +1 -0
  82. package/web/assets/homeCardStatus-NAk4A77P.js +1 -0
  83. package/web/assets/i18n-CAf4PT1o.css +1 -0
  84. package/web/assets/i18n.generated-D4-Wu9Wh.js +15 -0
  85. package/web/assets/imageStudio-CwG21Bat.css +1 -0
  86. package/web/assets/imageStudio-D67oElIb.js +4 -0
  87. package/web/assets/index-3VWZ1rsL.js +13 -0
  88. package/web/assets/index-58wBjkHy.js +3 -0
  89. package/web/assets/index-B9_zH7f5.js +1 -0
  90. package/web/assets/index-BQrMYjou.js +1 -0
  91. package/web/assets/index-BWrWMYua.js +1 -0
  92. package/web/assets/index-BdLJBf4-.js +1 -0
  93. package/web/assets/index-Bf3W92Hb.js +1 -0
  94. package/web/assets/index-BjmPaLFA.js +1 -0
  95. package/web/assets/index-Bv-vJTzF.js +7 -0
  96. package/web/assets/index-C7yb62gg.js +1 -0
  97. package/web/assets/index-C9gBBMYv.js +1 -0
  98. package/web/assets/index-CiQ59Kib.js +1 -0
  99. package/web/assets/{index-gt5JBIFf.js → index-CzTUjEMt.js} +2 -2
  100. package/web/assets/index-D4Qx6o3E.js +1 -0
  101. package/web/assets/index-DDBcn3UD.js +1 -0
  102. package/web/assets/index-DEADY94l.js +1 -0
  103. package/web/assets/index-DGTKsPAQ.js +1 -0
  104. package/web/assets/index-DRwDqvjf.js +1 -0
  105. package/web/assets/{index-BGfvNj7R.js → index-DexVkoxH.js} +2 -2
  106. package/web/assets/{index-O05r2Ty6.js → index-IMOhRWY8.js} +1 -1
  107. package/web/assets/index-XjvpYHIo.js +1 -0
  108. package/web/assets/index-YuejkHoJ.js +3412 -0
  109. package/web/assets/index-pH0266gX.js +1 -0
  110. package/web/assets/index-sQl_bGM_.js +1 -0
  111. package/web/assets/index-vbNFy5lS.js +1 -0
  112. package/web/assets/{invitePage-Bgveo6Hj.js → invitePage-BT_rFfab.js} +1 -1
  113. package/web/assets/{ipc-B6hkgxQL.js → ipc-8cxXGSZK.js} +1 -1
  114. package/web/assets/{jszip.min-eU-k-vEy.js → jszip.min-By4OI3XR.js} +1 -1
  115. package/web/assets/launchpad-BX4jQyF4.js +2 -0
  116. package/web/assets/launchpad-C9U9hpWJ.css +1 -0
  117. package/web/assets/layout-grid-CzxXbCDa.js +1 -0
  118. package/web/assets/linkFollow-J2c0wSgB.js +8 -0
  119. package/web/assets/{listFold-M8s5JYEC.js → listFold-B_2Xqxn_.js} +1 -1
  120. package/web/assets/lock-open-DVWCLSZm.js +1 -0
  121. package/web/assets/log-out-CdKTS7HC.js +1 -0
  122. package/web/assets/magnet-BmVcZ9U4.js +1 -0
  123. package/web/assets/main-BlVApHpj.css +1 -0
  124. package/web/assets/main-CForzSFD.js +15 -0
  125. package/web/assets/markdownEditorSurface-BiDH0__r.css +1 -0
  126. package/web/assets/markdownEditorSurface-Bs8FJNHu.js +3 -0
  127. package/web/assets/mediaPlayer-O9pVRl_k.js +1 -0
  128. package/web/assets/message-square-plus-CspBv9iG.js +1 -0
  129. package/web/assets/{messages-CKtabOqy.js → messages-CG7ywZ-K.js} +1 -1
  130. package/web/assets/minimize-2-Bq4vUin-.js +1 -0
  131. package/web/assets/mobileEntry-6u7TYC4s.css +1 -0
  132. package/web/assets/mobileEntry-CptXQ4Ov.js +13 -0
  133. package/web/assets/modelPickerSurface-C0SkjaPL.js +1 -0
  134. package/web/assets/nativeDownload-DlnT8U-y.js +1 -0
  135. package/web/assets/nativeSheetMenu-CVC51DzC.js +1 -0
  136. package/web/assets/pageStore-BC6Z18n7.css +1 -0
  137. package/web/assets/pageStore-D_fKLv-o.js +13 -0
  138. package/web/assets/{pageTree-BYYPgZm_.js → pageTree-DtDKozTg.js} +3 -3
  139. package/web/assets/pen-line-ho1GgAe2.js +1 -0
  140. package/web/assets/pen-tool-CV-FKFEZ.js +1 -0
  141. package/web/assets/pencil-BgF4Kiqp.js +1 -0
  142. package/web/assets/phoneList-BLVdQcXY.js +1 -0
  143. package/web/assets/phoneList-BpLxxdq6.css +1 -0
  144. package/web/assets/pluginChat-C6t6DWhY.js +2 -0
  145. package/web/assets/react-DOzedx9n.js +1 -0
  146. package/web/assets/recordSurface-C9SRNjy4.js +1 -0
  147. package/web/assets/redo-2-DWZTaEz-.js +1 -0
  148. package/web/assets/rotate-ccw-CyZpL7MX.js +1 -0
  149. package/web/assets/selectionActions-C2a8ImJm.js +2 -0
  150. package/web/assets/selectionBarSurface-DaXlyy1s.js +1 -0
  151. package/web/assets/sessionTitle-BtZ1BteL.js +1 -0
  152. package/web/assets/settingsPageSurface-Cg8FNZq3.js +1 -0
  153. package/web/assets/sharePage-vnghra3Q.js +2 -0
  154. package/web/assets/{shareViewer-BiMqIBxP.js → shareViewer-CWJQHiV-.js} +2 -2
  155. package/web/assets/star-ZEpUQwnX.js +1 -0
  156. package/web/assets/tableSurface-DfEdzVDn.js +1 -0
  157. package/web/assets/tanguProbe-BboOas-a.js +6 -0
  158. package/web/assets/{terminalView-lbcBgG0c.js → terminalView-xp8ARBLi.js} +3 -3
  159. package/web/assets/type-CMyP4cKt.js +1 -0
  160. package/web/assets/undo-2-C4ZCsMsx.js +1 -0
  161. package/web/assets/{unitAccount-DGwGsmC3.js → unitAccount-DNxfGo3c.js} +1 -1
  162. package/web/assets/{unitBridge-CE2yAvm0.js → unitBridge-Bq0n1ZM6.js} +1 -1
  163. package/web/assets/{unitCloudTransport-BGFwkaDM.js → unitCloudTransport-CErylgEO.js} +1 -1
  164. package/web/assets/unitOwnerAccess-7s-3dfNM.js +1 -0
  165. package/web/assets/unitShim-BfheyIG8.js +5 -0
  166. package/web/assets/upload-VtCrluEO.js +1 -0
  167. package/web/assets/userSpaces-BpeYjLni.js +1 -0
  168. package/web/assets/viewportLock-B0l1GU_k.css +1 -0
  169. package/web/assets/viewportLock-cVUalJAI.js +738 -0
  170. package/web/assets/zoom-in-C7R8s9x-.js +1 -0
  171. package/web/excalidraw/excalidraw.js +4 -2
  172. package/web/index.html +12 -13
  173. package/web/assets/ArtificialView-DLh75dAI.js +0 -1
  174. package/web/assets/AutomationBuilder-DNWWGnFr.js +0 -1
  175. package/web/assets/CalendarConfigView-G7je7k9-.js +0 -1
  176. package/web/assets/CalendarView-B2MtaOJk.js +0 -1
  177. package/web/assets/CapabilityMenu-DJaZ_Cyt.js +0 -1
  178. package/web/assets/CheckboxInput-FYXLaZke.js +0 -1
  179. package/web/assets/Chrome-CFonajM4.js +0 -1
  180. package/web/assets/DashboardGridView-D9s9pez_.css +0 -1
  181. package/web/assets/DashboardGridView-Xgw4wa0_.js +0 -17
  182. package/web/assets/EventCard-_39F_I5M.js +0 -1
  183. package/web/assets/ExcalidrawCanvas-4uYrLYin.css +0 -1
  184. package/web/assets/ExcalidrawCanvas-rXujil36.js +0 -1
  185. package/web/assets/FloatingToc-DNqAkkI0.js +0 -1
  186. package/web/assets/GitCloneDialog-CQx-O4j1.js +0 -1
  187. package/web/assets/HomepageView-DcWmTPQO.css +0 -1
  188. package/web/assets/HomepageView-MYEk3RCs.js +0 -3
  189. package/web/assets/ImageStudioPanels-4wnb2XF4.js +0 -3
  190. package/web/assets/ImageStudioView-qrmW8pfx.js +0 -1
  191. package/web/assets/InlineAiPanel-B3kd1ob2.js +0 -1
  192. package/web/assets/InlineFiles-Clnqh9jD.js +0 -1
  193. package/web/assets/MarkdownBlock-DT_wsaja.js +0 -58
  194. package/web/assets/ModelPill-JaIH3ffZ.js +0 -2
  195. package/web/assets/MuseLibraryView-DOJVVeU6.js +0 -2
  196. package/web/assets/MuseView-uxTmjVQa.js +0 -6
  197. package/web/assets/PenRow-COOYAaxx.js +0 -1
  198. package/web/assets/ProductView-DPTveulg.js +0 -1
  199. package/web/assets/RightPanel-BJUacrsf.js +0 -4
  200. package/web/assets/RightPanel-D0zk1g3I.css +0 -1
  201. package/web/assets/SketchCard-B_UU5sxV.js +0 -641
  202. package/web/assets/StudioGuestSurface-yBa4QKfX.js +0 -1
  203. package/web/assets/TargetHealthNotice-BLzDB-Xl.css +0 -1
  204. package/web/assets/TargetHealthNotice-CgkdTdhB.js +0 -47
  205. package/web/assets/TodoListView-CricdCfW.js +0 -1
  206. package/web/assets/Tooltip-o8ZqIb3L.js +0 -1
  207. package/web/assets/UnifiedPage-BWAyqj65.js +0 -69
  208. package/web/assets/UnifiedPage-CWXc_mo1.css +0 -1
  209. package/web/assets/appStore-CI1_L5OS.js +0 -3357
  210. package/web/assets/appStore-DQc2marq.css +0 -1
  211. package/web/assets/approvalText-Cy2UAUAQ.js +0 -2
  212. package/web/assets/arrow-up-right-BDsMFoNQ.js +0 -1
  213. package/web/assets/astryxBridge-CF_hpqC2.css +0 -1
  214. package/web/assets/astryxBridge-CH_c5xjo.js +0 -70
  215. package/web/assets/automationListSource-CB6AWkL_.js +0 -1
  216. package/web/assets/boardSurface-CLvEUjbF.js +0 -1
  217. package/web/assets/book-open-BLzEdGfu.js +0 -1
  218. package/web/assets/calendarNavStore-BHUNxDx8.js +0 -1
  219. package/web/assets/canvasPrefs-CvE7mgyq.js +0 -1
  220. package/web/assets/chatBoxSurface-CuuHLzs5.js +0 -1
  221. package/web/assets/circle-question-mark-BM4ZRxQS.js +0 -1
  222. package/web/assets/circle-x-DTcNGZDT.js +0 -1
  223. package/web/assets/code-xml-AE3mT4T5.js +0 -1
  224. package/web/assets/codingNavigation-B0kVsy4x.js +0 -53
  225. package/web/assets/codingNavigation-DHCidM4N.css +0 -1
  226. package/web/assets/create-1JI2I47p.js +0 -14
  227. package/web/assets/dashboardSurface-CIE5HybN.js +0 -1
  228. package/web/assets/deskCapture-COW7aG5Y.js +0 -1
  229. package/web/assets/emoji-DZ9CA_3l.css +0 -1
  230. package/web/assets/emoji-DphwSxPx.js +0 -1
  231. package/web/assets/floatingTocSurface-BOm2QYBK.js +0 -1
  232. package/web/assets/foldActions-DNbJPlPl.js +0 -1
  233. package/web/assets/folder-DotgUhYD.js +0 -1
  234. package/web/assets/folder-plus-aJgL9NeP.js +0 -1
  235. package/web/assets/gestures-dqncPOwo.js +0 -1
  236. package/web/assets/git-branch-CwR2qic6.js +0 -1
  237. package/web/assets/hack2gate-dark-Dx2RtDRI.jpg +0 -0
  238. package/web/assets/hack2gate-light-DRKq9tyS.jpg +0 -0
  239. package/web/assets/hand-XNkzNiW2.js +0 -1
  240. package/web/assets/hard-drive-CfWKRoAE.js +0 -1
  241. package/web/assets/i18n-CykmULlm.css +0 -1
  242. package/web/assets/i18n.generated-BwynSSMk.js +0 -15
  243. package/web/assets/imageStudio-CWgLpC_d.js +0 -2
  244. package/web/assets/imageStudio-DZ0qGU2s.css +0 -1
  245. package/web/assets/index-B65ULikK.js +0 -1
  246. package/web/assets/index-BIIeiIap.js +0 -1
  247. package/web/assets/index-BOzsniE1.js +0 -297
  248. package/web/assets/index-BfrjVzia.js +0 -13
  249. package/web/assets/index-Bi9UtjVz.js +0 -1
  250. package/web/assets/index-C1uilc9i.js +0 -1
  251. package/web/assets/index-C3Dc3Ivz.js +0 -1
  252. package/web/assets/index-CJF_Ld1Y.js +0 -1
  253. package/web/assets/index-CMARP4oV.js +0 -1
  254. package/web/assets/index-C_RsQVNm.js +0 -7
  255. package/web/assets/index-ChyxZMm8.js +0 -1
  256. package/web/assets/index-CoKcOaZg.js +0 -1
  257. package/web/assets/index-CuviSCbk.js +0 -1
  258. package/web/assets/index-Cw43kua8.js +0 -1
  259. package/web/assets/index-D1fu6XQN.js +0 -3
  260. package/web/assets/index-DG-hXb63.js +0 -1
  261. package/web/assets/index-DjnTfJpN.js +0 -1
  262. package/web/assets/index-Dtw0abst.js +0 -1
  263. package/web/assets/index-W3ErfZiX.js +0 -1
  264. package/web/assets/index-Yc56b3XX.js +0 -1
  265. package/web/assets/index-d4jCdYJH.js +0 -1
  266. package/web/assets/index-siHtlYTM.js +0 -1
  267. package/web/assets/launchpad-C2c1MSVX.css +0 -1
  268. package/web/assets/layout-grid-CraV7nhh.js +0 -1
  269. package/web/assets/linkFollow-BpvDWzUx.js +0 -8
  270. package/web/assets/list-tree-cLJw-jYQ.js +0 -1
  271. package/web/assets/lock-DBkXXwaI.js +0 -1
  272. package/web/assets/lock-open-C-9-AWct.js +0 -1
  273. package/web/assets/log-out-C8bDXj9P.js +0 -1
  274. package/web/assets/main-BiS_5wrB.css +0 -1
  275. package/web/assets/main-CMk6twzA.js +0 -20
  276. package/web/assets/markdownEditorSurface-Bql20IAf.css +0 -1
  277. package/web/assets/markdownEditorSurface-DgQ0TUWH.js +0 -3
  278. package/web/assets/message-square-plus-8pfimvem.js +0 -1
  279. package/web/assets/minus-CfA9fAN3.js +0 -1
  280. package/web/assets/mobileEntry-DS1vohuL.css +0 -1
  281. package/web/assets/mobileEntry-NcMcK0LV.js +0 -13
  282. package/web/assets/nativeDownload-CNtwSCy0.js +0 -1
  283. package/web/assets/pageChrome-BR4cfIaA.js +0 -1
  284. package/web/assets/pageChrome-BbUhILy0.css +0 -1
  285. package/web/assets/pen-tool-C5ftHCnm.js +0 -1
  286. package/web/assets/pencil-ehhM9_9k.js +0 -1
  287. package/web/assets/phoneList-B6gwUJZF.js +0 -9
  288. package/web/assets/phoneList-iRdfiKA8.css +0 -1
  289. package/web/assets/pluginChat-DTTWWiUS.js +0 -2
  290. package/web/assets/redo-2-DCEAgQlN.js +0 -1
  291. package/web/assets/rotate-ccw-DdkrbRAB.js +0 -1
  292. package/web/assets/selectionActions-BQD2kox1.js +0 -2
  293. package/web/assets/selectionBarSurface-CzUZmJDJ.js +0 -1
  294. package/web/assets/server-Ddu9f1k3.js +0 -1
  295. package/web/assets/sharePage-CNrm2xTC.js +0 -2
  296. package/web/assets/star-Dxv7XANS.js +0 -1
  297. package/web/assets/tableSurface-Bly1iCXc.js +0 -1
  298. package/web/assets/terminal-CAmmC9cV.js +0 -1
  299. package/web/assets/type-Dz6rnTvG.js +0 -1
  300. package/web/assets/undo-2-B7izWNb_.js +0 -1
  301. package/web/assets/unitOwnerAccess-D4nKS6Gg.js +0 -1
  302. package/web/assets/unitShim-2_2hhGxS.js +0 -5
  303. package/web/assets/upload-DqpRRAhG.js +0 -1
  304. package/web/assets/userSpaces-VFu4s05v.js +0 -1
  305. package/web/assets/viewportLock-3AOdDmwi.js +0 -631
  306. package/web/assets/viewportLock-djvL8fUQ.css +0 -1
  307. package/web/assets/zoom-in-Bf-eKTnH.js +0 -1
@@ -1 +1 @@
1
- import{r as E,G as C,t as F}from"./index-BOzsniE1.js";import{$ as M}from"./index-DjnTfJpN.js";import{od as L,n$ as $,oj as x,o3 as S,ok as h}from"./appStore-CI1_L5OS.js";E({"headfold.expandSection":{zh:"展开小节",en:"Expand section"}});const u=new L("AMX_HEADING_FOLD");function p(e,o){if(!Number.isInteger(o)||o<0||o>e.content.size)return null;let t;try{t=e.resolve(o)}catch{return null}const n=t.nodeAfter;return!n||n.type.name!=="heading"?null:{parent:t.parent,index:t.index(),base:t.start()}}function y(e){const o=[];let t=e.base;return e.parent.forEach(n=>{o.push(t),t+=n.nodeSize}),o}function b(e,o){const t=e.child(o),n=Number(t.attrs.level)||1;let l=o;for(let d=o+1;d<e.childCount;d++){const i=e.child(d);if(i.type.name==="heading"&&(Number(i.attrs.level)||1)<=n)break;l=d}return l===o?null:l}function k(e,o){const t=[];for(const n of o){const l=p(e,n);if(!l)continue;const d=b(l.parent,l.index);if(d==null)continue;const i=y(l);t.push(h.node(n,n+l.parent.child(l.index).nodeSize,{class:"amx-heading-folded"}));for(let s=l.index+1;s<=d;s++)t.push(h.node(i[s],i[s]+l.parent.child(s).nodeSize,{class:"amx-fold-hidden"}));t.push(h.widget(n+1,(s,c)=>{const r=document.createElement("button");r.type="button",r.className="amx-fold-caret",r.textContent="▸",r.contentEditable="false";const a=()=>{r.title=F("headfold.expandSection"),r.setAttribute("aria-label",r.title)};return a(),r.setAttribute("aria-expanded","false"),r.__off=C(a),r.addEventListener("mousedown",_=>{_.preventDefault(),_.stopPropagation();const A=c();if(A==null)return;const z=s.state.doc.resolve(A);D(s,z.before(z.depth))}),r},{side:-1,ignoreSelection:!0,key:`amxfold:${n}`,destroy:s=>{s.__off?.()}}))}return x.create(e,t)}function K(e){const o=[];return e.descendants((t,n)=>{if(t.type.name!=="heading")return!0;const l=p(e,n);return l&&b(l.parent,l.index)!=null&&o.push(n),!1}),o}function D(e,o){e.dispatch(e.state.tr.setMeta(u,{toggle:o}))}function O(e,o){const t=u.getState(e.state),n=p(e.state.doc,o);return!n||b(n.parent,n.index)==null?null:t?.folded.includes(o)?"folded":"foldable"}function g(e,o){const t=[];for(const n of o){const l=p(e,n);if(!l)continue;const d=b(l.parent,l.index);if(d==null)continue;const i=y(l);t.push({start:i[l.index+1],after:i[d]+l.parent.child(d).nodeSize})}return t}function j(e,o){const t=p(e,o);if(!t)return null;const n=b(t.parent,t.index)??t.index;return y(t)[n]+t.parent.child(n).nodeSize}function G(e,o){if(!u.getState(e)?.folded.includes(o))return null;const n=g(e.doc,[o])[0];return n?n.after:null}function T(e,o){const t=u.getState(e);if(!t?.folded.length)return null;for(const n of t.folded)for(const l of g(e.doc,[n]))if(o>l.start&&o<l.after)return n;return null}const X=[M(()=>new $({key:u,state:{init:()=>({folded:[],decos:x.empty}),apply:(e,o,t)=>{let n=o.folded;if(e.docChanged&&(n=n.map(i=>e.mapping.mapResult(i)).filter(i=>!i.deleted||p(e.doc,i.pos)!=null).map(i=>i.pos)),e.docChanged&&e.getMeta("uiEvent")==="drop"){const i=[];e.mapping.maps[e.mapping.maps.length-1].forEach((s,c,r,a)=>{a>r&&i.push([r,a])}),n=n.filter(s=>!g(e.doc,[s]).some(c=>i.some(([r,a])=>r<c.after&&a>c.start)))}let l=[];if(e.docChanged&&e.selection.empty&&n.length){const i=t.selection,s=i.empty&&g(t.doc,o.folded).some(r=>i.from>r.start&&i.from<r.after),c=e.selection.from;s||(l=n.filter(r=>g(e.doc,[r]).some(a=>c>a.start&&c<a.after)))}const d=e.getMeta(u);if(d?.set&&(n=d.set.slice()),d?.toggle!=null){const i=d.toggle;n=n.includes(i)?n.filter(s=>s!==i):[...n,i]}return l.length&&(n=n.filter(i=>i===d?.toggle||!l.includes(i))),n=[...new Set(n)].filter(i=>{const s=p(e.doc,i);return s!=null&&b(s.parent,s.index)!=null}),!e.docChanged&&!d&&n===o.folded?o:{folded:n,decos:k(e.doc,n)}}},appendTransaction:(e,o,t)=>{const n=u.getState(t);if(!n?.folded.length||!t.selection.empty)return null;const l=t.selection.from;for(const d of g(t.doc,n.folded)){if(l<=d.start||l>=d.after)continue;const i=l>=o.selection.from?1:-1;let s=S.near(t.doc.resolve(i===1?Math.min(d.after,t.doc.content.size):d.start),i);return s.from>d.start&&s.from<d.after&&(s=S.near(t.doc.resolve(d.start),-1)),t.tr.setSelection(s)}return null},props:{decorations(e){return u.getState(e)?.decos??null}}}))].flat();E({"listfold.expandChildren":{zh:"展开子项",en:"Expand children"}});const f=new L("AMX_LIST_FOLD");function m(e,o){if(o<0||o>=e.content.size)return null;const t=e.nodeAt(o);if(!t||t.type.name!=="list_item"||t.childCount<2)return null;const n=t.child(1);if(!/_list$/.test(n.type.name))return null;const l=o+1+t.child(0).nodeSize;return{item:t,from:l,to:l+n.nodeSize}}function H(e,o){const t=[];for(const n of o){const l=m(e,n);l&&(t.push(h.node(n,n+l.item.nodeSize,{class:"amx-listitem-folded"})),t.push(h.node(l.from,l.to,{class:"amx-fold-hidden"})),t.push(h.widget(n+2,(d,i)=>{const s=document.createElement("button");s.type="button",s.className="amx-fold-caret",s.textContent="▸",s.contentEditable="false";const c=()=>{s.title=F("listfold.expandChildren"),s.setAttribute("aria-label",s.title)};return c(),s.setAttribute("aria-expanded","false"),s.__off=C(c),s.addEventListener("mousedown",r=>{r.preventDefault(),r.stopPropagation();const a=i();a!=null&&N(d,d.state.doc.resolve(a).before(d.state.doc.resolve(a).depth-1))}),s},{side:-1,ignoreSelection:!0,key:`amxlfold:${n}`,destroy:d=>{d.__off?.()}})))}return x.create(e,t)}function q(e){const o=[];return e.descendants((t,n)=>(t.type.name==="list_item"&&m(e,n)&&o.push(n),!0)),o}function N(e,o){e.dispatch(e.state.tr.setMeta(f,{toggle:o}))}function B(e,o){return m(e.state.doc,o)?f.getState(e.state)?.folded.includes(o)?"folded":"foldable":null}function P(e){const o=f.getState(e);return o?.folded.length?R(e.doc,o.folded):[]}function R(e,o){const t=[];for(const n of o){const l=m(e,n);l&&t.push({start:l.from,after:l.to})}return t}function J(e,o){const t=f.getState(e);return t?.folded.length?t.folded.filter(n=>{const l=m(e.doc,n);return!!l&&o>l.from&&o<l.to}):[]}function Q(e,o){return!!f.getState(e)?.folded.includes(o)}const U=[M(()=>new $({key:f,state:{init:()=>({folded:[],decos:x.empty}),apply:(e,o)=>{let t=o.folded;e.docChanged&&(t=t.map(l=>e.mapping.mapResult(l)).filter(l=>!l.deleted||m(e.doc,l.pos)!=null).map(l=>l.pos));const n=e.getMeta(f);if(n?.set&&(t=n.set.slice()),n?.toggle!=null){const l=n.toggle;t=t.includes(l)?t.filter(d=>d!==l):[...t,l]}return t=[...new Set(t)].filter(l=>m(e.doc,l)!=null),!e.docChanged&&!n&&t===o.folded?o:{folded:t,decos:H(e.doc,t)}}},appendTransaction:(e,o,t)=>{if(!f.getState(t)?.folded.length||!t.selection.empty)return null;const l=t.selection.from;for(const d of P(t)){if(l<=d.start||l>=d.after)continue;const i=l>=o.selection.from?1:-1;let s=S.near(t.doc.resolve(i===1?Math.min(d.after,t.doc.content.size):d.start),i);return s.from>d.start&&s.from<d.after&&(s=S.near(t.doc.resolve(d.start),-1)),t.tr.setSelection(s)}return null},props:{decorations(e){return f.getState(e)?.decos??null}}}))].flat();export{g as a,T as b,P as c,O as d,B as e,G as f,N as g,u as h,Q as i,X as j,U as k,f as l,J as m,K as n,q as o,R as p,j as s,D as t};
1
+ import{a as z,E as C,t as F}from"./index-YuejkHoJ.js";import{$ as M}from"./index-CiQ59Kib.js";import{m7 as L,lZ as $,md as x,m1 as S,mg as h}from"./appStore-BskcSDl6.js";z({"headfold.expandSection":{zh:"展开小节",en:"Expand section"}});const u=new L("AMX_HEADING_FOLD");function p(e,o){if(!Number.isInteger(o)||o<0||o>e.content.size)return null;let t;try{t=e.resolve(o)}catch{return null}const n=t.nodeAfter;return!n||n.type.name!=="heading"?null:{parent:t.parent,index:t.index(),base:t.start()}}function y(e){const o=[];let t=e.base;return e.parent.forEach(n=>{o.push(t),t+=n.nodeSize}),o}function b(e,o){const t=e.child(o),n=Number(t.attrs.level)||1;let l=o;for(let d=o+1;d<e.childCount;d++){const i=e.child(d);if(i.type.name==="heading"&&(Number(i.attrs.level)||1)<=n)break;l=d}return l===o?null:l}function D(e,o){const t=[];for(const n of o){const l=p(e,n);if(!l)continue;const d=b(l.parent,l.index);if(d==null)continue;const i=y(l);t.push(h.node(n,n+l.parent.child(l.index).nodeSize,{class:"amx-heading-folded"}));for(let s=l.index+1;s<=d;s++)t.push(h.node(i[s],i[s]+l.parent.child(s).nodeSize,{class:"amx-fold-hidden"}));t.push(h.widget(n+1,(s,c)=>{const r=document.createElement("button");r.type="button",r.className="amx-fold-caret",r.textContent="▸",r.contentEditable="false";const a=()=>{r.title=F("headfold.expandSection"),r.setAttribute("aria-label",r.title)};return a(),r.setAttribute("aria-expanded","false"),r.__off=C(a),r.addEventListener("mousedown",_=>{_.preventDefault(),_.stopPropagation();const A=c();if(A==null)return;const E=s.state.doc.resolve(A);H(s,E.before(E.depth))}),r},{side:-1,ignoreSelection:!0,key:`amxfold:${n}`,destroy:s=>{s.__off?.()}}))}return x.create(e,t)}function K(e){const o=[];return e.descendants((t,n)=>{if(t.type.name!=="heading")return!0;const l=p(e,n);return l&&b(l.parent,l.index)!=null&&o.push(n),!1}),o}function H(e,o){e.dispatch(e.state.tr.setMeta(u,{toggle:o}))}function O(e,o){const t=u.getState(e.state),n=p(e.state.doc,o);return!n||b(n.parent,n.index)==null?null:t?.folded.includes(o)?"folded":"foldable"}function g(e,o){const t=[];for(const n of o){const l=p(e,n);if(!l)continue;const d=b(l.parent,l.index);if(d==null)continue;const i=y(l);t.push({start:i[l.index+1],after:i[d]+l.parent.child(d).nodeSize})}return t}function T(e,o){const t=p(e,o);if(!t)return null;const n=b(t.parent,t.index)??t.index;return y(t)[n]+t.parent.child(n).nodeSize}function X(e,o){if(!u.getState(e)?.folded.includes(o))return null;const n=g(e.doc,[o])[0];return n?n.after:null}function j(e,o){const t=u.getState(e);if(!t?.folded.length)return null;for(const n of t.folded)for(const l of g(e.doc,[n]))if(o>l.start&&o<l.after)return n;return null}const G=[M(()=>new $({key:u,state:{init:()=>({folded:[],decos:x.empty}),apply:(e,o,t)=>{let n=o.folded;if(e.docChanged&&(n=n.map(i=>e.mapping.mapResult(i)).filter(i=>!i.deleted||p(e.doc,i.pos)!=null).map(i=>i.pos)),e.docChanged&&e.getMeta("uiEvent")==="drop"){const i=[];e.mapping.maps[e.mapping.maps.length-1].forEach((s,c,r,a)=>{a>r&&i.push([r,a])}),n=n.filter(s=>!g(e.doc,[s]).some(c=>i.some(([r,a])=>r<c.after&&a>c.start)))}let l=[];if(e.docChanged&&e.selection.empty&&n.length){const i=t.selection,s=i.empty&&g(t.doc,o.folded).some(r=>i.from>r.start&&i.from<r.after),c=e.selection.from;s||(l=n.filter(r=>g(e.doc,[r]).some(a=>c>a.start&&c<a.after)))}const d=e.getMeta(u);if(d?.set&&(n=d.set.slice()),d?.toggle!=null){const i=d.toggle;n=n.includes(i)?n.filter(s=>s!==i):[...n,i]}return l.length&&(n=n.filter(i=>i===d?.toggle||!l.includes(i))),n=[...new Set(n)].filter(i=>{const s=p(e.doc,i);return s!=null&&b(s.parent,s.index)!=null}),!e.docChanged&&!d&&n===o.folded?o:{folded:n,decos:D(e.doc,n)}}},appendTransaction:(e,o,t)=>{const n=u.getState(t);if(!n?.folded.length||!t.selection.empty)return null;const l=t.selection.from;for(const d of g(t.doc,n.folded)){if(l<=d.start||l>=d.after)continue;const i=l>=o.selection.from?1:-1;let s=S.near(t.doc.resolve(i===1?Math.min(d.after,t.doc.content.size):d.start),i);return s.from>d.start&&s.from<d.after&&(s=S.near(t.doc.resolve(d.start),-1)),t.tr.setSelection(s)}return null},props:{decorations(e){return u.getState(e)?.decos??null}}}))].flat();z({"listfold.expandChildren":{zh:"展开子项",en:"Expand children"}});const f=new L("AMX_LIST_FOLD");function m(e,o){if(o<0||o>=e.content.size)return null;const t=e.nodeAt(o);if(!t||t.type.name!=="list_item"||t.childCount<2)return null;const n=t.child(1);if(!/_list$/.test(n.type.name))return null;const l=o+1+t.child(0).nodeSize;return{item:t,from:l,to:l+n.nodeSize}}function k(e,o){const t=[];for(const n of o){const l=m(e,n);l&&(t.push(h.node(n,n+l.item.nodeSize,{class:"amx-listitem-folded"})),t.push(h.node(l.from,l.to,{class:"amx-fold-hidden"})),t.push(h.widget(n+2,(d,i)=>{const s=document.createElement("button");s.type="button",s.className="amx-fold-caret",s.textContent="▸",s.contentEditable="false";const c=()=>{s.title=F("listfold.expandChildren"),s.setAttribute("aria-label",s.title)};return c(),s.setAttribute("aria-expanded","false"),s.__off=C(c),s.addEventListener("mousedown",r=>{r.preventDefault(),r.stopPropagation();const a=i();a!=null&&N(d,d.state.doc.resolve(a).before(d.state.doc.resolve(a).depth-1))}),s},{side:-1,ignoreSelection:!0,key:`amxlfold:${n}`,destroy:d=>{d.__off?.()}})))}return x.create(e,t)}function Z(e){const o=[];return e.descendants((t,n)=>(t.type.name==="list_item"&&m(e,n)&&o.push(n),!0)),o}function N(e,o){e.dispatch(e.state.tr.setMeta(f,{toggle:o}))}function q(e,o){return m(e.state.doc,o)?f.getState(e.state)?.folded.includes(o)?"folded":"foldable":null}function P(e){const o=f.getState(e);return o?.folded.length?R(e.doc,o.folded):[]}function R(e,o){const t=[];for(const n of o){const l=m(e,n);l&&t.push({start:l.from,after:l.to})}return t}function B(e,o){const t=f.getState(e);return t?.folded.length?t.folded.filter(n=>{const l=m(e.doc,n);return!!l&&o>l.from&&o<l.to}):[]}function J(e,o){return!!f.getState(e)?.folded.includes(o)}const Q=[M(()=>new $({key:f,state:{init:()=>({folded:[],decos:x.empty}),apply:(e,o)=>{let t=o.folded;e.docChanged&&(t=t.map(l=>e.mapping.mapResult(l)).filter(l=>!l.deleted||m(e.doc,l.pos)!=null).map(l=>l.pos));const n=e.getMeta(f);if(n?.set&&(t=n.set.slice()),n?.toggle!=null){const l=n.toggle;t=t.includes(l)?t.filter(d=>d!==l):[...t,l]}return t=[...new Set(t)].filter(l=>m(e.doc,l)!=null),!e.docChanged&&!n&&t===o.folded?o:{folded:t,decos:k(e.doc,t)}}},appendTransaction:(e,o,t)=>{if(!f.getState(t)?.folded.length||!t.selection.empty)return null;const l=t.selection.from;for(const d of P(t)){if(l<=d.start||l>=d.after)continue;const i=l>=o.selection.from?1:-1;let s=S.near(t.doc.resolve(i===1?Math.min(d.after,t.doc.content.size):d.start),i);return s.from>d.start&&s.from<d.after&&(s=S.near(t.doc.resolve(d.start),-1)),t.tr.setSelection(s)}return null},props:{decorations(e){return f.getState(e)?.decos??null}}}))].flat();export{g as a,j as b,P as c,O as d,q as e,X as f,N as g,u as h,J as i,G as j,Q as k,f as l,B as m,K as n,Z as o,R as p,T as s,H as t};
@@ -0,0 +1 @@
1
+ import{p as e}from"./pageStore-D_fKLv-o.js";const o=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1",key:"1mm8w8"}]],t=e("lock-open",o);export{t as L};
@@ -0,0 +1 @@
1
+ import{p as o}from"./pageStore-D_fKLv-o.js";const t=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],e=o("log-out",t);export{e as L};
@@ -0,0 +1 @@
1
+ import{p as a}from"./pageStore-D_fKLv-o.js";const e=[["path",{d:"m12 15 4 4",key:"lnac28"}],["path",{d:"M2.352 10.648a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l6.029-6.029a1 1 0 1 1 3 3l-6.029 6.029a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l6.365-6.367A1 1 0 0 0 8.716 4.282z",key:"nlhkjb"}],["path",{d:"m5 8 4 4",key:"j6kj7e"}]],n=a("magnet",e);export{n as M};
@@ -0,0 +1 @@
1
+ .feedback-modal.modal{--modal-w: 660px;--modal-h: 760px;max-width:calc(100vw / var(--uiz, 1) - 28px);height:min(var(--modal-h),calc(100dvh / var(--uiz, 1) - 32px));background:var(--bg-card);color:var(--text)}.feedback-head.modal-head{justify-content:space-between;gap:16px;padding:24px 26px 18px;flex-shrink:0}.feedback-heading{display:flex;align-items:flex-start;gap:12px}.feedback-heading>svg{color:var(--accent-ink);margin-top:3px}.feedback-heading h2{margin:0;font-size:var(--ui-font-title, 16px);line-height:1.35;font-weight:650}.feedback-heading p{margin:5px 0 0;color:var(--text-muted);font-size:var(--ui-font-meta, 12px);font-weight:400}.feedback-body.modal-body{min-height:0;padding:6px 26px 20px}.feedback-kinds{display:flex;gap:8px;margin-bottom:22px}.feedback-kinds .btn{flex:1;justify-content:center;gap:7px;padding:9px 8px;font-size:var(--ui-font-meta, 12px)}.feedback-kinds .btn[aria-pressed=true]{color:var(--accent-ink);background:var(--accent-soft);border-color:var(--sel-line)}.feedback-description{display:flex;flex-direction:column;gap:9px}.feedback-description>label,.feedback-section-heading h3{font-size:var(--ui-font-meta, 12px);font-weight:600;color:var(--text)}.feedback-description textarea{width:100%;min-height:136px;resize:vertical;max-height:280px;padding:12px 14px;font-size:var(--ui-font-body, 13px);line-height:1.7}.feedback-count,.feedback-description>.feedback-warning{align-self:flex-end;font-size:var(--ui-font-caption, 11px);color:var(--text-muted);font-variant-numeric:tabular-nums}.feedback-context{margin-top:17px;padding:16px;border:1px solid transparent;border-radius:var(--radius-md);background:var(--overlay-subtle)}.feedback-section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.feedback-section-heading h3{margin:0}.feedback-section-heading code{font-size:var(--ui-font-caption, 11px);color:var(--text-faint)}.feedback-session{margin:6px 0 14px;font-size:var(--ui-font-caption, 11px);color:var(--text-muted);overflow-wrap:anywhere}.feedback-option{display:flex;align-items:flex-start;gap:10px;cursor:pointer}.feedback-option+.feedback-option{margin-top:14px}.feedback-option input{margin:3px 0 0;width:15px;height:15px;flex-shrink:0;accent-color:var(--signal-mark)}.feedback-option>span{display:flex;flex-direction:column;gap:4px}.feedback-option strong{font-size:var(--ui-font-meta, 12px);font-weight:500;color:var(--text)}.feedback-option small{font-size:var(--ui-font-caption, 11px);line-height:1.5;color:var(--text-muted)}.feedback-option[data-disabled]{opacity:.5;cursor:default}.feedback-report-status{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:38px;margin-top:9px;font-size:var(--ui-font-caption, 11px);color:var(--text-muted)}.feedback-report-status>span,.feedback-report-status>div{display:flex;align-items:center;gap:6px}.feedback-report-status .btn{font-size:var(--ui-font-caption, 11px)}.feedback-note,.feedback-warning{font-size:var(--ui-font-caption, 11px);line-height:1.6;margin:6px 0 0;overflow-wrap:anywhere}.feedback-note{color:var(--text-muted)}.feedback-warning,.feedback-description>.feedback-warning{color:var(--danger)}.feedback-footer{display:flex;align-items:center;gap:12px;flex-shrink:0;padding:16px 26px 20px;border-top:1px solid var(--border)}.feedback-footer .grow{flex:1}.feedback-footer .btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:var(--ui-font-meta, 12px);min-height:36px}.feedback-back{display:inline-flex;align-items:center;gap:6px;margin-bottom:12px}.feedback-file{display:flex;align-items:center;gap:7px;font-size:var(--ui-font-caption, 11px);color:var(--text-muted);overflow-wrap:anywhere}.feedback-file>span:first-of-type{flex:1;min-width:0}.feedback-preview{white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--ui-font-caption, 11px);line-height:1.65;padding:14px;border-radius:var(--radius-sm);background:var(--overlay-subtle);color:var(--text)}.feedback-success{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;padding:28px}.feedback-success-icon{display:grid;place-items:center;width:60px;height:60px;border-radius:50%;color:var(--accent-ink);background:var(--accent-soft)}.feedback-success h3{font-size:var(--ui-font-title, 16px);margin:6px 0 0}.feedback-success p{max-width:360px;font-size:var(--ui-font-body, 13px);line-height:1.7;color:var(--text-muted);margin:0}.feedback-success code{font-size:var(--ui-font-caption, 11px);color:var(--text-muted);overflow-wrap:anywhere}@media(max-width:560px){.feedback-head.modal-head{padding:18px 16px 14px}.feedback-body.modal-body{padding-inline:16px}.feedback-footer{padding:12px 16px 16px;gap:6px;flex-wrap:wrap}.feedback-kinds{gap:5px}.feedback-kinds .btn{flex-direction:column;gap:5px}.feedback-report-status{align-items:flex-start;flex-wrap:wrap}}.sync-setup-backdrop{z-index:200}.modal.sync-setup{height:auto;background:var(--bg-card)}.sync-setup .modal-head{gap:8px}.sync-setup-body{padding:2px 18px 6px}.sync-setup-lead{margin:0 0 10px;color:var(--text-muted);font-size:var(--ui-font-meta);line-height:var(--ui-line-meta)}.sync-setup-row{display:grid;grid-template-columns:16px 26px minmax(0,1fr);gap:10px;align-items:center;padding:9px 0;border-top:var(--border-width) solid var(--border);cursor:pointer}.sync-setup-row:first-of-type{border-top:0}.sync-setup-row input{width:15px;height:15px;margin:0}.sync-setup-tile{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:var(--radius-md);background:var(--overlay-light);color:var(--text-muted)}.sync-setup-copy b{display:block;font-weight:600;font-size:var(--ui-font-body)}.sync-setup-copy small{display:block;color:var(--text-muted);font-size:var(--ui-font-meta)}.sync-setup-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 18px 16px}.sync-setup-hint{color:var(--text-faint);font-size:var(--ui-font-meta)}.sync-setup-acts{display:flex;gap:8px}.sync-setup-progress{position:fixed;left:50%;bottom:22px;transform:translate(-50%);z-index:150;display:inline-flex;align-items:center;gap:10px;padding:8px 14px;border-radius:var(--radius-pill);background:var(--bg-card);box-shadow:var(--card-shadow);border:var(--border-width) solid var(--border);font-size:var(--ui-font-body)}.sync-setup-bar{width:120px;height:4px;border-radius:2px;background:var(--overlay-light);overflow:hidden}.sync-setup-bar i{display:block;height:100%;background:var(--signal-mark, var(--accent));transition:width .3s ease}.sync-setup-link{border:0;background:none;padding:0;color:var(--text-muted);text-decoration:underline;text-underline-offset:3px;font-size:var(--ui-font-meta);cursor:pointer}.dock-picker-title{text-align:left;color:var(--text);font-weight:600}.dock-picker{display:flex;flex-direction:column;min-height:0}.dock-picker-hint{margin:0;padding:10px 12px 6px;font-size:var(--ui-font-meta, 12px);line-height:1.5;color:var(--text-muted)}.dock-picker-error{margin:0 12px 6px;font-size:var(--ui-font-meta, 12px);line-height:1.5;color:var(--danger)}.dock-picker-list{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 5px 8px}.dock-picker-row{height:auto;min-height:40px;padding-top:6px;padding-bottom:6px}.dock-picker-row .mini-card-row-label{display:flex;flex-direction:column;gap:2px}.dock-picker-app{color:var(--text)}.dock-picker-window{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;font-size:var(--ui-font-meta, 12px);color:var(--text-muted)}
@@ -0,0 +1,15 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./pageStore-D_fKLv-o.js","./index-YuejkHoJ.js","./react-DOzedx9n.js","./client-DD5czSuF.js","./pageStore-BC6Z18n7.css","./dbStore-Bc2lC8ZI.js","./drawingStore-BD5m2eqn.js"])))=>i.map(i=>d[i]);
2
+ import{r as c,j as t,a as mt,u as be,t as es,_ as Ve,b as Us,L as qs}from"./index-YuejkHoJ.js";import{c as Ks}from"./client-DD5czSuF.js";import{n as Xs,p as Gs,L as ts,q as Zs,C as Mn,t as Qs,v as Ct,w as Js,u as eo,x as to,c as no,y as so,z as oo,D as zn,e as io,h as ns,F as ao,A as ss,G as He,S as os,M as is,j as as,B as ro,W as co,T as lo,P as rs,k as uo,N as mo,H as po,I as fo,l as ho,m as go,E as bo}from"./viewportLock-cVUalJAI.js";import{M as wo,I as vo,F as ko,S as yo,U as xo,y as So,C as jo,G as Eo,z as Co,W as No,A as To,P as Io,B as Lo,D as Mo,H as zo,E as Po,J as fe,K as Do,u as N,L as Pn,N as Dn,R as Ro,T as Ft,V as Oo,X as Ce,Y as Ao,Z as Fo,_ as Bo,$ as Bt,a0 as _o,a1 as Rn,a2 as $o,a3 as Vo,a4 as Ho,a5 as Wo,a6 as Yo,a7 as cs,a8 as Uo,a9 as _t,aa as qo,h as pt,i as Ko,ab as ls,ac as Xo,ad as On,s as Go,ae as ds,f as Zo,af as Qo,Q as Jo,ag as ei,O as ti,ah as An,ai as ni,g as $t,aj as si,ak as oi,al as ii,am as ai,an as ri,k as ci,r as li,l as di,o as ui,ao as mi,t as pi,v as fi,w as hi,x as gi,ap as bi}from"./appStore-BskcSDl6.js";import{p as qe,B as us,D as wi,L as vi,P as ki,q as yi,r as xi,M as Si,C as ji,I as Ei,F as Pt,t as Ci,Z as ms,k as ae,v as Ni,f as q,w as Ti,x as Ii,y as ps,l as W,z as Ne,A as ge,U as Dt,E as Li,G as Mi,H as Fn,J as Bn,K as zi,O as Pi,Q as Nt,R as ct,T as Di,V as Ri,W as Oi,X as _n,Y as Ai,_ as $n,$ as Fi,a0 as at,a1 as Vn,a2 as Bi,a3 as Ee,a4 as _i,a5 as $i,a6 as Rt,a7 as Vi,a8 as Ot,a9 as Hi,aa as Wi,ab as Yi,ac as Ui,ad as fs,S as qi,ae as ft,af as We,ag as Ki,ah as Vt,ai as hs,s as Ke,aj as gs,ak as ut,al as Ht,am as Xi,an as Gi,ao as Zi,ap as Qi,aq as Hn,ar as Ji,as as ea,at as ta,au as na,av as sa,aw as oa,ax as ia}from"./pageStore-D_fKLv-o.js";import{P as aa}from"./pen-tool-CV-FKFEZ.js";import{T as ra,R as ca,V as la,M as da,C as ua,a as ma,H as pa,f as fa}from"./userSpaces-BpeYjLni.js";import{M as ha}from"./Chrome-owLewFu4.js";import{P as ga,W as ba,H as wa,A as Se}from"./DashboardGridView-CBbYKcCo.js";import{S as va}from"./star-ZEpUQwnX.js";import{F as bs}from"./folder-DiaFWdCg.js";import{C as ka}from"./chevron-up-C_EDOZzI.js";import{F as ws}from"./UnifiedPage-6xbFLtXT.js";import{n as Wn}from"./nativeDownload-DlnT8U-y.js";import{q as ya,a as xa}from"./PluginToolCard-BXE5vA1h.js";import{h as Wt}from"./dbStore-Bc2lC8ZI.js";import"./i18n.generated-D4-Wu9Wh.js";import{n as Sa}from"./codeStudioStore-OswE1_s0.js";import"./ModelPill-DgyXBsL9.js";import"./nativeSheetMenu-CVC51DzC.js";import"./upload-VtCrluEO.js";import"./MuseView-BVDlmM6i.js";import"./automationListSource-Cm09JKkK.js";import"./messages-CG7ywZ-K.js";import"./message-square-plus-CspBv9iG.js";import"./rotate-ccw-CyZpL7MX.js";import"./undo-2-C4ZCsMsx.js";import"./git-branch-DzGWffyD.js";import"./selectionActions-C2a8ImJm.js";import"./mediaPlayer-O9pVRl_k.js";import"./react-DOzedx9n.js";import"./arrow-up-right-DEykpgsH.js";import"./CapabilityMenu-Dzn6RbB1.js";import"./folder-plus-Cmhq0GcR.js";import"./layout-grid-CzxXbCDa.js";import"./SettingsPage-fjxfS_Mt.js";import"./ipc-8cxXGSZK.js";import"./lock-open-DVWCLSZm.js";import"./MarkdownBlock-DjsGkPZ_.js";import"./index-CiQ59Kib.js";import"./linkFollow-J2c0wSgB.js";import"./listFold-B_2Xqxn_.js";import"./FloatingToc-iK08Qpjc.js";import"./canvasPrefs-CMulOS0k.js";import"./type-CMyP4cKt.js";import"./file-down-Cjo_T6By.js";import"./AutomationBuilder-CzBKmOiw.js";import"./gestures-Bx9M0le5.js";import"./pencil-BgF4Kiqp.js";import"./tanguProbe-BboOas-a.js";import"./sessionTitle-BtZ1BteL.js";import"./index-BQrMYjou.js";import"./create-DZWy4zBR.js";import"./launchpad-BX4jQyF4.js";import"./CtxMenuButtons-CAiwQkOK.js";import"./phoneList-BLVdQcXY.js";import"./pdf.worker.min-CGb3BKV9.js";import"./code-xml-vTB4LtTf.js";import"./zoom-in-C7R8s9x-.js";import"./minimize-2-Bq4vUin-.js";import"./InlineFiles-3g2jMUeA.js";import"./pen-line-ho1GgAe2.js";import"./ViewSelectionBar-C5FDh7fO.js";import"./InlineAiPanel-CjYOW0_0.js";import"./GitCloneDialog-DfY0kqhP.js";import"./log-out-CdKTS7HC.js";import"./StudioGuestSurface-360CWUwf.js";/* empty css */import"./drawingStore-BD5m2eqn.js";import"./magnet-BmVcZ9U4.js";import"./pageTree-DtDKozTg.js";import"./pluginExt-Byb64tQO.js";import"./folder-minus-DUEOcs12.js";import"./redo-2-DWZTaEz-.js";import"./foldActions-utwZpRrA.js";const ja=[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]],Ea=qe("box",ja);const Ca=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],Na=qe("calendar",Ca);const Ta=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],Ia=qe("chevrons-left",Ta);const La=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],Ma=qe("chevrons-right",La);const za=[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]],Pa=qe("tag",za),vs={folder:bs,"folder-open":Po,star:va,heart:pa,home:zo,zap:ms,bookmark:Ci,bell:Mo,tag:Pa,flag:Lo,pin:ga,box:Ea,package:Io,settings:To,wrench:No,terminal:ma,code:ua,"file-text":Pt,image:Ei,music:da,video:la,camera:Co,globe:Eo,compass:ji,map:ha,calendar:Na,clock:jo,mail:So,"message-circle":Si,users:xi,user:xo,search:yo,filter:ko,sparkles:yi,rocket:ca,target:ra,trophy:Zs,lightbulb:ts,coffee:Gs,palette:ki,layers:vi,database:wi,"pen-tool":aa,inbox:vo,bot:us,command:Xs,moon:wo},Da=Object.keys(vs),Tt=n=>n?vs[n]:void 0;function Ra(n,i,s){const l=n.target.closest("button")??i;let a=!1,v=!1,p,f;const w=parseFloat(getComputedStyle(document.body).zoom)||1,m=n.clientX,k=n.clientY;l.setPointerCapture(n.pointerId);const h=(j=!1)=>{if(v=!0,window.removeEventListener("pointermove",T,!0),window.removeEventListener("pointerup",E,!0),window.removeEventListener("pointercancel",b,!0),window.removeEventListener("keydown",g,!0),window.removeEventListener("blur",b),l.removeEventListener("lostpointercapture",b),l.hasPointerCapture(n.pointerId)&&l.releasePointerCapture(n.pointerId),document.documentElement.classList.remove("rb-pointer-dragging"),p?.remove(),f?.remove(),a){const z=y=>{y.preventDefault(),y.stopImmediatePropagation(),F()},I=()=>{clearTimeout(K),K=window.setTimeout(F,0)},F=()=>{window.removeEventListener("click",z,!0),window.removeEventListener("pointerup",I,!0),clearTimeout(K)};window.addEventListener("click",z,!0),j||window.addEventListener("pointerup",I,{capture:!0,once:!0});let K=window.setTimeout(F,j?0:1e4)}},b=()=>{v||(h(),a&&s.cancel())},g=j=>{j.key==="Escape"&&(j.preventDefault(),j.stopImmediatePropagation(),b())},T=j=>{if(!(j.pointerId!==n.pointerId||v)){if(!(j.buttons&1)){b();return}if(!(!a&&Math.hypot(j.clientX-m,j.clientY-k)<6)){a||(a=!0,document.documentElement.classList.add("rb-pointer-dragging"),f=document.createElement("div"),f.className="rb-pointer-shield",f.style.width=`${window.innerWidth/w}px`,f.style.height=`${window.innerHeight/w}px`,f.setAttribute("aria-hidden","true"),document.body.appendChild(f),p=i.cloneNode(!0),p.removeAttribute("data-id"),p.querySelectorAll("[id]").forEach(z=>z.removeAttribute("id")),p.className="rb-pointer-ghost",p.setAttribute("aria-hidden","true"),p.style.width=`${i.getBoundingClientRect().width/w}px`,document.body.appendChild(p),s.start()),j.preventDefault(),p.style.left=`${(j.clientX+12)/w}px`,p.style.top=`${(j.clientY+12)/w}px`,f.style.pointerEvents="none";try{s.move(j)}finally{f.style.pointerEvents=""}}}},E=j=>{j.pointerId!==n.pointerId||j.button!==0||v||(h(!0),a&&(j.preventDefault(),s.drop(j)))};return window.addEventListener("pointermove",T,!0),window.addEventListener("pointerup",E,!0),window.addEventListener("pointercancel",b,!0),window.addEventListener("keydown",g,!0),window.addEventListener("blur",b),l.addEventListener("lostpointercapture",b),b}const Oa=300,Aa=150;function Fa(n){const i=l=>n.known(l.type),s=n.active?n.stash.filter(i):[];return s.length?s:n.defaults.filter(i)}function Ba(n){return n.zone==="shell"&&n.buttons===0&&!n.typing}const It=4,Yn=5,Un=5,_a=1e3,$a=100;function qn(n){if(n>=9)return"";const i=Hi({id:`space-slot-${n+1}`,hotkey:`mod+${n+1}`});return i?Wi(i,Yi()):""}function Ye({item:n,expanded:i,dot:s}){if(n.component){const v=n.component;return t.jsx(v,{expanded:i})}const l=n.icon,a=n.tooltip?Ee(n.tooltip):"";return t.jsxs("button",{className:"rb-btn","aria-label":a||void 0,"data-rb-tip":i?void 0:a||void 0,onClick:n.onClick,children:[l&&t.jsx(l,{size:18}),s&&t.jsx("span",{className:"rb-badge rb-dot","aria-hidden":"true"}),i&&t.jsx("span",{className:"rb-label",children:a})]})}function Va({cmd:n,expanded:i,overrideIcon:s}){const[,l]=c.useReducer(f=>f+1,0),a=s??n.icon??ms,v=Ee(n.title);let p;if(n.checked)try{p=!!n.checked()}catch{p=void 0}return t.jsxs("button",{className:`rb-btn${p?" is-on":""}`,"aria-pressed":p,"aria-label":v,"data-rb-tip":i?void 0:v,onMouseEnter:n.checked?l:void 0,onMouseLeave:n.checked?l:void 0,onClick:()=>{const f=n.run();n.checked&&(l(),f&&typeof f.then=="function"&&f.then(l,l))},children:[t.jsx(a,{size:18}),i&&t.jsx("span",{className:"rb-label",children:v})]})}const rt=24,Ue=n=>n.startsWith("space:")?n.slice(6):null,Ha=600;function Wa(){const n=ae(e=>e.items),i=Ni(n),s=ae(e=>e.expanded),l=ae(e=>e.order),a=ae(e=>e.bottomOrder),v=ae(e=>e.folders),p=ae(e=>e.commandItems),f=ae(e=>e.commandIcons),w=ae(e=>e.recentCount),m=q(e=>e.recent),k=Ti(e=>e.commands);Ii(e=>e.overrides);const{t:h}=ps(),b=()=>ae.getState(),[g,T]=c.useState(null),E=c.useRef(void 0);c.useEffect(()=>()=>E.current?.(),[]);const[j,z]=c.useState(null),[I,F]=c.useState(null),[K,y]=c.useState(null),[P,M]=c.useState(null),[V,_]=c.useState(null),[$,G]=c.useState(null),[X,Te]=c.useState(99),D=c.useRef(null),le=c.useRef(null),Ie=c.useRef(null),re=c.useRef(null),R=c.useRef(null),de=c.useRef(null),se=c.useRef(void 0),we=c.useRef(null),[Q,Le]=c.useState({top:0,bottom:0}),[Y,Ge]=c.useState(null),[Me,S]=c.useState({}),B=c.useRef({}),oe=c.useRef({});c.useEffect(()=>()=>{for(const e of Object.values(B.current))window.clearTimeout(e?.timer)},[]);const[Z,ve]=c.useState(!1),ue=c.useRef(void 0);c.useEffect(()=>()=>window.clearTimeout(ue.current),[]);const ze=e=>{for(const r of["top","bottom"]){const u=B.current[r];if(!u)continue;window.clearTimeout(u.timer);const d=oe.current[r];d&&(d.style.transform=u.from?`translateY(${-u.from*H}px)`:""),delete B.current[r]}S({}),window.clearTimeout(ue.current);const o=!window.matchMedia("(prefers-reduced-motion: reduce)").matches;ve(o),o&&(ue.current=window.setTimeout(()=>ve(!1),240)),Ge(e)},[Pe,Yt]=c.useState(null),De=c.useRef(null),ht=c.useRef(void 0),Ze=c.useRef(!1),Ut=c.useRef(0),Re=()=>{window.clearTimeout(ht.current),De.current=null,Ze.current&&(Ze.current=!1,Ut.current=Date.now()),Yt(null)},Is=!W(e=>e.leftVisible),[U,qt]=c.useState(null),Kt=q(e=>U?e.spaces.find(o=>o.id===U.spaceId):void 0),gt=c.useRef(null),Qe=c.useRef(null),ke=c.useRef(void 0),Oe=c.useRef(void 0),Xt=c.useRef(null),[,Je]=c.useReducer(e=>e+1,0),et=()=>{window.clearTimeout(Oe.current),Oe.current=void 0},me=()=>{window.clearTimeout(ke.current),et(),qt(null)},bt=!!g||!!V||!!$||!!P,Ls=e=>W.getState().leftVisible&&e===q.getState().activeSpaceId,Gt=q(e=>!!U&&e.activeSpaceId===U.spaceId)&&!Is;c.useEffect(()=>{(bt||Gt)&&me()},[bt,Gt]),c.useEffect(()=>U?Ne(()=>{U.views.some(e=>!ge(e.type))&&me()}):void 0,[U]),c.useEffect(()=>()=>{window.clearTimeout(ke.current),window.clearTimeout(Oe.current)},[]);const Zt=e=>{if(Ls(e)){me();return}const{spaces:o,activeSpaceId:r}=q.getState(),u=o.find(O=>O.id===e),d=W.getState(),x=e===r,C=u?Fa({active:x,stash:d.stash.left,defaults:x?d.sidebarDefaults.left:u.sidebarDefaults.left,known:O=>!!ge(O)}):[];et(),qt(C.length?{spaceId:e,views:C}:null)},Ms=e=>{const o=e.target.closest("[data-space-id]")?.dataset.spaceId??null;o!==Qe.current&&(window.clearTimeout(ke.current),Qe.current=o,o&&(bt||(U?.spaceId===o?et():U?Zt(o):ke.current=window.setTimeout(()=>{Qe.current===o&&Zt(o)},Oa))))},Qt=!!U;c.useEffect(()=>{if(!Qt)return;const e=L=>{const A=L instanceof Element?L:null;return A?gt.current?.contains(A)?"card":D.current?.contains(A)&&A.closest("[data-space-id]")?"trigger":A.closest(".shell")?"shell":"overlay":"overlay"},o=()=>{const L=document.activeElement;return!!L&&!!gt.current?.contains(L)&&L.matches('input, textarea, select, [contenteditable]:not([contenteditable="false"])')};let r=null;const u=(L,A)=>{const te=e(L);Ba({zone:te,buttons:A,typing:te==="shell"&&o()})?Oe.current===void 0&&(Oe.current=window.setTimeout(me,Aa)):et()},d=L=>{r=L.target,u(L.target,L.buttons)},x=()=>{window.setTimeout(()=>u(r,0),0)},C=L=>{const A=e(L.target);(A==="shell"||A==="trigger")&&me()},O=L=>{L.key==="Escape"&&!o()&&me()};return document.addEventListener("mousemove",d),document.addEventListener("mouseover",d),document.addEventListener("mouseup",d),document.addEventListener("focusout",x),document.addEventListener("mousedown",C,!0),window.addEventListener("keydown",O),window.addEventListener("resize",Je),window.addEventListener(Dt,Je),()=>{document.removeEventListener("mousemove",d),document.removeEventListener("mouseover",d),document.removeEventListener("mouseup",d),document.removeEventListener("focusout",x),document.removeEventListener("mousedown",C,!0),window.removeEventListener("keydown",O),window.removeEventListener("resize",Je),window.removeEventListener(Dt,Je)}},[Qt]);const zs=()=>{const e=D.current,o=ct(e),r=e?.getBoundingClientRect(),u=e?.parentElement?.querySelector(".shell-work"),d=u?.getBoundingClientRect(),C=(u?.querySelector(".dv-prefix--edge")?.closest(".dv-tabs-and-actions-container")?.getBoundingClientRect()?.bottom??d?.top??0)+4,O=(d?.bottom??window.innerHeight)-8,L=W.getState(),A=_i((d?.width??1200)/o,"left",{free:L.sideFree.left,saved:L.sideWidths.left,scale:L.sideScale.left}),te=L.leftVisible?L.api?.panels.find(_e=>_e.params?.__loc==="left")?.group.element.getBoundingClientRect():void 0;return te?.height?{left:te.left/o,top:te.top/o,height:te.height/o,width:A,"--rb-peek-lights":"26px"}:{left:((r?.right??44)+4)/o,top:C/o,height:Math.max(160,O-C)/o,width:A}},wt=!!g||!!V||!!$||!!P||!!U;c.useEffect(()=>{(wt||s)&&Re()},[wt,s]),c.useEffect(()=>()=>window.clearTimeout(ht.current),[]);const Ps=e=>{const o=e.target.closest("[data-rb-tip]");if(o===De.current)return;const r=Ze.current||Date.now()-Ut.current<=$a;if(Re(),!o||wt||s)return;De.current=o;const u=()=>{if(De.current!==o||!o.isConnected||!o.dataset.rbTip)return;const d=o.getBoundingClientRect();Ze.current=!0,Yt({text:o.dataset.rbTip,mid:d.top+d.height/2})};r?u():ht.current=window.setTimeout(u,_a)},Ds=new Set(v.flatMap(e=>e.items)),tt=new Map,Jt=e=>{const o=[];for(const u of n)(u.side??"top")===e&&!u.pinned&&o.push({kind:"item",id:u.id,item:u});if(e==="bottom")for(const u of p){const d=k.find(x=>x.id===u);d&&o.push({kind:"cmd",id:`cmd:${u}`,cmd:d})}for(const u of v)u.zone===e&&o.push({kind:"folder",id:u.id,folder:u});for(const u of o)tt.set(u.id,u);return Ai(o.map(u=>u.id),e==="top"?l:a).map(u=>tt.get(u)).filter(u=>!Ds.has(u.id))},J=Jt("top"),ee=Jt("bottom"),en=e=>e.items.reduce((o,r)=>o+(tt.has(r)?1:0),0),Rs=n.filter(e=>e.side==="bottom"&&e.pinned),Os=n.filter(e=>e.side==="head"),tn=n.filter(e=>e.side==="home");c.useEffect(()=>{const e=[...tn.map(o=>o.id),...[...J,...ee].flatMap(o=>o.kind==="folder"?o.folder.items:[o.id])];Li(e.filter(o=>o.startsWith("space:")).map(o=>o.slice(6)))});const H=(s?34:32)+It;c.useLayoutEffect(()=>{const e=D.current;if(!e)return;const o=()=>{const u=getComputedStyle(e),d=(le.current?.offsetHeight??0)+(re.current?.offsetHeight??0),x=e.clientHeight-parseFloat(u.paddingTop)-parseFloat(u.paddingBottom)-d-(Ie.current?.offsetHeight??0)-2*H-48;Te(Math.max(2,Math.floor(x/H)))};o();const r=new ResizeObserver(o);return r.observe(e),re.current&&r.observe(re.current),()=>r.disconnect()},[s,H,n.length,v.length,p.length,Y]);const nn=(e,o)=>e<=o?e:o+1,sn=nn(J.length,Yn),vt=nn(ee.length,Un);let ce=sn,pe=vt;if(Y)Y==="top"?ce=X:pe=X;else if(ce+pe>X)if(J.length===0)ce=0,pe=X;else if(ee.length===0)ce=X,pe=0;else{const e=Math.floor(X/2);ce=Math.max(1,Math.min(sn,Math.max(e,X-vt))),pe=Math.max(1,Math.min(vt,X-ce))}const on=(e,o,r,u,d)=>{if(e.length<=o&&e.length<=d)return{shown:e,tail:[],start:0,max:0};const x=Math.max(0,o-1),C=e.length-x,O=Math.min(Math.max(0,u),C),L=r?e.length-x-O:O;return{shown:e.slice(L,L+x),tail:[...e.slice(0,L),...e.slice(L+x)],start:L,max:C}},Ae=on(J,ce,!1,Q.top,Y==="top"?1/0:Yn),Fe=on(ee,pe,!0,Q.bottom,Y==="bottom"?1/0:Un),an=m.map(e=>n.find(o=>o.id===`space:${e}`)).filter(e=>!!e).slice(0,Mi(w,X,ce,pe,!!Y)),As=(e,o)=>r=>{const u=oe.current[e];if(!o.max||g||!r.deltaY||!u)return;window.clearTimeout(se.current);let d=B.current[e];d||(d=B.current[e]={px:o.start*H,from:o.start,timer:0},S(C=>({...C,[e]:!0}))),window.clearTimeout(d.timer);const x=r.deltaMode?Math.sign(r.deltaY)*H:Math.max(-H,Math.min(H,r.deltaY));d.px=Math.max(0,Math.min(o.max*H,d.px+x)),u.style.transform=`translateY(${-d.px}px)`,d.timer=window.setTimeout(()=>Fs(e,o),120)},Fs=(e,o)=>{const r=B.current[e],u=oe.current[e];if(!r||!u)return;const d=r.at??r.from,x=r.px-d*H;let C=Math.round(r.px/H);C===d&&x&&(C+=Math.sign(x)),rn(e,o,Math.max(0,Math.min(o.max,C)))},rn=(e,o,r)=>{const u=oe.current[e];if(!u)return;let d=B.current[e];d||(d=B.current[e]={px:o.start*H,from:o.start,timer:0},S(x=>({...x,[e]:!0}))),window.clearTimeout(d.timer),d.px=r*H,d.at=r,u.style.transform=r?`translateY(${-r*H}px)`:"",d.timer=window.setTimeout(()=>{delete B.current[e],S(x=>({...x,[e]:!1})),Le(x=>({...x,[e]:e==="top"?r:o.max-r}))},240)};c.useEffect(()=>()=>window.clearTimeout(se.current),[]);const cn=c.useRef(()=>{});cn.current=()=>{if(!g)for(const[e,o]of[["top",Ae],["bottom",Fe]])Q[e]&&(o.max&&oe.current[e]?rn(e,o,e==="top"?0:o.max):Le(r=>({...r,[e]:0})))};const ln=!!(Q.top||Q.bottom||Me.top||Me.bottom);c.useEffect(()=>{if(!ln)return;const e=()=>{$n()&&(window.clearTimeout(se.current),se.current=window.setTimeout(()=>{$n()&&cn.current()},Ha))},o=r=>{const u=r.target;r.button!==0||u?.closest?.(".rb-menu, .rb-iconpick, [data-rb-overlay]")||u&&(D.current?.contains(u)||u.closest(".rb-fly"))&&!u.closest(".rb-btn:not(.rb-more, .rb-plus, .rb-toggle, .rb-folder)")||e()};return window.addEventListener("click",o,!0),window.addEventListener("blur",e),()=>{window.removeEventListener("click",o,!0),window.removeEventListener("blur",e)}},[ln]);const ie=P?.folderId?v.find(e=>e.id===P.folderId):void 0,nt=()=>{de.current&&(window.clearTimeout(de.current),de.current=null)},dn=()=>{nt(),de.current=window.setTimeout(()=>{g||M(null)},150)},kt=(e,o,r,u)=>{nt(),M({key:e,zone:o,folderId:u,top:r.getBoundingClientRect().top})};c.useLayoutEffect(()=>{const e=R.current;if(!e||!P)return;const o=e.getBoundingClientRect().bottom-(window.innerHeight-8);o>0&&M({...P,top:Math.max(8,P.top-o)})},[P?.key,ie?.items.length]);const un=!!P;c.useEffect(()=>{if(!un)return;const e=r=>{r.key==="Escape"&&M(null)},o=r=>{const u=r.target;!R.current?.contains(u)&&!D.current?.contains(u)&&M(null)};return window.addEventListener("keydown",e),window.addEventListener("mousedown",o),()=>{window.removeEventListener("keydown",e),window.removeEventListener("mousedown",o)}},[un]),c.useEffect(()=>{if(!Y)return;const e=()=>ze(null),o=u=>{if(u.button!==0)return;const d=u.target;d?.closest?.(".rb-menu, .rb-iconpick, .rb-fly, [data-rb-overlay]")||d&&D.current?.contains(d)&&d.closest("button")||e()},r=u=>{u.key==="Escape"&&e()};return window.addEventListener("pointerdown",o,!0),window.addEventListener("keydown",r),window.addEventListener("blur",e),()=>{window.removeEventListener("pointerdown",o,!0),window.removeEventListener("keydown",r),window.removeEventListener("blur",e)}},[Y,H]);const yt=c.useRef(new Map),mn=c.useRef(()=>{});c.useEffect(()=>{mn.current=e=>{const o=J[e];if(o){if(o.kind==="folder"){const r=yt.current.get(o.id)??D.current;r&&kt(o.id,"top",r,o.id);return}M(null),o.kind==="cmd"?o.cmd.run():o.id.startsWith("space:")?Fn(o.id.slice(6)):o.item.onClick?.()}}});const pn=Math.min(9,J.length);c.useEffect(()=>{for(let e=1;e<=9;e++){if(e>pn){Bn(`space-slot-${e}`);continue}zi({id:`space-slot-${e}`,title:()=>Pi("lcl.ribbon.switchSpace",{n:e}),keywords:`space switch ${e} 切换 空间`,hotkey:`mod+${e}`,run:()=>mn.current(e-1)})}return()=>{for(let e=1;e<=9;e++)Bn(`space-slot-${e}`)}},[pn]);const fn=(e,o,r,u)=>{e.dataTransfer.effectAllowed="move";const d=e.currentTarget.getBoundingClientRect();e.dataTransfer.setDragImage(e.currentTarget,e.clientX-d.left,e.clientY-d.top),T({id:o,zone:r,from:u})},ye=()=>{we.current=null,T(null),z(null),F(null),y(null)},Be=g&&fe()?.openSpace?Ue(g.id):null,hn=c.useRef({dropped:!1,gone:!1}),xt=(e,o)=>{const r=D.current?.getBoundingClientRect();if(!r)return!0;const u=x=>e>=x.left-rt&&e<=x.right+rt&&o>=x.top-rt&&o<=x.bottom+rt,d=R.current?.getBoundingClientRect();return u(r)||!!d&&u(d)},gn=e=>{const o=e.target;return!!o&&(!!D.current?.contains(o)||!!R.current?.contains(o))};c.useLayoutEffect(()=>{if(!Be)return;const e={dropped:!1,gone:!1};hn.current=e;const o=d=>{e.gone=!1,!gn(d)&&(d.preventDefault(),d.stopPropagation(),d.dataTransfer&&(d.dataTransfer.dropEffect="move"),F(x=>x&&null),y(x=>x&&null))},r=d=>{e.dropped=!0,!gn(d)&&(d.preventDefault(),d.stopPropagation(),xt(d.clientX,d.clientY)||fe()?.openSpace?.(Be,{screenX:d.screenX,screenY:d.screenY}))},u=d=>{(d.clientX<=0||d.clientY<=0||d.clientX>=window.innerWidth||d.clientY>=window.innerHeight)&&(e.gone=!0)};return window.addEventListener("dragover",o,!0),window.addEventListener("drop",r,!0),window.addEventListener("dragleave",u,!0),()=>{window.removeEventListener("dragover",o,!0),window.removeEventListener("drop",r,!0),window.removeEventListener("dragleave",u,!0)}},[Be]);const bn=e=>{const o=hn.current;if(Be&&!o.dropped){const{clientX:r,clientY:u}=e,d=r<0||u<0||r>window.innerWidth||u>window.innerHeight,x=!d&&/^(IFRAME|WEBVIEW)$/.test(document.elementFromPoint(r,u)?.tagName??"");(d||!xt(r,u)&&(o.gone||x))&&fe()?.openSpace?.(Be,e.screenX||e.screenY?{screenX:e.screenX,screenY:e.screenY}:void 0)}ye()},xe=(e,o,r)=>{o&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move",r?.())},wn=(e,o)=>{const r=e.querySelectorAll(".rb-slot"),u=r[0]?.getBoundingClientRect().top??0,d=r.length>1?r[1].getBoundingClientRect().top-u:0;return{top:u,pitch:d,grabDy:o??d/2}},vn=(e,o,r)=>Bi(o,r,we.current??wn(e)),kn=(e,o)=>{const r=e.parentElement;r&&(we.current=wn(r,o-e.getBoundingClientRect().top))},st=(e,o,r=g)=>{const u=r;if(ye(),!u||u.zone!==e||u.id===o)return;u.from&&b().moveOutOfFolder(u.id);const d=e==="top"?b().order:b().bottomOrder,x=Fi(d,(e==="top"?J:ee).map(O=>O.id)),C=o?x.indexOf(o):-1;b().setZoneOrder(e,at(x,u.id,C>=0?C:x.length))},ot=(e,o,r=g)=>{const u=r;if(ye(),!(!u||u.zone!==e.zone||u.id.startsWith("folder:"))){if(u.from===e.id)b().setFolderItems(e.id,at(e.items,u.id,o??e.items.length));else if(b().moveIntoFolder(e.id,u.id),u.from||b().setZoneOrder(e.zone,Vn(e.zone==="top"?b().order:b().bottomOrder,(e.zone==="top"?J:ee).map(d=>d.id),u.id)),o!==void 0){const d=b().folders.find(x=>x.id===e.id);d&&b().setFolderItems(e.id,at(d.items,u.id,o))}}},St=c.useRef(null);St.current={target:(e,o)=>{const r=document.elementFromPoint(e.clientX,e.clientY),u=!!r&&(!!D.current?.contains(r)||!!R.current?.contains(r));if(u){const x=r.closest("[data-rb-folder]")?.dataset.rbFolder,C=v.find(A=>A.id===x);if(C&&C.zone===o.zone){const A=r.closest("[data-rb-folder-index]");return F(null),y(C.id),z(A?.dataset.id??null),A||kt(C.id,C.zone,r.closest("[data-rb-folder]"),C.id),{kind:"folder",folder:C,at:A?Number(A.dataset.rbFolderIndex):void 0}}const O=r.closest("[data-rb-more]")?.dataset.rbMore;if(O===o.zone)return F(null),y(`more:${O}`),{kind:"bar",zone:o.zone,id:o.zone==="bottom"?ee[0]?.id??null:null};const L=r.closest(".rb-top, .rb-bottom");if(L){const A=L.classList.contains("rb-top")?"top":"bottom";if(A!==o.zone)return{kind:"cancel"};const te=(A==="top"?Ae:Fe).shown.map($e=>$e.id),_e=vn(L,e.clientY,te.length);return y(null),z(null),F($e=>$e?.zone===A&&$e.index===_e?$e:{zone:A,index:_e}),{kind:"bar",zone:A,id:te[_e]??null}}}return F(null),y(null),z(null),{kind:e.clientX<0||e.clientY<0||e.clientX>=window.innerWidth||e.clientY>=window.innerHeight||!u&&!xt(e.clientX,e.clientY)?"tear":"cancel"}},drop:(e,o,r)=>{if(r.kind==="bar")st(r.zone,r.id,o);else if(r.kind==="folder")ot(r.folder,r.at,o);else if(ye(),r.kind==="tear"){const u=fe(),d=Ue(o.id);d&&u?.openSpace?.(d,u.cursorScreenPoint?.()??{screenX:e.screenX,screenY:e.screenY})}}};const yn=(e,o,r,u)=>{if(!fe()?.ribbonPointerDrag||!Ue(o)||e.button!==0||!e.isPrimary)return;e.stopPropagation(),E.current?.();const d=e.currentTarget,x={id:o,zone:r,from:u};u||kn(d,e.clientY);let C={kind:"cancel"};E.current=Ra(e.nativeEvent,d,{start:()=>{Re(),nt(),T(x)},move:O=>{C=St.current.target(O,x)},drop:O=>{St.current.drop(O,x,C)},cancel:ye})},xn=e=>!(fe()?.ribbonPointerDrag&&Ue(e)),Sn=Nt.prompt??((e,o)=>Promise.resolve(window.prompt(e,o))),Bs=e=>{Sn(h("lcl.ribbon.newFolder"),h("lcl.ribbon.folderDefaultName")).then(o=>{const r=o?.trim();r&&b().addFolder(e,r)})},it=e=>[...e==="top"&&Nt.newSpace?[{label:h("lcl.ribbon.newSpace"),onClick:Nt.newSpace}]:[],...e==="bottom"?[{label:h("lcl.ribbon.addCommand"),onClick:()=>$i(o=>b().addCommandItem(o))}]:[],{label:h(e==="top"?"lcl.ribbon.newFolderSpaces":"lcl.ribbon.newFolderCommands"),onClick:()=>Bs(e)}],_s=e=>o=>{o.defaultPrevented||(o.preventDefault(),_({x:o.clientX,y:o.clientY,entries:it(e)}))},$s=e=>{e.defaultPrevented||e.nativeEvent===Xt.current||(e.preventDefault(),_({x:e.clientX,y:e.clientY,entries:[...it("top"),...it("bottom")]}))},jn=(e,o,r,u)=>{_(null),G({x:e,y:o,current:r,apply:u})},Vs=e=>o=>{o.preventDefault(),o.stopPropagation();const r=o.clientX,u=o.clientY;_({x:r,y:u,entries:[{label:h("lcl.ribbon.changeIcon"),onClick:()=>jn(r,u,e.icon,d=>b().setFolderIcon(e.id,d))},{label:h("lcl.ribbon.rename"),onClick:()=>{Sn(h("lcl.ribbon.renameFolder"),e.name).then(d=>{const x=d?.trim();x&&b().renameFolder(e.id,x)})}},{label:h("lcl.ribbon.dissolveFolder"),onClick:()=>b().removeFolder(e.id)}]})},En=e=>{const o=Ue(e.id),r=fe()?.openSpace;return[...o&&r?[{label:h("lcl.ribbon.openInNewWindow"),onClick:()=>r(o)}]:[],...e.menu?.()??[]]},Cn=e=>o=>{if(o.defaultPrevented)return;const r=En(e);r.length&&(o.preventDefault(),o.stopPropagation(),_({x:o.clientX,y:o.clientY,entries:r}))},Nn=e=>o=>{o.preventDefault(),o.stopPropagation();const r=o.clientX,u=o.clientY;_({x:r,y:u,entries:[{label:h("lcl.ribbon.setIcon"),onClick:()=>jn(r,u,b().commandIcons[e],d=>b().setCommandIcon(e,d))},{label:h("lcl.ribbon.removeCommand"),onClick:()=>b().removeCommandItem(e)}]})},Hs=e=>{const o=Tt(e.icon)??bs;return t.jsxs("button",{ref:r=>{r?yt.current.set(e.id,r):yt.current.delete(e.id)},className:`rb-btn rb-folder${K===e.id?" drag-into":""}`,"data-rb-folder":e.id,"aria-label":`${e.name} (${en(e)})`,onMouseEnter:r=>kt(e.id,e.zone,r.currentTarget,e.id),onMouseLeave:dn,onContextMenu:Vs(e),onDragOver:r=>xe(r,!!g&&g.zone===e.zone&&!g.id.startsWith("folder:"),()=>{F(null),y(e.id)}),onDragLeave:()=>{K===e.id&&y(null)},onDrop:r=>{!g||g.id.startsWith("folder:")||(r.preventDefault(),r.stopPropagation(),ot(e))},children:[t.jsx(o,{size:18}),e.items.some(r=>i.has(r))&&t.jsx("span",{className:"rb-badge rb-dot","aria-hidden":"true"}),s&&t.jsx("span",{className:"rb-label",children:e.name})]})},Tn=e=>{const o=Y===e,r=h(o?"lcl.ribbon.less":"lcl.ribbon.more"),u=o?e==="top"?ka:Ot:Vi;return t.jsxs("button",{className:`rb-btn rb-more${o?" is-open":""}${K===`more:${e}`?" drag-into":""}`,"data-rb-more":e,"aria-label":r,"aria-expanded":o,"data-rb-tip":s?void 0:r,onClick:()=>ze(o?null:e),onDragOver:d=>xe(d,!!g&&g.zone===e,()=>{F(null),y(`more:${e}`)}),onDragLeave:()=>{K===`more:${e}`&&y(null)},onDrop:d=>{d.preventDefault(),d.stopPropagation(),st(e,e==="bottom"?ee[0]?.id??null:null)},children:[t.jsx(u,{size:18}),!o&&(e==="top"?Ae:Fe).tail.some(d=>d.kind==="item"?i.has(d.id):d.kind==="folder"&&d.folder.items.some(x=>i.has(x)))&&t.jsx("span",{className:"rb-badge rb-dot","aria-hidden":"true"}),s&&t.jsx("span",{className:"rb-label",children:r})]})},jt=(e,o)=>{const r=o??s;return e.kind==="item"?t.jsx(Ye,{item:e.item,expanded:r,dot:i.has(e.id)}):e.kind==="cmd"?t.jsx(Va,{cmd:e.cmd,expanded:r,overrideIcon:Tt(f[e.cmd.id])}):Hs(e.folder)},Ws=(e,o,r,u,d,x)=>{const C=u?u.indexOf(e.id):r;return t.jsxs("div",{"data-id":e.id,className:`rb-slot${g?.id===e.id?" dragging":""}${d?" drag-over":""}`,style:C!==r?{transform:`translateY(${(C-r)*H}px)`}:void 0,draggable:xn(e.id),onPointerDown:O=>yn(O,e.id,o,null),onDragStart:O=>{kn(O.currentTarget,O.clientY),fn(O,e.id,o,null)},onDragEnd:bn,onContextMenu:e.kind==="cmd"?Nn(e.cmd.id):e.kind==="item"?Cn(e.item):void 0,children:[jt(e),o==="top"&&s&&qn(x)&&t.jsx("span",{className:"rb-key",children:qn(x)})]},e.id)},Et=e=>h(e==="top"?"lcl.ribbon.addSpaceOrFolder":"lcl.ribbon.addCommand"),In=e=>t.jsxs("button",{className:"rb-btn rb-plus","aria-label":Et(e),"data-rb-tip":s?void 0:Et(e),onClick:o=>{const r=o.currentTarget.getBoundingClientRect();_({x:r.right+6,y:r.top,entries:it(e)})},children:[t.jsx(Rt,{size:16}),s&&t.jsx("span",{className:"rb-label",children:Et(e)})]}),Ln=(e,o)=>{const r=o.shown.map(d=>d.id),u=g&&I?.zone===e&&r.includes(g.id)?at(r,g.id,I.index):null;return t.jsxs("div",{className:`rb-group rb-${e}`,onContextMenu:_s(e),onWheel:As(e,o),onDragOver:d=>{const x=vn(d.currentTarget,d.clientY,r.length);xe(d,!!g&&g.zone===e,()=>{y(null),F(C=>C?.zone===e&&C.index===x?C:{zone:e,index:x})})},onDrop:d=>{d.preventDefault(),d.stopPropagation(),st(e,(I?.zone===e?r[I.index]:null)??null)},children:[e==="bottom"&&t.jsxs(t.Fragment,{children:[In(e),(o.tail.length>0||Y===e)&&Tn(e)]}),t.jsx("div",{className:"rb-strip","data-guide-anchor":e==="top"?"ribbon-spaces":void 0,style:{height:Math.max(0,o.shown.length*H-It)},children:t.jsx("div",{ref:d=>{oe.current[e]=d},className:"rb-strip-in",style:o.start?{transform:`translateY(${-o.start*H}px)`}:void 0,children:(e==="top"?J:ee).map((d,x)=>{const C=x-o.start;return C>=0&&C<o.shown.length?Ws(d,e,C,u,!u&&I?.zone===e&&I.index===C,x):t.jsx("div",{className:"rb-cell","aria-hidden":!0,inert:!0,style:{height:H-It},children:(Me[e]||Z)&&jt(d)},d.id)})})}),e==="top"&&t.jsxs(t.Fragment,{children:[(o.tail.length>0||Y===e)&&Tn(e),In(e)]})]})},Ys=(e,o,r,u)=>t.jsx("div",{"data-id":e.id,className:`rb-fly-row${g?.id===e.id?" dragging":""}${j===e.id&&g?.id!==e.id?` drag-over${g&&u.indexOf(g.id)>=0&&u.indexOf(g.id)<r?" below":""}`:""}`,"data-rb-folder":o.id,"data-rb-folder-index":r,draggable:xn(e.id),onPointerDown:d=>yn(d,e.id,o.zone,o.id),onDragStart:d=>{d.stopPropagation(),fn(d,e.id,o.zone,o.id)},onDragOver:d=>xe(d,!!g&&g.zone===o.zone&&g.id!==e.id&&!g.id.startsWith("folder:"),()=>z(e.id)),onDragLeave:()=>{j===e.id&&z(null)},onDrop:d=>{d.preventDefault(),d.stopPropagation(),ot(o,r)},onDragEnd:bn,onContextMenu:e.kind==="cmd"?Nn(e.cmd.id):d=>{d.preventDefault(),d.stopPropagation(),_({x:d.clientX,y:d.clientY,entries:[...e.kind==="item"?En(e.item):[],{label:h("lcl.ribbon.moveOut"),onClick:()=>{b().moveOutOfFolder(e.id);const x=o.zone==="top"?b().order:b().bottomOrder;b().setZoneOrder(o.zone,[...Vn(x,(o.zone==="top"?J:ee).map(C=>C.id),e.id),e.id])}}]})},children:jt(e,!0)},e.id);return t.jsxs("div",{ref:D,className:`rb${s?" rb-expanded":""}${g?" rb-dragging":""}${Y?` rb-open-${Y}`:""}`,onContextMenu:$s,onMouseOver:e=>{Ps(e),Ms(e)},onMouseLeave:()=>{Re(),window.clearTimeout(ke.current),Qe.current=null},onMouseDownCapture:e=>{Re(),window.clearTimeout(ke.current),De.current=e.target.closest("[data-rb-tip]")},onDragOver:e=>xe(e,!!g),onDrop:e=>{if(!g)return;e.preventDefault();const o=g.zone,r=I?.zone===o?(o==="top"?Ae:Fe).shown[I.index]?.id:void 0;if(r===void 0){ye();return}st(o,r)},children:[t.jsxs("div",{ref:le,className:"rb-head",children:[t.jsxs("button",{className:"rb-btn rb-toggle","aria-label":h(s?"lcl.ribbon.iconsOnly":"lcl.ribbon.showLabels"),"aria-expanded":s,"data-rb-tip":s?void 0:h("lcl.ribbon.showLabels"),onClick:()=>b().toggleExpanded(),children:[s?t.jsx(Ia,{size:18}):t.jsx(Ma,{size:18}),s&&t.jsx("span",{className:"rb-label",children:h("lcl.ribbon.iconsOnly")})]}),Os.map(e=>t.jsx(Ye,{item:e,expanded:s},e.id))]}),t.jsx("div",{ref:Ie,className:"rb-group rb-home",children:tn.map(e=>t.jsx(Ye,{item:e,expanded:s},e.id))}),Y!=="bottom"&&Ln("top",Ae),an.length>0&&t.jsx("div",{className:"rb-group rb-recent",role:"group","aria-label":h("lcl.ribbon.recentSpaces"),children:an.map(e=>t.jsx("div",{className:"rb-recent-slot","data-recent-id":e.id,onContextMenu:Cn(e),children:t.jsx(Ye,{item:e,expanded:s})},e.id))}),Y!=="top"&&Ln("bottom",Fe),t.jsx("div",{ref:re,className:"rb-group rb-pinned",children:Rs.map(e=>t.jsx(Ye,{item:e,expanded:s},e.id))}),P&&ie&&t.jsxs("div",{ref:R,className:"rb-fly","data-rb-folder":ie.id,style:(()=>{const e=ct(D.current);return{left:((D.current?.getBoundingClientRect().right??44)+4)/e,top:P.top/e}})(),onMouseEnter:nt,onMouseLeave:dn,onDragOver:e=>xe(e,!!g&&g.zone===P.zone&&!g.id.startsWith("folder:")&&e.target===e.currentTarget),onDrop:e=>{e.target===e.currentTarget&&(e.preventDefault(),ot(ie))},children:[t.jsx("div",{className:"rb-fly-head",children:ie.name}),en(ie)===0&&t.jsx("div",{className:"rb-fly-empty",children:h("lcl.ribbon.folderEmpty")}),ie.items.map((e,o)=>{const r=tt.get(e);return r?Ys(r,ie,o,ie.items):null})]}),U&&Kt&&D.current?.parentElement&&Di.createPortal(t.jsx(Ri,{ref:gt,space:Kt,views:U.views,style:zs(),onContextMenuCapture:e=>{Xt.current=e.nativeEvent},onBeforeClick:()=>{U.spaceId!==q.getState().activeSpaceId&&Oi()},onEnter:U.spaceId===q.getState().activeSpaceId?void 0:()=>{me(),Fn(U.spaceId)}}),D.current.parentElement),Pe&&!s&&t.jsx("div",{className:"rb-tip",role:"tooltip",style:(()=>{const e=ct(D.current);return{left:((D.current?.getBoundingClientRect().right??44)+6)/e,top:Pe.mid/e}})(),children:Pe.text}),V&&t.jsx("div",{className:"rb-menu-backdrop",onMouseDown:()=>_(null),onContextMenu:e=>{e.preventDefault(),_(null)},children:t.jsx(_n,{className:"rb-menu",x:V.x,y:V.y,onMouseDown:e=>e.stopPropagation(),children:V.entries.map((e,o)=>t.jsx("button",{onClick:()=>{_(null),e.onClick()},children:e.label},o))})}),$&&t.jsx("div",{className:"rb-menu-backdrop",onMouseDown:()=>G(null),onContextMenu:e=>{e.preventDefault(),G(null)},children:t.jsxs(_n,{className:"rb-iconpick",x:$.x,y:$.y,onMouseDown:e=>e.stopPropagation(),children:[t.jsx("button",{className:"rb-iconpick-reset",onClick:()=>{const e=$.apply;G(null),e("")},children:h("lcl.ribbon.defaultIcon")}),t.jsx("div",{className:"rb-iconpick-grid",children:Da.map(e=>{const o=Tt(e);return t.jsx("button",{className:`rb-iconpick-btn${$.current===e?" on":""}`,title:e,onClick:()=>{const r=$.apply;G(null),r(e)},children:t.jsx(o,{size:17})},e)})})]})})]})}const Kn=8,Ya=n=>n.dataset.lclShift==="end"?Kn:n.dataset.lclShift==="start"?-Kn:0;function Ua(){const n=Array.from(document.querySelectorAll(".dv-groupview")).map(s=>({r:s.getBoundingClientRect(),papery:!s.querySelector(".wb-tab--icon")})).filter(s=>s.r.width>0&&s.r.height>0),i=3;for(const s of document.querySelectorAll(".dv-sash")){const l=!!s.closest(".dv-split-view-container.dv-horizontal"),a=s.getBoundingClientRect();if(!a.width&&!a.height)continue;const v=l?a.left+a.width/2:a.top+a.height/2,[p,f]=l?[a.top,a.bottom]:[a.left,a.right];let w=null,m=null;for(const h of n){const[b,g,T,E]=l?[h.r.left,h.r.right,h.r.top,h.r.bottom]:[h.r.top,h.r.bottom,h.r.left,h.r.right];E<=p||T>=f||(w===null&&Math.abs(g-v)<=i&&(w=h.papery),m===null&&Math.abs(b-v)<=i&&(m=h.papery))}const k=w===!1&&m===!0?"end":w===!0&&m===!1?"start":"";k?s.dataset.lclShift=k:delete s.dataset.lclShift}}function qa(){const n=document.createElement("div");n.className="lcl-sash-tick",document.body.appendChild(n);let i=null,s=0;const l=(b,g)=>{const T=!!b.closest(".dv-split-view-container.dv-horizontal"),E=b.getBoundingClientRect(),j=Ya(b);cancelAnimationFrame(s),s=requestAnimationFrame(()=>{n.classList.add("show"),n.classList.toggle("h",!T);const z=ct(n);T?(n.style.left=`${(E.left+E.width/2+j)/z}px`,n.style.top=`${Math.min(Math.max(g.clientY,E.top),E.bottom)/z}px`):(n.style.left=`${Math.min(Math.max(g.clientX,E.left),E.right)/z}px`,n.style.top=`${(E.top+E.height/2+j)/z}px`)})},a=b=>b instanceof Element?b.closest(".dv-sash"):null,v=b=>{const g=i instanceof HTMLElement?i:a(b.target);g?l(g,b):n.classList.contains("show")&&(cancelAnimationFrame(s),n.classList.remove("show"))},p=b=>{i=a(b.target)},f=b=>{i&&(i=null,a(b.target)||(cancelAnimationFrame(s),n.classList.remove("show")))};let w=0;const m=()=>{window.clearTimeout(w),w=window.setTimeout(Ua,120)},k=b=>b instanceof Element&&(b.matches(".dv-sash, .dv-view, .dv-groupview")||!!b.querySelector(".dv-sash, .dv-groupview")),h=new MutationObserver(b=>{for(const g of b)for(const T of[...g.addedNodes,...g.removedNodes])if(k(T)){m();return}});return h.observe(document.body,{childList:!0,subtree:!0}),m(),document.addEventListener("pointermove",v,{passive:!0}),document.addEventListener("pointerdown",p,{passive:!0}),document.addEventListener("pointerup",f,{passive:!0}),()=>{h.disconnect(),window.clearTimeout(w),cancelAnimationFrame(s),document.removeEventListener("pointermove",v),document.removeEventListener("pointerdown",p),document.removeEventListener("pointerup",f),n.remove()}}const ks=({dark:n,soft:i,buildDefault:s,header:l,noRibbon:a,footer:v})=>(c.useEffect(()=>Ui(),[]),c.useEffect(()=>qa(),[]),fs==="mobile"?t.jsxs(t.Fragment,{children:[t.jsx(qi,{dark:n,soft:i,buildDefault:s}),t.jsx(Mn,{})]}):t.jsxs("div",{className:`shell${a?" shell--noribbon":""}`,children:[l,t.jsxs("div",{className:"shell-top",children:[!a&&t.jsx(Wa,{}),t.jsxs("div",{className:"shell-work",children:[t.jsx(ba,{dark:n,soft:i,buildDefault:s}),v]})]}),t.jsx(Mn,{})]})),Ka=["n","s","e","w","ne","nw","se","sw"],Lt=n=>{const i=n.currentTarget,s=i.dataset.edge,l={x:n.screenX,y:n.screenY};if(n.type==="pointerdown"){if(n.button!==0)return;i.setPointerCapture(n.pointerId),window.tangu?.miniResize?.(s,!0,l)}else n.type==="pointermove"?i.hasPointerCapture(n.pointerId)&&window.tangu?.miniResize?.(s,!1,l):(n.type==="pointerup"&&i.hasPointerCapture(n.pointerId)&&window.tangu?.miniResize?.(s,!1,l),window.tangu?.miniResize?.(null))},ys=({buildDefault:n,direct:i,resizable:s})=>{const l=q(y=>y.spaces),a=q(y=>y.activeSpaceId),[,v]=c.useReducer(y=>y+1,0);c.useEffect(()=>Ne(v),[]);const p=l.filter(ft),f=p.find(y=>y.id===a),w=We(y=>y.mainLeaves.find(P=>P.id===y.activeMainId)),[m,k]=c.useState(null),h=Qs();c.useEffect(()=>k(null),[w?.id,w?.type]);const b=m==="picker"&&!h?null:m,{t:g}=ps(),T=f?.icon,E=i?ge(i.view.type):void 0,j=c.useRef(!1);E&&(j.current=!0),c.useEffect(()=>{i&&j.current&&!E&&window.tangu?.closeSelf?.()},[i,E]);const z=i?.title||(E?Ee(E.displayName):f?Ee(f.mini?.name??f.name):"Mini Panel");c.useEffect(()=>{const y=We.getState();if(y.setDefaultBuilder(n),!i)if(f)y.getActiveLeaf()?.type!==f.mini.view.type&&y.resetLayout();else{const P=p.find(M=>M.id==="tangu")??p[0];P&&Ki(P.id),y.resetLayout()}},[l,a,f,n,i]),c.useEffect(()=>{const y=P=>{P.key==="Escape"&&k(null)};return window.addEventListener("keydown",y),()=>window.removeEventListener("keydown",y)},[]);const I=w&&(i?w.type===i.view.type:f&&w.type===f.mini.view.type)?We.getState().getActiveLeaf():null,F=I?ge(I.type):null,K=()=>{if(i){ut({type:i.mainView.type,params:{...i.mainView.params,...We.getState().getActiveLeaf()?.params}});return}const y=Ht();y?.mini&&ut({spaceId:y.id,type:y.mini.mainView.type,params:{...y.mini.mainView.params,...We.getState().getActiveLeaf()?.params}})};return t.jsxs("div",{className:"mini-card-shell mini-card-floating","data-space":i?"direct":f?.id,children:[t.jsxs("header",{className:"mini-card-chrome",children:[t.jsxs("div",{className:"mini-card-cap",children:[t.jsxs("button",{className:"mini-card-space","aria-label":g("lcl.mini.switchSpace"),"aria-expanded":b==="space",disabled:!!i||p.length<2,onClick:()=>k(b==="space"?null:"space"),children:[!i&&T&&t.jsx(T,{size:15}),(i||!h)&&t.jsx("span",{children:z}),!i&&p.length>1&&t.jsx(Ot,{size:12})]}),h&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"mini-card-cap-div"}),t.jsxs("button",{className:"mini-card-picker","aria-label":h.label,"aria-expanded":b==="picker",onClick:()=>k(b==="picker"?null:"picker"),children:[t.jsx("span",{children:h.items.find(y=>y.id===h.value)?.label||h.placeholder}),t.jsx(Ot,{size:12})]})]})]}),t.jsx("div",{className:"mini-card-drag-title"}),t.jsxs("div",{className:"mini-card-cap",children:[h?.create&&t.jsx("button",{className:"mini-card-action","aria-label":h.create.label,title:h.create.label,disabled:h.create.disabled,onClick:()=>Ct()?.create?.onCreate(),children:t.jsx(Rt,{size:15})}),t.jsx("button",{className:"mini-card-action","aria-label":g("lcl.mini.showMain"),title:g("lcl.mini.showMain"),disabled:!i&&!f,onClick:K,children:t.jsx(Do,{size:15})}),t.jsx("button",{className:"mini-card-action mini-card-close","aria-label":g("lcl.mini.close"),onClick:()=>window.tangu?.closeSelf?.(),children:t.jsx(Vt,{size:15})})]})]}),t.jsx("main",{className:"mini-card-main",children:I&&F?t.jsx("div",{className:"mini-panel-view","data-view":I.type,children:t.jsx(hs,{children:t.jsx(c.Suspense,{fallback:null,children:F.factory({leaf:I,params:I.params})})})},`${I.id}:${I.type}`):t.jsx("div",{className:"mini-panel-empty",children:g("lcl.mini.empty")})}),b&&t.jsxs(t.Fragment,{children:[t.jsx("button",{className:"mini-card-dismiss","aria-label":g("lcl.mini.closeMenu"),onClick:()=>k(null)}),b==="space"&&t.jsx("section",{className:"mini-card-popover","aria-label":g("lcl.mini.switchSpace"),children:t.jsx("div",{className:"mini-card-popover-list",children:p.map(y=>{const P=y.icon;return t.jsxs("button",{className:`mini-card-row${y.id===a?" active":""}`,onClick:()=>{Ke(y.id),k(null)},children:[P&&t.jsx(P,{size:15}),t.jsx("span",{className:"mini-card-row-label",children:Ee(y.mini.name??y.name)})]},y.id)})})}),b==="picker"&&h&&t.jsxs("section",{className:"mini-card-popover mini-card-popover--picker","aria-label":h.label,children:[t.jsx("div",{className:"mini-card-popover-title",children:h.label}),t.jsxs("div",{className:"mini-card-popover-list",children:[h.create&&t.jsxs("button",{className:"mini-card-row mini-card-row-new",disabled:h.create.disabled,onClick:()=>{k(null),Ct()?.create?.onCreate()},children:[t.jsx(Rt,{size:15}),t.jsx("span",{className:"mini-card-row-label",children:h.create.label})]}),h.items.map(y=>t.jsxs("button",{className:`mini-card-row${y.id===h.value?" active":""}`,onClick:()=>{k(null),Ct()?.onSelect(y.id)},children:[t.jsx("span",{className:"mini-card-row-label",children:y.label}),y.id===h.value&&t.jsx(gs,{size:14})]},y.id))]})]})]}),s&&Ka.map(y=>t.jsx("div",{className:"mini-card-edge","data-edge":y,onPointerDown:Lt,onPointerMove:Lt,onLostPointerCapture:Lt},y))]})};function Xa(){return t.jsx("div",{className:"mac-titlebar"})}const Mt=9e3,lt=5*1024*1024;function At(n){return typeof n=="string"?n.replace(/\bBearer\s+[A-Za-z0-9._~+\/-]+=*/gi,"Bearer [redacted]").replace(/\b(sk-[a-zA-Z0-9_-]{12,})\b/g,"[redacted]").replace(/((?:["']?)(?:api[_-]?key|access[_-]?token|refresh[_-]?token|token|password|secret|authorization|cookie)(?:["']?)\s*[:=]\s*["']?)([^\s,"';&}]+)/gi,"$1[redacted]"):Array.isArray(n)?n.map(At):n&&typeof n=="object"?Object.fromEntries(Object.entries(n).map(([i,s])=>[i,/^(?:token|.*api[_-]?key|access[_-]?token|refresh[_-]?token|password|secret|authorization|cookie|set-cookie)$/i.test(i)?"[redacted]":At(s)])):n}async function Ga(n,i,s){const l=await Js(n,i,{...s,maxBytes:lt});let a=At({...l,feedbackSelection:s});const v=w=>{const m=JSON.stringify(w,null,2);return{json:m,bytes:new TextEncoder().encode(m).byteLength}};let p=v(a);const f=a.messages||[];if(p.bytes>lt&&f.length){const w=h=>({...a,messageCount:h,messagesTruncated:!0,messages:f.slice(f.length-h)});let m=0,k=f.length-1;for(;m<k;){const h=Math.ceil((m+k)/2);v(w(h)).bytes<=lt?m=h:k=h-1}a=w(m),p=v(a)}return{...p,filename:`tangu-feedback-${i?.id.slice(0,8)||"app"}-${new Date().toISOString().slice(0,10)}.json`,missing:Object.entries(l.sources).filter(([,w])=>w!=="included").map(([w])=>w),truncated:!!a.messagesTruncated||!!a.activityLogTruncated}}mt({"feedback.subtitle":{zh:"告诉我们哪里可以做得更好。",en:"Tell us what could work better."},"feedback.kind":{zh:"反馈类型",en:"Feedback type"},"feedback.bug":{zh:"遇到问题",en:"Report a problem"},"feedback.idea":{zh:"功能建议",en:"Suggest a feature"},"feedback.other":{zh:"其他反馈",en:"Something else"},"feedback.description":{zh:"具体发生了什么?",en:"What happened?"},"feedback.bugPlaceholder":{zh:`你当时在做什么?预期的结果是什么,实际又发生了什么?
3
+ 如果可以,请写下重现步骤。`,en:`What were you doing? What did you expect, and what happened instead?
4
+ Include steps to reproduce it if you can.`},"feedback.ideaPlaceholder":{zh:"你想完成什么?哪项改进会对你有帮助?",en:"What are you trying to do? What change would help?"},"feedback.otherPlaceholder":{zh:"分享你的使用体验或想法……",en:"Share your experience or thoughts…"},"feedback.context":{zh:"附带诊断信息",en:"Include diagnostic information"},"feedback.diagnostics":{zh:"应用与运行日志",en:"App and runtime logs"},"feedback.diagnosticsHint":{zh:"版本、界面状态、错误、运行时间线与用量;进程日志可能涉及其他会话。",en:"Version, interface state, errors, run timeline and usage. Process logs may include other sessions."},"feedback.conversation":{zh:"当前会话内容",en:"Current conversation"},"feedback.conversationHint":{zh:"整段对话,包含工具输入与输出;附件超过 5 MB 时保留最新的部分。",en:"The whole conversation, including tool inputs and outputs. If the attachment exceeds 5 MB, the most recent part is kept."},"feedback.activity":{zh:"近期活动记录",en:"Recent activity"},"feedback.activityHint":{zh:"近 2 天内最新 500 行,可能包含文件名与操作路径。",en:"The latest 500 lines from the last 2 days; may contain file names and paths."},"feedback.sessionContext":{zh:"关联会话:{name}",en:"Linked conversation: {name}"},"feedback.withoutSession":{zh:"未关联会话,仍可提交应用问题。",en:"No linked conversation. You can still report an app issue."},"feedback.privacy":{zh:"已过滤常见凭据字段。日志仍可能包含路径或内容片段,请按需选择并预览。",en:"Common credential fields are filtered. Logs may still contain paths or content excerpts; choose what to include and review the preview."},"feedback.preview":{zh:"预览附件",en:"Preview attachment"},"feedback.export":{zh:"导出日志文件",en:"Export log file"},"feedback.backToForm":{zh:"返回反馈",en:"Back to feedback"},"feedback.preparing":{zh:"正在准备诊断信息…",en:"Preparing diagnostics…"},"feedback.sending":{zh:"正在提交…",en:"Sending…"},"feedback.ready":{zh:"诊断附件已就绪 · {size}",en:"Diagnostics ready · {size}"},"feedback.textOnly":{zh:"仅提交反馈文字",en:"Only your feedback text will be sent"},"feedback.partial":{zh:"部分诊断来源不可用:{sources}。将提交已获取的内容。",en:"Some diagnostic sources are unavailable: {sources}. Available information will be sent."},"feedback.source.appVersion":{zh:"应用版本",en:"app version"},"feedback.source.messages":{zh:"会话内容",en:"conversation"},"feedback.source.agentConfig":{zh:"会话设置",en:"session settings"},"feedback.source.backendLogs":{zh:"运行输出",en:"runtime output"},"feedback.source.connection":{zh:"连接信息",en:"connection details"},"feedback.source.backendStatus":{zh:"引擎状态",en:"engine status"},"feedback.source.usage":{zh:"用量",en:"usage"},"feedback.source.timeline":{zh:"运行时间线",en:"run timeline"},"feedback.source.activityLog":{zh:"活动记录",en:"activity"},"feedback.truncated":{zh:"较早的部分记录因达到上限未附带,附件内已标记。",en:"Some older records were left out because of collection limits; this is marked in the attachment."},"feedback.tooLarge":{zh:"附件超过 5 MB,请减少勾选的内容后再提交。",en:"The attachment exceeds 5 MB. Deselect some information before sending."},"feedback.prepareFailed":{zh:"诊断信息准备失败。请重试,或取消勾选后仅提交文字。",en:"Could not prepare diagnostics. Retry, or deselect the options to send text only."},"feedback.refresh":{zh:"重新收集",en:"Collect again"},"feedback.successTitle":{zh:"反馈已收到",en:"Feedback received"},"feedback.successHint":{zh:"感谢你帮助我们改进 Tangu。你可以在账户中心查看回复。",en:"Thanks for helping improve Tangu. You can view replies in your account center."},"feedback.ticket":{zh:"反馈编号:{id}",en:"Reference: {id}"},"feedback.viewFeedback":{zh:"查看我的反馈",en:"View my feedback"},"feedback.done":{zh:"完成",en:"Done"},"feedback.limit":{zh:"反馈内容不能超过 {max} 字。",en:"Feedback cannot exceed {max} characters."},"feedback.retry":{zh:"重试提交",en:"Try again"},"feedback.diagnosePrompt":{zh:`我在使用 Tangu 时遇到一个问题,想请你帮我诊断:
5
+
6
+ {description}
7
+
8
+ 请结合当前会话的上下文分析可能的原因,并给出排查步骤。`,en:`I ran into a problem while using Tangu and would like your help diagnosing it:
9
+
10
+ {description}
11
+
12
+ Using the context of this session, analyze the likely causes and suggest troubleshooting steps.`}});function xs(n){N.getState().setPendingDraft(n),W.getState().openView("chat",{followActive:!0,reuseKey:"primary"},"main")}const Ss=({cfg:n,activeSession:i,onClose:s,surface:l="modal"})=>{const{t:a}=be(),[v]=c.useState(()=>({cfg:n,session:i})),p=N(S=>S.feedbackDraft),[f,w]=c.useState("bug"),[m,k]=c.useState(!0),[h,b]=c.useState(!1),[g,T]=c.useState(!1),[E,j]=c.useState(0),[z,I]=c.useState(null),[F,K]=c.useState(!1),[y,P]=c.useState(!1),[M,V]=c.useState(null),[_,$]=c.useState(""),G=c.useRef(null),X=c.useRef(!1),Te=c.useRef(s);Te.current=s;const D=m||h||g,le=`${m}:${h}:${g}:${E}`,Ie=z?.key===le?z:null,re=D&&!Ie,R=D?Ie?.report:void 0,de=!!R&&R.bytes>lt,se=p.trim().length>Mt,we=!!p.trim()&&!se&&!y&&!M&&!re&&!de&&(!D||!!R),Q=()=>{X.current||Te.current()};c.useEffect(()=>{if(!D)return;let S=!0;return Ga(v.cfg,v.session,{diagnostics:m,conversation:h,activity:g}).then(B=>{S&&I({key:le,report:B})}).catch(()=>{S&&I({key:le,failed:!0})}),()=>{S=!1}},[v,m,h,g,E,le,D]),c.useEffect(()=>{const S=document.activeElement,B=requestAnimationFrame(()=>G.current?.querySelector("textarea")?.focus()),oe=Z=>{if(Z.key==="Escape"&&(Z.preventDefault(),Z.stopImmediatePropagation(),X.current||Te.current()),Z.key==="Tab"){const ve=Array.from(G.current?.querySelectorAll('button:not(:disabled), textarea:not(:disabled), input:not(:disabled), [tabindex="0"]')||[]).filter(Pe=>Pe.getClientRects().length>0),ue=ve[0],ze=ve[ve.length-1];if(!ue){Z.preventDefault(),G.current?.focus();return}Z.shiftKey&&(document.activeElement===ue||!G.current?.contains(document.activeElement))?(Z.preventDefault(),ze.focus()):!Z.shiftKey&&(document.activeElement===ze||!G.current?.contains(document.activeElement))&&(Z.preventDefault(),ue.focus())}};return document.addEventListener("keydown",oe,!0),()=>{cancelAnimationFrame(B),document.removeEventListener("keydown",oe,!0),S?.focus()}},[]);const Le=async()=>{if(!(!we||X.current)){if(!window.tangu?.submitFeedback){$(a("feedback.errUnavailable"));return}X.current=!0,P(!0),$("");try{const S=await window.tangu.submitFeedback({description:`[Tangu · ${a(`feedback.${f}`)}]
13
+
14
+ ${p.trim()}`,...R?{sessionLogJson:R.json,sessionLogName:R.filename}:{}});S.ok?(V(S),N.setState({feedbackDraft:""})):$(S.error==="attachment-too-large"?a("feedback.tooLarge"):a("feedback.errFail",{err:S.error==="not-logged-in"?a("feedback.errNotLoggedIn"):S.error||"Unknown error"}))}catch(S){$(a("feedback.errFail",{err:String(S?.message||S)}))}finally{X.current=!1,P(!1)}}},Y=()=>{if(!p.trim()||y)return;const S=a("feedback.diagnosePrompt",{description:p.trim()});window.tangu?.requestMainAction?window.tangu.requestMainAction("chat-draft",S):xs(S),Q()},Ge=R?`${(R.bytes/1024).toFixed(1)} KB`:"",Me=()=>{if(!R)return;const S=URL.createObjectURL(new Blob([R.json],{type:"application/json;charset=utf-8"})),B=document.createElement("a");B.href=S,B.download=R.filename,B.click(),setTimeout(()=>URL.revokeObjectURL(S),1e4)};return t.jsx("div",{className:l==="panel"?"feedback-panel-surface":"memv-modal feedback-overlay",onClick:S=>{l==="modal"&&S.target===S.currentTarget&&Q()},children:t.jsxs("div",{ref:G,className:"modal feedback-modal",role:"dialog","aria-modal":"true","aria-labelledby":"feedback-title",tabIndex:-1,onKeyDown:S=>{(S.metaKey||S.ctrlKey)&&S.key==="Enter"&&!S.nativeEvent.isComposing&&(S.preventDefault(),Le())},children:[t.jsxs("div",{className:"modal-head feedback-head",children:[t.jsxs("div",{className:"feedback-heading",children:[t.jsx(Pn,{size:19}),t.jsxs("div",{children:[t.jsx("h2",{id:"feedback-title",children:a("feedback.title")}),t.jsx("p",{children:a("feedback.subtitle")})]})]}),t.jsx("button",{className:"icon-btn",onClick:Q,disabled:y,"aria-label":a("settings.btn.cancel"),children:t.jsx(Vt,{size:18})})]}),M?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"modal-body feedback-success",role:"status",children:[t.jsx("span",{className:"feedback-success-icon",children:t.jsx(gs,{size:28})}),t.jsx("h3",{children:a("feedback.successTitle")}),t.jsx("p",{children:a("feedback.successHint")}),M.id&&t.jsx("code",{children:a("feedback.ticket",{id:M.id})}),M.attachmentSkipped&&t.jsx("p",{className:"feedback-warning",children:a("feedback.okNoLog")}),_&&t.jsx("p",{className:"feedback-warning",role:"alert",children:_})]}),t.jsxs("div",{className:"feedback-footer",children:[window.tangu?.openAccountCenter&&t.jsx("button",{className:"btn ghost",onClick:()=>{$(""),window.tangu.openAccountCenter("feedback").catch(()=>$(a("feedback.errUnavailable")))},children:a("feedback.viewFeedback")}),t.jsx("span",{className:"grow"}),t.jsx("button",{autoFocus:!0,className:"btn primary",onClick:Q,children:a("feedback.done")})]})]}):t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"modal-body feedback-body",children:[F?t.jsxs(t.Fragment,{children:[t.jsxs("button",{className:"btn ghost sm feedback-back",onClick:()=>K(!1),children:[t.jsx(Xi,{size:14}),a("feedback.backToForm")]}),t.jsxs("div",{className:"feedback-file",children:[t.jsx(Pt,{size:15}),t.jsx("span",{children:R?.filename}),t.jsx("span",{children:Ge})]}),t.jsx("pre",{className:"feedback-preview",tabIndex:0,children:R?.json})]}):t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"feedback-kinds",role:"group","aria-label":a("feedback.kind"),children:[{id:"bug",Icon:Gi},{id:"idea",Icon:ts},{id:"other",Icon:Pn}].map(({id:S,Icon:B})=>t.jsxs("button",{className:"btn ghost","aria-pressed":f===S,disabled:y,onClick:()=>w(S),children:[t.jsx(B,{size:15}),a(`feedback.${S}`)]},S))}),t.jsxs("div",{className:"feedback-description",children:[t.jsx("label",{htmlFor:"feedback-description",children:a(f==="bug"?"feedback.description":"feedback.label")}),t.jsx("textarea",{id:"feedback-description",value:p,onChange:S=>{N.setState({feedbackDraft:S.target.value}),$("")},placeholder:a(`feedback.${f}Placeholder`),disabled:y,"aria-invalid":se,"aria-describedby":"feedback-count"}),t.jsxs("span",{id:"feedback-count",className:se?"feedback-warning":"feedback-count",children:[p.trim().length.toLocaleString()," / ",Mt.toLocaleString()]})]}),t.jsxs("section",{className:"feedback-context","aria-labelledby":"feedback-context-title",children:[t.jsxs("div",{className:"feedback-section-heading",children:[t.jsx("h3",{id:"feedback-context-title",children:a("feedback.context")}),t.jsx("code",{children:"/feedback"})]}),t.jsx("p",{className:"feedback-session",children:v.session?a("feedback.sessionContext",{name:v.session.title||v.session.id.slice(0,8)}):a("feedback.withoutSession")}),[{id:"diagnostics",checked:m,change:k,unavailable:!1},{id:"conversation",checked:h,change:b,unavailable:!v.session},{id:"activity",checked:g,change:T,unavailable:!window.tangu?.exportActivity}].map(S=>t.jsxs("label",{className:"feedback-option","data-disabled":S.unavailable||void 0,children:[t.jsx("input",{type:"checkbox",checked:S.checked,onChange:B=>S.change(B.target.checked),disabled:y||S.unavailable}),t.jsxs("span",{children:[t.jsx("strong",{children:a(`feedback.${S.id}`)}),t.jsx("small",{children:a(`feedback.${S.id}Hint`)})]})]},S.id))]}),t.jsxs("div",{className:"feedback-report-status",role:"status",children:[t.jsx("span",{children:re?t.jsxs(t.Fragment,{children:[t.jsx(Dn,{size:13,className:"spin"}),a("feedback.preparing")]}):R?t.jsxs(t.Fragment,{children:[t.jsx(Pt,{size:13}),a("feedback.ready",{size:Ge})]}):a(D?"feedback.prepareFailed":"feedback.textOnly")}),t.jsxs("div",{children:[R&&t.jsx("button",{className:"btn ghost sm",onClick:()=>K(!0),disabled:y,children:a("feedback.preview")}),R&&t.jsxs("button",{className:"btn ghost sm",onClick:Me,disabled:y,children:[t.jsx(Ro,{size:13}),a("feedback.export")]}),D&&t.jsx("button",{className:"icon-btn",onClick:()=>j(S=>S+1),disabled:y||re,"aria-label":a("feedback.refresh"),title:a("feedback.refresh"),children:t.jsx(Ft,{size:13})})]})]}),!!R?.missing.length&&t.jsx("p",{className:"feedback-warning",children:a("feedback.partial",{sources:R.missing.map(S=>a(`feedback.source.${S}`)).join(", ")})}),R?.truncated&&t.jsx("p",{className:"feedback-note",children:a("feedback.truncated")}),D&&t.jsx("p",{className:"feedback-note",children:a("feedback.privacy")})]}),de&&t.jsx("p",{className:"feedback-warning",role:"alert",children:a("feedback.tooLarge")}),se&&t.jsx("p",{className:"feedback-warning",role:"alert",children:a("feedback.limit",{max:Mt})}),_&&t.jsx("p",{className:"feedback-warning",role:"alert",children:_})]}),t.jsxs("div",{className:"feedback-footer",children:[t.jsxs("button",{className:"btn ghost feedback-diagnose",onClick:Y,disabled:y||!p.trim(),title:a("feedback.diagnoseViaChatHint"),children:[t.jsx(Zi,{size:15}),a("feedback.diagnoseViaChat")]}),t.jsx("span",{className:"grow"}),t.jsxs("button",{className:"btn primary",onClick:()=>{Le()},disabled:!we,children:[y&&t.jsx(Dn,{size:14,className:"spin"}),a(y?"feedback.sending":_?"feedback.retry":"feedback.submit")]})]})]})]})})};mt({"syncSetup.storageEnforced":{zh:"我的云盘 {used} / {max} · 统一额度已启用,超额时暂停增长写入",en:"My drive {used} / {max} · unified quota active; growing writes pause over quota"},"syncSetup.storage":{zh:"我的云盘 {used} / {max} · 提醒阶段,不新增同步拦截",en:"My drive {used} / {max} · notice phase, no new sync restrictions"},"syncSetup.storageUnknown":{zh:"我的云盘统一用量暂不可用,请在蓬洲云查看容量状态",en:"Unified drive usage is unavailable. Check storage status in Penzor Cloud"},"syncSetup.title":{zh:"把这台电脑同步到蓬洲云",en:"Sync this computer to Penzor Cloud"},"syncSetup.lead":{zh:"已登录「{name}」。勾着的会和你的其他设备保持一致,以后随时可以在蓬洲云 › 同步里关。",en:"Signed in as {name}. Checked items stay in sync with your other devices. You can turn them off anytime in Penzor Cloud › Sync."},"syncSetup.notes":{zh:"智库「{name}」",en:'Notes vault "{name}"'},"syncSetup.notesAny":{zh:"这台电脑的智库",en:"Notes vault on this computer"},"syncSetup.notesSize":{zh:"{size} · 占原设备同步限制 {max} 的 {pct}%",en:"{size} · {pct}% of the existing {max} device sync limit"},"syncSetup.notesOver":{zh:"{size},超过设备同步的 {max}:放不下的先留在这台电脑,不会删除",en:"{size}, more than your {max} device sync storage. What doesn't fit stays on this computer. Nothing is deleted."},"syncSetup.notesHint":{zh:"整个本机智库,和你的其他电脑保持一致",en:"Your whole local vault, kept the same on your other computers"},"syncSetup.agents":{zh:"Agents 与记忆",en:"Agents & memory"},"syncSetup.agentsHint":{zh:"Agents 的记忆、日志、技能和协作说明",en:"Your agents' memory, logs, skills and collaboration notes"},"syncSetup.plugins":{zh:"插件数据",en:"Plugin data"},"syncSetup.pluginsHint":{zh:"插件自己存的设置和数据",en:"Settings and data your plugins save"},"syncSetup.footHint":{zh:"另一台电脑登录同一账号,就会自动出现",en:"Sign in on another computer and it appears there too"},"syncSetup.later":{zh:"稍后",en:"Later"},"syncSetup.start":{zh:"开始同步",en:"Start syncing"},"syncSetup.progress":{zh:"正在同步到蓬洲云 · 智库 {done} / {total} 个文件",en:"Syncing to Penzor Cloud · notes {done} / {total} files"},"syncSetup.view":{zh:"查看",en:"View"},"syncSetup.decide":{zh:"云端已经有一份智库,去蓬洲云 › 同步里选怎么合并。",en:"Penzor Cloud already has a notes vault. Choose how to combine them in Penzor Cloud › Sync."},"syncSetup.failed":{zh:"有一项没开成:{error}",en:"One item couldn't be turned on: {error}"}});const Xn="forsion-penzor",zt=1024**3,je=n=>n>=zt?`${(n/zt).toFixed(n>=10*zt?0:1)} GB`:n>=1024**2?`${Math.round(n/1024**2)} MB`:`${Math.max(1,Math.round(n/1024))} KB`,Za=()=>c.useSyncExternalStore(Yo,cs);function Qa(){q.getState().spaces.some(n=>n.id===Xn)&&Ke(Xn)}function Ja(){const{t:n}=be(),[i,s]=c.useState("");c.useEffect(()=>Oo(s),[]);const l=Za(),[a,v]=c.useState(!1),[p,f]=c.useState(!1),[w,m]=c.useState({notes:!0,agents:!0,plugins:!0}),[k,h]=c.useState(!1),b=Ce()==="main",g=Ao("syncSetup",a,Fo.syncSetup);c.useEffect(()=>{b&&window.remoteSync&&Bo()},[b]);let T=!1;try{T=localStorage.getItem(Bt)==="1"}catch{}const E=b&&_o(l,T),j=E&&!a,z=b&&!!l&&l.signedIn&&!l.decided&&T&&l.notes.available&&!j&&!a;c.useEffect(()=>{z&&Rn()},[z]),c.useEffect(()=>{if(!j)return;const M=setTimeout(()=>v(!0),2500);return()=>clearTimeout(M)},[j]),c.useEffect(()=>{a&&!E&&!p&&v(!1)},[a,E,p]);const I=l?.notes.progress;if(c.useEffect(()=>{if(k&&l&&!l.notes.running&&l.notes.last){const M=setTimeout(()=>h(!1),1500);return()=>clearTimeout(M)}},[k,l]),!b||!l)return null;const F=async()=>{f(!0);const M=await Uo(w);f(!1),v(!1);const V=M.find($=>!$.ok);V&&Wn({text:n("syncSetup.failed",{error:V.error??""}),level:"warning"}),cs()?.notes.pending?(Wn({text:n("syncSetup.decide"),level:"info"}),Qa()):w.notes&&h(!0)},K=()=>{Rn(),v(!1)},y=(()=>{const{localBytes:M,maxBytes:V}=l.notes;return M==null||!V?n("syncSetup.notesHint"):M>V?n("syncSetup.notesOver",{size:je(M),max:je(V)}):n("syncSetup.notesSize",{size:je(M),max:je(V),pct:String(Math.max(1,Math.round(M/V*100)))})})(),P=[["notes",t.jsx($o,{size:15}),l.notes.rootName?n("syncSetup.notes",{name:l.notes.rootName}):n("syncSetup.notesAny"),y],["agents",t.jsx(us,{size:15}),n("syncSetup.agents"),n("syncSetup.agentsHint")],["plugins",t.jsx(Vo,{size:15}),n("syncSetup.plugins"),n("syncSetup.pluginsHint")]];return t.jsxs(t.Fragment,{children:[g&&t.jsx("div",{className:"u-backdrop sync-setup-backdrop",children:t.jsxs("div",{className:"modal modal-sm sync-setup",role:"dialog","aria-modal":"true","aria-label":n("syncSetup.title"),children:[t.jsxs("div",{className:"modal-head",children:[t.jsx(Ho,{size:16}),t.jsx("span",{className:"sync-setup-title",children:n("syncSetup.title")})]}),t.jsxs("div",{className:"sync-setup-body",children:[t.jsx("p",{className:"sync-setup-lead",children:n("syncSetup.lead",{name:i})}),t.jsx("p",{className:"sync-setup-hint",children:l.storage?.complete&&l.storage.usedBytes!=null?n(l.storage.enforcement?"syncSetup.storageEnforced":"syncSetup.storage",{used:je(l.storage.usedBytes),max:je(l.storage.limitBytes)}):n("syncSetup.storageUnknown")}),P.map(([M,V,_,$])=>t.jsxs("label",{className:"sync-setup-row",children:[t.jsx("input",{type:"checkbox",checked:w[M],disabled:p,onChange:G=>m({...w,[M]:G.target.checked})}),t.jsx("span",{className:"sync-setup-tile",children:V}),t.jsxs("span",{className:"sync-setup-copy",children:[t.jsx("b",{children:_}),t.jsx("small",{children:$})]})]},M))]}),t.jsxs("div",{className:"sync-setup-foot",children:[t.jsx("span",{className:"sync-setup-hint",children:n("syncSetup.footHint")}),t.jsxs("span",{className:"sync-setup-acts",children:[t.jsx("button",{className:"btn",disabled:p,onClick:K,children:n("syncSetup.later")}),t.jsx("button",{className:"btn primary",disabled:p,onClick:()=>{F()},children:n("syncSetup.start")})]})]})]})}),k&&l.notes.running&&I&&I.total>0&&t.jsxs("div",{className:"sync-setup-progress",role:"status",children:[t.jsx(Ft,{size:14,className:"spin"}),t.jsx("span",{children:n("syncSetup.progress",{done:String(I.done),total:String(I.total)})}),t.jsx("span",{className:"sync-setup-bar",children:t.jsx("i",{style:{width:`${Math.round(I.done/I.total*100)}%`}})}),t.jsx("button",{type:"button",className:"sync-setup-link",onClick:Wo,children:n("syncSetup.view")})]})]})}function Gn(n){return Array.from(n.dataTransfer?.types??[]).includes("Files")}function Xe(){const n=s=>{!Gn(s)||s.defaultPrevented||(s.preventDefault(),s.dataTransfer&&(s.dataTransfer.dropEffect="none"))},i=s=>{Gn(s)&&!s.defaultPrevented&&s.preventDefault()};return document.addEventListener("dragover",n),document.addEventListener("drop",i),()=>{document.removeEventListener("dragover",n),document.removeEventListener("drop",i)}}function js({target:n,onUnavailable:i}){const[,s]=c.useReducer(m=>m+1,0),[l,a]=c.useState(()=>({...n.params??{}})),v=c.useRef(l);v.current=l;const p=c.useRef(!1);c.useEffect(()=>Ne(s),[]),c.useEffect(()=>a({...n.params??{}}),[n]);const f=ge(n.type);f&&(p.current=!0),c.useEffect(()=>{p.current&&!f&&i?.()},[f,i]);const w=c.useMemo(()=>({id:`floating:${n.type}`,type:n.type,loc:"main",get params(){return v.current},setTitle:m=>{document.title=m},setParams:m=>a({...m}),close:()=>i?.()}),[n.type,i]);return f?t.jsx("div",{className:"floating-plugin-view","data-view":n.type,children:t.jsx(hs,{children:t.jsx(c.Suspense,{fallback:null,children:f.factory({leaf:w,params:l})})})}):t.jsx("div",{className:"floating-panel-empty",children:"Loading panel…"})}const er=[[390,"iPhone"],[414,"Max"],[768,"iPad"]];function tr({children:n}){const[i,s]=c.useState(390);return fs!=="mobile"?t.jsx(t.Fragment,{children:n}):window.innerWidth<=820?t.jsx(t.Fragment,{children:n}):t.jsxs("div",{className:"sc-frame",children:[t.jsx("div",{className:"sc-bar",children:er.map(([l,a])=>t.jsxs("button",{className:`sc-size${i===l?" on":""}`,onClick:()=>s(l),children:[a," · ",l]},l))}),t.jsx("div",{className:"sc-device",style:{width:i},children:n})]})}function nr(){eo(),c.useEffect(()=>Xe(),[]),c.useEffect(()=>{to(),no()},[]),c.useEffect(()=>window.tangu?.onMainAction?.((m,k)=>{m==="onboarding"&&N.getState().setOnboarding(!0),m==="dev-commands"&&so(),m==="test-notification"&&oo(),m==="reset-layout"&&W.getState().resetLayout({undoable:!0}),m==="achievement-toast"&&Qi(),m==="space-removed"&&k&&fa(k),m==="chat-draft"&&k&&xs(k),m==="chat-quote"&&k&&ya(k),m==="agents-changed"&&(N.getState().refreshAgents(),window.dispatchEvent(new Event("forsion:agents-changed"))),m==="skills-changed"&&(_t(Wt()).then(h=>N.setState({skillsList:h})).catch(()=>{}),window.dispatchEvent(new Event("forsion:skills-changed"))),m==="open-agents"&&zn(N.getState().defaultAgentSlug||""),m==="open-agent"&&k&&/^[a-z0-9][a-z0-9-]{0,63}$/.test(k)&&zn(k),m==="unit-route"&&k&&qo(k),m==="open-space"&&k&&q.getState().spaces.some(h=>h.id===k)&&Ke(k)}),[]);const n=pt(),i=Ko();io();const s=N(ls(m=>({sessions:m.sessions,archivedSessions:m.archivedSessions,activeId:m.activeId,settingsOpen:m.settingsOpen,settingsTab:m.settingsTab,settingsSkillKey:m.settingsSkillKey,settingsNonce:m.settingsNonce,onboarding:m.onboarding,feedbackOpen:m.feedbackOpen,marketOpen:m.marketOpen,marketTarget:m.marketTarget,closeMarket:m.closeMarket,achievementsOpen:m.achievementsOpen,cfg:m.cfg,tr:m.tr,openSettings:m.openSettings,closeSettings:m.closeSettings,patchConfig:m.patchConfig,connect:m.connect,setOnboarding:m.setOnboarding,closeFeedback:m.closeFeedback}))),l=s.sessions.find(m=>m.id===s.activeId)||s.archivedSessions.find(m=>m.id===s.activeId)||null,a=c.useSyncExternalStore(Xo,On,On),[v,p]=c.useState(!1),f=c.useRef(s.onboarding);c.useEffect(()=>{const m=f.current;if(f.current=s.onboarding,m&&!s.onboarding){p(!0);const k=setTimeout(()=>p(!1),650);return()=>clearTimeout(k)}},[s.onboarding]),c.useEffect(()=>Go(!!s.onboarding),[s.onboarding]);const w=s.settingsOpen||s.marketOpen||s.achievementsOpen||s.feedbackOpen||!!a||s.onboarding;return t.jsxs(tr,{children:[t.jsx("div",{className:`shell-host${v?" main-enter":""}`,style:s.onboarding?{visibility:"hidden"}:void 0,children:t.jsx(ks,{dark:i.mode==="dark",soft:!!ds(i.lang)?.manifest.panelGap,buildDefault:ns,header:t.jsx(Xa,{}),footer:t.jsx(ao,{})})}),Zo()&&t.jsx(ss,{}),t.jsx(Qo,{}),t.jsx(Jo,{}),t.jsx(ws,{}),t.jsx(wa,{}),t.jsx(Se,{children:s.settingsOpen&&t.jsx(He,{title:s.tr("settings.title"),onClose:()=>s.closeSettings(),children:t.jsx(os,{open:!0,initialTab:s.settingsTab??void 0,initialSkillKey:s.settingsSkillKey??void 0,cfg:s.cfg,activeSession:l,themeLang:n.lang,themeSkin:n.skin,themeMode:n.mode,themeModePref:n.modePref,flatOn:n.flat,glassOn:n.glass,themeSeed:n.seed,onClose:()=>s.closeSettings(),onConfigChange:s.patchConfig,onThemeChange:(m,k,h)=>n.setTheme(m,k,n.bg,h),onFlatChange:n.setFlat,onGlassChange:m=>n.setGlass(m),onSeedChange:m=>n.setSeedValue(m),onReloadThemes:()=>n.reloadThemes(),onReconnect:m=>{s.connect({...s.cfg,...m||{}})},onRelaunchOnboarding:()=>{s.closeSettings();try{localStorage.removeItem(Bt)}catch{}s.setOnboarding(!0)}},s.settingsNonce)},"settings")}),t.jsx(Se,{children:s.onboarding&&t.jsx(ei.div,{style:{position:"fixed",inset:0,zIndex:60,background:"var(--bg)"},initial:{opacity:0},animate:{opacity:1},exit:{opacity:0,scale:1.06},transition:{duration:.45,ease:[.2,.8,.2,1]},children:t.jsx(ti,{themeLang:n.lang,themeSkin:n.skin,themeMode:n.mode,themeModePref:n.modePref,themeSeed:n.seed,onThemeChange:(m,k,h)=>n.setTheme(m,k,n.bg,h),onSeedChange:m=>n.setSeedValue(m),onReconnect:()=>{window.tangu?.getConfig().then(m=>{const k={backendUrl:m.backendUrl,token:m.token,modelId:m.modelId};N.setState({cfg:k,desktopMode:"managed"}),N.getState().connect(k)})},onFinish:()=>{s.setOnboarding(!1),window.tangu?.getConfig().then(m=>{const k={backendUrl:m.backendUrl,token:m.token,modelId:m.modelId};N.setState({cfg:k,homeDir:m.homeDir,defaultWsDir:m.defaultWorkspaceDir||""}),N.getState().connect(k)})}})},"onboarding")}),t.jsx(Se,{children:s.marketOpen&&t.jsx(He,{title:s.tr("market.title"),onClose:()=>s.closeMarket(),children:t.jsx(is,{initialQuery:s.marketTarget?.q,initialItemId:s.marketTarget?.itemId,initialDetailTab:s.marketTarget?.detailTab,onClose:()=>s.closeMarket()},s.marketTarget?.nonce)},"market")}),t.jsx(Se,{children:s.achievementsOpen&&t.jsx(He,{title:s.tr("achievements.title"),onClose:()=>N.getState().closeAchievements(),children:t.jsx(as,{onClose:()=>N.getState().closeAchievements()})},"achievements")}),t.jsx(Se,{children:s.feedbackOpen&&t.jsx(He,{compact:!0,title:s.tr("feedback.title"),onClose:()=>s.closeFeedback(),children:t.jsx(Ss,{surface:"panel",cfg:s.cfg,activeSession:l,onClose:()=>s.closeFeedback()})},"feedback")}),t.jsx(ro,{}),t.jsx(co,{}),t.jsx(lo,{}),t.jsx(Ja,{}),t.jsx(Se,{children:a?.view&&t.jsx(He,{title:a.title,onClose:An,children:t.jsx(js,{target:a.view,onUnavailable:An})},a.id)}),!w&&t.jsx(rs,{}),!w&&t.jsx(uo,{onOpen:()=>N.getState().openAchievements()}),!s.onboarding&&t.jsx(mo,{})]})}function sr(){W.getState().openView("home",{},"main")}mt({"spaceWindow.stuck":{zh:"这个 Space 还没准备好。它所属的插件可能还在加载,或已被停用、卸载。准备好后这里会自动打开,也可以直接关掉这扇窗。",en:"This Space is not ready yet. Its plugin may still be loading, or may have been disabled or removed. It will open here once it is ready, or you can close this window."}});const Zn=6e3;function or(){const[n,i]=c.useState(Hn?"wait":"plain");return c.useEffect(()=>{const s=Hn;if(!s)return;const l=Date.now();let a=null,v=!1;const p=()=>{const k=q.getState().spaces.find(b=>b.id===s);if(a){k!==a&&!v&&(v=!0,location.reload());return}if(!k||!Ji()&&Date.now()-l<Zn)return;a=k;const h=W.getState();h.setSidebarDefaults(k.sidebarDefaults),h.setSideProfile(k.id,k.resizableSides??{},k.sideDefaultScale,k.bottomSpan),h.setPinned(k.pinned),document.title=Ee(k.name),i("ready")};p();const f=q.subscribe(p),w=Ne(p),m=window.setTimeout(()=>{p(),a||i("stuck")},Zn+50);return()=>{f(),w(),window.clearTimeout(m)}},[]),n}function ir(){const{t:n}=be(),i=pt(),s=or();c.useEffect(()=>{N.getState().setTr((a,v)=>n(a,v))},[n]),c.useEffect(()=>{N.getState().boot()},[]),c.useEffect(()=>Xe(),[]),c.useEffect(()=>window.tangu?.onMainAction?.(a=>{a==="agents-changed"&&(N.getState().refreshAgents(),window.dispatchEvent(new Event("forsion:agents-changed"))),a==="skills-changed"&&(_t(Wt()).then(v=>N.setState({skillsList:v})).catch(()=>{}),window.dispatchEvent(new Event("forsion:skills-changed")))}),[]),c.useEffect(()=>{window.tangu?.detachedReady?.(ni()).then(a=>{if(!a?.length)return;const v=W.getState();for(const p of a)v.openView(p.type,p.params??{},"main")})},[]);const l=(()=>{try{return window.tangu?.platform==="darwin"}catch{return!1}})();return s==="wait"||s==="stuck"?t.jsxs("div",{className:"shell-host",style:{display:"flex",flexDirection:"column"},children:[l&&t.jsx("div",{style:{height:38,flex:"0 0 auto",WebkitAppRegion:"drag"}}),s==="stuck"&&t.jsx("div",{className:"space-window-wait",role:"status",style:{flex:1,display:"grid",placeItems:"center",padding:32,textAlign:"center",color:"var(--text-muted)",fontSize:"var(--ui-font-body, 13px)",lineHeight:1.6},children:t.jsx("span",{style:{maxWidth:420},children:n("spaceWindow.stuck")})})]}):t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"shell-host",children:t.jsx(ks,{noRibbon:!0,dark:i.mode==="dark",soft:!!ds(i.lang)?.manifest.panelGap,buildDefault:s==="ready"?ns:sr})}),window.amadeus&&t.jsx(ss,{}),t.jsx(ws,{})]})}mt({"dock.pickTitle":{zh:"贴到哪个窗口旁边",en:"Dock beside a window"},"dock.pickHint":{zh:"选一个窗口,对话面板会贴在它旁边,一起移动和缩放。",en:"Pick a window. The chat panel docks beside it and moves and resizes with it."},"dock.loading":{zh:"正在查找窗口…",en:"Looking for windows…"},"dock.empty":{zh:"屏幕上没有可以贴靠的窗口。",en:"No windows on screen to dock beside."},"dock.refresh":{zh:"刷新",en:"Refresh"},"dock.close":{zh:"关闭",en:"Close"},"dock.selectedIn":{zh:"在 {app} 里选中的:",en:"Selected in {app}:"},"dock.err.helper_not_installed":{zh:"还没装好「电脑操作」的本机 helper。让 Agent 用一次电脑操作,它会自动装好。",en:"The Computer Use helper is not installed yet. Ask the agent to use Computer Use once and it installs itself."},"dock.err.helper_not_running":{zh:"「电脑操作」的本机 helper 没有启动。",en:"The Computer Use helper is not running."},"dock.err.unsupported_helper":{zh:"本机的「电脑操作」helper 是旧版,不支持侧边拼接。让 Agent 用一次电脑操作,它会自动更新。",en:"The Computer Use helper is out of date and cannot dock. Ask the agent to use Computer Use once and it updates itself."},"dock.err.window_gone":{zh:"这个窗口已经关了。",en:"That window has been closed."},"dock.err.generic":{zh:"没能贴过去({code})。",en:"Could not dock ({code})."}});const ar=new Set(["helper_not_installed","helper_not_running","unsupported_helper","window_gone"]);function rr(n,i,s){return n?.text?n.text:n?.items?.length?[s("dock.selectedIn",{app:i}),...n.items.map(l=>`- ${l}`)].join(`
15
+ `):""}function cr(){const{t:n}=be(),[i,s]=c.useState(!1),[l,a]=c.useState(null);c.useEffect(()=>{N.getState().setTr((p,f)=>n(p,f))},[n]),c.useEffect(()=>{N.getState().boot().finally(()=>{N.setState({sessionMode:"work"}),s(!0)});const p=window.tangu?.onAppDockState?.(f=>a(f.target));return window.tangu?.appDockReady?.().then(f=>a(f.target)),()=>p?.()},[]),c.useEffect(()=>{window.amadeus&&$t()},[]),c.useEffect(()=>Xe(),[]),c.useEffect(()=>{if(!i||!l)return;const p={type:"chat",params:{miniSurface:!0,appRef:l}};ur({view:p,mainView:{type:"chat"}}),N.getState().setActiveId(null),W.getState().openView("chat",p.params,"main")},[i,l?.pid,l?.windowId]);const v=c.useRef(n);return v.current=n,c.useEffect(()=>{if(!l)return;let p="";const f=async()=>{const w=rr(await window.tangu?.appDockSelection?.(),l.app,v.current);!w||w===p||(p=w,N.getState().setPendingChatQuote("chat",w))};return window.addEventListener("focus",f),()=>window.removeEventListener("focus",f)},[l?.pid,l?.windowId]),l?t.jsx(ys,{buildDefault:()=>{},direct:{title:l.app,view:{type:"chat",params:{miniSurface:!0,appRef:l}},mainView:{type:"chat"}}}):t.jsx(lr,{})}function lr(){const{t:n}=be(),[i,s]=c.useState(null),[l,a]=c.useState(""),v=async()=>{s(null),a("");const w=await window.tangu?.appDockCandidates?.();s(w?.windows??[]),w?.error&&a(w.error)};c.useEffect(()=>{v()},[]);const p=async w=>{a("");const m=await window.tangu?.appDockAttach?.({pid:w.pid,windowId:w.windowId,app:w.app,bundleId:w.bundleId,title:w.title});m&&!m.ok&&m.error!=="superseded"&&a(m.error||"unavailable")},f=l?ar.has(l)?n(`dock.err.${l}`):n("dock.err.generic",{code:l}):"";return t.jsxs("div",{className:"mini-card-shell","data-space":"dock",children:[t.jsxs("header",{className:"mini-card-chrome",children:[t.jsx("div",{className:"mini-card-drag-title dock-picker-title",children:n("dock.pickTitle")}),t.jsx("button",{className:"mini-card-action","aria-label":n("dock.refresh"),title:n("dock.refresh"),onClick:()=>{v()},children:t.jsx(Ft,{size:15})}),t.jsx("button",{className:"mini-card-action mini-card-close","aria-label":n("dock.close"),onClick:()=>window.tangu?.closeSelf?.(),children:t.jsx(Vt,{size:15})})]}),t.jsxs("main",{className:"mini-card-main dock-picker",children:[t.jsx("p",{className:"dock-picker-hint",children:n("dock.pickHint")}),f&&t.jsx("p",{className:"dock-picker-error",role:"alert",children:f}),i===null?t.jsx("div",{className:"mini-panel-empty",children:n("dock.loading")}):i.length===0?!f&&t.jsx("div",{className:"mini-panel-empty",children:n("dock.empty")}):t.jsx("div",{className:"dock-picker-list",children:i.map(w=>t.jsxs("button",{className:"mini-card-row dock-picker-row","data-window-id":w.windowId,onClick:()=>{p(w)},children:[t.jsx(si,{size:15}),t.jsxs("span",{className:"mini-card-row-label",children:[t.jsx("span",{className:"dock-picker-app",children:w.app}),w.title&&t.jsx("span",{className:"dock-picker-window",children:w.title})]})]},`${w.pid}:${w.windowId}`))})]})]})}function dr(){let n,i=0;const s=window.tangu?.onMiniDockMotion?.(l=>{const a=document.querySelector(".mini-card-shell");if(!a)return;i=l.id;const v=getComputedStyle(a).transform;n?.cancel();const p=l.x||l.y?`translate3d(calc(${l.x}px / var(--uiz, 1)), calc(${l.y}px / var(--uiz, 1)), 0)`:"none";a.style.transform=p;const f=()=>{i===l.id&&(n?.cancel(),n=void 0,p==="none"&&a.style.removeProperty("transform"),window.tangu?.miniDockMotionDone?.(l.id))};if(!l.animate||matchMedia("(prefers-reduced-motion: reduce)").matches){f();return}n=a.animate([{transform:v},{transform:p}],{duration:220,easing:"cubic-bezier(.22, .8, .25, 1)"}),n.finished.then(f,()=>{})});return()=>{i++,n?.cancel(),s?.()}}let ne=null;function ur(n){ne=n}Ce()==="mini"&&(ta(async n=>{n.type==="amadeus-editor"&&await sa();const i={...n.params};delete i.miniSurface,n.type==="chat"&&(i.sessionId||=N.getState().activeId||void 0,i.followActive=!i.sessionId),window.tangu?.showMainPanel?.({...n,params:i})}),na(n=>{if(ne?.view)return n.type===ne.view.type?n:n.type===(ne.mainView?.type||ne.view.type)?{type:ne.view.type,params:{...ne.view.params,...n.params}}:(ut({...n}),null);const i=Ht();if(!i||!ft(i))return null;const s=i.mini;return n.type===s.view.type?n:n.type===s.mainView.type?{type:s.view.type,params:{...s.view.params,...n.params}}:(ut({...n}),null)}));function mr(){const n=Ht();n&&ft(n)&&W.getState().openView(n.mini.view.type,n.mini.view.params??{},"main")}function pr(){return oi()?t.jsx(cr,{}):t.jsx(fr,{})}function fr(){const{t:n}=be();c.useEffect(dr,[]);const[i,s]=c.useState(null);return c.useEffect(()=>{N.getState().setTr((l,a)=>n(l,a))},[n]),c.useEffect(()=>{let l=!1,a=!1;const v=new URLSearchParams(location.search);let p=v.get("sessionId")?{sessionId:v.get("sessionId")}:null;const f=()=>{if(!l||!p)return;if(p.view){const E=p.view;if(!ge(E.type)){a&&window.tangu?.closeSelf?.();return}a=!0;const j=p;p=null,ne=j,s(j),W.getState().openView(E.type,{...E.params,...j.params},"main");return}const h=p.spaceId||(p.sessionId?"tangu":void 0),b=q.getState().spaces.find(E=>E.id===h);if(!b||!ft(b))return;const g=p;p=null,ne=null,s(null),Ke(b.id);const T={...b.mini.view.params,...g.params,...g.sessionId?{sessionId:g.sessionId,followActive:!1}:{}};W.getState().openView(b.mini.view.type,T,"main"),g.sessionId&&N.getState().setActiveId(g.sessionId)},w=window.tangu?.onMiniTarget?.(h=>{p=h,f()});window.tangu?.miniReady?.();const m=q.subscribe(f),k=Ne(f);return N.getState().boot().finally(()=>{l=!0,f()}),()=>{w?.(),m(),k(),l=!1,ne=null}},[]),c.useEffect(()=>{window.amadeus&&$t()},[]),c.useEffect(()=>Xe(),[]),c.useEffect(()=>{new URLSearchParams(location.search).has("transient")||ea("mini.open")},[]),t.jsx(ys,{buildDefault:mr,resizable:!!window.tangu?.miniResize&&!new URLSearchParams(location.search).has("transient"),direct:i?.view?{title:i.title,view:i.view,mainView:i.mainView??i.view}:null})}const hr={settings:"settings.title",market:"market.title",achievements:"achievements.title",feedback:"feedback.title",btw:"btw.title"};function gr(n,i){return n.builtin?i(hr[n.builtin]):n.title}function br(){const{t:n}=be(),i=pt(),[s,l]=c.useState(null),a=N(ls(g=>({cfg:g.cfg,cfgLoaded:g.cfgLoaded,closeSettings:g.closeSettings,closeMarket:g.closeMarket,closeAchievements:g.closeAchievements,closeFeedback:g.closeFeedback,patchConfig:g.patchConfig,connect:g.connect}))),v=s?.params?.session?.id?s.params.session:null,p=()=>window.tangu?.closeSelf?.(),f=s?.builtin==="btw"?xa(s.params):null,w=s?gr(s,n):"";if(c.useEffect(()=>{s?.builtin&&w&&(document.title=w)},[s?.builtin,w]),c.useEffect(()=>{N.getState().setTr((g,T)=>n(g,T))},[n]),c.useEffect(()=>{N.getState().boot()},[]),c.useEffect(()=>{window.amadeus&&$t()},[]),c.useEffect(()=>Xe(),[]),c.useEffect(()=>window.tangu?.onMainAction?.(g=>{g==="agents-changed"&&(N.getState().refreshAgents(),window.dispatchEvent(new Event("forsion:agents-changed"))),g==="skills-changed"&&(_t(Wt()).then(T=>N.setState({skillsList:T})).catch(()=>{}),window.dispatchEvent(new Event("forsion:skills-changed")))}),[]),c.useEffect(()=>{const g=ii(),T=window.tangu?.onFloatingTarget?.(l);return window.tangu?.floatingReady?.(g).then(E=>{E&&l(E)}),()=>T?.()},[]),c.useEffect(()=>{s?.builtin==="feedback"&&typeof s.params?.description=="string"&&N.setState({feedbackDraft:s.params.description})},[s]),!s)return t.jsx("div",{className:"floating-native-root"});const m=()=>{a.closeSettings(),p()},k=()=>{a.closeMarket(),p()},h=()=>{a.closeAchievements(),p()},b=()=>{a.closeFeedback(),p()};return t.jsxs("div",{className:"floating-native-root",children:[window.tangu?.platform==="darwin"&&t.jsx("header",{className:"floating-native-chrome",children:t.jsx("span",{title:w,children:w})}),t.jsxs("main",{className:"floating-native-content",children:[s.builtin==="settings"&&t.jsx(os,{open:!0,initialTab:typeof s.params?.tab=="string"?s.params.tab:void 0,initialSkillKey:typeof s.params?.skillKey=="string"?s.params.skillKey:void 0,cfg:a.cfg,activeSession:v,themeLang:i.lang,themeSkin:i.skin,themeMode:i.mode,themeModePref:i.modePref,flatOn:i.flat,glassOn:i.glass,themeSeed:i.seed,onClose:m,onConfigChange:a.patchConfig,onThemeChange:(g,T,E)=>i.setTheme(g,T,i.bg,E),onFlatChange:i.setFlat,onGlassChange:i.setGlass,onSeedChange:i.setSeedValue,onReloadThemes:i.reloadThemes,onReconnect:g=>{a.connect({...a.cfg,...g||{}})},onRelaunchOnboarding:()=>{try{localStorage.removeItem(Bt)}catch{}window.tangu?.requestMainAction?.("onboarding"),p()}},JSON.stringify(s.params??{})),s.builtin==="market"&&t.jsx(is,{initialItemId:typeof s.params?.itemId=="string"?s.params.itemId:void 0,initialDetailTab:typeof s.params?.detailTab=="string"?s.params.detailTab:void 0,initialQuery:typeof s.params?.q=="string"?s.params.q:void 0,onClose:k},String(s.params?.nonce??s.params?.itemId??s.params?.q??"")),s.builtin==="achievements"&&t.jsx(as,{onClose:h}),s.builtin==="feedback"&&a.cfgLoaded&&t.jsx(Ss,{surface:"panel",cfg:a.cfg,activeSession:v,onClose:b},v?.id||""),s.builtin==="btw"&&a.cfgLoaded&&f&&t.jsx(po,{seed:f,onClose:p}),s.view&&t.jsx(js,{target:s.view,onUnavailable:p})]}),(s.builtin==="settings"||s.builtin==="market")&&t.jsx(rs,{}),s.builtin==="settings"&&t.jsx(ai,{})]})}let he=null;function Qn(n){if(!n){he&&(he.style.display="none");return}he||(he=document.createElement("div"),Object.assign(he.style,{position:"fixed",inset:"0",pointerEvents:"none",zIndex:"99998",boxSizing:"border-box",border:"3px solid var(--accent, #4d8794)",background:"color-mix(in srgb, var(--accent, #4d8794) 8%, transparent)"}),document.body.appendChild(he)),he.style.display="block"}function wr(){const n=window.tangu;if(n?.openDetached){if(Ce()==="main"){let i="";const s=()=>{const p=N.getState(),f=p.activeId,w={sessionId:f,runId:f?p.runningBySession[f]??null:null},m=JSON.stringify(w);m!==i&&(i=m,n.reportMiniSession?.(w))};N.subscribe(s),s();let l=null;const a=()=>{if(!W.getState().api||!l||!ge(l.type))return;const f=l;l=null,f.spaceId&&Ke(f.spaceId);const w=W.getState().openView(f.type,f.params??{},"main");w&&f.params&&w.setParams({...w.params,...f.params})};n.onMainPanelTarget?.(p=>{l=p,a()}),Ne(a);let v=!1;W.subscribe(p=>{p.api&&(v||(v=!0,n.mainPanelReady?.()),a())})}ri({ribbonPointerDrag:n.platform==="win32",cursorScreenPoint:n.cursorScreenPoint,detach:(i,s)=>{n.openDetached?.(i,s)},openSpace:(i,s)=>{Ce()==="main"&&oa()===i&&q.getState().activeSpaceId===i&&W.getState().saveNamed(ia(i)),n.openDetached?.([],s,{space:i})},dragUpdate:(i,s,l)=>n.dragUpdate?.(i,s,l),drop:async(i,s,l)=>(await n.dropView?.(i,s,l))?.routed??!1}),n.onAcceptView?.(i=>{Qn(null),W.getState().openView(i.type,i.params??{},"main")}),n.onDragPreview?.(i=>Qn(i))}}function vr(){const n=window.tangu;if(!n?.reportRunningSessions)return;const i=s=>n.reportRunningSessions(Object.keys(s).length);i(N.getState().runningBySession),N.subscribe((s,l)=>{s.runningBySession!==l.runningBySession&&i(s.runningBySession)})}const Jn=n=>Sa(n).toLowerCase(),Es=(n,i)=>n.configBySession[i]?.cwd||n.sessions.find(s=>s.id===i)?.project_path||"",Cs=(n,i)=>Object.keys(n.runningBySession).some(s=>Jn(Es(n,s))===Jn(i));function kr(){const n=window.tangu;if(!(!n?.codeStudioGitCommit||!n.codeStudioGitStatus||!n.productsIsCreation))return N.subscribe((i,s)=>{if(i.runningBySession!==s.runningBySession)for(const l of Object.keys(s.runningBySession)){if(i.runningBySession[l])continue;const a=Es(i,l);!a||Cs(i,a)||yr(a,l)}})}async function yr(n,i){try{if(!await window.tangu.productsIsCreation(n))return;const s=await window.tangu.codeStudioGitStatus(n);if(!(s?.auto??s?.writable)||Cs(N.getState(),n))return;const l=fo(N.getState().messagesBySession[i]||[]);await window.tangu.codeStudioGitCommit(n,{name:l,auto:!0,untitled:es("studio.history.untitled")})}catch(s){console.warn("[creations] 自动存版本失败",s)}}function xr(){if(!window.tangu?.onAuthWillChange)return()=>{};let n=!1,i=null,s=!1,l=0,a=Promise.resolve(),v=!1;const p=()=>{i&&(i.inert=s),i=null},f=window.tangu.onAuthWillChange(async()=>{const m=++l;i||(i=document.body,s=i?.inert??!1,i&&(i.inert=!0));try{if(await a,m!==l||v||!window.amadeus)return;const[{flushAllScopes:k,resetAllScopeDocs:h,usePageStore:b},{useDbStore:g},{useDrawStore:T},E]=await Promise.all([Ve(()=>import("./pageStore-D_fKLv-o.js").then(j=>j.dL),__vite__mapDeps([0,1,2,3,4]),import.meta.url),Ve(()=>import("./dbStore-Bc2lC8ZI.js").then(j=>j.ah),__vite__mapDeps([5,0,1,2,3,4]),import.meta.url),Ve(()=>import("./drawingStore-BD5m2eqn.js").then(j=>j.m),__vite__mapDeps([6,1,0,2,3,4]),import.meta.url),Ve(()=>import("./index-YuejkHoJ.js").then(j=>j.cw),[],import.meta.url)]);if(await Promise.all([k(!0),g.getState().flushAll(!0),T.getState().flushAll(!0)]),m!==l)return;n=b.getState().vaultSide==="cloud",n&&(E.retireAllUnifiedScopes(),h(),b.setState({vaultRoot:null,pages:[],folders:[],files:[],icons:{}}))}catch(k){throw m===l&&p(),k}}),w=window.tangu.onAuthChanged?.(()=>{const m=++l;if(!n){a.finally(()=>{m===l&&p()});return}n=!1,a=a.then(async()=>{const{usePageStore:k}=await Ve(async()=>{const{usePageStore:h}=await import("./pageStore-D_fKLv-o.js").then(b=>b.dL);return{usePageStore:h}},__vite__mapDeps([0,1,2,3,4]),import.meta.url);v||(await k.getState().restoreVault(),await k.getState().initVaultSide())}).catch(k=>console.error("[auth] Cannot restore vault after account change:",k)).finally(()=>{m===l&&p()})});return()=>{v=!0,++l,f(),w?.(),p()}}function Sr(){const n=window.tangu;if(n?.platform!=="win32"||!n.setTabTitleBar||!["main","detached"].includes(Ce()))return;const i=document.documentElement,s=navigator.windowControlsOverlay;i.dataset.tabTitlebar="1";let l=0,a="",v;const p=()=>{l=0;const h=[...document.querySelectorAll(".dv-tabs-and-actions-container")].find(I=>{const F=I.getBoundingClientRect();return F.width>0&&F.top<2&&F.height>0}),b=Math.max(16,Math.min(128,Math.round(h?.getBoundingClientRect().bottom??32))),g=i.dataset.mode==="dark"?"#ecebea":"#383837",T=`${b}:${g}`;T!==a&&(a=T,n.setTabTitleBar({height:b,symbolColor:g}).then(I=>{v===void 0&&I.ok&&(v=I.fullscreen,f())}).catch(()=>{a=""}));const E=s?.getTitlebarAreaRect(),z=`${!v&&E&&s?.visible&&E.height>0?Math.max(0,innerWidth-E.right):0}px`;i.style.getPropertyValue("--windows-caption-width")!==z&&i.style.setProperty("--windows-caption-width",z)},f=()=>{l||(l=requestAnimationFrame(p))};new MutationObserver(f).observe(i,{attributes:!0,attributeFilter:["data-mode","data-theme","style"]});const m=new ResizeObserver(f),k=new MutationObserver(()=>{const h=document.querySelector(".shell");h&&(m.observe(h),k.disconnect(),f())});k.observe(document.getElementById("root"),{childList:!0,subtree:!0}),window.addEventListener("resize",f),window.addEventListener(Dt,f),s?.addEventListener("geometrychange",f),n.onTabTitleBarFullscreen?.(h=>{v=h,f()}),f()}xr();Sr();window.addEventListener("error",n=>{console.error("[tangu] window error:",n.error||n.message)});window.addEventListener("unhandledrejection",n=>{console.error("[tangu] unhandledrejection:",n.reason)});const jr=(()=>{try{return location.hash==="#preview"}catch{return!1}})(),dt=Ce();try{document.documentElement.dataset.window=dt}catch{}try{document.documentElement.lang=Us()==="zh"?"zh-CN":"en"}catch{}try{window.tangu?.platform==="darwin"&&(document.documentElement.dataset.platform="mac")}catch{}let Ns,Ts=null;try{Ns=localStorage.getItem("forsion_theme_seed")||void 0}catch{}try{Ts=localStorage.getItem("forsion_theme_lang")}catch{}try{ci(li(),di(),ui(),mi(),{customColor:Ns}),pi(),document.documentElement.style.removeProperty("background"),pt.getState().initThemes(Ts),N.getState().setTr(es),ho(),wr(),vr(),kr(),fi(),go(),hi()}catch(n){console.error("[tangu] init failed, continue to mount:",n),gi("init",n)}function Er(){const n=bi()?.Preview;return n?t.jsx(n,{}):null}Ks.createRoot(document.getElementById("root")).render(t.jsx(qs,{children:t.jsx(bo,{children:jr?t.jsx(Er,{}):dt==="mini"?t.jsx(pr,{}):dt==="floating"?t.jsx(br,{}):dt==="detached"?t.jsx(ir,{}):t.jsx(nr,{})})}));
@@ -0,0 +1 @@
1
+ .amx-publishing-editor .amadeus-published{line-height:1.65;overflow-wrap:anywhere;color:var(--text)}.amx-publishing-editor .md-feature{margin:24px 0}.amx-publishing-editor .md-media{margin:20px 0;border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.amx-publishing-editor .md-media-stage{position:relative;aspect-ratio:16/9;background:var(--bg)}.amx-publishing-editor .md-media-stage.has-poster{aspect-ratio:16/9}.amx-publishing-editor .md-media-stage img{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.amx-publishing-editor .md-media-stage video,.amx-publishing-editor .md-media-stage iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.amx-publishing-editor .md-media-stage audio{position:absolute;inset:auto 0 0;width:100%}.amx-publishing-editor video[data-amadeus-demo]{display:block;width:100%;height:auto;aspect-ratio:auto 16/10;object-fit:contain;border-radius:var(--radius-md);background:var(--bg)}.amx-publishing-editor .md-media-placeholder{display:grid;place-items:center;height:100%;min-height:120px}.amx-publishing-editor .md-media figcaption{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px;font-size:var(--ui-font-meta)}.amx-publishing-editor .md-callout{padding:12px;margin:16px 0;border:1px solid var(--border);border-radius:var(--radius-sm)}.amx-publishing-editor .md-fold summary{cursor:pointer;font-weight:600}.amx-publishing-editor .md-table-wrap{overflow:auto}.amx-publishing-editor .md-table-wrap table{border-collapse:collapse;width:100%}.amx-publishing-editor .md-table-wrap td,.amx-publishing-editor .md-table-wrap th{padding:8px;border-bottom:1px solid var(--border);text-align:left}.amx-publishing-editor pre{overflow:auto;background:var(--bg);padding:12px;border-radius:var(--radius-sm)}
@@ -0,0 +1,3 @@
1
+ import{j as i,H as g,u as b,r as d,a as x}from"./index-YuejkHoJ.js";import{fd as w}from"./appStore-BskcSDl6.js";import"./pageStore-D_fKLv-o.js";import{P as y}from"./MarkdownBlock-DjsGkPZ_.js";import{m as j,r as M}from"./mediaPlayer-O9pVRl_k.js";import"./dbStore-Bc2lC8ZI.js";import"./react-DOzedx9n.js";import"./ipc-8cxXGSZK.js";import"./client-DD5czSuF.js";import"./nativeDownload-DlnT8U-y.js";import"./drawingStore-BD5m2eqn.js";import"./index-CiQ59Kib.js";import"./linkFollow-J2c0wSgB.js";import"./selectionActions-C2a8ImJm.js";import"./listFold-B_2Xqxn_.js";import"./FloatingToc-iK08Qpjc.js";x({"publishing.visual":{zh:"Amadeus 编辑",en:"Amadeus editor"},"publishing.source":{zh:"Markdown 源码",en:"Markdown source"},"publishing.preview":{zh:"预览",en:"Preview"}});function k({options:e,revision:p,alive:a}){const{t,locale:l}=b(),[s,n]=d.useState(e.value),[c,o]=d.useState("visual"),h=e.modes!==!1,u=h?c:"visual",v=d.useRef(null);d.useEffect(()=>{n(e.value)},[e.value,p]);const f=r=>{a()&&(e.value=r,n(r),e.onChange?.(r))};d.useEffect(()=>v.current?j(v.current,l):void 0,[u,s,l,e.previewBaseUrl]);const m=u==="preview"?M(s,{locale:l,baseUrl:e.previewBaseUrl}):null;return i.jsxs("div",{className:"am-app amx-publishing-editor","aria-label":e.label,children:[h&&i.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:6,padding:"8px 0"},children:["visual","source","preview"].map(r=>i.jsx("button",{className:"btn",type:"button","aria-pressed":u===r,onClick:()=>o(r),children:t(`publishing.${r}`)},r))}),u==="visual"&&i.jsx(y,{initial:s,onChange:f,readOnly:e.readOnly,immediate:!0}),u==="source"&&i.jsx("textarea",{"aria-label":e.label||t("publishing.source"),value:s,readOnly:e.readOnly,onChange:r=>f(r.target.value),style:{width:"100%",minHeight:420,resize:"vertical",padding:12,font:"inherit",fontFamily:"var(--font-mono)",color:"var(--text)",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-sm)"}}),m&&i.jsx("div",{ref:v,className:"amadeus-published",dangerouslySetInnerHTML:{__html:(m.title?`<h1>${m.title.replace(/[&<>"']/g,r=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[r])}</h1>`:"")+m.html}})]})}function _(e,p){const a={...p};let t=!0,l=0;const s=()=>i.jsx(g,{children:i.jsx(k,{options:a,revision:l++,alive:()=>t})}),n=w(e,s(),()=>{t=!1}),c=()=>n.render(s());return{getValue(){return a.value},update(o){t&&(Object.assign(a,o),c())},insertMarkdown(o){t&&!a.readOnly&&(a.value+=`
2
+
3
+ `+o,a.onChange?.(a.value),c())},focus(){t&&e.querySelector('[contenteditable="true"],textarea')?.focus()},dispose:n.dispose}}export{_ as mountPluginMarkdownEditor};
@@ -0,0 +1 @@
1
+ import{gW as U,gX as j,kp as V}from"./appStore-BskcSDl6.js";import{Q as W,S as I,B as z,T as F}from"./index-YuejkHoJ.js";const O=W().use(I).use(z,{singleTilde:!1}).use(F,["yaml"]).use(U).use(j,{singleTilde:!1}),s=i=>String(i??"").replace(/[&<>"']/g,u=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[u]);function E(i,u=!1){if(!i||/[\u0000-\u0020\u007f\\]/.test(i)||i.startsWith("//"))return null;if(i.startsWith("/")||i.startsWith("#"))return i;try{const l=new URL(i);if(l.protocol==="https:"||l.protocol==="http:"||!u&&l.protocol==="mailto:")return l.href}catch{}return!i.includes(":")&&!i.startsWith(".")?i:null}function S(i){return i.value??(i.children??[]).map(S).join("")}function A(i){return i.type!=="paragraph"?null:/^!\[\[([^\]\n]+)\]\]$/.exec(S(i).trim())?.[1]?.replace(/\|\d+$/,"")??null}function B(i){return i.type==="paragraph"&&i.children?.length===1&&i.children[0].type==="image"?i.children[0]:null}function P(i){try{return/\.(?:mp4|webm)$/i.test(new URL(i,"https://forsion.example").pathname)}catch{return!1}}function D(i,u={}){const l=O.parse(i),m=u.locale==="zh",c=(e,n=!1)=>{const r=E(e,n);if(!r||!u.baseUrl||r.startsWith("#"))return r;try{return E(new URL(r,u.baseUrl).href,n)}catch{return r}};let v=!0;const g=()=>{const e=!!u.priorityFirstImage&&v;return v=!1,e?'loading="eager" fetchpriority="high"':'loading="lazy"'},$=new Map((l.children??[]).filter(e=>e.type==="definition").map(e=>[e.identifier,e]));let o=0;const p=e=>(e.children??[]).map(b).join(""),d=(e,n)=>{const r=V(e),a=c(r?.provider==="Bilibili"&&/^BV[\w]{10}$/i.test(e.trim())?"https://www.bilibili.com/video/"+e.trim():e,!0);if(!a)return null;let h=a;try{h=new URL(a,"https://forsion.example").pathname}catch{}const y=/\.(mp4|webm|mov|m4v|ogv)$/i.test(h),q=/\.(mp3|m4a|ogg|wav|flac)$/i.test(h);if(!r&&!y&&!q)return null;const L=n?.alt||r?.provider||(m?q?"音频":"视频演示":q?"Audio":"Video demo"),C=n?.url?c(n.url,!0):null,w=/^(\d{1,4})[:/](\d{1,4})$/.exec(n?.title||""),M=w&&+w[1]>0&&+w[2]>0?` style="aspect-ratio:${+w[1]}/${+w[2]}"`:"",R=C?`<img src="${s(C)}" alt="${s(L)}" ${g()} decoding="async">`:`<div class="md-media-placeholder"><span>${s(L)}</span></div>`;return`<figure class="md-media" data-amadeus-media="${r?"platform":q?"audio":"video"}" data-src="${s(r?.src||a)}"><div class="md-media-stage${C?" has-poster":""}"${M}>${R}</div><figcaption><span>${s(L)}</span><button type="button" class="play-button">${m?"播放":"Play"}${r?` · ${r.provider}`:""}</button><a href="${s(a)}" target="_blank" rel="noopener noreferrer">${m?"打开原视频":"Open original"} ↗</a></figcaption><p class="md-media-error" role="status" hidden>${m?"暂时无法播放,请打开原视频。":"Playback is unavailable. Open the original video."}</p></figure>`};function b(e){const n=()=>p(e);switch(e.type){case"text":return s(e.value);case"strong":return`<strong>${n()}</strong>`;case"emphasis":return`<em>${n()}</em>`;case"delete":return`<del>${n()}</del>`;case"inlineCode":return`<code>${s(e.value)}</code>`;case"break":return"<br>";case"heading":{const r=Math.min(6,(e.depth??2)+(u.headingOffset??0));return`<h${r} id="${s(u.idPrefix||"md")}-${++o}">${n()}</h${r}>`}case"paragraph":{const r=A(e);if(r){const a=c(r,!0);if(a&&/\.(?:png|jpe?g|gif|webp|avif|svg)(?:[?#]|$)/i.test(a))return`<figure class="md-image"><img src="${s(a)}" alt="${s(r)}" ${g()} decoding="async"></figure>`;const h=d(r);if(h)return h;const y=c(r);return y?`<p class="md-bookmark"><a href="${s(y)}" target="_blank" rel="noopener noreferrer">${s(r)} ↗</a></p>`:`<p>${s(S(e))}</p>`}return`<p>${n()}</p>`}case"link":case"linkReference":{const r=e.url??$.get(e.identifier)?.url??"",a=c(r);return a?`<a href="${s(a)}"${/^https?:/.test(a)?' target="_blank" rel="noopener noreferrer"':""}>${n()}</a>`:n()}case"image":case"imageReference":{const r=$.get(e.identifier),a=c(e.url??r?.url??"",!0);return a&&P(a)?`<video src="${s(a)}" autoplay muted loop playsinline preload="metadata" aria-label="${s(e.alt||(m?"视频演示":"Video demo"))}" data-amadeus-demo></video>`:a?`<img src="${s(a)}" alt="${s(e.alt||"")}" ${g()} decoding="async">`:s(e.alt||"")}case"list":return`<${e.ordered?"ol":"ul"}${e.ordered&&e.start?` start="${e.start}"`:""}>${n()}</${e.ordered?"ol":"ul"}>`;case"listItem":return`<li>${e.checked!=null?`<input type="checkbox" disabled aria-label="${m?"清单项":"Checklist item"}"${e.checked?" checked":""}>`:""}${n()}</li>`;case"blockquote":{const r=e.children?.[0],a=r?.type==="paragraph"?/^\[!([\w-]+)\]([+-])?\s*(.*)/.exec(S(r)):null;if(!a)return`<blockquote>${n()}</blockquote>`;const h=(e.children??[]).slice(1).map(b).join(""),y=s(a[3]||a[1]);return a[2]?`<details class="md-callout md-fold"${a[2]==="+"?" open":""}><summary>${y}</summary><div>${h}</div></details>`:`<aside class="md-callout"><p class="md-callout-title">${y}</p>${h}</aside>`}case"table":return`<div class="md-table-wrap"><table>${(e.children??[]).map((r,a)=>`<${a?"tbody":"thead"}><tr>${(r.children??[]).map(h=>`<${a?"td":"th"}>${p(h)}</${a?"td":"th"}>`).join("")}</tr></${a?"tbody":"thead"}>`).join("")}</table></div>`;case"code":return`<pre><code${e.lang?` class="language-${s(e.lang.replace(/[^\w-]/g,""))}"`:""}>${s(e.value)}</code></pre>`;case"thematicBreak":return"<hr>";case"html":case"yaml":case"definition":return"";default:return e.children?n():s(e.value)}}const t=(l.children??[]).filter(e=>!["yaml","html","definition"].includes(e.type));let f="";t[0]?.type==="heading"&&t[0].depth===1&&(f=S(t.shift()));let k="",x=!1;for(let e=0;e<t.length;e++){const n=t[e];n.type==="heading"&&n.depth===2&&(x&&(k+="</section>"),k+='<section class="md-feature">',x=!0);const r=B(n),a=r&&!P(r.url??"")?r:null,h=t[e+1]&&A(t[e+1]),y=a&&h?d(h,a):null;if(y){k+=y,e++;continue}k+=b(n)}return x&&(k+="</section>"),{title:f,html:k}}function G(i,u="en"){const l=u==="zh",m=Array.from(i.querySelectorAll("[data-amadeus-media]")),c=new AbortController,v=o=>{m.forEach(p=>{p!==o&&p.querySelector("video,audio")?.pause()})};for(const o of m){const p=o.querySelector("button"),d=o.querySelector(".md-media-stage");p.addEventListener("click",()=>{const b=o.querySelector(".md-media-error");if(b.hidden=!0,o.dataset.amadeusMedia==="platform"){if(d.querySelector("iframe")){d.querySelector("iframe").remove(),d.classList.remove("playing"),p.textContent=l?"播放":"Play";return}v(o);const f=document.createElement("iframe");f.src=o.dataset.src,f.title=o.querySelector("figcaption span")?.textContent||"Video",f.allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; fullscreen",f.allowFullscreen=!0,f.referrerPolicy="strict-origin-when-cross-origin",d.appendChild(f),d.classList.add("playing"),p.textContent=l?"关闭播放器":"Close player";return}let t=d.querySelector("video,audio");if(t||(t=document.createElement(o.dataset.amadeusMedia==="audio"?"audio":"video"),t.setAttribute("controls",""),t.setAttribute("playsinline",""),t.preload="none",t.src=o.dataset.src,d.appendChild(t),t.addEventListener("playing",()=>{d.classList.add("playing"),p.textContent=l?"暂停":"Pause"},{signal:c.signal}),t.addEventListener("pause",()=>{p.textContent=t.ended?l?"重播":"Replay":l?"继续播放":"Resume"},{signal:c.signal}),t.addEventListener("loadedmetadata",()=>{t instanceof HTMLVideoElement&&t.videoHeight&&(d.style.aspectRatio=`${t.videoWidth}/${t.videoHeight}`)},{signal:c.signal})),!t.paused){t.pause();return}v(o),t.play().catch(()=>{b.hidden=!1,d.classList.remove("playing")})},{signal:c.signal})}const g=H(i,c.signal),$=()=>{m.forEach(o=>o.querySelector("video,audio")?.pause())};return document.addEventListener("visibilitychange",()=>{document.hidden&&$(),g.sync()},{signal:c.signal}),()=>{c.abort(),$(),g.dispose(),m.forEach(o=>o.querySelector("iframe")?.remove())}}function H(i,u){const l=Array.from(i.querySelectorAll("video[data-amadeus-demo]")),m={sync(){},dispose(){}};if(!l.length)return m;const c=t=>{t.removeAttribute("autoplay"),t.pause(),t.controls=!0},v=typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,g=typeof IntersectionObserver<"u";if(!g&&!v)return m;const $=new Set(v?[]:l),o=new Set(g?[]:l),p=new Set;v&&l.forEach(c);const d=()=>{for(const t of l){if(!o.has(t)||document.hidden){t.paused||(t.pause(),$.has(t)||p.add(t));continue}!t.paused||!($.has(t)||p.delete(t))||($.has(t)&&(t.muted=!0),t.play()?.catch(f=>{f?.name==="AbortError"||u.aborted||$.delete(t)&&c(t)}))}},b=g?new IntersectionObserver(t=>{for(const f of t){const k=f.target;f.isIntersecting?o.add(k):o.delete(k)}d()}):null;for(const t of l)t.removeAttribute("autoplay"),b?.observe(t);return{sync:d,dispose(){b?.disconnect(),l.forEach(t=>t.pause())}}}export{G as m,D as r};
@@ -0,0 +1 @@
1
+ import{p as a}from"./pageStore-D_fKLv-o.js";const e=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M12 8v6",key:"1ib9pf"}],["path",{d:"M9 11h6",key:"1fldmi"}]],p=a("message-square-plus",e);export{p as M};
@@ -1 +1 @@
1
- import{r as t}from"./index-BOzsniE1.js";t({"automation.deleted":{zh:"已删除「{name}」",en:"Deleted “{name}”"},"automation.deleteConfirm":{zh:"删除「{name}」?此操作无法撤销。",en:"Delete “{name}”? This can’t be undone."},"automation.undo":{zh:"撤销",en:"Undo"},"automation.ux.actions":{zh:"更多操作",en:"More actions"},"automation.ux.help":{zh:"使用说明",en:"Workflow help"},"automation.ux.properties":{zh:"规则配置",en:"Rule configuration"},"automation.ux.myWorkflows":{zh:"我的自动化",en:"My workflows"},"automation.ux.noRules":{zh:"从入门模板创建第一条自动化。",en:"Create your first workflow from a starter template."},"automation.ux.workspace":{zh:"自动化工作台",en:"Automation studio"},"automation.ux.welcome":{zh:"把重复的事,交给流程",en:"Turn repeat work into a workflow"},"automation.ux.intro":{zh:"从一个触发条件开始,连接 Agent、笔记和多维表,随时查看每一步的结果。",en:"Start with a trigger, connect your agents, notes and databases, and see what each step did."},"automation.ux.guide.trigger":{zh:"选择触发方式",en:"Choose a trigger"},"automation.ux.guide.triggerHint":{zh:"定时、事件、表格变化,或手动点击。",en:"A schedule, an event, a database change, or a click."},"automation.ux.guide.actions":{zh:"连接要做的事",en:"Connect your actions"},"automation.ux.guide.actionsHint":{zh:"在画布添加步骤,选中节点完成配置。",en:"Add steps on the canvas, then select a node to configure it."},"automation.ux.guide.test":{zh:"试运行,再启用",en:"Test, then enable"},"automation.ux.guide.testHint":{zh:"先保存为暂停状态,检查结果后开启。",en:"Save paused, review a test run, then enable it."},"automation.ux.startWith":{zh:"从场景开始",en:"Start with a use case"},"automation.ux.blank":{zh:"自定义流程",en:"Custom workflow"},"automation.ux.draftHint":{zh:"模板只填入草稿。保存前,你可以修改所有配置。",en:"Templates only fill a draft. Review and change anything before saving."},"automation.ux.native":{zh:"和 Forsion 一起工作",en:"Works with Forsion"},"automation.ux.nativeHint":{zh:"笔记按钮负责手动启动,多维表提供触发数据,Agent 处理任务,通知送达收件箱。Muse 和 Historian 的系统自动化也可在左侧单独管理。",en:"Note buttons start manual workflows, databases supply trigger data, agents handle tasks, and notifications arrive in your inbox. Manage Muse and Historian separately in the sidebar."},"automation.ux.reminder.name":{zh:"每日提醒",en:"Daily reminder"},"automation.ux.reminder.hint":{zh:"每天固定时间,把提醒送进收件箱。",en:"Send a reminder to your inbox at a set time each day."},"automation.ux.reminder.flow":{zh:"每天 09:00 → 发通知",en:"Daily at 09:00 → Notify"},"automation.ux.reminder.body":{zh:"今天有哪些值得优先处理的事?",en:"What deserves your attention today?"},"automation.ux.briefing.name":{zh:"Agent 每日简报",en:"Daily agent briefing"},"automation.ux.briefing.hint":{zh:"选一个 Agent,定时整理你关心的信息。",en:"Choose an agent to prepare a scheduled briefing."},"automation.ux.briefing.flow":{zh:"定时 → 跑 Agent",en:"Schedule → Run agent"},"automation.ux.briefing.prompt":{zh:"整理一份今日工作简报,总结当前待办和需要关注的事项。",en:"Prepare a daily briefing of current tasks and items that need attention."},"automation.ux.table.name":{zh:"新增记录提醒",en:"New record notification"},"automation.ux.table.hint":{zh:"多维表新增一行时,通知你及时跟进。",en:"Get notified when a new row is added to a database."},"automation.ux.table.flow":{zh:"新增记录 → 发通知",en:"Row added → Notify"},"automation.ux.table.body":{zh:"多维表新增了记录:{{row.id}}",en:"A new database row was added: {{row.id}}"},"automation.ux.button.name":{zh:"一键交给 Agent",en:"One click to an agent"},"automation.ux.button.hint":{zh:"手动执行常用任务,也能绑定到笔记按钮。",en:"Run a repeat task manually or attach it to a note button."},"automation.ux.button.flow":{zh:"手动点击 → 跑 Agent",en:"Manual click → Run agent"},"automation.ux.button.prompt":{zh:"检查我的待办,整理接下来最值得推进的三件事。",en:"Review my tasks and identify the three most useful next actions."},"automation.ux.overview":{zh:"入门与模板",en:"Guide and templates"},"automation.ux.search":{zh:"搜索自动化",en:"Search automations"},"automation.ux.noMatches":{zh:"没有匹配的自动化",en:"No matching automations"},"automation.ux.enable":{zh:"启用",en:"Enable"},"automation.ux.pause":{zh:"暂停",en:"Pause"},"automation.ux.on":{zh:"已启用",en:"Enabled"},"automation.ux.off":{zh:"已暂停",en:"Paused"},"automation.ux.flow":{zh:"工作流画布",en:"Workflow canvas"},"automation.ux.canvasHint":{zh:"拖动排列 · 点击配置",en:"Drag to arrange · Click to configure"},"automation.ux.canvasOrder":{zh:"按连线顺序执行。拖动只调整布局,步骤顺序在配置中调整。",en:"Steps run in connected order. Dragging changes the layout; use the step controls to reorder execution."},"automation.ux.zoomIn":{zh:"放大画布",en:"Zoom in"},"automation.ux.zoomOut":{zh:"缩小画布",en:"Zoom out"},"automation.ux.fit":{zh:"适应视图",en:"Fit to view"},"automation.ux.arrange":{zh:"自动排列",en:"Auto arrange"},"automation.ux.ready":{zh:"已配置",en:"Configured"},"automation.ux.incomplete":{zh:"待配置",en:"Needs setup"},"automation.ux.finish":{zh:"保存与启用",en:"Save and enable"},"automation.ux.finishHint":{zh:"检查配置与启动方式",en:"Review setup and activation"},"automation.ux.addStep":{zh:"添加步骤",en:"Add a step"},"automation.ux.maxSteps":{zh:"最多添加 24 个步骤",en:"Up to 24 steps"},"automation.ux.setup":{zh:"节点配置",en:"Node configuration"},"automation.ux.setupHint":{zh:"选中画布节点,配置触发条件或动作。",en:"Select a canvas node to configure its trigger or action."},"automation.ux.savePaused":{zh:"保存为暂停",en:"Save paused"},"automation.ux.saveEnabled":{zh:"保存并启用",en:"Save and enable"},"automation.ux.enabledLabel":{zh:"保存后启用",en:"Enable after saving"},"automation.ux.enableHint":{zh:"暂停状态仍可试运行;启用后才响应触发条件。",en:"Paused workflows can still be tested. Enable them to respond to triggers."},"automation.ux.saved":{zh:"自动化已保存",en:"Automation saved"},"automation.ux.checklist":{zh:"还需完成",en:"Complete the setup"},"automation.ux.allReady":{zh:"配置已完成,可以保存",en:"Ready to save"},"automation.ux.review":{zh:"检查并保存",en:"Review and save"},"automation.ux.issue.name":{zh:"填写自动化名称",en:"Enter a workflow name"},"automation.ux.issue.trigger":{zh:"补全触发条件",en:"Complete the trigger settings"},"automation.ux.issue.steps":{zh:"至少添加一个动作",en:"Add at least one action"},"automation.ux.issue.notify":{zh:"填写通知标题",en:"Enter a notification title"},"automation.ux.issue.agent":{zh:"选择执行任务的 Agent",en:"Choose an agent"},"automation.ux.issue.prompt":{zh:"说明 Agent 需要完成的任务",en:"Describe the task for the agent"},"automation.ux.issue.table":{zh:"选择目标多维表",en:"Choose a database"},"automation.ux.issue.cells":{zh:"至少指定一个要写入的字段",en:"Add at least one field to write"},"automation.ux.issue.row":{zh:"指定记录 ID 或按列值匹配目标记录",en:"Set a row ID or match target rows by a column value"},"automation.ux.issue.match":{zh:"填写记录匹配值",en:"Enter a row matching value"},"automation.ux.issue.tool":{zh:"选择一个可用工具",en:"Choose an available tool"},"automation.ux.issue.args":{zh:"补全工具的必填参数",en:"Complete the required tool arguments"},"automation.ux.issue.json":{zh:"填写有效的 JSON 参数",en:"Enter valid JSON arguments"},"automation.ux.issue.cooldown":{zh:"填写有效的冷却时长",en:"Enter a valid cooldown duration"},"automation.ux.variables":{zh:"插入变量",en:"Insert variable"},"automation.ux.insertVariable":{zh:"为「{field}」插入变量",en:"Insert a variable into {field}"},"automation.ux.today":{zh:"今天的日期",en:"Today"},"automation.ux.now":{zh:"当前时间",en:"Current time"},"automation.ux.triggerRow":{zh:"触发记录",en:"Trigger row"},"automation.ux.rowId":{zh:"记录 ID",en:"Row ID"},"automation.ux.runHint":{zh:"试运行会真实执行已保存的动作。",en:"Testing executes the saved actions."},"automation.ux.dbRunHint":{zh:"表格规则试运行不携带触发行数据;行变量与默认触发行目标需要真实表格事件。",en:"Database tests have no triggering row. Row variables and default row targets require a real database event."},"automation.ux.runResults":{zh:"运行结果",en:"Run results"},"automation.ux.runEmpty":{zh:"还没有运行记录。可以先试运行一次,或等待触发条件满足。",en:"No runs yet. Test the workflow or wait for its trigger."},"automation.ux.runLoading":{zh:"正在读取运行记录…",en:"Loading runs…"},"automation.ux.runError":{zh:"无法读取运行记录,请重试。",en:"Could not load runs. Please retry."},"automation.ux.retry":{zh:"重试",en:"Retry"},"automation.ux.done":{zh:"已完成",en:"Completed"},"automation.ux.failed":{zh:"失败",en:"Failed"},"automation.ux.running":{zh:"运行中",en:"Running"},"automation.ux.queued":{zh:"排队中",en:"Queued"},"automation.ux.autoOrigin":{zh:"自动触发",en:"Automatic"},"automation.ux.manualOrigin":{zh:"手动执行",en:"Manual"},"automation.ux.stepResult":{zh:"步骤 {n} · {type}",en:"Step {n} · {type}"},"automation.ux.latestResults":{zh:"每步执行结果",en:"Step results"},"automation.ux.noSteps":{zh:"这次执行没有步骤结果。",en:"No step results were recorded for this run."},"automation.ux.systemHint":{zh:"系统助理",en:"System assistants"},"automation.ux.loadError":{zh:"自动化加载失败,请重试。",en:"Could not load automations. Please retry."}});
1
+ import{a as t}from"./index-YuejkHoJ.js";t({"automation.deleted":{zh:"已删除「{name}」",en:"Deleted “{name}”"},"automation.deleteConfirm":{zh:"删除「{name}」?此操作无法撤销。",en:"Delete “{name}”? This can’t be undone."},"automation.undo":{zh:"撤销",en:"Undo"},"automation.ux.actions":{zh:"更多操作",en:"More actions"},"automation.ux.help":{zh:"使用说明",en:"Workflow help"},"automation.ux.properties":{zh:"规则配置",en:"Rule configuration"},"automation.ux.myWorkflows":{zh:"我的自动化",en:"My workflows"},"automation.ux.noRules":{zh:"从入门模板创建第一条自动化。",en:"Create your first workflow from a starter template."},"automation.ux.workspace":{zh:"自动化工作台",en:"Automation studio"},"automation.ux.welcome":{zh:"把重复的事,交给流程",en:"Turn repeat work into a workflow"},"automation.ux.intro":{zh:"从一个触发条件开始,连接 Agent、笔记和多维表,随时查看每一步的结果。",en:"Start with a trigger, connect your agents, notes and databases, and see what each step did."},"automation.ux.guide.trigger":{zh:"选择触发方式",en:"Choose a trigger"},"automation.ux.guide.triggerHint":{zh:"定时、事件、表格变化,或手动点击。",en:"A schedule, an event, a database change, or a click."},"automation.ux.guide.actions":{zh:"连接要做的事",en:"Connect your actions"},"automation.ux.guide.actionsHint":{zh:"在画布添加步骤,选中节点完成配置。",en:"Add steps on the canvas, then select a node to configure it."},"automation.ux.guide.test":{zh:"试运行,再启用",en:"Test, then enable"},"automation.ux.guide.testHint":{zh:"先保存为暂停状态,检查结果后开启。",en:"Save paused, review a test run, then enable it."},"automation.ux.startWith":{zh:"从场景开始",en:"Start with a use case"},"automation.ux.blank":{zh:"自定义流程",en:"Custom workflow"},"automation.ux.draftHint":{zh:"模板只填入草稿。保存前,你可以修改所有配置。",en:"Templates only fill a draft. Review and change anything before saving."},"automation.ux.native":{zh:"和 Forsion 一起工作",en:"Works with Forsion"},"automation.ux.nativeHint":{zh:"笔记按钮负责手动启动,多维表提供触发数据,Agent 处理任务,通知送达收件箱。Muse 和 Historian 的系统自动化也可在左侧单独管理。",en:"Note buttons start manual workflows, databases supply trigger data, agents handle tasks, and notifications arrive in your inbox. Manage Muse and Historian separately in the sidebar."},"automation.ux.reminder.name":{zh:"每日提醒",en:"Daily reminder"},"automation.ux.reminder.hint":{zh:"每天固定时间,把提醒送进收件箱。",en:"Send a reminder to your inbox at a set time each day."},"automation.ux.reminder.flow":{zh:"每天 09:00 → 发通知",en:"Daily at 09:00 → Notify"},"automation.ux.reminder.body":{zh:"今天有哪些值得优先处理的事?",en:"What deserves your attention today?"},"automation.ux.briefing.name":{zh:"Agent 每日简报",en:"Daily agent briefing"},"automation.ux.briefing.hint":{zh:"选一个 Agent,定时整理你关心的信息。",en:"Choose an agent to prepare a scheduled briefing."},"automation.ux.briefing.flow":{zh:"定时 → 跑 Agent",en:"Schedule → Run agent"},"automation.ux.briefing.prompt":{zh:"整理一份今日工作简报,总结当前待办和需要关注的事项。",en:"Prepare a daily briefing of current tasks and items that need attention."},"automation.ux.table.name":{zh:"新增记录提醒",en:"New record notification"},"automation.ux.table.hint":{zh:"多维表新增一行时,通知你及时跟进。",en:"Get notified when a new row is added to a database."},"automation.ux.table.flow":{zh:"新增记录 → 发通知",en:"Row added → Notify"},"automation.ux.table.body":{zh:"多维表新增了记录:{{row.id}}",en:"A new database row was added: {{row.id}}"},"automation.ux.button.name":{zh:"一键交给 Agent",en:"One click to an agent"},"automation.ux.button.hint":{zh:"手动执行常用任务,也能绑定到笔记按钮。",en:"Run a repeat task manually or attach it to a note button."},"automation.ux.button.flow":{zh:"手动点击 → 跑 Agent",en:"Manual click → Run agent"},"automation.ux.button.prompt":{zh:"检查我的待办,整理接下来最值得推进的三件事。",en:"Review my tasks and identify the three most useful next actions."},"automation.ux.overview":{zh:"入门与模板",en:"Guide and templates"},"automation.ux.search":{zh:"搜索自动化",en:"Search automations"},"automation.ux.noMatches":{zh:"没有匹配的自动化",en:"No matching automations"},"automation.ux.enable":{zh:"启用",en:"Enable"},"automation.ux.pause":{zh:"暂停",en:"Pause"},"automation.ux.on":{zh:"已启用",en:"Enabled"},"automation.ux.off":{zh:"已暂停",en:"Paused"},"automation.ux.flow":{zh:"工作流画布",en:"Workflow canvas"},"automation.ux.canvasHint":{zh:"拖动排列 · 点击配置",en:"Drag to arrange · Click to configure"},"automation.ux.canvasOrder":{zh:"按连线顺序执行。拖动只调整布局,步骤顺序在配置中调整。",en:"Steps run in connected order. Dragging changes the layout; use the step controls to reorder execution."},"automation.ux.zoomIn":{zh:"放大画布",en:"Zoom in"},"automation.ux.zoomOut":{zh:"缩小画布",en:"Zoom out"},"automation.ux.fit":{zh:"适应视图",en:"Fit to view"},"automation.ux.arrange":{zh:"自动排列",en:"Auto arrange"},"automation.ux.ready":{zh:"已配置",en:"Configured"},"automation.ux.incomplete":{zh:"待配置",en:"Needs setup"},"automation.ux.finish":{zh:"保存与启用",en:"Save and enable"},"automation.ux.finishHint":{zh:"检查配置与启动方式",en:"Review setup and activation"},"automation.ux.addStep":{zh:"添加步骤",en:"Add a step"},"automation.ux.maxSteps":{zh:"最多添加 24 个步骤",en:"Up to 24 steps"},"automation.ux.setup":{zh:"节点配置",en:"Node configuration"},"automation.ux.setupHint":{zh:"选中画布节点,配置触发条件或动作。",en:"Select a canvas node to configure its trigger or action."},"automation.ux.savePaused":{zh:"保存为暂停",en:"Save paused"},"automation.ux.saveEnabled":{zh:"保存并启用",en:"Save and enable"},"automation.ux.enabledLabel":{zh:"保存后启用",en:"Enable after saving"},"automation.ux.enableHint":{zh:"暂停状态仍可试运行;启用后才响应触发条件。",en:"Paused workflows can still be tested. Enable them to respond to triggers."},"automation.ux.saved":{zh:"自动化已保存",en:"Automation saved"},"automation.ux.checklist":{zh:"还需完成",en:"Complete the setup"},"automation.ux.allReady":{zh:"配置已完成,可以保存",en:"Ready to save"},"automation.ux.review":{zh:"检查并保存",en:"Review and save"},"automation.ux.issue.name":{zh:"填写自动化名称",en:"Enter a workflow name"},"automation.ux.issue.trigger":{zh:"补全触发条件",en:"Complete the trigger settings"},"automation.ux.issue.steps":{zh:"至少添加一个动作",en:"Add at least one action"},"automation.ux.issue.notify":{zh:"填写通知标题",en:"Enter a notification title"},"automation.ux.issue.agent":{zh:"选择执行任务的 Agent",en:"Choose an agent"},"automation.ux.issue.prompt":{zh:"说明 Agent 需要完成的任务",en:"Describe the task for the agent"},"automation.ux.issue.table":{zh:"选择目标多维表",en:"Choose a database"},"automation.ux.issue.cells":{zh:"至少指定一个要写入的字段",en:"Add at least one field to write"},"automation.ux.issue.row":{zh:"指定记录 ID 或按列值匹配目标记录",en:"Set a row ID or match target rows by a column value"},"automation.ux.issue.match":{zh:"填写记录匹配值",en:"Enter a row matching value"},"automation.ux.issue.tool":{zh:"选择一个可用工具",en:"Choose an available tool"},"automation.ux.issue.args":{zh:"补全工具的必填参数",en:"Complete the required tool arguments"},"automation.ux.issue.json":{zh:"填写有效的 JSON 参数",en:"Enter valid JSON arguments"},"automation.ux.issue.cooldown":{zh:"填写有效的冷却时长",en:"Enter a valid cooldown duration"},"automation.ux.variables":{zh:"插入变量",en:"Insert variable"},"automation.ux.insertVariable":{zh:"为「{field}」插入变量",en:"Insert a variable into {field}"},"automation.ux.today":{zh:"今天的日期",en:"Today"},"automation.ux.now":{zh:"当前时间",en:"Current time"},"automation.ux.triggerRow":{zh:"触发记录",en:"Trigger row"},"automation.ux.rowId":{zh:"记录 ID",en:"Row ID"},"automation.ux.runHint":{zh:"试运行会真实执行已保存的动作。",en:"Testing executes the saved actions."},"automation.ux.dbRunHint":{zh:"表格规则试运行不携带触发行数据;行变量与默认触发行目标需要真实表格事件。",en:"Database tests have no triggering row. Row variables and default row targets require a real database event."},"automation.ux.runResults":{zh:"运行结果",en:"Run results"},"automation.ux.runEmpty":{zh:"还没有运行记录。可以先试运行一次,或等待触发条件满足。",en:"No runs yet. Test the workflow or wait for its trigger."},"automation.ux.runLoading":{zh:"正在读取运行记录…",en:"Loading runs…"},"automation.ux.runError":{zh:"无法读取运行记录,请重试。",en:"Could not load runs. Please retry."},"automation.ux.retry":{zh:"重试",en:"Retry"},"automation.ux.done":{zh:"已完成",en:"Completed"},"automation.ux.failed":{zh:"失败",en:"Failed"},"automation.ux.running":{zh:"运行中",en:"Running"},"automation.ux.queued":{zh:"排队中",en:"Queued"},"automation.ux.autoOrigin":{zh:"自动触发",en:"Automatic"},"automation.ux.manualOrigin":{zh:"手动执行",en:"Manual"},"automation.ux.stepResult":{zh:"步骤 {n} · {type}",en:"Step {n} · {type}"},"automation.ux.latestResults":{zh:"每步执行结果",en:"Step results"},"automation.ux.noSteps":{zh:"这次执行没有步骤结果。",en:"No step results were recorded for this run."},"automation.ux.systemHint":{zh:"系统助理",en:"System assistants"},"automation.ux.loadError":{zh:"自动化加载失败,请重试。",en:"Could not load automations. Please retry."}});
@@ -0,0 +1 @@
1
+ import{p as e}from"./pageStore-D_fKLv-o.js";const i=[["path",{d:"m14 10 7-7",key:"oa77jy"}],["path",{d:"M20 10h-6V4",key:"mjg0md"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M4 14h6v6",key:"rmj7iw"}]],t=e("minimize-2",i);export{t as M};
@@ -0,0 +1 @@
1
+ .mb-sheet-scrim.us-scrim{z-index:60}.us-sheet{display:flex;flex-direction:column;max-height:78%;padding-bottom:calc(10px + env(safe-area-inset-bottom))}.us-head{display:flex;align-items:center;gap:8px;padding:0 6px 4px 12px}.us-head-title{flex:1;min-width:0;font-size:var(--ui-font-title);line-height:var(--ui-line-title);font-weight:600}.us-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted)}.us-icon-btn:active{background:var(--bg-hover)}.us-body{overflow-y:auto;min-height:0}.us-section{padding:6px 0 2px}.us-section+.us-section{border-top:var(--border-width, 1px) solid var(--border);margin-top:6px}.us-section-title{display:flex;align-items:center;gap:6px;padding:8px 12px 4px;font-size:var(--ui-font-meta);line-height:var(--ui-line-meta);font-weight:500;color:var(--text-muted)}.us-section-toggle{width:100%;border:none;background:transparent;text-align:left;font:inherit}.us-section-toggle svg{transition:transform .16s ease}.us-section-toggle[aria-expanded=true] svg{transform:rotate(180deg)}.us-row.mb-sheet-row{padding:10px 12px;gap:12px;align-items:flex-start}.us-row[aria-disabled=true]{opacity:.55}.us-row-icon{flex:none;display:inline-flex;width:22px;justify-content:center;margin-top:1px;color:var(--text-light)}.us-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.us-row-title{display:flex;align-items:center;gap:6px;font-size:var(--ui-font-heading);line-height:var(--ui-line-heading);color:var(--text)}.us-row-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.us-row-sub{display:flex;align-items:center;gap:6px;font-size:var(--ui-font-meta);line-height:var(--ui-line-meta);color:var(--text-muted)}.us-row-sub .settings-status-dot{flex:none;box-shadow:none}.us-row-sub .settings-status-dot.warn{background:var(--warning)}.us-row-end{flex:none;align-self:center;display:inline-flex;align-items:center;gap:6px;color:var(--text-faint)}.us-pill{flex:none;font-style:normal;font-size:var(--ui-font-caption);line-height:var(--ui-line-caption);font-weight:500;padding:1px 7px;border-radius:var(--radius-pill);background:var(--accent-light);color:var(--accent-ink)}.us-pill.muted{background:var(--overlay-light);color:var(--text-muted)}.us-banner{margin:2px 12px 6px;padding:8px 10px;border-radius:var(--radius-md);background:var(--warning-light);color:var(--text-light);font-size:var(--ui-font-meta);line-height:var(--ui-line-meta)}.us-empty{padding:12px;font-size:var(--ui-font-body);line-height:var(--ui-line-body);color:var(--text-muted)}.us-self{display:flex;align-items:center;gap:12px;padding:8px 12px 10px}.us-self-text{flex:1;min-width:0;font-size:var(--ui-font-body);line-height:var(--ui-line-body);color:var(--text-light)}.us-btn{flex:none;padding:6px 12px;border-radius:var(--radius-sm);border:var(--border-width, 1px) solid var(--border);background:var(--bg-card);color:var(--text);font:inherit;font-size:var(--ui-font-body);line-height:var(--ui-line-body)}.us-btn:active{background:var(--bg-hover)}.us-btn.danger{color:var(--danger)}.us-confirm{margin:0 12px 10px;padding:10px;border-radius:var(--radius-md);background:var(--danger-light);display:flex;flex-direction:column;gap:8px;font-size:var(--ui-font-meta);line-height:var(--ui-line-meta);color:var(--text-light)}.us-confirm-actions{display:flex;justify-content:flex-end;gap:8px}.us-addr{padding:6px 12px 10px}.us-addr-desc{font-size:var(--ui-font-meta);line-height:var(--ui-line-meta);color:var(--text-muted);margin-bottom:8px}.us-addr-row{display:flex;gap:8px}.us-addr-row input{flex:1;min-width:0;padding:7px 10px;border-radius:var(--radius-sm);border:var(--border-width, 1px) solid var(--border);background:var(--bg-input);color:var(--text);font:inherit;font-size:var(--ui-font-body);line-height:var(--ui-line-body)}.bmc-chrome{position:fixed;inset:0;z-index:35;pointer-events:none;color:var(--text);font-family:var(--font-ui)}.bmc-top{position:absolute;top:calc(env(safe-area-inset-top) / var(--uiz, 1));left:0;right:0;display:flex;justify-content:space-between;gap:8px;padding:6px 8px}.bmc-capsule,.bmc-dock{position:relative;display:flex;align-items:center;gap:2px;padding:2px;pointer-events:auto;border-radius:var(--radius-pill)}.bmc-capsule:before,.bmc-dock:before{content:"";position:absolute;inset:0;z-index:-1;border:1px solid var(--border);border-radius:inherit;background:color-mix(in srgb,var(--bg-card) 88%,transparent);box-shadow:var(--card-shadow);backdrop-filter:blur(18px) saturate(1.8);-webkit-backdrop-filter:blur(18px) saturate(1.8)}:root[data-glass=off] .bmc-capsule:before,:root[data-glass=off] .bmc-dock:before{background:var(--bg-card);backdrop-filter:none;-webkit-backdrop-filter:none}.bmc-heading{min-width:0;max-width:65%}.bmc-actions{flex-shrink:0}.bmc-actions:empty{display:none}.bmc-chrome[data-mode=page]{z-index:55}body:has([data-browser-mobile-chrome][data-mode=page]) .settings-page[data-native-chrome]{padding-top:calc(var(--nc-top, 0) * 1px / var(--uiz, 1))}.bmc-button{width:36px;height:36px;flex:0 0 36px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:var(--radius-pill);background:transparent;color:inherit;cursor:pointer}.bmc-button:hover,.bmc-title:is(button):hover,.bmc-destination:hover,.bmc-sheet-row:hover{background:var(--bg-hover)}.bmc-title{display:flex;align-items:center;gap:5px;min-width:0;padding:0 12px;height:36px;font:inherit;font-size:var(--ui-font-body);font-weight:500;color:inherit;border:0;border-radius:var(--radius-pill);background:transparent}.bmc-title>span,.bmc-title>small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bmc-title>small{font-size:var(--ui-font-meta);color:var(--text-muted)}.bmc-title>svg{flex-shrink:0}.bmc-account{font-size:var(--ui-font-body)}.bmc-account>img{width:28px;height:28px;border-radius:50%;object-fit:cover}.bmc-dock{position:absolute;bottom:calc(env(safe-area-inset-bottom) / var(--uiz, 1) + 8px);left:50%;translate:-50% 0;width:min(500px,calc(100vw / var(--uiz, 1) - 16px));padding:4px}.bmc-destination{display:flex;flex:1 1 0;min-width:0;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:48px;padding:4px 2px;border:0;border-radius:var(--radius-pill);color:var(--text-muted);background:transparent;font-family:inherit;font-size:var(--ui-font-caption);line-height:var(--ui-line-caption);cursor:pointer}.bmc-destination>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.bmc-destination[aria-current]{background:var(--accent-light);color:var(--accent-ink)}.bmc-destination-icon{position:relative;display:flex}.bmc-badge{position:absolute;right:-4px;top:0;width:6px;height:6px;border-radius:50%;background:var(--accent-ink)}.bmc-badge[data-kind=attention]{background:var(--warning)}.bmc-badge[data-kind=unread]{background:var(--danger)}.bmc-sheet-dialog{position:fixed;inset:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:0;border:0;background:transparent;color:var(--text);overflow:hidden}.bmc-sheet-dialog[open]{display:flex;align-items:flex-end;justify-content:center}.bmc-sheet-dialog::backdrop{background:var(--overlay-scrim)}.bmc-sheet{width:100%;max-width:560px;max-height:min(85%,calc(100% - env(safe-area-inset-top)));padding:0 12px calc(12px + env(safe-area-inset-bottom));background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:var(--card-shadow);font-family:var(--font-ui);font-size:var(--ui-font-body);display:flex;flex-direction:column;min-height:0;animation:ui-menu-enter var(--menu-enter-duration) var(--menu-enter-ease)}.bmc-sheet-head{display:flex;align-items:center;gap:6px;flex-shrink:0}.bmc-sheet-head>strong{flex:1;min-width:0;font-size:var(--ui-font-heading);font-weight:500;overflow-wrap:anywhere}.bmc-sheet-body{overflow-y:auto;min-height:0;overscroll-behavior:contain}.bmc-sheet-search{margin:8px 0;flex-shrink:0}.bmc-sheet-section+.bmc-sheet-section{margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}.bmc-sheet-section-title,.bmc-sheet-note{color:var(--text-muted);font-size:var(--ui-font-meta);padding:4px 8px}.bmc-sheet-item{display:flex;align-items:center}.bmc-sheet-row{display:flex;align-items:center;gap:12px;flex:1;width:100%;min-width:0;min-height:44px;padding:8px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer}.bmc-sheet-row:disabled{color:var(--text-muted);cursor:default}.bmc-sheet-row[data-danger],.bmc-sheet-submit[data-danger]{color:var(--danger)}.bmc-sheet-icon{width:20px;height:20px;flex:0 0 20px}.bmc-sheet-copy{flex:1;min-width:0;overflow-wrap:anywhere}.bmc-sheet-copy>small{display:block;margin-top:3px;font-size:var(--ui-font-meta);color:var(--text-muted)}.bmc-sheet-row>svg:last-child{flex-shrink:0}.bmc-sheet-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.bmc-sheet-grid .bmc-sheet-row{flex-direction:column;text-align:center;gap:6px}.bmc-sheet-grid .bmc-sheet-row>svg:last-child:not(:first-child){display:none}.bmc-sheet-grid [aria-pressed=true]{background:var(--accent-light);color:var(--accent-ink)}.bmc-sheet-buttons{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.bmc-sheet-submit{display:block;min-height:36px;padding:6px 16px;margin:8px 0;border:0;border-radius:var(--radius-sm);background:var(--action-fill);color:var(--on-action);font:inherit;cursor:pointer}.bmc-sheet form>input{width:100%;margin-top:8px}@media(prefers-reduced-motion:reduce){.bmc-sheet{animation:none}}:root{--bmc-rail-w: 76px}html[data-browser-rail] .mb-shell{left:calc(var(--bmc-rail-w) + env(safe-area-inset-left) / var(--uiz, 1))}.bmc-rail{position:absolute;top:0;bottom:0;left:0;box-sizing:border-box;width:calc(var(--bmc-rail-w) + env(safe-area-inset-left) / var(--uiz, 1));display:flex;flex-direction:column;align-items:center;gap:4px;padding:calc(env(safe-area-inset-top) / var(--uiz, 1) + 8px) 0 calc(env(safe-area-inset-bottom) / var(--uiz, 1) + 10px) calc(env(safe-area-inset-left) / var(--uiz, 1));background:var(--bg);border-right:1px solid var(--border);pointer-events:auto}.bmc-rail-cells{flex:1 1 0;min-height:0;align-self:stretch;overflow:hidden;display:flex;flex-direction:column;align-items:center;gap:4px}.bmc-rail .bmc-destination{flex:none;width:62px;height:58px;min-height:0;border-radius:var(--radius-lg)}