@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
@@ -0,0 +1 @@
1
+ .amx-tip{position:fixed;z-index:95;max-width:320px;padding:5px 9px;border-radius:var(--radius-sm, 6px);background:var(--bg-card, var(--bg));color:var(--text);outline:.5px solid var(--border);outline-offset:-.5px;box-shadow:var(--card-shadow);font-family:var(--font-ui);font-size:var(--ui-font-meta, 12px);line-height:1.55;pointer-events:none;transform:translateY(-50%) translate(0) scale(1);transition:opacity .14s ease,transform .16s cubic-bezier(.22,1.4,.36,1)}.amx-tip>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.amx-tip-head{color:var(--text)}.amx-tip>div:not(.amx-tip-head){color:var(--text-muted);font-variant-numeric:tabular-nums}.amx-tip:before{content:"";position:absolute;top:50%;left:-3.5px;width:7px;height:7px;margin-top:-3.5px;border-radius:1px;background:inherit;transform:rotate(45deg);box-shadow:-.5px .5px 0 0 var(--border)}.amx-tip[data-flip]:before{left:auto;right:-3.5px;box-shadow:.5px -.5px 0 0 var(--border)}@starting-style{.amx-tip{opacity:0;transform:translateY(-50%) translate(-6px) scale(.94)}.amx-tip[data-flip]{transform:translateY(-50%) translate(6px) scale(.94)}}@media(prefers-reduced-motion:reduce){.amx-tip{transition:none}}.dash-stat{gap:4px}.dash-stat-value{font-size:var(--ui-font-display, 20px);font-weight:620;line-height:1.02;color:var(--text);font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:4px}.dash-stat-unit{font-size:.42em;font-weight:500;color:var(--text-muted)}.dash-stat-label{font-size:var(--ui-font-meta, 12px);color:var(--text-muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-stat-sub{font-size:var(--ui-font-caption, 11px);color:var(--text-faint, var(--text-muted))}.dash-chart{height:100%;display:flex;flex-direction:column;min-height:0;padding:10px 12px;gap:8px}.dash-chart-title{flex:0 0 auto;font-size:var(--ui-font-meta, 12px);font-weight:550;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-chart-body{flex:1 1 auto;min-height:0;display:flex}.dash-filterbar{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:6px 12px;border-bottom:var(--border-width, 1px) solid var(--border);background:var(--bg-card, var(--bg));font-size:var(--ui-font-meta, 12px)}.dash-filterbar-label{color:var(--text-faint, var(--text-muted));margin-right:2px}.dash-filter-chip{display:inline-flex;align-items:center;gap:5px;padding:2px 6px 2px 8px;border:var(--border-width, 1px) solid color-mix(in srgb,var(--primary) 32%,var(--border));border-radius:var(--radius-pill, 999px);background:color-mix(in srgb,var(--primary) 8%,transparent);color:var(--text)}.dash-filter-chip b{font-weight:550}.dash-filter-chip button{border:none;background:transparent;cursor:pointer;padding:0;display:inline-flex;color:var(--text-faint, var(--text-muted))}.dash-filter-chip button:hover{color:var(--danger, #e5484d)}.dash-filter-add{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-pill, 999px);cursor:pointer;border:var(--border-width, 1px) solid transparent;background:transparent;color:var(--text-muted)}.dash-filter-add:hover{border-color:color-mix(in srgb,var(--primary) 45%,var(--border));color:var(--text)}.dash-filter-editor{display:flex;flex-direction:column;gap:6px;padding:8px;min-width:200px}.dash-filter-editor select,.dash-filter-editor input{width:100%;font:inherit;font-size:var(--ui-font-meta, 12px);padding:4px 6px;border:var(--border-width, 1px) solid var(--border);border-radius:var(--radius-sm, 6px);background:var(--bg);color:var(--text)}.dash-filter-editor select:focus-visible,.dash-filter-editor input:focus-visible{outline:var(--focus-ring) solid var(--primary);outline-offset:1px}.dash-filter-commit{border:none;border-radius:var(--radius-sm, 6px);cursor:pointer;padding:5px 8px;font-size:var(--ui-font-meta, 12px);font-weight:550;background:var(--primary);color:var(--bg)}.dash-router-page{display:flex;flex-direction:column;width:100%;height:100%;min-height:0}.dash-router-page>.dash2,.dash-router-page>.dash3{flex:1 1 auto;min-height:0}.dash3{--dash3-page-pad-block-start: 18px;--dash3-page-pad-block-end: 28px;display:flex;flex-direction:column;min-height:0}.dash3-mode-btn{padding-inline:8px;font-weight:550}.dash3-host{position:relative;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;background:var(--bg-card, var(--bg));transition:background-color var(--dur-normal, .25s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1))}.dash3-host:not([data-locked]){background:color-mix(in srgb,var(--primary) 2.5%,var(--bg-card, var(--bg)))}.dash3-grid{width:min(100%,1180px);margin-inline:auto;display:grid;grid-template-columns:repeat(var(--dash3-cols, 12),minmax(0,1fr));grid-auto-rows:var(--dash3-row, 72px);gap:var(--dash3-gap, 12px);padding-block-start:var(--dash3-page-pad-block-start);padding-block-end:var(--dash3-page-pad-block-end);padding-inline:var(--dash3-gap, 12px);align-content:start}.dash3-card-slot{position:relative;min-width:0;min-height:0}.dash3-card-slot:has(.dash3-card[data-dragging]),.dash3-card-slot:has(.dash3-card[data-sizing]){z-index:5}.dash3-card{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;border:var(--border-width, 1px) solid transparent;border-radius:var(--radius-md, 12px);background:var(--bg);box-shadow:var(--card-shadow);container-type:inline-size;width:100%;height:100%;transition:background-color var(--dur-normal, .25s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)),border-color var(--dur-fast, .18s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)),box-shadow var(--dur-normal, .25s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)),opacity var(--dur-fast, .18s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1))}.dash3-card[data-surface=metric]{background:color-mix(in srgb,var(--primary) 6%,var(--bg));box-shadow:none}.dash3-card[data-surface=summary]{background:var(--bg);box-shadow:var(--card-shadow)}.dash3-card[data-surface=workspace]{background:var(--bg-card, var(--bg));box-shadow:none}.dash3-card[data-surface=note]{background:color-mix(in srgb,var(--bg) 82%,var(--bg-card));box-shadow:none}.dash3-card--chrome{border-color:transparent;background:transparent;box-shadow:none;overflow:visible;align-self:end}.dash3-card-head{flex:0 0 auto;display:flex;align-items:center;min-height:34px;gap:7px;padding-inline:12px 8px;border-bottom:var(--border-width, 1px) solid transparent;background:transparent;font-size:var(--ui-font-meta, 12px);font-weight:600;color:var(--text-muted);min-width:0}.dash3-card-icon{flex:0 0 auto;opacity:.72}.dash3-card-title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash3-card-open{flex:0 0 auto;width:24px;height:24px;border:var(--border-width, 1px) solid transparent;background:transparent;cursor:pointer;color:var(--text-faint, var(--text-muted));padding:0;border-radius:var(--radius-sm, 6px);display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .12s ease,color .12s ease,background-color .12s ease}.dash3-card:hover .dash3-card-open{opacity:1}.dash3-card-open:hover{color:var(--text);background:var(--overlay-light)}.dash3-card-open:focus-visible{opacity:1;outline:var(--focus-ring) solid var(--primary);outline-offset:1px}.dash3-card-body{flex:1 1 auto;min-width:0;min-height:0;overflow:hidden}.dash3-card[data-surface=workspace]>.dash3-card-body{overflow:auto}.dash3-card[data-kind=view]>.dash3-card-body{overflow:hidden}.dash3-card[data-kind=text]>.dash3-card-body{padding:10px 12px}.dash3-card--chrome>.dash3-card-body{padding:0}.dash-widget.dash-section{display:flex;align-items:baseline;justify-content:flex-start;gap:8px;min-width:0;height:100%;padding:10px 2px 2px;text-align:left}.dash-section-title{color:var(--text);font-size:var(--ui-font-body, 13px);font-weight:650;letter-spacing:.02em}.dash-section-note{overflow:hidden;color:var(--text-muted);font-size:var(--ui-font-meta, 12px);text-overflow:ellipsis;white-space:nowrap}.dash-viewcard--compact{overflow:hidden}.dash-viewcard--interactive{width:100%;height:100%;min-height:0;overflow:hidden}.dash-viewcard--interactive>.am-app{width:100%;height:100%;min-height:0}.dash3-shield{position:absolute;inset:0;z-index:2;cursor:grab;touch-action:none;background:transparent;border-radius:inherit;transition:background-color var(--dur-fast, .18s) var(--ease-apple, ease)}.dash3-shield:hover{background:color-mix(in srgb,var(--overlay-light, rgba(127, 127, 127, .06)) 50%,transparent)}.dash3-shield:focus-visible{outline:var(--focus-ring) solid var(--primary);outline-offset:-2px}.dash3-card[data-interact]{outline:1.5px solid var(--primary);outline-offset:1px}.dash3-card[data-dragging]{opacity:.35;outline:1.5px solid color-mix(in srgb,var(--primary) 35%,transparent);outline-offset:-1.5px}.dash3-card[data-dragging] .dash3-shield{cursor:grabbing}.dash3-card[data-dragging] .dash3-card-btn,.dash3-card[data-dragging] .dash3-grip{opacity:0!important}.dash3-card--lift{cursor:grabbing;box-shadow:0 1px 2px #00000014,0 16px 40px #0000002e;transform:scale(1.02)}.dash3-overlay-ghost{background:linear-gradient(180deg,color-mix(in srgb,var(--primary) 4%,transparent),transparent 62%)}.dash3 .dash-add-menu{animation:dash3-menu-in var(--dur-fast, .18s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)) both}.dash3 .dash-menu-scrim{animation:dash3-scrim-in var(--dur-fast, .18s) ease both}@keyframes dash3-menu-in{0%{opacity:0;transform:translateY(-5px) scale(.98)}to{opacity:1;transform:none}}@keyframes dash3-scrim-in{0%{opacity:0}to{opacity:1}}.dash3-card-btn{position:absolute;z-index:4;top:6px;width:24px;height:24px;align-items:center;justify-content:center;border:var(--border-width, 1px) solid color-mix(in srgb,var(--border) 72%,transparent);background:var(--bg);color:var(--text-faint, var(--text-muted));cursor:pointer;padding:0;border-radius:var(--radius-sm, 6px);display:inline-flex;opacity:0;transition:opacity .12s ease,color .12s ease,background-color .12s ease}.dash3-card-more{right:36px}.dash3-card-del{right:6px}.dash3-card:hover .dash3-card-btn{opacity:1}.dash3-card-more:hover{color:var(--text);background:var(--overlay-light)}.dash3-card-del:hover{color:var(--danger);background:var(--overlay-light)}.dash3-card-btn:focus-visible{opacity:1;outline:var(--focus-ring) solid var(--primary);outline-offset:1px}.dash3-grip{position:absolute;right:0;bottom:0;width:22px;height:22px;z-index:4;cursor:nwse-resize;touch-action:none;opacity:0;border-radius:var(--radius-sm, 6px) 0 0 0;background:color-mix(in srgb,var(--bg) 76%,transparent);transition:opacity .12s ease,background-color .12s ease}.dash3-host:not([data-locked]) .dash3-grip{opacity:.5}.dash3-card:hover .dash3-grip{opacity:1}.dash3-grip:after{content:"";position:absolute;right:5px;bottom:5px;width:8px;height:8px;border-right:2px solid color-mix(in srgb,var(--primary) 72%,var(--text-muted));border-bottom:2px solid color-mix(in srgb,var(--primary) 72%,var(--text-muted));border-bottom-right-radius:3px}.dash3-card[data-sizing]{outline:1.5px solid var(--primary);outline-offset:1px}.dash3-card[data-sizing] .dash3-grip{opacity:1}@starting-style{.dash3-host:not([data-locked]) .dash3-grip{opacity:0}}.dash3-empty{width:min(100%,680px);min-height:clamp(360px,64vh,560px);margin-inline:auto;padding-block:44px;padding-inline:24px;display:grid;place-items:center}.dash3-empty-panel{width:min(100%,460px)}.dash3-empty-mark{width:42px;height:42px;display:grid;place-items:center;border:var(--border-width, 1px) solid color-mix(in srgb,var(--primary) 24%,var(--border));border-radius:var(--radius-md, 12px);background:color-mix(in srgb,var(--primary) 8%,var(--bg));color:var(--primary)}.dash3-empty-copy{margin-top:16px}.dash3-empty-title{font-size:var(--ui-font-heading, 14px);line-height:1.3;font-weight:650;color:var(--text)}.dash3-empty-sub{margin-top:6px;max-width:38ch;font-size:var(--ui-font-body, 13px);line-height:1.55;color:var(--text-muted)}.dash3-templates{margin-top:20px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.dash3-template{min-width:0;min-height:76px;display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;align-items:center;padding-block:12px;padding-inline:12px;border:var(--border-width, 1px) solid transparent;border-radius:var(--radius-md, 12px);background:var(--bg);box-shadow:var(--card-shadow);cursor:pointer;text-align:left;transition:transform .14s ease,border-color .14s ease,background-color .14s ease}.dash3-template:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--primary) 48%,var(--border));background:color-mix(in srgb,var(--primary) 3%,var(--bg))}.dash3-template:active{transform:translateY(0)}.dash3-template:focus-visible{outline:var(--focus-ring) solid var(--primary);outline-offset:2px}.dash3-template-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:var(--radius-sm, 8px);background:color-mix(in srgb,var(--primary) 8%,var(--bg-card, var(--bg)));color:var(--primary)}.dash3-template-copy{min-width:0;display:flex;flex-direction:column;gap:3px}.dash3-template-name{font-size:var(--ui-font-body, 13px);line-height:1.25;font-weight:650;color:var(--text)}.dash3-template-hint{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ui-font-caption, 11px);color:var(--text-muted)}.dash3-size-dim{margin-left:auto;color:var(--text-faint, var(--text-muted));font-variant-numeric:tabular-nums}.dash3-card--chrome .dash-section{padding-inline:4px}.dash3-card--chrome .dash-section-title{font-size:var(--ui-font-body, 13px);line-height:1.35;font-weight:650;letter-spacing:0}@media(max-width:560px){.dash3-empty{padding-inline:16px}.dash3-templates{grid-template-columns:minmax(0,1fr)}}@media(prefers-reduced-motion:reduce){.dash3-host,.dash3-card,.dash-compact-row,.dash3-template,.dash3-card-open,.dash3-card-btn,.dash3-grip,.dash3-shield{transition-duration:.01ms}.dash3 .dash-add-menu,.dash3 .dash-menu-scrim{animation:none}}
@@ -0,0 +1 @@
1
+ import{u as w,r as j,j as e,aY as T,a as L}from"./index-YuejkHoJ.js";import{u as M,$ as F}from"./dbStore-Bc2lC8ZI.js";import{ad as P,h as A,a7 as O}from"./pageStore-D_fKLv-o.js";import"./client-DD5czSuF.js";import{pd as $,pe as y,pf as q,pg as R,ph as B,pi as U,pj as k,pk as z,o3 as H,pl as Y,pm as _,pn as K,o2 as W,po as V,nV as I,lq as S,pp as X,pq as G,pr as J,K as Q,ex as Z,ps as ee}from"./appStore-BskcSDl6.js";import{C as ae}from"./chevron-up-C_EDOZzI.js";L({"evcard.editEvent":{zh:"编辑事件:{title}",en:"Edit event: {title}"},"evcard.untitled":{zh:"未命名",en:"Untitled"},"evcard.close":{zh:"关闭",en:"Close"},"evcard.name":{zh:"名称",en:"Name"},"evcard.done":{zh:"完成",en:"Done"},"evcard.openNote":{zh:"打开笔记",en:"Open note"},"evcard.openDb":{zh:"打开多维表",en:"Open database"},"evcard.delete":{zh:"删除",en:"Delete"},"evcard.actions":{zh:"事件操作",en:"Event actions"},"evcard.expand":{zh:"展开详情",en:"Expand details"},"evcard.rowlinkReadonly":{zh:"关联表列请在表格里编辑",en:"Edit related rows in the table"},"evcard.noOptions":{zh:"(无选项,请在表格里添加)",en:"(No options — add them in the table)"}});function te(n,{w:r=360,h:a=380,maxRight:x}={}){const c=n.zoom||1,l=Math.min(r,window.innerWidth/c-16),o=a,i=8*c;let m=n.right+i;m+l*c>(x??window.innerWidth)&&(m=Math.max(i,n.left-l*c-i));const t=Math.max(i,Math.min(n.top,window.innerHeight-o*c-i));return{left:m/c,top:t/c,...l<r?{width:l}:{}}}const ne={text:I,number:V,checkbox:W,date:R,select:K,multiselect:_,url:Y,page:H};function se({col:n}){const r=z(n.type);if(r?.icon)return e.jsx(e.Fragment,{children:r.icon});const a=ne[S(n.type)]??I;return e.jsx(a,{})}function he({ev:n,at:r,onClose:a,maxRight:x,calendar:c=!1,onActions:l,actions:o,collapsed:i=!1,onExpand:m,focusTitle:t=!1}){const{t:d}=w(),p=c&&(P==="mobile"||!!window.tangu?.mobile),h=te(r,{maxRight:x}),u=j.useRef(null),f=j.useRef(null),b=j.useRef(a);return b.current=a,A(p?{mode:"page",title:n.db.name,back:d("evcard.close"),onBack:()=>{!window.dispatchEvent(new Event("forsion:mobile-back",{cancelable:!0}))||a()}}:null),j.useEffect(()=>{const s=document.activeElement instanceof HTMLElement?document.activeElement:null,N=window.requestAnimationFrame(()=>{const v=u.current?.querySelector(".amx-cal-card-title:not(.amx-cal-card-title-ro)");(!c||t)&&(v??f.current)?.focus()}),C=v=>{if(v.key==="Escape"){v.preventDefault(),b.current();return}if(c||v.key!=="Tab"||!u.current)return;const g=Array.from(u.current.querySelectorAll('button:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])'));if(!g.length)return;const E=g[0],D=g[g.length-1];v.shiftKey&&document.activeElement===E?(v.preventDefault(),D.focus()):!v.shiftKey&&document.activeElement===D&&(v.preventDefault(),E.focus())};return window.addEventListener("keydown",C),()=>{window.cancelAnimationFrame(N),window.removeEventListener("keydown",C),s?.focus()}},[c,t]),e.jsx("div",{className:`amx-cal-cardcatch${c?" calendar":""}${p?" mobile":""}`,onMouseDown:c?void 0:a,children:e.jsxs("div",{className:`amx-cal-cardwrap${p?" amx-cal-drawer":""}${i?" collapsed":""}`,ref:u,role:"dialog","aria-modal":!c,"aria-label":d("evcard.editEvent",{title:n.title||d("evcard.untitled")}),"data-kb-rise":p?"bar":void 0,style:p?void 0:h,onMouseDown:s=>s.stopPropagation(),children:[p&&e.jsx("button",{className:"amx-cal-drawer-grab","aria-label":d("evcard.expand"),onClick:m,onPointerDown:s=>{s.currentTarget.dataset.y=String(s.clientY),s.currentTarget.setPointerCapture(s.pointerId)},onPointerUp:s=>{s.clientY-Number(s.currentTarget.dataset.y)>55?a():m?.()},children:e.jsx("span",{})}),o??(i?e.jsxs("div",{className:"amx-cal-drawer-summary",children:[e.jsx("button",{className:"amx-cal-card-x",onClick:m,"aria-label":d("evcard.expand"),children:e.jsx(ae,{size:18})}),e.jsxs("div",{children:[e.jsx("strong",{children:n.title||d("evcard.untitled")}),e.jsxs("span",{children:[y(n.raw)?.head," ",y(n.raw)?.badge]})]}),e.jsx("button",{className:"amx-cal-card-x",onClick:a,"aria-label":d("evcard.close"),children:"×"})]}):e.jsx(ce,{ev:n,onClose:a,closeRef:f,onActions:l}))]})})}function ce({ev:n,onClose:r,closeRef:a,onActions:x}){const{t:c}=w(),{db:l,row:o,title:i}=n,m=!l.readonly,t=n.color??"var(--accent, #6c5ce7)",d=!l.readonly&&l.path!==F||!!l.openRow;return e.jsxs("div",{className:"amx-cal-cardin",children:[e.jsxs("div",{className:"amx-cal-card-top",children:[e.jsxs("span",{className:"amx-cal-card-src",children:[e.jsx("span",{className:"amx-cal-card-dot",style:{background:t}}),l.name]}),e.jsxs("span",{className:"amx-cal-card-buttons",children:[x&&e.jsx("button",{className:"amx-cal-card-x",onClick:x,"aria-label":c("evcard.actions"),children:e.jsx(O,{size:18})}),e.jsx("button",{className:"amx-cal-card-x",ref:a,onClick:r,"aria-label":c("evcard.close"),children:"×"})]})]}),e.jsx(re,{db:l,row:o,colId:n.colId??void 0,title:i,raw:n.raw}),(d||m)&&e.jsxs("div",{className:"amx-cal-card-foot",children:[d&&e.jsxs("button",{className:"amx-cal-card-open",onClick:()=>{l.openRow?l.openRow(o.rowId):Z(l.path),r()},children:[e.jsx(Q,{size:13})," ",l.openRow?c("evcard.openNote"):c("evcard.openDb")]}),m&&!x&&e.jsx("button",{className:"amx-cal-card-del",onClick:()=>{ee(l,o,i),r()},children:c("evcard.delete")})]})]})}function re({db:n,row:r,colId:a,title:x=r.name,raw:c,lock:l=!1}){const{t:o}=w(),i=l||!!n.readonly&&!n.writeCell||$(n.columns.find(s=>s.id===a)?.type??""),m=!l&&!n.readonly,t=n.columns[0],d=m&&!(n.isNoteView&&t?.type==="page"),p=n.columns.filter(s=>s.id!==t?.id&&s.id!==a),h=c??(a&&typeof r.cells[a]=="string"?r.cells[a]:""),u=a?y(h):null,[f,b]=j.useState(!1);return j.useEffect(()=>{if(!f)return;const s=N=>{N.preventDefault(),N.stopImmediatePropagation(),N.detail?.probe||b(!1)};return window.addEventListener("forsion:mobile-back",s,!0),()=>window.removeEventListener("forsion:mobile-back",s,!0)},[f]),e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"amx-cal-card-head",children:d?e.jsx("input",{className:"amx-cal-card-title","aria-label":o("evcard.name"),value:x,placeholder:o("evcard.untitled"),onChange:s=>q(n,r.rowId,s.target.value)}):e.jsx("div",{className:"amx-cal-card-title amx-cal-card-title-ro",children:x||o("evcard.untitled")})}),a&&e.jsxs("div",{className:"amx-cal-card-row amx-cal-card-timerow",children:[e.jsx("span",{className:"amx-cal-card-ico",children:e.jsx(R,{})}),e.jsxs("div",{className:"amx-cal-card-timebody",children:[u&&!(f&&!i)&&e.jsxs("button",{type:"button",className:"amx-cal-card-timebtn",disabled:i,onClick:()=>b(!0),children:[e.jsxs("span",{className:"amx-cal-card-timehead",children:[u.head,u.badge&&e.jsx("span",{className:"amx-cal-card-badge",children:u.badge})]}),u.date&&e.jsx("span",{className:"amx-cal-card-timesub",children:u.date})]}),!i&&(f||!u)&&e.jsxs("div",{className:"amx-cal-card-timeedit",children:[e.jsx(B,{value:h,onChange:s=>U(n,r,a,h,s??"",x),autoFocus:f}),u&&e.jsx("button",{type:"button",className:"amx-cal-card-timedone",onClick:()=>b(!1),children:o("evcard.done")})]})]})]}),p.length>0&&e.jsx("div",{className:"amx-cal-card-props",children:p.map(s=>e.jsxs("div",{className:"amx-cal-card-row amx-cal-card-prop",children:[e.jsxs("span",{className:"amx-cal-card-key",children:[e.jsx("span",{className:"amx-cal-card-ico",children:e.jsx(se,{col:s})}),e.jsx("span",{className:"amx-cal-card-keyt",children:s.name})]}),e.jsx("div",{className:"amx-cal-card-ctl",children:m?e.jsx(ie,{db:n,row:r,col:s}):e.jsx("span",{className:"amx-cal-card-val",children:k(r.cells[s.id])||"—"})})]},s.id))})]})}const le=new Set(["rowlink","lookup","formula","file"]);function ie({db:n,row:r,col:a}){const{t:x}=w(),c=z(a.type),l=S(a.type),o=T(r.cells[a.id],l),i=t=>J(n,r.rowId,a.id,t),m=M(t=>a.type==="rowlink"&&a.refDb?t.entries[a.refDb]?.data??null:null);if(c){const t=c.Cell;return e.jsx(t,{value:o,column:a,onChange:i})}if(le.has(a.type)){const t=r.cells[a.id];let d=k(t);return a.type==="rowlink"&&m&&(d=X(t).map(p=>{const h=m.rows.find(u=>u.id===p);return h?G(m,h,a.titleCol):"已失联"}).join(", ")),e.jsx("span",{className:"amx-cal-card-val",title:a.type==="rowlink"?x("evcard.rowlinkReadonly"):void 0,children:d||"—"})}switch(l){case"checkbox":return e.jsx("input",{"aria-label":a.name,className:"amx-cal-card-check",type:"checkbox",checked:o===!0,onChange:t=>i(t.target.checked?!0:void 0)});case"number":return e.jsx("input",{className:"amx-cal-card-input","aria-label":a.name,type:"number",value:o??"",onChange:t=>t.target.value===""?i(void 0):Number.isFinite(Number(t.target.value))&&i(Number(t.target.value))});case"date":return e.jsx("input",{"aria-label":a.name,className:"amx-cal-card-input",type:"date",value:o,onChange:t=>i(t.target.value||void 0)});case"select":return e.jsxs("select",{"aria-label":a.name,className:"amx-cal-card-input amx-cal-card-select",value:o,onChange:t=>i(t.target.value||void 0),children:[e.jsx("option",{value:"",children:"—"}),(a.options??[]).map(t=>e.jsx("option",{value:t,children:t},t))]});case"multiselect":{const t=o??[];return e.jsxs("div",{className:"amx-cal-card-chips",children:[(a.options??[]).map(d=>{const p=t.includes(d);return e.jsx("button",{className:`amx-cal-card-chip${p?" on":""}`,"aria-pressed":p,onClick:()=>{const h=p?t.filter(u=>u!==d):[...t,d];i(h.length?h:void 0)},children:d},d)}),(a.options??[]).length===0&&e.jsx("span",{className:"amx-cal-card-key",children:x("evcard.noOptions")})]})}case"page":return e.jsx("span",{className:"amx-cal-card-val",children:k(r.cells[a.id])||"—"});default:return e.jsx("input",{"aria-label":a.name,className:"amx-cal-card-input",value:o,onChange:t=>i(t.target.value||void 0)})}}export{he as E,re as R,te as c};
@@ -0,0 +1 @@
1
+ import{u as oe,r as c,j as t,t as be,a as De,cn as Ct,co as Lt}from"./index-YuejkHoJ.js";import{p as At,c as Pt,d as Dt,s as Tt,C as ne,f as It,h as nt,n as Ft,u as Ot,r as Ht,i as Bt,E as _t,M as L,j as $t,F as Vt,k as Yt,g as Ut}from"./PenRow-DCOIGlfY.js";import{p as Ge,Z as Xt,U as ot,bA as Kt,T as ze}from"./pageStore-D_fKLv-o.js";import{F as qt,T as Gt,H as Zt}from"./type-CMyP4cKt.js";import{eF as Wt,pt as Jt,gZ as ft,ee as ht,mu as xt,aD as bt,d3 as Qt,df as en,aN as gt,eV as tn}from"./appStore-BskcSDl6.js";import{P as nn}from"./pencil-BgF4Kiqp.js";import{G as on,a as an,p as ge,l as at,o as Me,b as Ke,e as Ne,c as xe,d as Ye,f as le,g as Ue,h as ke,i as rt,j as st,M as ct,k as rn,P as sn}from"./drawingStore-BD5m2eqn.js";import{P as cn}from"./pen-line-ho1GgAe2.js";import{M as vt}from"./magnet-BmVcZ9U4.js";import{M as ln}from"./minimize-2-Bq4vUin-.js";import"./client-DD5czSuF.js";import"./pen-tool-CV-FKFEZ.js";import"./react-DOzedx9n.js";import"./dbStore-Bc2lC8ZI.js";import"./ipc-8cxXGSZK.js";import"./nativeDownload-DlnT8U-y.js";const dn=[["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z",key:"1f1r0c"}]],wt=Ge("diamond",dn);const un=[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}]],pn=Ge("focus",un);const mn=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]],yt=Ge("grid-3x3",mn),Le=["left","mid","right"],W={left:["lock","hand"],mid:["selection","shape","line","freedraw","highlighter","text","eraser"],right:["frame","laser"]},fn=[...W.left,...W.mid,...W.right],Te="amx.boardToolbar",ve=new Set;let Z=null;const hn=e=>e<9?String(e+1):e===9?"0":null;function Et(e){const n=new Set,p={left:[],mid:[],right:[]},s=e??{};for(const u of Le)for(const a of Array.isArray(s[u])?s[u]:[])typeof a!="string"||!fn.includes(a)||n.has(a)||(n.add(a),p[u].push(a));for(const u of Le)for(const a of W[u])n.has(a)||p[u].push(a);return p}const we=()=>{if(Z)return Z;try{const e=localStorage.getItem(Te);if(e)return Z=Et(JSON.parse(e))}catch{}return Z=W},xn=e=>{Z=Et(e);try{localStorage.setItem(Te,JSON.stringify(Z))}catch{}for(const n of ve)n()},bn=()=>{Z=W;try{localStorage.removeItem(Te)}catch{}for(const e of ve)e()},gn=e=>Le.every(n=>e[n].length===W[n].length&&e[n].every((p,s)=>p===W[n][s])),jt=e=>(ve.add(e),()=>ve.delete(e));function vn(e,n,p,s){const u={left:[...e.left],mid:[...e.mid],right:[...e.right]};for(const a of Le){const d=u[a].indexOf(n);d>=0&&u[a].splice(d,1)}return u[p].splice(Math.max(0,Math.min(s,u[p].length)),0,n),u}typeof window<"u"&&window.addEventListener("storage",e=>{if(e.key===Te){Z=null;for(const n of ve)n()}});De({"boardtoolbar.shapeRectangle":{zh:"矩形",en:"Rectangle"},"boardtoolbar.shapeDiamond":{zh:"菱形",en:"Diamond"},"boardtoolbar.shapeEllipse":{zh:"椭圆",en:"Ellipse"},"boardtoolbar.lineArrow":{zh:"箭头",en:"Arrow"},"boardtoolbar.lineSegment":{zh:"线段",en:"Line"},"boardtoolbar.toolLock":{zh:"保持工具选中",en:"Keep tool selected"},"boardtoolbar.toolHand":{zh:"抓手",en:"Hand"},"boardtoolbar.toolSelection":{zh:"选择",en:"Selection"},"boardtoolbar.toolShape":{zh:"形状",en:"Shape"},"boardtoolbar.toolLine":{zh:"线",en:"Line"},"boardtoolbar.toolFreedraw":{zh:"画笔",en:"Draw"},"boardtoolbar.toolHighlighter":{zh:"荧光笔",en:"Highlighter"},"boardtoolbar.toolText":{zh:"文字",en:"Text"},"boardtoolbar.toolEraser":{zh:"橡皮",en:"Eraser"},"boardtoolbar.toolFrame":{zh:"画框",en:"Frame"},"boardtoolbar.toolLaser":{zh:"激光笔",en:"Laser pointer"}});const Ae=["rectangle","diamond","ellipse"],Pe=["arrow","line"],wn=()=>({shape:"rectangle",line:"arrow"}),yn={rectangle:bt,diamond:wt,ellipse:xt},En={arrow:ht,line:ft},it={get rectangle(){return be("boardtoolbar.shapeRectangle")},get diamond(){return be("boardtoolbar.shapeDiamond")},get ellipse(){return be("boardtoolbar.shapeEllipse")}},lt={get arrow(){return be("boardtoolbar.lineArrow")},get line(){return be("boardtoolbar.lineSegment")}},jn={lock:"boardtoolbar.toolLock",hand:"boardtoolbar.toolHand",selection:"boardtoolbar.toolSelection",shape:"boardtoolbar.toolShape",line:"boardtoolbar.toolLine",freedraw:"boardtoolbar.toolFreedraw",highlighter:"boardtoolbar.toolHighlighter",text:"boardtoolbar.toolText",eraser:"boardtoolbar.toolEraser",frame:"boardtoolbar.toolFrame",laser:"boardtoolbar.toolLaser"};function St(e,n,p){const s=n.getAppState();switch(e){case"lock":n.setActiveTool({...s.activeTool,locked:!s.activeTool.locked});return;case"shape":n.setActiveTool({type:p.group.current.shape});return;case"line":n.setActiveTool({type:p.group.current.line});return;case"freedraw":Pt(n,p.pen),n.setActiveTool({type:"freedraw"});return;case"highlighter":At(n,p.pen,"highlighter");return;default:n.setActiveTool({type:e})}}function Sn(e,n){switch(e){case"lock":return en;case"hand":return Zt;case"selection":return Qt;case"shape":return yn[n.shape];case"line":return En[n.line];case"freedraw":return nn;case"highlighter":return Jt;case"text":return Gt;case"eraser":return Wt;case"frame":return qt;case"laser":return Xt}}function zn(e,n,p){const s=n.tool;switch(e){case"lock":return n.locked;case"shape":return Ae.includes(s);case"line":return Pe.includes(s);case"freedraw":return s==="freedraw"&&p.active!=="highlighter";case"highlighter":return s==="freedraw"&&p.active==="highlighter";default:return s===e}}const dt=["left","mid","right"];function Mn({api:e,ui:n,refs:p}){const{t:s}=oe(),u=c.useSyncExternalStore(jt,we,we),[a,d]=c.useState(null),l=c.useRef(null),h=c.useRef(null),i=a?.layout??u;if(!e)return null;const v=p.group.current,g=p.pen.current,j=(x,w)=>{const E=h.current;if(!E)return null;let M=null,G=1/0;for(const S of dt){const V=E.querySelector(`[data-seg="${S}"]`);if(!V)continue;const f=V.getBoundingClientRect();if(x>=f.left&&x<=f.right){M=S;break}const T=x<f.left?f.left-x:x-f.right;T<G&&(G=T,M=S)}if(!M)return null;const I=[...E.querySelectorAll(`[data-seg="${M}"] [data-tool]`)];let A=I.length;for(let S=0;S<I.length;S++){const V=I[S].getBoundingClientRect();if(x<V.left+V.width/2){A=S;break}}const D=I.findIndex(S=>S.dataset.tool===w);return D>=0&&D<A&&A--,{seg:M,index:A}},k=(x,w)=>{x.button===0&&(l.current={x:x.clientX,y:x.clientY,id:w,moved:!1},x.currentTarget.setPointerCapture(x.pointerId))},H=x=>{const w=l.current;if(!w||!w.moved&&Math.hypot(x.clientX-w.x,x.clientY-w.y)<5)return;w.moved=!0;const E=j(x.clientX,w.id);E&&d({id:w.id,layout:vn(u,w.id,E.seg,E.index)})},R=c.useRef(0),B=x=>{const w=l.current;l.current=null,x.currentTarget.releasePointerCapture?.(x.pointerId),R.current=w?.moved?Date.now():0,w?.moved&&a&&xn(a.layout),d(null)},z=x=>{if(Date.now()-R.current<400){R.current=0;return}St(x,e,p)};return t.jsx("div",{className:"amx-toolbar",ref:h,"data-dragging":a?"":void 0,children:dt.map((x,w)=>t.jsxs("div",{className:"amx-toolbar-seg","data-seg":x,children:[w>0&&t.jsx("span",{className:"amx-toolbar-sep","aria-hidden":!0}),i[x].map((E,M)=>{const G=Sn(E,v),I=zn(E,n,g),A=x==="mid"?hn(M):null,D=s(jn[E]);return t.jsxs("button",{type:"button","data-tool":E,"data-on":I||void 0,"data-drag":a?.id===E||void 0,className:"amx-tool",title:A?`${D} — ${A}`:D,"aria-label":D,"aria-pressed":I,onPointerDown:S=>k(S,E),onPointerMove:H,onPointerUp:B,onClick:()=>z(E),onPointerCancel:()=>{l.current=null,R.current=0,d(null)},children:[t.jsx(G,{size:17}),A&&t.jsx("span",{className:"amx-tool-key",children:A})]},E)})]},x))})}De({"panelextras.secPen":{zh:"笔",en:"Pen"},"panelextras.secStroke":{zh:"笔触",en:"Stroke"},"panelextras.capRound":{zh:"圆头",en:"Round cap"},"panelextras.capButt":{zh:"方头",en:"Flat cap"},"panelextras.secShape":{zh:"形状",en:"Shape"},"panelextras.secLine":{zh:"线",en:"Line"}});const Nn={rectangle:bt,diamond:wt,ellipse:xt},kn={arrow:ht,line:ft};function Re({title:e,children:n}){return t.jsxs("fieldset",{className:"amx-panelsec",children:[t.jsx("legend",{children:e}),n]})}function Rn({api:e,ui:n,pen:p,group:s}){const{t:u}=oe();if(!e)return null;const a=n.tool;if(a==="freedraw"){const d=p.current.active==="highlighter";return t.jsxs(t.Fragment,{children:[t.jsx(Re,{title:u("panelextras.secPen"),children:t.jsx(Dt,{api:e,ui:n,state:p})}),d&&t.jsx(Re,{title:u("panelextras.secStroke"),children:t.jsx("div",{className:"amx-panelrow buttonList",children:[!1,!0].map(l=>{const h=n.capRound===l,i=u(l?"panelextras.capRound":"panelextras.capButt");return t.jsx("label",{className:h?"active":"",title:i,"data-on":h||void 0,onClick:()=>Tt(e,l),children:t.jsx("svg",{width:"18",height:"18",viewBox:"0 0 18 18","aria-label":i,children:t.jsx("line",{x1:"4",y1:"9",x2:"14",y2:"9",stroke:"currentColor",strokeWidth:"7",strokeLinecap:l?"round":"butt"})})},String(l))})})})]})}return Ae.includes(a)?t.jsx(Re,{title:u("panelextras.secShape"),children:t.jsx("div",{className:"amx-panelrow buttonList",children:Ae.map(d=>{const l=Nn[d],h=a===d;return t.jsx("label",{className:h?"active":"",title:it[d],"data-on":h||void 0,onClick:()=>{s.current.shape=d,e.setActiveTool({type:d})},children:t.jsx(l,{size:16,"aria-label":it[d]})},d)})})}):Pe.includes(a)?t.jsx(Re,{title:u("panelextras.secLine"),children:t.jsx("div",{className:"amx-panelrow buttonList",children:Pe.map(d=>{const l=kn[d],h=a===d;return t.jsx("label",{className:h?"active":"",title:lt[d],"data-on":h||void 0,onClick:()=>{s.current.line=d,e.setActiveTool({type:d})},children:t.jsx(l,{size:16,"aria-label":lt[d]})},d)})})}):null}const zt=()=>({tool:"selection",locked:!1,snapshot:null,capRound:null,grid:!1,gridSize:20,gridStep:5,snap:!1,view:!1,zen:!1,pen:!1,penDetected:!1,idle:!0}),Cn=Object.keys(zt()),Ln=(e,n)=>Cn.every(p=>e[p]===n[p]);De({"boardview.island":{zh:"视图",en:"View"},"boardview.grid":{zh:"网格",en:"Grid"},"boardview.snap":{zh:"吸附至对象",en:"Snap to objects"},"boardview.view":{zh:"查看模式",en:"View mode"},"boardview.zen":{zh:"禅模式",en:"Zen mode"},"boardview.full":{zh:"全屏",en:"Full screen"},"boardview.exitFull":{zh:"退出全屏",en:"Exit full screen"},"boardview.pen":{zh:"笔模式",en:"Pen mode"},"boardview.gridShow":{zh:"显示网格,拖动时吸附到格点",en:"Show grid and snap to it"},"boardview.gridShowPaper":{zh:"显示网格",en:"Show grid"},"boardview.gridSize":{zh:"格距",en:"Grid size"},"boardview.gridMajor":{zh:"粗线间隔",en:"Major every"},"boardview.gridMajorPost":{zh:"格",en:"cells"},"boardview.gridDir":{zh:"方向",en:"Direction"},"boardview.dirBoth":{zh:"方格",en:"Both"},"boardview.dirH":{zh:"只横线",en:"Horizontal"},"boardview.dirV":{zh:"只竖线",en:"Vertical"},"boardview.opacity":{zh:"淡浓",en:"Opacity"},"boardview.noSnapHint":{zh:"拖动时按住 {key} 临时不吸附",en:"Hold {key} while dragging to skip snapping"},"boardview.paperNoSnap":{zh:"纸张模式下网格只画线,不吸附",en:"In paper mode the grid is drawn only, without snapping"}});const Mt=typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.userAgent),qe=Mt?"Cmd":"Ctrl",Xe=Mt?"Option":"Alt",An=[{id:"both",labelKey:"boardview.dirBoth"},{id:"h",labelKey:"boardview.dirH"},{id:"v",labelKey:"boardview.dirV"}];function Pn({ui:e,grid:n,onToggle:p,full:s,onFull:u}){const{t:a}=oe(),[d,l]=c.useState(!1),h=c.useRef(null);c.useEffect(()=>{if(!d)return;const v=j=>{h.current?.contains(j.target)||l(!1)},g=j=>{j.key==="Escape"&&(j.preventDefault(),l(!1))};return window.addEventListener("pointerdown",v,!0),window.addEventListener("keydown",g,!0),()=>{window.removeEventListener("pointerdown",v,!0),window.removeEventListener("keydown",g,!0)}},[d]),c.useEffect(()=>{const v=h.current;e.zen&&v?.contains(document.activeElement)&&v.closest(".excalidraw-container")?.focus({preventScroll:!0})},[e.zen]);const i=(v,g,j,k,H,R)=>t.jsx("button",{type:"button",className:"amx-tool","data-view":v,"data-on":k||void 0,"aria-pressed":k,"aria-label":j,title:j,onClick:H,...R,children:t.jsx(g,{size:17})},v);return t.jsxs("div",{className:"amx-viewisle-wrap",ref:h,"data-viewmode":e.view||void 0,children:[d&&t.jsx(Dn,{grid:n}),t.jsxs("div",{className:"amx-viewisle",role:"toolbar","aria-label":a("boardview.island"),children:[e.penDetected&&i("pen",cn,a("boardview.pen"),e.pen,()=>p("pen")),i("grid",yt,`${a("boardview.grid")} — ${qe}+'`,n.model.on,()=>{n.set({on:!n.model.on}),l(!n.model.on)},{onContextMenu:v=>{v.preventDefault(),l(!0)}}),i("snap",vt,`${a("boardview.snap")} — ${Xe}+S`,e.snap,()=>p("snap")),i("view",gt,`${a("boardview.view")} — ${Xe}+R`,e.view,()=>p("view")),i("zen",pn,`${a("boardview.zen")} — ${Xe}+Z`,e.zen,()=>p("zen")),i("full",s?ln:tn,a(s?"boardview.exitFull":"boardview.full"),s,u)]})]})}function Dn({grid:e}){const{t:n}=oe(),{model:p,major:s,opacity:u}=e,[a,d]=c.useState(u);return c.useEffect(()=>d(u),[u]),t.jsx("div",{className:"amx-gridpop",role:"dialog","aria-label":n("boardview.grid"),children:t.jsxs("div",{className:"amx-bs",children:[t.jsxs("div",{className:"amx-gridpop-h",children:[t.jsx("span",{children:n("boardview.grid")}),t.jsxs("span",{className:"amx-gridpop-kbd",children:[qe,"+'"]})]}),t.jsxs("label",{className:"amx-bs-check",children:[t.jsx("input",{type:"checkbox",checked:p.on,onChange:l=>e.set({on:l.target.checked})}),t.jsx("span",{className:"amx-bs-lbl",children:e.snaps?n("boardview.gridShow"):n("boardview.gridShowPaper")})]}),t.jsxs("div",{className:"amx-gridpop-nums",children:[t.jsx("span",{className:"amx-bs-lbl",children:n("boardview.gridSize")}),t.jsx(ut,{value:p.size,min:an,max:on,onCommit:l=>e.set({size:l})}),t.jsx("span",{className:"amx-bs-note",children:"px"}),s!==null&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"amx-bs-lbl",children:n("boardview.gridMajor")}),t.jsx(ut,{value:s,min:1,max:100,onCommit:l=>e.set({major:l})}),t.jsx("span",{className:"amx-bs-note",children:n("boardview.gridMajorPost")})]})]}),t.jsx("div",{className:"amx-bs-h",children:n("boardview.gridDir")}),t.jsx("div",{className:"amx-bs-row",children:An.map(l=>t.jsx("button",{type:"button",className:"amx-bs-chip","data-on":p.dir===l.id||void 0,onClick:()=>e.set({dir:l.id}),children:n(l.labelKey)},l.id))}),t.jsxs("label",{className:"amx-gridpop-row",children:[t.jsx("span",{className:"amx-bs-lbl",children:n("boardview.opacity")}),t.jsx("input",{className:"amx-bs-range",type:"range",min:10,max:100,step:5,value:a,onChange:l=>{const h=Number(l.target.value);d(h),e.previewOpacity(h)},onPointerUp:()=>e.commitOpacity(a),onKeyUp:()=>e.commitOpacity(a)}),t.jsxs("span",{className:"amx-bs-note amx-gridpop-pct",children:[a,"%"]})]}),t.jsx("div",{className:"amx-bs-note",children:e.snaps?n("boardview.noSnapHint",{key:qe}):n("boardview.paperNoSnap")})]})})}function ut({value:e,min:n,max:p,onCommit:s}){const[u,a]=c.useState(String(e));c.useEffect(()=>a(String(e)),[e]);const d=c.useRef(!1),l=c.useRef(void 0);c.useEffect(()=>()=>window.clearTimeout(l.current),[]);const h=i=>{window.clearTimeout(l.current);const v=Math.round(Number(i)),g=Number.isFinite(v)&&v>0?Math.min(p,Math.max(n,v)):e;a(String(g)),g!==e&&s(g)};return t.jsx("input",{className:"amx-bs-num",type:"number",min:n,max:p,value:u,onChange:i=>{const v=i.target.value;a(v),d.current&&(window.clearTimeout(l.current),l.current=window.setTimeout(()=>h(v),150))},onBlur:()=>h(u),onPointerDown:i=>{d.current=i.nativeEvent.offsetX>i.currentTarget.clientWidth-18},onKeyDown:i=>{d.current=i.key==="ArrowUp"||i.key==="ArrowDown",i.key==="Enter"&&h(u)}})}const Tn=e=>Math.min(100,Math.max(1,Math.round(e)||Ke));function In(e,n,p,s,u){const a=c.useRef({}),[,d]=c.useReducer(f=>f+1,0);for(const f of Object.keys(a.current))p[f]===a.current[f]&&delete a.current[f];const l={...p,...a.current},h=!!ge(l),i=h?void 0:at(l),v=h||i!==void 0,g=Me(l),j=c.useRef(g);g.on&&(j.current=g);const k=v?g.on?g:{...j.current,on:!1}:{on:n.grid,size:n.gridSize,dir:l.gridDir},H=h?null:i!==void 0?Ke:n.gridStep,R=c.useRef({settings:p,onSettings:s});R.current={settings:p,onSettings:s};const B=()=>({...R.current.settings,...a.current}),z=f=>{Object.assign(a.current,f),R.current.onSettings(f),d()},x=c.useCallback(f=>e?.updateScene({appState:f,captureUpdate:ne.NEVER}),[e]),w=f=>{if(!e)return;if(h){const _={...k,...f,size:le(f.size??k.size)};j.current={..._,on:!0},_.on||k.on?z(Ye(_)):d();return}const T=i!==void 0?{...k,size:le(k.size)}:k,C={...T,...f,size:le(f.size??T.size)},F={};C.dir!==l.gridDir&&(F.gridDir=C.dir),i!==void 0&&Object.assign(F,{gridH:0,gridV:0}),Object.keys(F).length&&z(F),x({gridModeEnabled:C.on,gridSize:C.size,gridStep:Tn(f.major??H??Ke),gridDirection:xe(C.dir),...C.on?{objectsSnapModeEnabled:!1}:{}})},E=c.useRef(null),M=f=>{if(!v)return E.current=f,void x({gridColor:Ne(f)});for(const T of u.current?.querySelectorAll(".amx-grid")??[])T.style.opacity=f>=100?"":String(f/100)},G=f=>{E.current=null,f!==l.gridOpacity?z({gridOpacity:f}):v||x({gridColor:Ne(f)})};c.useEffect(()=>{x({gridDirection:xe(l.gridDir),gridColor:Ne(l.gridOpacity)})},[x,l.gridDir,l.gridOpacity]);const I=c.useRef(h);c.useEffect(()=>{const f=I.current;if(I.current=h,!e||f===h)return;const T=e.getAppState(),C=B();if(h&&T.gridModeEnabled)z(Ye({on:!0,size:le(T.gridSize),dir:C.gridDir})),x({gridModeEnabled:!1});else if(!h&&(C.gridH>0||C.gridV>0)){const F=Me(C);z({gridH:0,gridV:0,gridDir:F.dir}),x({gridModeEnabled:!0,gridSize:le(F.size),gridDirection:xe(F.dir),objectsSnapModeEnabled:!1})}},[e,h]);const A=c.useRef(!1),D=c.useRef(!1),S=c.useRef(!1),V=f=>{const T=!A.current;A.current=!0;const C=f.gridModeEnabled&&!D.current;D.current=f.gridModeEnabled;const F=S.current;S.current=f.objectsSnapModeEnabled;const _=B();if(ge(_)){if(!f.gridModeEnabled)return;D.current=!1;const X=!T&&C;if(X){const K=Me(_);z(Ye(K.on?{...K,on:!1}:{...j.current,on:!0}))}x({gridModeEnabled:!1,...X?{objectsSnapModeEnabled:F}:{}});return}if(at(_)!==void 0&&f.gridModeEnabled){const X=Me(_),K=T||!C;z({gridH:0,gridV:0,gridDir:X.dir}),K||(D.current=!1),x({gridModeEnabled:K,gridSize:le(X.size),gridDirection:xe(X.dir),...K?{}:{objectsSnapModeEnabled:F}});return}const de=xe(_.gridDir),J=Ne(E.current??_.gridOpacity);(f.gridDirection?.horizontal!==de.horizontal||f.gridDirection?.vertical!==de.vertical||f.gridColor?.Regular!==J.Regular)&&x({gridDirection:de,gridColor:J})};return{model:k,major:H,snaps:!h,opacity:l.gridOpacity,set:w,previewOpacity:M,commitOpacity:G,onAppState:V}}De({"excalicanvas.addPage":{zh:"+ 新建页面",en:"+ New page"},"excalicanvas.delBlankPage":{zh:"删掉这张空白页",en:"Delete this blank page"},"excalicanvas.modeFull":{zh:"常规",en:"Standard"},"excalicanvas.modeCompact":{zh:"紧凑",en:"Compact"},"excalicanvas.paper":{zh:"纸张",en:"Paper"},"excalicanvas.paperNone":{zh:"无限",en:"Infinite"},"excalicanvas.portrait":{zh:"纵向",en:"Portrait"},"excalicanvas.landscape":{zh:"横向",en:"Landscape"},"excalicanvas.flow":{zh:"页面排布",en:"Page layout"},"excalicanvas.flowV":{zh:"上下",en:"Top to bottom"},"excalicanvas.flowH":{zh:"左右",en:"Left to right"},"excalicanvas.uiMode":{zh:"属性面板",en:"Properties panel"},"excalicanvas.allBoards":{zh:"所有白板",en:"All boards"},"excalicanvas.toolbar":{zh:"工具栏",en:"Toolbar"},"excalicanvas.resetOrder":{zh:"恢复默认顺序",en:"Reset to default order"},"excalicanvas.panHintTouch":{zh:"双指拖动或捏合,移动和缩放画布",en:"Drag or pinch with two fingers to move and zoom"}});const Ce=4,Fn=120,On={position:"absolute",top:0,left:0,visibility:"hidden",pointerEvents:"none",width:"calc(var(--nc-capl-w, 0) * 1px)",height:"calc(var(--nc-capr-w, 0) * 1px)"},Hn="linear-gradient(90deg, var(--amx-grid-line) 0 1px, transparent 1px)",Bn="linear-gradient(180deg, var(--amx-grid-line) 0 1px, transparent 1px)",Nt=(e,n,p)=>Math.min(Math.max(e,n),p),pt=(e,n)=>(e%n+n)%n,_n=new Set(["checkbox","radio","range","button","submit","reset","color","file","image"]);function $n(e){return e instanceof HTMLElement?e instanceof HTMLInputElement?!_n.has(e.type):e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement||e.isContentEditable:!1}function Vn(e,n,p){const[s,u,a,d]=Ut(e.getSceneElements()),l=n.getBoundingClientRect(),h=l.width?p.width/l.width:1,i=[...n.querySelectorAll(".App-menu_top > *")].map(x=>x.getBoundingClientRect()).filter(x=>x.height),v=n.querySelector(".layer-ui__wrapper__footer-left")?.getBoundingClientRect(),g=16,j=(i.length?Math.max(...i.map(x=>x.bottom))-l.top:64)*h+g,k=(v?.height?l.bottom-v.top:56)*h+g,H=24,R=p.width-2*H,B=p.height-j-k;if(R<=0||B<=0)return void e.zoomToFit();const z=Nt(Math.min(R/Math.max(1,a-s),B/Math.max(1,d-u)),.1,2);e.updateScene({appState:{scrollX:(H+R/2)/z-(s+a)/2,scrollY:(j+B/2)/z-(u+d)/2,zoom:{value:z}},captureUpdate:ne.NEVER})}function mt(e,n,p){const[s,u]=c.useState(null);return c.useEffect(()=>{if(!e)return;let a=null;const d=()=>{const h=e.querySelector(n);if(!h){a&&(a.remove(),a=null,u(null));return}if(a&&a.parentElement===h)return;a?.remove();const i=document.createElement("div");i.className=p,h.insertBefore(i,h.firstChild),a=i,u(i)};d();const l=new MutationObserver(d);return l.observe(e,{childList:!0,subtree:!0}),()=>{l.disconnect(),a?.remove(),u(null)}},[e,n,p]),s}function Yn(e){c.useEffect(()=>{const n=new Map,p=a=>{a.classList.contains("amx-board-portal")||a.classList.add("amx-board-portal"),a.style.zoom!==e&&(a.style.zoom=e)},s=a=>{if(!(a instanceof HTMLElement)||!a.classList.contains("excalidraw")||a.closest(".amx-boardhost")||(p(a),n.has(a)))return;const d=new MutationObserver(()=>p(a));d.observe(a,{attributes:!0,attributeFilter:["class","style"]}),n.set(a,d)};for(const a of[...document.body.children])s(a);const u=new MutationObserver(a=>{for(const d of a){for(const l of d.addedNodes)s(l);for(const l of d.removedNodes)l instanceof HTMLElement&&n.has(l)&&(n.get(l)?.disconnect(),n.delete(l))}});return u.observe(document.body,{childList:!0}),()=>{u.disconnect();for(const a of n.values())a.disconnect()}},[e])}function po({initialData:e,theme:n,langCode:p,settings:s,onSettings:u,onSceneChange:a,registerApplier:d,viewMode:l=!1}){const{t:h}=oe(),[i,v]=c.useState(null),g=c.useRef(null),j=c.useRef([]),k=c.useRef(null),H=c.useRef(null),R=c.useRef(null),B=c.useRef(!1),[z,x]=c.useState(null),[w,E]=c.useState(null),M=c.useMemo(()=>ge(s)?Ue(s,w):{min:0,max:0},[s,w]),G=c.useMemo(()=>Array.from({length:M.max-M.min+1},(r,o)=>M.min+o),[M]),I=c.useMemo(()=>Ue({...s,pageFirst:0,pageLast:0},w),[s,w]),A=c.useSyncExternalStore(It,nt,nt),D=c.useRef(Ft()),S=c.useRef(wn()),V=c.useMemo(()=>({pen:D,group:S}),[]),[f,T]=c.useState(zt),[C,F]=c.useState(()=>!window.matchMedia("(pointer: coarse)").matches),[_,de]=c.useState(""),[J,X]=c.useState(null),K=mt(J,".App-toolbar","amx-toolbar-slot"),Ze=mt(J,".Island > .selected-shape-actions, .Island > .compact-shape-actions, .Island.compact-shape-actions","amx-panel-slot");Yn(_),Ot(i,f.tool,f.snapshot,D);const ue=In(i,f,s,u,g),Ie=c.useCallback(r=>{if(!i)return;const o=i.getAppState(),m=r==="snap"?{objectsSnapModeEnabled:!o.objectsSnapModeEnabled,...o.objectsSnapModeEnabled?{}:{gridModeEnabled:!1}}:r==="view"?{viewModeEnabled:!o.viewModeEnabled}:r==="zen"?{zenModeEnabled:!o.zenModeEnabled}:{penMode:!o.penMode};i.updateScene({appState:m,captureUpdate:ne.NEVER})},[i]),[q,ye]=c.useState(!1),[pe,Fe]=c.useState(null);c.useEffect(()=>{if(!pe||!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return;const r=window.setTimeout(()=>Fe(null),3e3);return()=>window.clearTimeout(r)},[pe]);const Oe=c.useRef(q);Oe.current=q;const He=c.useRef(!0);c.useEffect(()=>(He.current=!0,()=>{He.current=!1}),[]);const We=c.useCallback(()=>{if(q){document.fullscreenElement&&document.exitFullscreen().catch(()=>{}),ye(!1);return}const r=g.current?.querySelector('[data-view="full"]')?.getBoundingClientRect();Fe(r?{x:r.left+r.width/2,y:r.top+r.height/2}:{x:window.innerWidth/2,y:window.innerHeight-36}),ye(!0),document.documentElement.requestFullscreen?.().then(()=>{(!He.current||!Oe.current)&&document.exitFullscreen().catch(()=>{})}).catch(()=>{})},[q]);c.useEffect(()=>{if(!q)return;const r=()=>{document.fullscreenElement||ye(!1)},o=m=>{m.key!=="Escape"||m.defaultPrevented||$n(m.target)||(document.fullscreenElement&&document.exitFullscreen().catch(()=>{}),ye(!1))};return document.addEventListener("fullscreenchange",r),window.addEventListener("keydown",o),()=>{document.removeEventListener("fullscreenchange",r),window.removeEventListener("keydown",o)}},[q]),c.useEffect(()=>()=>{Oe.current&&document.fullscreenElement&&document.exitFullscreen().catch(()=>{})},[]);const Je=i?.getEditorInterface().formFactor==="phone";c.useEffect(()=>{Ae.includes(f.tool)&&(S.current.shape=f.tool),Pe.includes(f.tool)&&(S.current.line=f.tool)},[f.tool]),c.useEffect(()=>{if(!i)return;const r=o=>{if(o.metaKey||o.ctrlKey||o.altKey||!/^[0-9]$/.test(o.key))return;const m=g.current?.querySelector(".excalidraw"),b=o.target;if(!m||!b||!m.contains(b)||b.isContentEditable||b.tagName==="INPUT"||b.tagName==="TEXTAREA")return;const y=we().mid[o.key==="0"?9:Number(o.key)-1];y&&(o.preventDefault(),o.stopImmediatePropagation(),St(y,i,V))};return window.addEventListener("keydown",r,!0),()=>window.removeEventListener("keydown",r,!0)},[i,V]),c.useEffect(()=>{i?.setDesktopUIMode(A)},[i,A]),c.useEffect(()=>{if(!(!i||!d))return d(r=>{const o=i.getSceneElementsIncludingDeleted(),m=Ct(o,r.elements??[]);if(Lt(m,o))return;i.updateScene({elements:Ht(m,null),captureUpdate:ne.NEVER});const b=Object.values(r.files??{});b.length&&i.addFiles(b)})},[i,d]),c.useEffect(()=>{const r=i&&g.current?.querySelector(".excalidraw");if(!r)return;const o=document.createElement("div");return o.style.display="contents",r.insertBefore(o,r.firstChild),x(o),X(r),()=>{o.remove(),x(null),X(null)}},[i]);const ae=c.useCallback(r=>{const o=k.current,m=j.current.filter(P=>!!P);if(!o||!m.length)return;const b=r.zoom.value,y=ge(s),N=s.gridV*b,Y=s.gridH*b,O=[],U=[],me=[],Se=y||N<Ce?0:pt(r.scrollX*b,N),fe=y||Y<Ce?0:pt(r.scrollY*b,Y);N>=Ce&&(O.push(Hn),U.push(`${N}px 100%`),me.push(`${Se}px 0px`)),Y>=Ce&&(O.push(Bn),U.push(`100% ${Y}px`),me.push(`0px ${fe}px`));for(const P of m)P.style.backgroundImage=O.join(", "),P.style.backgroundSize=U.join(", "),P.style.backgroundPosition=me.join(", "),P.style.opacity=s.gridOpacity>=100?"":String(s.gridOpacity/100),P.style.display=O.length||y?"":"none";if(!y){Object.assign(m[0].style,{left:"0px",top:"0px",width:"100%",height:"100%"}),o.style.display="none";return}const he=(P,$,Q)=>{if(!P)return;const ee=($.x+r.scrollX)*b,ie=($.y+r.scrollY)*b,te=22,kt=s.flow==="h"?Q?ee+$.w*b+te:ee-te:ee+$.w*b/2,Rt=s.flow==="h"?ie+$.h*b/2:Q?ie+$.h*b+te:ie-te;P.style.left=`${kt}px`,P.style.top=`${Rt}px`},ce=[];for(let P=0;P<m.length;P++){const $=ke(s,M.min+P);if(!$)continue;const Q=($.x+r.scrollX)*b,ee=($.y+r.scrollY)*b,ie=$.w*b,te=$.h*b;Object.assign(m[P].style,{left:`${Q}px`,top:`${ee}px`,width:`${ie}px`,height:`${te}px`}),ce.push(`M${Q.toFixed(1)} ${ee.toFixed(1)}H${(Q+ie).toFixed(1)}V${(ee+te).toFixed(1)}H${Q.toFixed(1)}Z`)}const Ve=ke(s,M.min),tt=ke(s,M.max);Ve&&he(H.current,Ve,!1),tt&&he(R.current,tt,!0),o.style.display="",o.style.clipPath=`path(evenodd,"M0 0H${o.offsetWidth}V${o.offsetHeight}H0Z ${ce.join(" ")}")`},[s,M]),re=c.useCallback(r=>{if(!i||B.current)return r;const o=i.getAppState();if(o.cursorButton==="down")return r;const m=rt(s,{scrollX:r.scrollX,scrollY:r.scrollY,zoom:r.zoom.value,width:o.width,height:o.height},w);if(!m)return r;B.current=!0;try{i.updateScene({appState:{scrollX:m.scrollX,scrollY:m.scrollY,zoom:{value:m.zoom}},captureUpdate:ne.NEVER})}finally{B.current=!1}return{scrollX:m.scrollX,scrollY:m.scrollY,zoom:{value:m.zoom}}},[i,s,w]),Be=c.useCallback(r=>{const o=st(r);E(m=>m&&o&&m.minX===o.minX&&m.minY===o.minY&&m.maxX===o.maxX&&m.maxY===o.maxY?m:o)},[]),Ee=c.useRef("loading"),_e=c.useCallback(r=>{const o=g.current;if(Ee.current!=="pending"||!o?.offsetWidth||!o.offsetHeight)return;const m=r.getAppState();Ee.current="done";const b=r.getSceneElements(),y=st(b),N=ke(s,Ue(s,y).min);if(!N){b.length&&Vn(r,o,m);return}const Y=Nt(Math.min(m.width/(N.w*(1+2*ct)),m.height/(N.h*(1+2*ct))),.1,2),O={scrollX:(m.width/Y-N.w)/2-N.x,scrollY:(m.height/Y-N.h)/2-N.y,zoom:Y,width:m.width,height:m.height},U=rt(s,O,y)??O;r.updateScene({appState:{scrollX:U.scrollX,scrollY:U.scrollY,zoom:{value:U.zoom}},captureUpdate:ne.NEVER})},[s]),Qe=c.useRef(s.flow);c.useEffect(()=>{const r=Qe.current,o=s.flow;if(Qe.current=o,r===o||!i||!s.paper)return;const m=i.getSceneElements();m.length&&i.updateScene({elements:m.map(b=>{const y=rn(s,r,o,b.x,b.y);return y.x===b.x&&y.y===b.y?b:Bt(b,{x:y.x,y:y.y})}),captureUpdate:ne.IMMEDIATELY})},[i,s]),c.useEffect(()=>{!i||!z||(Be(i.getSceneElements()),ae(re(i.getAppState())))},[i,z,ae,re,Be]);const se=c.useCallback(()=>{const r=g.current;if(!r)return;const o=r.parentElement?.currentCSSZoom??1,m=Math.abs(o-1)>1e-6?String(1/o):"";r.style.zoom!==m&&(r.style.zoom=m),de(b=>b===m?b:m)},[]);c.useEffect(()=>(se(),window.addEventListener(ot,se),()=>window.removeEventListener(ot,se)),[se]),c.useEffect(()=>{const r=g.current;if(!r||!i||typeof ResizeObserver>"u")return;const o=new ResizeObserver(()=>{se(),ae(re(i.getAppState())),Ee.current==="pending"&&requestAnimationFrame(()=>_e(i))});return o.observe(r),()=>o.disconnect()},[i,ae,re,se,_e]);const[et,je]=c.useState(0),$e=c.useRef(null);return c.useEffect(()=>{const r=g.current;if(!r||!i||typeof ResizeObserver>"u")return;const o=()=>{r.removeAttribute("data-cap-row");const y=r.closest(".mb-shell[data-native-chrome][data-wide] .mb-main > .mb-view[data-view='amadeus-drawing']")&&r.querySelector(".App-menu_top"),N=y&&y.querySelector(":scope > .shapes-section"),Y=y&&y.querySelector(".main-menu-trigger"),O=r.getBoundingClientRect().width;if(!y||!N||!Y||!O){je(0);return}const U=getComputedStyle(r),me=Number(U.getPropertyValue("--nc-capl-w"))||0,Se=Number(U.getPropertyValue("--nc-capr-w"))||0,fe=N.getBoundingClientRect().width,he=Y.getBoundingClientRect().width,ce=Math.floor(O-Se-fe-he-48);if(ce<Fn){r.dataset.capRow="off",je(0);return}je(ce),(12+Math.min(me,ce)+8+he+8>(O-fe)/2||(O+fe)/2>O-12-Se-16)&&(r.dataset.capRow="gap")},m=new ResizeObserver(o);m.observe(r);const b=r.querySelector(".App-menu_top > .shapes-section");return b&&m.observe(b),$e.current&&m.observe($e.current),()=>{m.disconnect(),je(0)}},[i]),Kt(et>0?{where:"main",capLeftMax:et}:null),t.jsxs("div",{className:"amx-boardhost",ref:g,"data-full":q||void 0,"data-nc-caps":"","data-touch-hint":f.idle&&!C?"":void 0,style:{"--amx-hint-pan":JSON.stringify(h("excalicanvas.panHintTouch"))},onPointerDownCapture:r=>{const o=r.pointerType==="mouse";o!==C&&F(o)},children:[t.jsxs(_t,{onExcalidrawAPI:v,initialData:e,theme:n,langCode:p,viewModeEnabled:l||void 0,onInitialize:r=>{Ee.current="pending",requestAnimationFrame(()=>_e(r))},onScrollChange:(r,o,m)=>ae(re({scrollX:r,scrollY:o,zoom:m})),onChange:(r,o,m)=>{Be(r),ae(re(o));const b=o.currentStrokeOptions;ue.onAppState(o);const y={tool:o.activeTool.type,locked:!!o.activeTool.locked,snapshot:o.resetCustomPen??null,capRound:b?!!b.options?.start?.cap:null,grid:o.gridModeEnabled,gridSize:o.gridSize,gridStep:o.gridStep,snap:o.objectsSnapModeEnabled,view:o.viewModeEnabled,zen:o.zenModeEnabled,pen:o.penMode,penDetected:o.penDetected,idle:o.activeTool.type==="selection"&&!o.selectionElement&&!o.editingTextElement&&!o.croppingElementId&&!o.searchMatches?.matches.length&&!Object.values(o.selectedElementIds).some(Boolean)};T(N=>Ln(N,y)?N:y),a(Yt(r,o,m,"local"))},children:[t.jsxs(L,{children:[t.jsx(L.DefaultItems.LoadScene,{}),t.jsx(L.DefaultItems.SaveToActiveFile,{}),t.jsx(L.DefaultItems.Export,{}),t.jsx(L.DefaultItems.SaveAsImage,{}),t.jsx(L.DefaultItems.SearchMenu,{}),t.jsx(L.DefaultItems.Help,{}),t.jsx(L.DefaultItems.ClearCanvas,{}),t.jsx(L.Separator,{}),Je&&!l&&t.jsxs(t.Fragment,{children:[t.jsx(L.Item,{icon:t.jsx(yt,{size:16}),selected:ue.model.on,onSelect:()=>ue.set({on:!ue.model.on}),children:h("boardview.grid")}),t.jsx(L.Item,{icon:t.jsx(vt,{size:16}),selected:f.snap,onSelect:()=>Ie("snap"),children:h("boardview.snap")}),t.jsx(L.Item,{icon:t.jsx(gt,{size:16}),selected:f.view,onSelect:()=>Ie("view"),children:h("boardview.view")}),t.jsx(L.Separator,{})]}),t.jsx(L.DefaultItems.ToggleTheme,{allowSystemTheme:!1}),t.jsx(L.DefaultItems.ChangeCanvasBackground,{}),t.jsx(L.Separator,{}),t.jsx(L.ItemCustom,{children:t.jsx(Kn,{settings:s,onSettings:u,uiMode:A,onUiMode:$t})})]}),!l&&!Je&&t.jsx(Vt,{children:t.jsx(Pn,{ui:f,grid:ue,onToggle:Ie,full:q,onFull:We})})]}),t.jsx("i",{ref:$e,"aria-hidden":!0,style:On}),q&&pe&&J&&ze.createPortal(t.jsxs("button",{type:"button",className:"amx-fullhint",style:{left:pe.x,top:pe.y},onClick:We,onAnimationEnd:()=>Fe(null),children:[h("boardview.exitFull")," ",t.jsx("span",{className:"amx-fullhint-kbd",children:"Esc"})]}),J),K&&ze.createPortal(t.jsx(Mn,{api:i,ui:f,refs:V}),K),Ze&&ze.createPortal(t.jsx(Rn,{api:i,ui:f,pen:D,group:S}),Ze),z&&ze.createPortal(t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"amx-matte",ref:k,onWheel:Un}),G.map((r,o)=>t.jsx("div",{className:"amx-grid","data-page":r,ref:m=>{j.current[o]=m}},r)),!!ge(s)&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"amx-pageadd","data-end":"before","data-flow":s.flow,ref:H,children:[t.jsx("button",{onClick:()=>u({pageFirst:s.pageFirst-1}),children:h("excalicanvas.addPage")}),s.pageFirst<I.min&&t.jsx("button",{className:"amx-pageadd-del",title:h("excalicanvas.delBlankPage"),onClick:()=>u({pageFirst:s.pageFirst+1}),children:"−"})]}),t.jsxs("div",{className:"amx-pageadd","data-end":"after","data-flow":s.flow,ref:R,children:[t.jsx("button",{onClick:()=>u({pageLast:s.pageLast+1}),children:h("excalicanvas.addPage")}),s.pageLast>I.max&&t.jsx("button",{className:"amx-pageadd-del",title:h("excalicanvas.delBlankPage"),onClick:()=>u({pageLast:s.pageLast-1}),children:"−"})]})]})]}),z)]})}function Un(e){const n=e.currentTarget.closest(".excalidraw")?.querySelector("canvas.excalidraw__canvas.interactive");n&&(e.preventDefault(),n.dispatchEvent(new WheelEvent("wheel",{deltaX:e.deltaX,deltaY:e.deltaY,deltaMode:e.deltaMode,clientX:e.clientX,clientY:e.clientY,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey,bubbles:!0,cancelable:!0})))}const Xn=[{id:"full",labelKey:"excalicanvas.modeFull"},{id:"compact",labelKey:"excalicanvas.modeCompact"}];function Kn({settings:e,onSettings:n,uiMode:p,onUiMode:s}){const{t:u}=oe(),a=n;return t.jsxs("div",{className:"amx-bs",children:[t.jsx("div",{className:"amx-bs-h",children:u("excalicanvas.paper")}),t.jsxs("div",{className:"amx-bs-row",children:[t.jsx("button",{className:"amx-bs-chip","data-on":!e.paper||void 0,onClick:()=>a({paper:null}),children:u("excalicanvas.paperNone")}),sn.map(d=>t.jsx("button",{className:"amx-bs-chip","data-on":e.paper===d||void 0,onClick:()=>a({paper:d}),children:d},d))]}),e.paper&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"amx-bs-row",children:[t.jsx("button",{className:"amx-bs-chip","data-on":!e.landscape||void 0,onClick:()=>a({landscape:!1}),children:u("excalicanvas.portrait")}),t.jsx("button",{className:"amx-bs-chip","data-on":e.landscape||void 0,onClick:()=>a({landscape:!0}),children:u("excalicanvas.landscape")})]}),t.jsx("div",{className:"amx-bs-h",children:u("excalicanvas.flow")}),t.jsxs("div",{className:"amx-bs-row",children:[t.jsx("button",{className:"amx-bs-chip","data-on":e.flow==="v"||void 0,onClick:()=>a({flow:"v"}),children:u("excalicanvas.flowV")}),t.jsx("button",{className:"amx-bs-chip","data-on":e.flow==="h"||void 0,onClick:()=>a({flow:"h"}),children:u("excalicanvas.flowH")})]})]}),t.jsxs("div",{className:"amx-bs-h",children:[u("excalicanvas.uiMode")," ",t.jsx("span",{className:"amx-bs-note",children:u("excalicanvas.allBoards")})]}),t.jsx("div",{className:"amx-bs-row",children:Xn.map(d=>t.jsx("button",{className:"amx-bs-chip","data-on":p===d.id||void 0,onClick:()=>s(d.id),children:u(d.labelKey)},d.id))}),t.jsx(qn,{})]})}function qn(){const{t:e}=oe(),n=c.useSyncExternalStore(jt,we,we);return gn(n)?null:t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"amx-bs-h",children:[e("excalicanvas.toolbar")," ",t.jsx("span",{className:"amx-bs-note",children:e("excalicanvas.allBoards")})]}),t.jsx("div",{className:"amx-bs-row",children:t.jsx("button",{className:"amx-bs-chip",onClick:()=>bn(),children:e("excalicanvas.resetOrder")})})]})}export{po as default};
@@ -0,0 +1 @@
1
+ .amx-boardhost .excalidraw .amx-viewisle-wrap{position:relative;display:flex;margin-inline-start:8px}.amx-boardhost .excalidraw .amx-viewisle-wrap[data-viewmode]{margin-inline-start:calc(8px + .6em + 2 * var(--lg-button-size, 2.25rem))}.amx-boardhost .excalidraw .footer-center .amx-viewisle-wrap{transition:visibility 0s}.amx-boardhost .excalidraw .footer-center.layer-ui__wrapper__footer-left--transition-bottom .amx-viewisle-wrap{visibility:hidden;transition:visibility 0s linear .5s}.amx-boardhost .excalidraw .amx-viewisle{display:flex;border-radius:var(--border-radius-lg);overflow:hidden;background-color:var(--island-bg-color);box-shadow:0 0 0 1px var(--color-surface-lowest)}.amx-boardhost .excalidraw .amx-viewisle .amx-tool{width:var(--lg-button-size, 2.25rem);height:var(--lg-button-size, 2.25rem);border-radius:0;background-color:var(--color-surface-low)}.amx-boardhost .excalidraw .amx-viewisle .amx-tool:hover{background-image:linear-gradient(var(--button-hover-bg, rgba(127, 127, 127, .12)) 0 0)}.amx-boardhost .excalidraw .amx-viewisle .amx-tool[data-on]{background-image:linear-gradient(var(--color-primary-light) 0 0),linear-gradient(var(--button-active-bg, rgba(127, 127, 127, .2)) 0 0);color:var(--color-primary)}.amx-boardhost .excalidraw .amx-gridpop{position:absolute;left:0;bottom:calc(100% + 8px);z-index:5;width:248px;padding:12px 14px;border-radius:var(--border-radius-lg);background-color:var(--island-bg-color);box-shadow:var(--card-shadow)}.amx-boardhost .excalidraw .amx-gridpop .amx-bs{padding:0;gap:9px}.amx-boardhost .excalidraw .amx-gridpop-h{display:flex;align-items:center;justify-content:space-between;font-size:var(--ui-font-body, 13px);font-weight:600}.amx-boardhost .excalidraw .amx-gridpop-kbd{font-size:var(--ui-font-caption, 11px);font-weight:400;opacity:.5}.amx-boardhost .excalidraw .amx-gridpop-row{display:flex;align-items:center;gap:6px}.amx-boardhost .excalidraw .amx-gridpop-nums{display:grid;grid-template-columns:1fr auto auto;align-items:center;column-gap:6px;row-gap:9px}.amx-boardhost .excalidraw .amx-gridpop-pct{flex:none;width:5ch;text-align:end;font-variant-numeric:tabular-nums}.amx-boardhost .excalidraw .amx-gridpop input[type=checkbox]{accent-color:var(--color-primary)}.amx-boardhost[data-full]{position:fixed!important;inset:0;z-index:2000}.amx-boardhost .amx-fullhint{position:absolute;z-index:10;transform:translate(-50%,-50%);padding:7px 14px;border:0;border-radius:999px;background-color:var(--color-surface-low);outline:1px solid var(--color-surface-lowest);box-shadow:var(--card-shadow);color:var(--color-on-surface);font:inherit;font-size:var(--ui-font-meta, 12px);white-space:nowrap;cursor:pointer;animation:amx-fullhint 3s ease forwards}.amx-boardhost .amx-fullhint:hover{animation-play-state:paused;background-image:linear-gradient(var(--button-hover-bg, rgba(127, 127, 127, .12)) 0 0)}.amx-boardhost .amx-fullhint-kbd{opacity:.55;margin-inline-start:4px}@media(prefers-reduced-motion:reduce){.amx-boardhost .amx-fullhint{animation:none!important}}@keyframes amx-fullhint{0%,70%{opacity:1}to{opacity:0}}.tangu-lovable .amx-boardhost .excalidraw,.tangu-soft .amx-boardhost .excalidraw,html .excalidraw.amx-board-portal{--island-bg-color: var(--bg-card);--island-bg-color-alt: var(--sidebar-bg);--default-bg-color: var(--bg);--popup-bg-color: var(--bg-card);--popup-secondary-bg-color: var(--sidebar-bg);--sidebar-bg-color: var(--bg-card);--color-surface-lowest: var(--bg-card);--color-surface-low: var(--sidebar-bg);--color-surface-mid: var(--bg);--color-surface-high: var(--accent-light);--color-surface-primary-container: var(--accent-light);--ui-font: var(--font-ui);--text-primary-color: var(--text);--color-on-surface: var(--text);--popup-text-color: var(--text);--input-label-color: var(--text-light);--keybinding-color: var(--text-faint);--color-muted: var(--text-muted);--color-muted-darker: var(--text-faint);--color-disabled: var(--text-ghost);--default-border-color: var(--border);--dialog-border-color: var(--border);--input-border-color: var(--border);--sidebar-border-color: var(--border);--list-border-color: var(--border);--color-border-outline: var(--overlay-strong);--color-border-outline-variant: var(--border);--color-primary: var(--accent-ink);--color-primary-hover: var(--accent-hover);--color-primary-darker: var(--accent-hover);--color-primary-darkest: var(--accent-hover);--color-primary-light: var(--accent-light);--color-primary-light-darker: var(--accent-light);--color-brand-hover: var(--accent-hover);--color-brand-active: var(--accent-hover);--color-selection: var(--accent-ink);--focus-highlight-color: var(--accent-ink);--link-color: var(--accent-ink);--link-color-hover: var(--accent-hover);--color-icon-white: var(--on-accent);--color-on-primary-container: var(--text);--border-radius-md: var(--radius-md);--border-radius-lg: var(--radius-lg);--shadow-island: var(--card-shadow);--shadow-island-stronger: var(--card-shadow);--modal-shadow: var(--card-shadow);--library-dropdown-shadow: var(--card-shadow);--sidebar-shadow: var(--card-shadow);--button-hover-bg: var(--overlay-light);--button-active-bg: var(--overlay-medium);--button-active-border: var(--overlay-strong);--select-highlight-color: var(--menu-hover);--input-bg-color: var(--bg-card);--input-hover-bg-color: var(--overlay-subtle);--overlay-bg-color: var(--overlay-light);--scrollbar-thumb: var(--overlay-medium);--scrollbar-thumb-hover: var(--overlay-strong);--color-danger: var(--danger)}
@@ -0,0 +1 @@
1
+ import{r as c,j as E}from"./index-YuejkHoJ.js";import"./pageStore-D_fKLv-o.js";const W="h1, h2, h3, [data-lcl-toc-title]";function x(e){return e?typeof e=="function"?e():"current"in e?e.current:e:null}const G=e=>{const l=/^H([1-6])$/.exec(e.tagName)?.[1],o=e.dataset.lclTocLevel??l??"1",d=Number(o),i=(e.dataset.lclTocTitle??e.textContent??"").trim();return i?{text:i,level:Number.isFinite(d)?Math.max(0,Math.min(6,Math.round(d))):1,primary:e.hasAttribute("data-lcl-toc-primary")||e.dataset.lclTocKind==="primary"}:null};function P(e,l){return e.length===l.length&&e.every((o,d)=>{const i=l[d];return o.target===i.target&&o.text===i.text&&o.level===i.level&&o.primary===i.primary&&o.onSelect===i.onSelect})}const U=500,J=e=>{const l=e.target;return!!(l.nodeType===Node.ELEMENT_NODE?l:l.parentElement)?.closest("[data-lcl-toc-ignore]")};function Q(e){if(e.checkVisibility?.({contentVisibilityAuto:!0})!==!1)return e;let l=e.parentElement;for(;l&&!l.checkVisibility({contentVisibilityAuto:!0});)l=l.parentElement;return l??e}const A=new WeakMap;function Y(e){A.get(e)?.()}function Z(e,l,o=0){Y(e);const d=()=>l.getBoundingClientRect().top-e.getBoundingClientRect().top-o;e.scrollTo({top:Math.max(0,e.scrollTop+d()),behavior:"smooth"});let i=!1,L=0,T=0,m=0,p=-1;const b=()=>{i=!0},k=["wheel","pointerdown","touchstart","keydown"];for(const g of k)e.addEventListener(g,b,{passive:!0});A.set(e,b);const M=()=>{for(const g of k)e.removeEventListener(g,b);A.get(e)===b&&A.delete(e)},f=()=>{if(i||!l.isConnected||++T>240)return M();if(e.scrollTop!==p)p=e.scrollTop,m=0;else if(++m>=2){const g=d();if(Math.abs(g)<=2||L++>=3)return M();e.scrollBy({top:g}),m=0}requestAnimationFrame(f)};requestAnimationFrame(f)}function ne({scrollContainer:e,contentRoot:l,selector:o=W,itemFromElement:d=G,label:i="Table of contents",minItems:L=2,hideBelow:T=520,topOffset:m=24,topInset:p,side:b="left",scanTrigger:k,placement:M="overlay"}){const[f,g]=c.useState([]),[B,$]=c.useState(null),[K,C]=c.useState(!1),[z,R]=c.useState(!1),[D,O]=c.useState(!1),h=c.useRef(null),j=c.useRef(new WeakMap),V=c.useRef(0),S=c.useCallback(()=>{const t=x(e),n=x(l)??t;if(!n)return null;let r;try{r=n.querySelectorAll(o)}catch(a){return console.error(`[lcl] FloatingToc ignored invalid selector "${o}"`,a),null}const s=[];return r.forEach((a,v)=>{let u=null;try{u=d(a,v)}catch(I){console.error("[lcl] FloatingToc item reader failed",I)}const N=String(u?.text??"").trim();if(!u||!N)return;let y=j.current.get(a);y||(y=`lcl-ftoc-${++V.current}`,j.current.set(a,y));const q=Number(u.level);s.push({...u,key:y,target:a,text:N,level:Number.isFinite(q)?Math.max(0,Math.min(6,Math.round(q))):1})}),s},[l,d,e,o]),w=c.useCallback(()=>{const t=S();g(n=>t?P(n,t)?n:t:n.length?[]:n)},[S]);c.useEffect(()=>{w();const t=x(e),n=x(l)??t;if(!n||typeof MutationObserver>"u")return;let r=0,s=0,a=0;const v=()=>{r=0,a=performance.now(),w()},u=new MutationObserver(N=>{if(r||s||N.every(J))return;const y=a+U-performance.now();y<=0?r=requestAnimationFrame(v):s=window.setTimeout(()=>{s=0,r=requestAnimationFrame(v)},y)});return u.observe(n,{childList:!0,subtree:!0,characterData:!0}),()=>{cancelAnimationFrame(r),window.clearTimeout(s),u.disconnect()}},[l,w,k,e]),c.useEffect(()=>{const t=x(e);if(!t)return;const n=()=>O(T>0&&t.getBoundingClientRect().width<=T);if(n(),typeof ResizeObserver>"u")return;const r=new ResizeObserver(n);return r.observe(t),()=>r.disconnect()},[T,e]),c.useEffect(()=>{const t=x(e);if(!t||!f.length){$(null);return}let n=0;const r=()=>{n=0;const a=t.getBoundingClientRect().top+m+(p?.(t)??0)+1;let v=f[0];for(const u of f)if(!(!u.target.isConnected||!t.contains(u.target)))if(Q(u.target).getBoundingClientRect().top<=a)v=u;else break;$(v?.key??null)},s=()=>{n||(n=requestAnimationFrame(r))};return r(),t.addEventListener("scroll",s,{passive:!0}),window.addEventListener("resize",s),()=>{cancelAnimationFrame(n),t.removeEventListener("scroll",s),window.removeEventListener("resize",s)}},[f,e,m,p]),c.useEffect(()=>()=>{h.current!=null&&window.clearTimeout(h.current)},[]);const X=c.useCallback(t=>{const n=x(e);if(n){if(t.onSelect)try{t.onSelect()}catch(r){console.error("[lcl] FloatingToc navigation failed",r)}else{let r=t.target;if(!r.isConnected){const s=S()??[],a=s[f.indexOf(t)];r=(a?.text===t.text?a:s.find(v=>v.text===t.text&&v.level===t.level))?.target,w()}r&&n.contains(r)&&Z(n,r,m+(p?.(n)??0))}$(t.key)}},[S,f,w,e,m,p]),_=()=>{h.current!=null&&window.clearTimeout(h.current),h.current=null,C(!0)},H=()=>{h.current!=null&&window.clearTimeout(h.current),h.current=window.setTimeout(()=>C(!1),150)};if(f.length<Math.max(1,L)||D)return null;const F=K||z;return E.jsx("div",{className:`lcl-ftoc-frame is-${M}`,"data-side":b,children:E.jsx("nav",{className:`lcl-ftoc${F?" open":""}`,style:F?void 0:{height:`min(44vh, ${f.length*6+12}px)`},onMouseEnter:_,onMouseLeave:H,onFocusCapture:()=>R(!0),onBlurCapture:t=>{t.currentTarget.contains(t.relatedTarget)||R(!1)},onKeyDown:t=>{t.key==="Escape"&&(C(!1),R(!1),t.target?.blur?.())},"aria-label":i,children:f.map(t=>{const n=B===t.key,r=(t.level===0?18:t.level===1?14:t.level===2?11:8)+(n?6:0);return E.jsxs("button",{type:"button",className:`lcl-ftoc-item${n?" active":""}${t.primary?" primary":""}`,onClick:()=>X(t),title:t.text,"aria-current":n?"location":void 0,style:{paddingInlineStart:F?8+t.level*10:0},children:[E.jsx("span",{className:"lcl-ftoc-bar",style:{transform:F?"translateX(0) scaleX(1)":`translateX(${t.level*3}px) scaleX(${r/4})`}}),E.jsx("span",{className:"lcl-ftoc-text",children:t.text})]},t.key)})})})}export{ne as F,Y as c,Z as s};
@@ -1 +1 @@
1
- .am-app .git-clone-dialog{width:min(480px,92vw)}.am-app .git-clone-tabs{display:inline-flex;align-self:flex-start;gap:2px;padding:3px;border-radius:var(--radius-sm);background:var(--overlay-light)}.am-app .git-clone-tabs button{padding:4px 12px;border:0;border-radius:calc(var(--radius-sm) - 2px);background:transparent;color:var(--text-muted);font-size:var(--ui-font-meta, 12px)}.am-app .git-clone-tabs button.on{background:var(--surface-2);color:var(--text);font-weight:500;box-shadow:var(--card-shadow)}.am-app .git-clone-list{min-height:132px;max-height:220px}.am-app .git-clone-note{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 2px;font-size:var(--ui-font-meta, 12px)}.am-app .git-clone-repo{display:flex;align-items:center;gap:8px;min-width:0}.am-app .git-clone-repo.on{background:var(--menu-hover);color:var(--text)}.am-app .git-clone-repo>svg{flex:0 0 auto;color:var(--text-muted)}.am-app .git-clone-repo>strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.am-app .git-clone-repo>small{margin-left:auto;flex:0 0 auto;color:var(--text-muted);font-size:var(--ui-font-caption, 11px)}.am-app .git-clone-chip{flex:0 0 auto;padding:1px 7px;border-radius:var(--radius-pill, 999px);background:var(--overlay-medium);color:var(--text-muted);font-size:var(--ui-font-caption, 11px)}.am-app .git-clone-where{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px 10px;padding-top:10px;border-top:1px solid var(--border);font-size:var(--ui-font-meta, 12px);color:var(--text-muted)}.am-app .git-clone-where .dialog-input{padding:6px 9px}.am-app .git-clone-parent{display:flex;align-items:center;gap:8px;min-width:0}.am-app .git-clone-parent code{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl;text-align:left;color:var(--text);font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--ui-font-caption, 11px)}.am-app .git-clone-parent .dialog-btn,.am-app .git-clone-note .dialog-btn,.am-app .git-clone-error .dialog-btn{padding:4px 10px;font-size:var(--ui-font-meta, 12px)}.am-app .git-clone-parent .dialog-btn{flex:0 0 auto;white-space:nowrap}.am-app .git-clone-error{display:grid;gap:6px;justify-items:start;color:var(--danger);font-size:var(--ui-font-meta, 12px)}.am-app .git-clone-error p{margin:0}.am-app .git-clone-error pre{margin:0;max-width:100%;max-height:110px;overflow:auto;padding:6px 8px;border-radius:var(--radius-sm);background:var(--overlay-medium);color:var(--text-muted);font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--ui-font-caption, 11px);white-space:pre-wrap;overflow-wrap:anywhere}.am-app .git-clone-dialog .dialog-btn{display:inline-flex;align-items:center;gap:6px}
1
+ .am-app .git-clone-dialog{width:min(480px,92vw)}.am-app .git-clone-tabs{display:inline-flex;align-self:flex-start;gap:2px;padding:3px;border-radius:var(--radius-sm);background:var(--overlay-light)}.am-app .git-clone-tabs button{padding:4px 12px;border:0;border-radius:calc(var(--radius-sm) - 2px);background:transparent;color:var(--text-muted);font-size:var(--ui-font-meta, 12px)}.am-app .git-clone-tabs button.on{background:var(--surface-2);color:var(--text);font-weight:500;box-shadow:var(--card-shadow)}.am-app .git-clone-list{min-height:132px;max-height:220px}.am-app .git-clone-note{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 2px;font-size:var(--ui-font-meta, 12px)}.am-app .git-clone-repo{display:flex;align-items:center;gap:8px;min-width:0}.am-app .git-clone-repo.on{background:var(--menu-hover);color:var(--text)}.am-app .git-clone-repo>svg{flex:0 0 auto;color:var(--text-muted)}.am-app .git-clone-repo>strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.am-app .git-clone-repo>small{margin-left:auto;flex:0 0 auto;color:var(--text-muted);font-size:var(--ui-font-caption, 11px)}.am-app .git-clone-chip{flex:0 0 auto;padding:1px 7px;border-radius:var(--radius-pill, 999px);background:var(--overlay-medium);color:var(--text-muted);font-size:var(--ui-font-caption, 11px)}.am-app .git-clone-where{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px 10px;padding-top:10px;border-top:1px solid var(--border);font-size:var(--ui-font-meta, 12px);color:var(--text-muted)}.am-app .git-clone-where .dialog-input{padding:6px 9px}.am-app .git-clone-parent{display:flex;align-items:center;gap:8px;min-width:0}.am-app .git-clone-parent code{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl;text-align:left;color:var(--text);font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--ui-font-caption, 11px)}.am-app .git-clone-parent .dialog-btn,.am-app .git-clone-note .dialog-btn,.am-app .git-clone-error .dialog-btn{padding:4px 10px;font-size:var(--ui-font-meta, 12px)}.am-app .git-clone-parent .dialog-btn{flex:0 0 auto;white-space:nowrap}.am-app .git-clone-error{display:grid;gap:6px;justify-items:start;color:var(--danger);font-size:var(--ui-font-meta, 12px)}.am-app .git-clone-error p{margin:0}.am-app .git-clone-error pre{margin:0;max-width:100%;max-height:110px;overflow:auto;padding:6px 8px;border-radius:var(--radius-sm);background:var(--overlay-medium);color:var(--text-muted);font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--ui-font-caption, 11px);white-space:pre-wrap;overflow-wrap:anywhere}.am-app .git-clone-dialog .dialog-btn{display:inline-flex;align-items:center;gap:6px}.am-app .git-add-remote-dialog{width:min(440px,92vw)}.am-app .git-remote-choices{display:grid;gap:6px}.am-app .git-remote-choice{display:grid;grid-template-columns:14px 24px minmax(0,1fr);align-items:start;gap:9px;width:100%;padding:10px;border:0;border-radius:var(--radius-md, 12px);background:transparent;box-shadow:inset 0 0 0 1px var(--overlay-strong);color:var(--text);text-align:left;font:inherit;cursor:pointer}.am-app .git-remote-choice:hover{background:var(--menu-hover)}.am-app .git-remote-choice.on{background:var(--overlay-light);box-shadow:inset 0 0 0 1.5px var(--text)}.am-app .git-remote-radio{width:14px;height:14px;margin-top:5px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--overlay-strong)}.am-app .git-remote-choice.on .git-remote-radio{box-shadow:inset 0 0 0 4px var(--text)}.am-app .git-remote-choice-text{display:grid;gap:2px;min-width:0}.am-app .git-remote-choice-text strong{font-size:var(--ui-font-body, 13px);font-weight:600}.am-app .git-remote-choice-text small{color:var(--text-muted);font-size:var(--ui-font-caption, 11px);line-height:1.45}.am-app .git-add-remote-bad{color:var(--danger);font-size:var(--ui-font-caption, 11px)}.am-app .git-add-remote-target{position:relative;display:grid;grid-template-columns:14px minmax(0,1fr);gap:8px;align-items:start;font-size:var(--ui-font-meta, 12px);cursor:pointer}.am-app .git-add-remote-target input{position:absolute;opacity:0;pointer-events:none}.am-app .git-add-remote-box{width:14px;height:14px;margin-top:2px;border-radius:4px;display:grid;place-items:center;box-shadow:inset 0 0 0 1.5px var(--overlay-strong);color:var(--on-accent, #fff)}.am-app .git-add-remote-target input:checked+.git-add-remote-box{background:var(--accent);box-shadow:none}.am-app .git-add-remote-target input:focus-visible+.git-add-remote-box{outline:2px solid var(--accent);outline-offset:2px}.am-app .git-add-remote-target strong{display:block;font-weight:500}.am-app .git-add-remote-target small{display:block;color:var(--text-muted);font-size:var(--ui-font-caption, 11px)}.am-app .git-add-remote-dialog .project-git-host{margin-top:1px}
@@ -0,0 +1 @@
1
+ import{a as U,j as t,u as E,r}from"./index-YuejkHoJ.js";import{el as q,N as z,df as R,i7 as P,ka as T,kb as D}from"./appStore-BskcSDl6.js";import{h as w}from"./dbStore-Bc2lC8ZI.js";import{c as A}from"./react-DOzedx9n.js";import{G as $}from"./git-branch-DzGWffyD.js";import"./pageStore-D_fKLv-o.js";import"./client-DD5czSuF.js";import"./ipc-8cxXGSZK.js";import"./nativeDownload-DlnT8U-y.js";import"./drawingStore-BD5m2eqn.js";U({"gitClone.title":{zh:"从 Git 克隆",en:"Clone from Git"},"gitClone.subtitle":{zh:"把仓库克隆到这台电脑上,并加成一个项目。",en:"Clones the repository to this computer and adds it as a project."},"gitClone.tabUrl":{zh:"网址",en:"URL"},"gitClone.urlPlaceholder":{zh:"仓库地址,以 https:// 或 git@ 开头",en:"Repository address, starting with https:// or git@"},"gitClone.loading":{zh:"正在读取仓库列表…",en:"Loading repositories…"},"gitClone.empty":{zh:"这个账号下还没有仓库。",en:"This account has no repositories yet."},"gitClone.noHost":{zh:"这里用不了。登录 Forsion 后再试,或者用「网址」。",en:"Not available here. Sign in to Forsion and try again, or use URL."},"gitClone.githubUnlinked":{zh:"还没绑定 GitHub 账号。绑定后这里会列出你的仓库。",en:"No GitHub account is linked yet. Link one to list your repositories here."},"gitClone.link":{zh:"去绑定",en:"Link GitHub"},"gitClone.listFailed":{zh:"没能读到仓库列表。可以用「网址」直接贴地址。",en:"Could not load the repository list. You can paste an address under URL instead."},"gitClone.private":{zh:"私有",en:"Private"},"gitClone.public":{zh:"公开",en:"Public"},"gitClone.folderName":{zh:"文件夹名",en:"Folder name"},"gitClone.into":{zh:"放在",en:"Location"},"gitClone.choose":{zh:"选择文件夹…",en:"Choose folder…"},"gitClone.change":{zh:"更改…",en:"Change…"},"gitClone.confirm":{zh:"克隆",en:"Clone"},"gitClone.cloning":{zh:"正在克隆…",en:"Cloning…"},"gitClone.cloningHint":{zh:"大的仓库要等一会儿,别关掉这个窗口。",en:"Large repositories take a while. Keep this window open."},"gitClone.err.invalid_remote_url":{zh:"这个地址用不了。仓库地址要以 https:// 或 git@ 开头,而且不能把密码写在地址里。",en:"That address cannot be used. A repository address must start with https:// or git@ and must not contain a password."},"gitClone.err.invalid_folder_name":{zh:"文件夹名不能用。不要带斜杠或冒号,也不要以 - 开头。",en:"That folder name cannot be used. Leave out slashes and colons, and do not start it with a hyphen."},"gitClone.err.invalid_folder":{zh:"要放进去的文件夹不存在,重新选一个。",en:"The folder to clone into does not exist. Choose another one."},"gitClone.err.target_exists":{zh:"这个文件夹里已经有同名的东西了。换个文件夹名,或者换个位置。",en:"There is already something with that name in this folder. Use another folder name or another location."},"gitClone.err.remote_unreachable":{zh:"没能克隆:地址不对、没有权限,或者网络不通。",en:"Could not clone: the address is wrong, you have no access, or the network is down."},"gitClone.err.git_timeout":{zh:"克隆超时了。仓库很大时,可以在终端里克隆,再用「添加项目」把文件夹加进来。",en:"Cloning timed out. For a very large repository, clone it in a terminal, then add the folder as a project."},"gitClone.err.git_unavailable":{zh:"这台电脑上没有可用的 git。",en:"git is not available on this computer."},"gitClone.err.github_not_linked":{zh:"GitHub 没有接受这次请求:这台电脑上没有可用的 GitHub 凭据,你的 Forsion 账号也还没有绑定 GitHub 账号。",en:"GitHub refused this request: this computer has no working GitHub credentials, and your Forsion account has no GitHub account linked."},"gitClone.err.github_relink_required":{zh:"绑定的 GitHub 账号已经失效。在账户中心的「账号安全」里重新绑定后再试。",en:"The linked GitHub account no longer works. Link it again under Security in the account centre, then try again."},"gitClone.err.github_unavailable":{zh:"暂时领不到绑定的 GitHub 账号的凭据。确认已登录 Forsion 并且网络正常,稍后再试。",en:"Credentials for the linked GitHub account are unavailable right now. Check that you are signed in to Forsion and online, then try again."},"gitClone.err.forsion_git_unavailable":{zh:"暂时领不到 Forsion Git 的凭据。确认已登录 Forsion 并且网络正常,稍后再试。",en:"Forsion Git credentials are unavailable right now. Check that you are signed in to Forsion and online, then try again."},"gitClone.err.forsion_git_needs_setup":{zh:"你的 Forsion 账号还没有开通 Forsion Git。先在网页上登录一次 Forsion Git,再回来重试。",en:"Your Forsion account is not set up on Forsion Git yet. Sign in to Forsion Git on the web once, then try again."},"gitClone.err.unsupported":{zh:"当前连接的引擎不支持克隆,更新引擎后再试。",en:"The connected engine does not support cloning yet. Update it and try again."}});const M=new Set(["invalid_remote_url","invalid_folder_name","invalid_folder","target_exists","remote_unreachable","git_timeout","git_unavailable","github_not_linked","github_relink_required","github_unavailable","forsion_git_unavailable","forsion_git_needs_setup"]),B=a=>(a.trim().replace(/[/\\]+$/,"").split(/[/\\:]/).pop()??"").replace(/\.git$/i,"").replace(/^-+/,""),m=A(()=>({req:null}));function te(){return m.getState().req?Promise.resolve(null):new Promise(a=>{m.setState({req:{resolve:a}})})}function ne(){const a=m(o=>o.req);if(!a)return null;const n=o=>{m.getState().req===a&&(m.setState({req:null}),a.resolve(o))};return t.jsx("div",{className:"am-app tangu-lovable",style:{display:"contents"},children:t.jsx(K,{onDone:n})})}function K({onDone:a}){const{t:n}=E(),[o,k]=r.useState("forsion"),[p,f]=r.useState({}),[c,G]=r.useState(""),[b,x]=r.useState(""),[F,H]=r.useState(!1),[d,S]=r.useState(""),[l,_]=r.useState(!1),[u,h]=r.useState(null),C=window.tangu?.openAccountCenter?()=>{window.tangu.openAccountCenter("security")}:void 0,v=()=>{l||a(null)};q(v);const j=e=>{f(i=>({...i,[e]:{state:"loading"}})),T(w(),e).then(i=>{f(g=>({...g,[e]:i?{state:"ok",repos:i}:{state:"none"}})),!i&&e==="forsion"&&k(g=>g==="forsion"?"url":g)},i=>f(g=>({...g,[e]:{state:i?.code==="github_not_linked"||i?.code==="github_relink_required"?"unlinked":"failed"}})))};r.useEffect(()=>{o!=="url"&&!p[o]&&j(o)},[o]),r.useEffect(()=>{const e=()=>{p.github?.state==="unlinked"&&j("github")};return window.addEventListener("focus",e),()=>window.removeEventListener("focus",e)},[p.github?.state]);const y=e=>{G(e),h(null),F||x(B(e))},L=async()=>{const e=await window.tangu?.pickDirectory?.({purpose:"project"});e&&(S(e),h(null))},N=async()=>{if(!(l||!c.trim()||!b.trim()||!d)){_(!0),h(null);try{a(await D(w(),c.trim(),d,b.trim()))}catch(e){const i=typeof e?.code=="string"?e.code:"";h({message:M.has(i)?n(`gitClone.err.${i}`):e?.status===404?n("gitClone.err.unsupported"):String(e?.message||e),info:typeof e?.info=="string"&&e.info&&i==="remote_unreachable"?e.info:void 0,link:i==="github_not_linked"||i==="github_relink_required"}),_(!1)}}},s=o==="url"?null:p[o];return t.jsx("div",{className:"dialog-overlay",onMouseDown:v,children:t.jsxs("div",{className:"dialog git-clone-dialog",role:"dialog","aria-modal":"true","aria-label":n("gitClone.title"),"data-git-clone":!0,onMouseDown:e=>e.stopPropagation(),children:[t.jsxs("div",{children:[t.jsx("div",{className:"dialog-title",children:n("gitClone.title")}),t.jsx("div",{className:"dialog-msg",children:n("gitClone.subtitle")})]}),t.jsx("div",{className:"git-clone-tabs",role:"tablist",children:["forsion","github","url"].map(e=>t.jsx("button",{type:"button",role:"tab","aria-selected":o===e,className:o===e?"on":"","data-git-clone-tab":e,disabled:l,onClick:()=>k(e),children:e==="forsion"?"Forsion Git":e==="github"?"GitHub":n("gitClone.tabUrl")},e))}),o==="url"?t.jsx("input",{className:"dialog-input",autoFocus:!0,spellCheck:!1,value:c,disabled:l,placeholder:n("gitClone.urlPlaceholder"),"data-git-clone-url":!0,onChange:e=>y(e.target.value),onKeyDown:e=>{e.key==="Enter"&&N()}}):t.jsxs("div",{className:"dialog-list git-clone-list","data-git-clone-list":s?.state??"loading",children:[(!s||s.state==="loading")&&t.jsxs("div",{className:"dialog-msg git-clone-note",children:[t.jsx(z,{size:13,className:"spin"}),n("gitClone.loading")]}),s?.state==="none"&&t.jsx("div",{className:"dialog-msg git-clone-note",children:n("gitClone.noHost")}),s?.state==="failed"&&t.jsx("div",{className:"dialog-msg git-clone-note",children:n("gitClone.listFailed")}),s?.state==="unlinked"&&t.jsxs("div",{className:"dialog-msg git-clone-note",children:[n("gitClone.githubUnlinked"),C&&t.jsx("button",{type:"button",className:"dialog-btn","data-git-clone-link":!0,onClick:C,children:n("gitClone.link")})]}),s?.state==="ok"&&!s.repos.length&&t.jsx("div",{className:"dialog-msg git-clone-note",children:n("gitClone.empty")}),s?.state==="ok"&&s.repos.map(e=>t.jsxs("button",{type:"button",className:`dialog-listitem git-clone-repo${c===e.cloneUrl?" on":""}`,"aria-pressed":c===e.cloneUrl,disabled:l,onClick:()=>y(e.cloneUrl),children:[e.private?t.jsx(R,{size:13}):t.jsx($,{size:13}),t.jsx("strong",{children:e.fullName}),t.jsx("span",{className:"git-clone-chip",children:n(e.private?"gitClone.private":"gitClone.public")}),e.updatedAt&&t.jsx("small",{children:P(e.updatedAt)})]},e.cloneUrl))]}),t.jsxs("div",{className:"git-clone-where",children:[t.jsx("label",{htmlFor:"git-clone-name",children:n("gitClone.folderName")}),t.jsx("input",{id:"git-clone-name",className:"dialog-input",spellCheck:!1,value:b,disabled:l,maxLength:100,onChange:e=>{x(e.target.value),H(!0),h(null)}}),t.jsx("span",{children:n("gitClone.into")}),t.jsxs("div",{className:"git-clone-parent",children:[t.jsx("code",{title:d||void 0,children:t.jsx("bdi",{children:d||"—"})}),t.jsx("button",{type:"button",className:"dialog-btn","data-git-clone-parent":!0,disabled:l,onClick:()=>{L()},children:n(d?"gitClone.change":"gitClone.choose")})]})]}),u&&t.jsxs("div",{className:"git-clone-error",role:"alert","data-git-clone-error":!0,children:[t.jsx("p",{children:u.message}),u.info&&t.jsx("pre",{children:u.info}),u.link&&C&&t.jsx("button",{type:"button",className:"dialog-btn",onClick:C,children:n("gitClone.link")})]}),l&&t.jsx("div",{className:"dialog-msg git-clone-note",children:n("gitClone.cloningHint")}),t.jsxs("div",{className:"dialog-actions",children:[t.jsx("button",{className:"dialog-btn",disabled:l,onClick:v,children:n("common.cancel")}),t.jsxs("button",{className:"dialog-btn","data-primary":!0,"data-git-clone-confirm":!0,disabled:l||!c.trim()||!b.trim()||!d,onClick:()=>{N()},children:[l&&t.jsx(z,{size:13,className:"spin"}),n(l?"gitClone.cloning":"gitClone.confirm")]})]})]})})}export{ne as GitCloneHost,te as askGitClone,B as cloneFolderName};
@@ -0,0 +1,4 @@
1
+ import{j as e,r as m,u as $t,a as Jt}from"./index-YuejkHoJ.js";import{p as Zt,j as Qt,f as Dt,k as at,I as en,a3 as X,ah as Qe,aj as He,X as tn,T as nn,dK as sn,aq as an,s as on}from"./pageStore-D_fKLv-o.js";import{ds as xt,eU as rn,kY as gt,qC as ln,qD as cn,kZ as dn,qE as hn,dt as pn,qF as un,qG as mn,aE as fn,aO as xn,eY as et,kV as tt,qH as nt,l0 as jt,T as gn,qI as Pt,V as jn,qJ as vn,kA as yn,qK as wn,qL as bn,l2 as kn,kU as Nn,lT as At,qM as dt,E as Cn,qN as Sn,qO as Mn,e_ as vt,qP as En,qQ as $n,qR as Dn,qS as Pn,d9 as An,d6 as Tn,qT as Fn,qU as On,J as Rn}from"./appStore-BskcSDl6.js";import{u as zn}from"./nativeSheetMenu-CVC51DzC.js";import"./client-DD5czSuF.js";import{C as In}from"./CtxMenuButtons-CAiwQkOK.js";import{DeskCardStatus as Ln,useCardStatus as Hn}from"./homeCardStatus-NAk4A77P.js";import{U as yt}from"./upload-VtCrluEO.js";import{F as qn}from"./folder-plus-Cmhq0GcR.js";import{L as Wn}from"./log-out-CdKTS7HC.js";import{P as _n}from"./pencil-BgF4Kiqp.js";import{F as Bn}from"./folder-minus-DUEOcs12.js";import"./react-DOzedx9n.js";import"./dbStore-Bc2lC8ZI.js";import"./ipc-8cxXGSZK.js";import"./nativeDownload-DlnT8U-y.js";import"./drawingStore-BD5m2eqn.js";import"./sessionTitle-BtZ1BteL.js";const Un=[["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"M3 12h18",key:"1i2n21"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}]],wt=Zt("grid-2x2",Un),bt=12,Vn=16,Kn=1.8,st=.04,qe=7,Gn=.03,Yn=.22,ot="abcdefghijklmnopqrstuvwxyz0123456789",Tt="ABCDEFGHJKLMNPRSTUVWXYZ",kt=[...ot+Tt],Xn='button, a, input, textarea, select, [contenteditable], [role="button"], [role="menu"], .hp-composer, .hp-status-card, .hp-shelf, .hp-wallpaper-sheet';function Jn(s,{scale:n=1,interactive:h=!0,quiet:c=".hp-title"}={}){const i=s.ownerDocument,g=i.defaultView??window,u=s.closest(".hp-root"),f=i.createElement("canvas");f.className="hpw-glyph-canvas",s.appendChild(f);const $=f.getContext("2d");let j=7;const S=()=>(j^=j<<13,j>>>=0,j^=j>>>17,j^=j<<5,j>>>=0,j/4294967296),W=()=>S()<.14?ot.length+(S()*Tt.length|0):S()*ot.length|0;let l=1,y=1,w=0,N=0,b=1,v=1,T=0,D=0,F=new Uint8Array(0),M=new Float32Array(0),Pe=new Uint8Array(0),we=new Float32Array(0),oe=new Float32Array(0),pe=null,Q="",ee="",p="";const B=new Set;let re=[],J=0,ie=0,ue=0,z=!h,be=!0;function le(){const o=i.createElement("span");o.style.cssText="position:absolute;visibility:hidden;color:var(--text);font-family:var(--font-mono, ui-monospace, Menlo, monospace)",s.appendChild(o);const r=[getComputedStyle(o).color,getComputedStyle(o).fontFamily];o.style.color="var(--accent-ink)",r.push(getComputedStyle(o).color),o.remove();const x=r[0]!==ee||r[1]!==Q||r[2]!==p;return[ee,Q,p]=r,x}function Be(){const o=i.createElement("canvas");o.width=kt.length*b,o.height=(qe+1)*v;const r=o.getContext("2d");r.font=`${bt*n*y*l}px ${Q}`,r.textAlign="center",r.textBaseline="middle";for(let x=0;x<=qe;x++)r.fillStyle=x?p:ee,r.globalAlpha=x?st+(.95-st)*Math.pow(x/qe,1.6):st,kt.forEach((E,k)=>r.fillText(E,k*b+b/2,x*v+v/2+.5*n*y*l));pe=o}const Ae=o=>o<.05?0:Math.min(qe,1+Math.floor(o*qe));function Te(o,r){const x=T+o%w*b,E=D+(o/w|0)*v;$.clearRect(x,E,b,v),$.drawImage(pe,F[o]*b,r*v,b,v,x,E,b,v),Pe[o]=r}function ke(){if(pe){$.clearRect(0,0,f.width,f.height);for(let o=0;o<F.length;o++)Te(o,Ae(M[o]))}}function me(){if(oe.fill(1),!(!h||!u))for(const o of u.querySelectorAll(c)){const r=o.getBoundingClientRect(),[x,E]=xe(r.left-10,r.top-10),[k,P]=xe(r.right+10,r.bottom+10),I=Math.max(0,Math.floor((x-T)/b)),U=Math.min(w-1,Math.floor((k-T)/b)),V=Math.max(0,Math.floor((E-D)/v)),_=Math.min(N-1,Math.floor((P-D)/v));for(let A=V;A<=_;A++)for(let K=I;K<=U;K++)oe[A*w+K]=Yn}}const Ue=()=>s.currentCSSZoom||1;function Ne(){if(s.clientWidth<1||s.clientHeight<1||(l=g.devicePixelRatio||1,y=Ue(),f.width=Math.round(s.clientWidth*y*l),f.height=Math.round(s.clientHeight*y*l),le(),$.font=`${bt*n*y*l}px ${Q}`,b=Math.round($.measureText("m").width+Kn*n*y*l),v=Math.round(Vn*n*y*l),b<2||v<2))return;w=Math.ceil(f.width/b),N=Math.ceil(f.height/v),T=Math.floor((f.width-w*b)/2),D=Math.floor((f.height-N*v)/2);const o=w*N;F=new Uint8Array(o),M=new Float32Array(o),Pe=new Uint8Array(o),we=new Float32Array(o),oe=new Float32Array(o),j=7;for(let r=0;r<o;r++)F[r]=W(),we[r]=.5+S()*.7;B.clear(),re=[],me(),Be(),ke()}function Ce(o,r){r*=oe[o],r>M[o]&&(M[o]=Math.min(1,r),B.add(o))}function Fe(o){re=re.filter(r=>{const x=(o-r.t0)/1e3*r.v;if(x-r.w>r.max)return!1;const E=r.amp*Math.pow(Math.max(0,1-x/r.max),.7),k=x+r.w,P=x-r.w,I=Math.max(0,Math.floor((r.y-D-k)/v)),U=Math.min(N-1,Math.floor((r.y-D+k)/v));for(let V=I;V<=U;V++){const _=D+(V+.5)*v-r.y;if(Math.abs(_)>k)continue;const A=Math.sqrt(k*k-_*_),K=P>Math.abs(_)?Math.sqrt(P*P-_*_):0;for(const[Me,Ge]of[[r.x-A,r.x-K],[r.x+K,r.x+A]]){const ae=Math.max(0,Math.floor((Me-T)/b)),Ye=Math.min(w-1,Math.floor((Ge-T)/b));for(let je=ae;je<=Ye;je++){const ve=1-Math.abs(Math.hypot(T+(je+.5)*b-r.x,_)-x)/r.w;if(ve>0){const Le=V*w+je;Ce(Le,E*ve*we[Le])}}}}return!0})}function ce(o){J=0;const r=Math.min(.05,Math.max(.001,(o-ue)/1e3));ue=o;let x=!1;re.length&&(Fe(o),x=!0);const E=Math.pow(.5,r/Gn);for(const k of B){let P=M[k]*E,I=!1;P>.1&&S()<r*5&&(F[k]=W(),I=!0),P<.02&&(P=0,B.delete(k)),M[k]=P,x=!0;const U=Ae(P);(I||U!==Pe[k])&&Te(k,U)}x&&fe()}function fe(){J||z||((!ue||performance.now()-ue>100)&&(ue=performance.now()),J=g.requestAnimationFrame(ce))}function te(){J&&g.cancelAnimationFrame(J),J=0;for(const o of B)M[o]=0;B.clear(),re=[],ke()}function xe(o,r){const x=f.getBoundingClientRect();return[(o-x.left)*(f.width/(x.width||1)),(r-x.top)*(f.height/(x.height||1))]}function ge([o,r],{speed:x=380,max:E=150,amp:k=.7,width:P=12}={}){if(z||!w)return;me();const I=y*l;re.push({x:o,y:r,t0:performance.now(),v:x*I,max:E*I,amp:k,w:P*I}),fe()}let de=null;function he(o){const r=o.getBoundingClientRect(),x=getComputedStyle(o),E=o.currentCSSZoom||1;de??=i.createElement("canvas").getContext("2d"),de&&(de.font=x.font);const k=o.value.slice(0,o.selectionStart??o.value.length).split(`
2
+ `).pop()||"",P=(parseFloat(x.paddingLeft)||0)*E,I=(de?.measureText(k).width||0)*E,U=(parseFloat(x.lineHeight)||20)*E;return xe(r.left+P+Math.min(I,r.width-P*2),r.top+Math.min(r.height,U)/2+(parseFloat(x.paddingTop)||0)*E)}const Oe=o=>o instanceof HTMLTextAreaElement&&!!o.closest(".hp-composer");function ne(o){Oe(o.target)&&ge(he(o.target))}function Re(o){if(o.key!=="Enter"||o.shiftKey||o.isComposing||!Oe(o.target))return;const r=o.target;r.value.trim()&&g.requestAnimationFrame(()=>{if(!be||r.value.trim())return;const x=r.getBoundingClientRect();ge(xe(x.left+x.width/2,x.top+x.height/2),{speed:1e3,max:Math.hypot(f.width,f.height)/(y*l),amp:.75,width:14})})}function ze(o){o.button!==0||o.target?.closest?.(Xn)||ge(xe(o.clientX,o.clientY),{speed:520,max:260,amp:.8,width:16})}const Ve=new g.ResizeObserver(()=>Ne());Ve.observe(s);const se=()=>{ie||(ie=g.requestAnimationFrame(()=>{ie=0,Ue()!==y?Ne():le()&&(Be(),ke())}))},Se=new g.MutationObserver(se);Se.observe(i.documentElement,{attributes:!0,attributeFilter:["class","style","data-mode","data-skin","data-bg","data-theme"]}),Se.observe(i.body,{attributes:!0,attributeFilter:["style"]});let O=null;const Ke=()=>{O?.removeEventListener("change",Ie),O=g.matchMedia(`(resolution: ${g.devicePixelRatio||1}dppx)`),O.addEventListener("change",Ie)};function Ie(){Ne(),Ke()}return Ke(),h&&u&&(u.addEventListener("input",ne,!0),u.addEventListener("keydown",Re,!0),u.addEventListener("pointerdown",ze,!0)),Ne(),{setStill(o){h&&(z=o,z&&te())},destroy(){be=!1,J&&g.cancelAnimationFrame(J),ie&&g.cancelAnimationFrame(ie),Ve.disconnect(),Se.disconnect(),O?.removeEventListener("change",Ie),u&&(u.removeEventListener("input",ne,!0),u.removeEventListener("keydown",Re,!0),u.removeEventListener("pointerdown",ze,!0)),f.remove()}}}const Z=1600,De=1e3,Zn=120,L=s=>`color-mix(in srgb, var(--accent-ink) ${s}%, transparent)`,q=(s,n)=>`${(s/n*100).toFixed(3)}%`;function ht({opacity:s}){const n=`hpg${m.useId().replace(/[^\w-]/g,"")}`;return e.jsxs(e.Fragment,{children:[e.jsxs("filter",{id:n,x:"0",y:"0",width:"100%",height:"100%",children:[e.jsx("feTurbulence",{type:"fractalNoise",baseFrequency:"0.85",numOctaves:3,stitchTiles:"stitch"}),e.jsx("feColorMatrix",{type:"saturate",values:"0"}),e.jsx("feComponentTransfer",{children:e.jsx("feFuncA",{type:"table",tableValues:"0 0.9"})})]}),e.jsx("rect",{className:"hpw-grain",width:Z,height:De,filter:`url(#${n})`,style:{opacity:s}})]})}const G=800,Y=452,C=392,Ft=-58*Math.PI/180,Qn=C*Math.cos(Ft),es=C*Math.sin(Ft);function ts({grain:s}){const[n]=m.useState(()=>`${-(Date.now()/1e3%Zn).toFixed(2)}s`),h=(c,i,g,u)=>e.jsxs("g",{children:[e.jsx("path",{d:`M${c-16} ${i}H${c+16}M${c} ${i-16}V${i+16}`}),e.jsx("path",{d:`M${c+g*36} ${i}h${g*46}M${c} ${i+u*36}v${u*46}`,opacity:.6})]},`${c}-${i}`);return e.jsxs(e.Fragment,{children:[e.jsxs("svg",{className:"hpw-static",viewBox:`0 0 ${Z} ${De}`,"aria-hidden":!0,children:[e.jsxs("g",{fill:"none",strokeWidth:1,children:[e.jsx("circle",{cx:G,cy:Y,r:C,strokeDasharray:"168 9 3 9 96 9 3 9",style:{stroke:L(22)}}),e.jsx("circle",{cx:G,cy:Y,r:C+18,strokeDasharray:"2 14",style:{stroke:L(16)}}),e.jsx("path",{d:`M${G} 30V${Y-C-40}M${G} ${Y+C+40}V980`,style:{stroke:L(20)}}),e.jsx("path",{d:`M150 ${Y}H${G-C-60}M${G+C+60} ${Y}H1450`,style:{stroke:L(16)}})]}),e.jsxs("g",{style:{fill:L(55)},children:[e.jsx("circle",{cx:G,cy:Y-C-40,r:2.6}),e.jsx("circle",{cx:G,cy:Y+C+40,r:2.6}),e.jsx("circle",{cx:G-C-60,cy:Y,r:2.2}),e.jsx("circle",{cx:G+C+60,cy:Y,r:2.2})]}),e.jsxs("g",{fill:"none",strokeWidth:1,style:{stroke:L(30)},children:[h(70,64,1,1),h(1530,64,-1,1),h(70,936,1,-1),h(1530,936,-1,-1)]}),e.jsx(ht,{opacity:.06*s})]}),e.jsx("div",{className:"hpw-orbit",style:{left:q(G-C,Z),top:q(Y-C,De),width:q(2*C,Z),animationDelay:n},children:e.jsx("div",{className:"hpw-planet",style:{left:q(C+Qn,2*C),top:q(C+es,2*C),width:q(140,2*C),marginLeft:q(-70,2*C),marginTop:q(-60,2*C),animationDelay:n},children:e.jsxs("svg",{viewBox:"-70 -60 140 120","aria-hidden":!0,children:[e.jsx("path",{d:"M-70 0H70M0 -60V60",fill:"none",strokeWidth:1,style:{stroke:L(18)}}),e.jsx("circle",{r:11,style:{fill:L(62)}}),e.jsx("circle",{r:26,fill:"none",style:{stroke:L(14)}})]})})})]})}const rt=[90,968],it=[800,640],lt=[1510,968],Nt=s=>[(1-s)**2*rt[0]+2*(1-s)*s*it[0]+s**2*lt[0],(1-s)**2*rt[1]+2*(1-s)*s*it[1]+s**2*lt[1]];function ns(s,n){const h=s+n/60,c=h>=6&&h<18,i=c?(h-6)/12:(h-18+24)%24/12;return{day:c,t:Math.min(.97,Math.max(.03,i))}}function ss({grain:s,hour:n,minute:h}){const c=`hphz${m.useId().replace(/[^\w-]/g,"")}`,{day:i,t:g}=ns(n,h),[u,f]=Nt(g),$=i?80:60;return e.jsxs(e.Fragment,{children:[e.jsxs("svg",{className:"hpw-static",viewBox:`0 0 ${Z} ${De}`,"aria-hidden":!0,children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:c,x1:"0",x2:"1",children:[e.jsx("stop",{offset:"0",style:{stopColor:"var(--accent-ink)",stopOpacity:0}}),e.jsx("stop",{offset:"0.5",style:{stopColor:"var(--accent-ink)",stopOpacity:.26}}),e.jsx("stop",{offset:"1",style:{stopColor:"var(--accent-ink)",stopOpacity:0}})]})}),e.jsx("path",{d:`M${rt} Q${it} ${lt}`,fill:"none",strokeWidth:1,style:{stroke:L(20)}}),e.jsx("path",{d:"M40 968H1560",strokeWidth:1,stroke:`url(#${c})`}),e.jsx("g",{style:{fill:L(34)},children:Array.from({length:10},(j,S)=>{const[W,l]=Nt(.05+S*.1);return e.jsx("circle",{cx:W,cy:l,r:2.2},S)})}),i?e.jsx("circle",{cx:u,cy:f,r:10,style:{fill:L(70)}}):e.jsxs(e.Fragment,{children:[e.jsx("circle",{cx:u,cy:f,r:9.5,strokeWidth:1.2,style:{fill:"var(--bg)",stroke:L(60)}}),e.jsx("circle",{cx:u+4,cy:f-3,r:7.5,style:{fill:L(60)}})]}),e.jsx(ht,{opacity:.05*s})]}),e.jsx("div",{className:`hpw-halo${i?" hpw-sun":" hpw-moon"}`,style:{left:q(u,Z),top:q(f,De),width:q(2*$,Z),marginLeft:q(-$,Z),marginTop:q(-$,Z)}})]})}function as({thumb:s,still:n}){const h=m.useRef(null),c=m.useRef(null);return m.useEffect(()=>{const i=Jn(h.current,s?{interactive:!1,scale:.3}:{});return c.current=i,()=>{i.destroy(),c.current=null}},[s]),m.useEffect(()=>{c.current?.setStill(n)},[n]),e.jsx("div",{ref:h,className:"hpw-glyphs","aria-hidden":!0})}function Ct({preset:s,hour:n,minute:h,thumb:c=!1,still:i=!1}){if(s==="glyph")return e.jsx(as,{thumb:c,still:i});if(s==="rings")return e.jsx("div",{className:"hpw-rings","aria-hidden":!0});const g=c?.4:1;return e.jsxs("div",{className:"hpw-canvas","aria-hidden":!0,children:[s==="orbit"&&e.jsx(ts,{grain:g}),s==="path"&&e.jsx(ss,{grain:g,hour:n,minute:h}),s==="paper"&&e.jsx("svg",{className:"hpw-static",viewBox:`0 0 ${Z} ${De}`,children:e.jsx(ht,{opacity:.09*g})})]})}const Ot="forsion_home_cards_v1",St="forsion.homepage.cards.desktop.v1",Xe=6;function Rt(s=Ot){try{const n=JSON.parse(localStorage.getItem(s)??"null");return Array.isArray(n)?n.filter(h=>typeof h=="string"):null}catch{return null}}function zt(s,n=Ot){try{return localStorage.setItem(n,JSON.stringify(s)),!0}catch{return!1}}function It(s,n,h){const c=(s??[]).map(i=>n.find(g=>g.id===i)).filter(i=>!!i).slice(0,Xe);return c.length?c:[...h]}const _e="home",os=140,rs=6,Lt="forsion.homepage.pinned-spaces.v1",ct="homepage:pinned-spaces",We="homepage:pinned:",is=["rb-market","rb-achievements"],ls=["orbit","path","paper","rings","glyph"],cs=["theme","bing","image"],Mt=s=>{const n=kn(s);return n.length?n:Pt(s)};function $e({tile:s}){return s.kind==="space"?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"hp-tile-icon",children:s.space.icon&&e.jsx(s.space.icon,{size:21})}),e.jsx("span",{className:"hp-tile-name",children:X(s.space.name)})]}):e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"hp-tile-icon hp-fpreview",children:[s.members.slice(0,4).map(n=>e.jsx("span",{className:"hp-fmini",children:n.icon&&e.jsx(n.icon,{size:11})},n.id)),s.members.length===0&&e.jsx(Cn,{size:19})]}),e.jsx("span",{className:"hp-tile-name",children:s.folder.name}),e.jsx("span",{className:"hp-folder-count",children:s.members.length})]})}function ds(){try{const s=JSON.parse(localStorage.getItem(Lt)||"[]");return Array.isArray(s)?[...new Set(s.filter(n=>typeof n=="string"&&n!==_e))]:[]}catch{return[]}}function hs({item:s}){const n=s.icon,h=s.tooltip?X(s.tooltip):"";return e.jsxs("button",{type:"button",className:"hp-tile hp-pinned-action","data-fixed-id":s.id,draggable:!1,"aria-label":h||void 0,title:h,onClick:s.onClick,children:[e.jsx("span",{className:"hp-tile-icon",children:n&&e.jsx(n,{size:21})}),e.jsx("span",{className:"hp-tile-name",children:h})]})}function ps({space:s,onLaunch:n}){const h=`${We}${s.id}`,{attributes:c,listeners:i,setNodeRef:g,transform:u,isDragging:f}=Fn({id:h}),$={kind:"space",id:`space:${s.id}`,space:s};return e.jsx("button",{ref:g,type:"button",className:`hp-tile hp-pinned-space${f?" dragging":""}`,"data-space-id":s.id,style:{transform:dt.Transform.toString(u)},"aria-label":X(s.name),title:X(s.name),...c,...i,onClick:()=>{f||n(s.id)},children:e.jsx($e,{tile:$})})}function us({actions:s,spaces:n,onLaunch:h,labelText:c}){const{isOver:i,setNodeRef:g}=Nn({id:ct});return e.jsxs("div",{ref:g,className:"hp-pinned-zone","data-over":i||void 0,"aria-label":c,children:[s.map(u=>e.jsx(hs,{item:u},u.id)),n.map(u=>e.jsx(ps,{space:u,onLaunch:h},u.id))]})}function Et({tile:s,over:n,open:h,onOpen:c,onLaunch:i,onMenu:g}){const{attributes:u,listeners:f,setNodeRef:$,transform:j,transition:S,isDragging:W}=At({id:s.id}),l=s.kind==="space"?X(s.space.name):s.folder.name,y={transform:dt.Transform.toString(j),transition:S?`${S}, color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out)`:void 0};return e.jsx("button",{ref:$,type:"button",style:y,className:`hp-tile${s.kind==="folder"?" hp-folder":""}${W?" dragging":""}${h?" on":""}`,"data-id":s.id,"data-over":n||void 0,"aria-label":l,title:l,...u,...f,onClick:w=>{W||(s.kind==="folder"?(w.stopPropagation(),c(w,s.id)):i(s.space.id))},onContextMenu:s.kind==="folder"?w=>g(w,s.id):void 0,children:e.jsx($e,{tile:s})})}function ms({member:s,onLaunch:n,onMenu:h}){const c=`space:${s.id}`,{attributes:i,listeners:g,setNodeRef:u,transform:f,transition:$,isDragging:j}=At({id:c});return e.jsxs("button",{ref:u,type:"button",className:`hp-folder-app${j?" dragging":""}`,style:{transform:dt.Transform.toString(f),transition:$},"data-id":c,title:X(s.name),...i,...g,onClick:()=>{j||n(s.id)},onContextMenu:S=>h(S,c),children:[e.jsx("span",{className:"hp-folder-app-icon",children:s.icon&&e.jsx(s.icon,{size:24})}),e.jsx("span",{children:X(s.name)})]})}function fs(s){const n=()=>{const i=new Date;return{time:Tn(i),date:An(i,{locale:s}),hour:i.getHours(),minute:i.getMinutes()}},[h,c]=m.useState(n);return m.useEffect(()=>{const i=()=>c(u=>{const f=n();return f.time===u.time&&f.date===u.date?u:f});i();const g=setInterval(i,1e3);return()=>clearInterval(g)},[s]),h}function xs(){const[s,n]=m.useState("");return m.useEffect(()=>jn(n),[]),s}function gs(){const s=Dt(c=>c.spaces),n=at(c=>c.order),h=at(c=>c.folders);return vn(s,n,h,_e)}Jt({"home.folderMenu.renameTitle":{zh:"重命名收纳夹",en:"Rename folder"},"home.folderMenu.rename":{zh:"重命名",en:"Rename"},"home.folderMenu.dissolve":{zh:"解散收纳夹",en:"Dissolve folder"},"home.folderMenu.moveOut":{zh:"移出收纳夹",en:"Move out"},"home.pill":{zh:"问点什么…",en:"Ask anything…"},"home.cards.editTitle":{zh:"主页卡片",en:"Home cards"},"home.cards.editHint":{zh:"勾选的显示在主页,1 到 {max} 张,按勾选的先后排。",en:"Checked ones show on Home (1 to {max}), in the order you check them."},"home.cards.done":{zh:"完成",en:"Done"}});function js({tiles:s,actions:n,onLaunch:h}){const{t:c}=$t(),i=Hn(),[g,u]=m.useState(Rt),f=l=>({id:`space:${l.id}`,name:X(l.name),statusId:l.id,spaceId:l.id,icon:l.icon,open:()=>h(l.id)}),$=s.filter(l=>l.kind==="space").map(l=>f(l.space)),j=[...s.flatMap(l=>l.kind==="space"?[l.space]:l.members).map(f),...n.map(l=>({id:l.id,name:l.tooltip?X(l.tooltip):"",statusId:l.id,icon:l.icon,open:()=>l.onClick?.()}))],S=It(g,j,[...$.slice(0,2),...j.filter(l=>!l.spaceId)]),W=async()=>{const l=S.map(N=>N.id),y=await sn({title:c("home.cards.editTitle"),items:j.map(N=>({id:`card:${N.id}`,label:N.name,icon:N.icon&&"imageUrl"in N.icon&&N.icon.imageUrl?N.icon.nativeFallback:N.icon})),checked:l.map(N=>`card:${N}`),footer:c("home.cards.editHint",{max:String(Xe)}),done:c("home.cards.done"),min:1,max:Xe}),w=y.handled?y.value?.checked.map(N=>N.slice(5)):void 0;!w?.length||w.join(`
3
+ `)===l.join(`
4
+ `)||zt(w)&&u(w)};return e.jsx("section",{className:"hp-cards",children:S.map(l=>e.jsxs("button",{type:"button",className:"hp-card",...l.spaceId?{"data-space-id":l.spaceId}:{"data-fixed-id":l.id},onClick:y=>{y.stopPropagation(),l.open()},onContextMenu:y=>{y.preventDefault(),y.stopPropagation(),W()},children:[e.jsx("span",{className:"hp-card-icon",children:l.icon&&e.jsx(l.icon,{})}),e.jsx("span",{className:"hp-card-name",children:l.name}),e.jsx("span",{className:"hp-card-status",children:i(l.statusId)})]},l.id))})}function zs(s){const{t:n,locale:h}=$t(),c=h==="zh",i=fs(h),g=xs(),u=Qt(),f=Dt(t=>t.spaces),$=at(t=>t.items),{tiles:j}=gs(),[S,W]=m.useState(ds),[l,y]=m.useState(null),[w,N]=m.useState(null),[b,v]=m.useState(!1),[T,D]=m.useState(null),[F,M]=m.useState(null),[Pe,we]=m.useState(!1),[oe,pe]=m.useState(!1),[Q,ee]=m.useState(!1),[p,B]=m.useState(xt),[re,J]=m.useState(()=>Rt(St)),[ie,ue]=m.useState(()=>document.hidden),[z,be]=m.useState(null),[le,Be]=m.useState([]),[Ae,Te]=m.useState(!1),[ke,me]=m.useState(""),[Ue,Ne]=m.useState(0),Ce=m.useRef(null),Fe=m.useRef(null),ce=m.useRef(null),fe=m.useRef(null),[te,xe]=m.useState(()=>{try{return window.matchMedia("(prefers-reduced-motion: reduce)").matches}catch{return!1}}),ge=rn(gt(dn,{activationConstraint:{distance:6}}),gt(cn,{coordinateGetter:ln}));m.useEffect(()=>{hn(p)},[p]),m.useEffect(()=>pn(()=>B(t=>{const a=xt().motion;return a===t.motion?t:{...t,motion:a}})),[]),m.useEffect(()=>{const t=()=>ue(document.hidden);document.addEventListener("visibilitychange",t);let a=null;const d=()=>xe(!!a?.matches);try{a=window.matchMedia("(prefers-reduced-motion: reduce)"),a.addEventListener("change",d)}catch{}return()=>{document.removeEventListener("visibilitychange",t),a?.removeEventListener("change",d)}},[]),m.useEffect(()=>{try{localStorage.setItem(Lt,JSON.stringify(S))}catch{}},[S]),m.useEffect(()=>{let t=!0;return un().then(a=>{if(t){if(!a){B(d=>d.source==="image"?{...d,source:"theme"}:d);return}be(URL.createObjectURL(a))}}).catch(()=>{}),()=>{t=!1}},[]),m.useEffect(()=>()=>{z&&URL.revokeObjectURL(z)},[z]),m.useEffect(()=>{if(p.source!=="bing")return;let t=!0;return Te(!0),me(""),mn(h).then(a=>{t&&(Be(a),a[0]&&B(d=>d.source==="bing"&&d.bingDaily&&d.bing?.id!==a[0].id?{...d,bing:a[0]}:d))}).catch(()=>{t&&me(n("home.wallpaper.bingError"))}).finally(()=>{t&&Te(!1)}),()=>{t=!1}},[Ue,h,n,p.source]),m.useEffect(()=>()=>{ce.current&&(window.clearTimeout(ce.current),ce.current=null);const t=fe.current;fe.current=null,t?.()},[]);const de=t=>ce.current?!1:te?(t(),!0):(we(!0),fe.current=t,ce.current=window.setTimeout(()=>{ce.current=null,fe.current=null,t(),we(!1)},os),!0),he=t=>{const a=an?Rn()?.openSpace:void 0;a?a(t):de(()=>on(t))},Oe=f.some(t=>t.id==="tangu"),ne=Oe?yn():null,Re=i.hour<5?"home.greet.night":i.hour<11?"home.greet.morning":i.hour<18?"home.greet.afternoon":"home.greet.evening",ze=g?n(Re+".named",{name:g}):n(Re),Ve=()=>{D(null),v(!1),M(null)},se=p.source==="bing"?p.bing?.url||null:p.source==="image"?z:null,Se=!!se,O=t=>{B(a=>({...a,...t}))},Ke=t=>{if(t==="bing"){O({source:t,bing:p.bing||le[0]||null});return}O({source:t})},Ie=t=>{t&&(me(""),Sn(t).then(()=>{be(URL.createObjectURL(t)),O({source:"image"})}).catch(a=>{me(n(a instanceof Error&&a.message==="TOO_LARGE"?"home.wallpaper.tooLarge":"home.wallpaper.invalid"))}))},o=()=>{Mn().catch(()=>{}),be(null),O({source:"theme"})},r=t=>{On(t),v(!0)},x=()=>{M(null),vt(c?"新建收纳夹":"New folder",c?"收纳夹":"Folder").then(t=>{const a=t?.trim();a&&(En(a),v(!0))})},E=()=>{y(null),N(null)},k=t=>{D(null),M(null),y(String(t.active.id))},P=t=>N(t.over?String(t.over.id):null),I=t=>E(),U=t=>{const a=String(t.active.id),d=t.over?String(t.over.id):null;if(E(),a.startsWith(We)){if(d!==ct){const H=a.slice(We.length);W(ye=>ye.filter(Xt=>Xt!==H))}return}if(d===ct){const H=j.find(ye=>ye.id===a);H?.kind==="space"&&H.space.id!==_e&&W(ye=>ye.includes(H.space.id)?ye:[...ye,H.space.id]);return}if(!d||a===d)return;const R=j.find(H=>H.id===d);!a.startsWith("folder:")&&R?.kind==="folder"?wn(d,a):bn(a,d)},V=(t,a,d)=>{t.preventDefault(),t.stopPropagation(),D(null),M({x:t.clientX,y:t.clientY,kind:a,id:d})},_=(t,a)=>{const d=t.currentTarget.getBoundingClientRect(),R=Ce.current?.getBoundingClientRect();M(null),v(!1),D(H=>H?.id===a?null:{id:a,dx:R?d.left+d.width/2-(R.left+R.width/2):0,dy:R?d.top+d.height/2-(R.top+R.height/2):0})},A=T?j.find(t=>t.id===T.id):void 0,K=A?.kind==="folder"?A.members:[],Me=j.flatMap(t=>t.kind==="space"?[t.space]:t.members).map(t=>({id:`space:${t.id}`,space:t})),Ge=Me.filter(t=>j.some(a=>a.id===t.id)),ae=u?[]:It(re,Me,[...Ge,...Me.filter(t=>!Ge.includes(t))].slice(0,4)),Ye=new Set(ae.map(t=>t.id)),je=j.filter(t=>!Ye.has(t.id)),ve=je.slice(0,rs),Le=Math.max(0,je.length-ve.length),Ht=t=>{const a=ae.map(R=>R.id),d=a.includes(t)?a.filter(R=>R!==t):[...a,t];!d.length||d.length>Xe||zt(d,St)&&J(d)},Ee=l?j.find(t=>t.id===l):void 0,Je=l?.startsWith(We)?f.find(t=>t.id===l.slice(We.length)):void 0,qt=S.map(t=>f.find(a=>a.id===t)).filter(t=>!!t),pt=is.map(t=>$.find(a=>a.id===t)).filter(t=>!!t),Wt=Math.max(0,f.length-(f.some(t=>t.id===_e)?1:0)),_t=t=>{!A||A.kind!=="folder"||!t.over||$n(A.id,String(t.active.id),String(t.over.id))},Bt=(...t)=>ne?new Promise(a=>{de(()=>a(ne.send(...t)))||a(!1)}):Promise.resolve(!1),Ut=()=>ne?new Promise(t=>{de(()=>t(ne.startCall()))||t(null)}):Promise.resolve(null),Ze=()=>{const t=document.activeElement;t instanceof HTMLTextAreaElement&&t.matches(".hp-composer .t2c-ta")&&t.blur(),pe(!1)},Vt=(t=!1)=>{nn.flushSync(()=>pe(!0));const a=Ce.current?.querySelector(".hp-composer");t?a?.querySelector(".t2c-mic-control")?.click():a?.querySelector(".t2c-ta")?.focus()},[ut,Kt]=m.useState("");m.useEffect(()=>{u&&!oe&&Kt(Ce.current?.querySelector(".hp-composer .t2c-ta")?.value.trim()??"")},[u,oe]);const mt=()=>{Ze(),ee(!1),D(null),M(null),v(!0)},Gt=t=>{t.target.closest('button, input, textarea, [contenteditable="true"], .hp-composer, .ctx-menu, .hp-wallpaper-sheet')||(t.preventDefault(),t.stopPropagation(),M(null),T?D(null):b?v(!1):Q?ee(!1):mt())},ft=t=>t.kind==="cards"?Me.map(a=>{const d=Ye.has(a.id);return{id:a.id,label:X(a.space.name),checked:d,icon:e.jsx(He,{size:13,style:{opacity:d?1:0}}),run:()=>Ht(a.id)}}):t.kind==="member"?[{id:"move-out",label:n("home.folderMenu.moveOut"),icon:e.jsx(Wn,{size:13}),run:()=>{r(t.id),M(null),D(null)}}]:[{id:"rename",label:n("home.folderMenu.rename"),icon:e.jsx(_n,{size:13}),run:()=>{const a=t.id,d=j.find(R=>R.id===a);M(null),vt(n("home.folderMenu.renameTitle"),d?.kind==="folder"?d.folder.name:"").then(R=>{const H=R?.trim();H&&Dn(a,H)})}},{id:"dissolve",label:n("home.folderMenu.dissolve"),icon:e.jsx(Bn,{size:13}),run:()=>{Pn(t.id),M(null)}}],Yt=zn(F,()=>{if(!F)return null;const t=F.kind==="folder"?j.find(a=>a.id===F.id):void 0;return{...t?.kind==="folder"?{title:t.folder.name}:{},sections:[{items:ft(F)}]}},()=>M(null));return e.jsxs("div",{ref:Ce,className:`hp-root${u?" hp-phone":""}${te?" hp-still":""}${oe?" hp-composer-focused":""}${Q?" hp-layer-focused":""}${T||b?" hp-secondary-open":""}`,"data-wallpaper":Se?"true":void 0,"data-theme-preset":p.themePreset,"data-motion":p.motion?"on":"off","data-hidden":ie||void 0,"data-focus-blur":p.focusBlur?"true":"false","data-vignette":p.vignette?"true":"false",onPointerDown:t=>{t.target.closest(".hp-composer")||Ze()},onContextMenu:Gt,onClick:Ve,children:[e.jsx("div",{className:"hp-wallpaper",style:se?{backgroundImage:`url(${JSON.stringify(se)})`}:void 0,"aria-hidden":!0}),e.jsx("div",{className:"hp-wallpaper-art","aria-hidden":!0,children:!Se&&e.jsx(Ct,{preset:p.themePreset,hour:i.hour,minute:i.minute,still:!p.motion||te||ie})}),e.jsx("div",{className:"hp-wallpaper-edge","aria-hidden":!0}),e.jsx("div",{className:"hp-wallpaper-tone","aria-hidden":!0}),e.jsx("div",{className:"hp-glow","aria-hidden":!0}),e.jsx("button",{type:"button",className:`hp-wallpaper-button${Q?" on":""}`,"aria-label":n("home.wallpaper.open"),title:n("home.wallpaper.open"),onClick:t=>{t.stopPropagation(),Ze(),M(null),D(null),v(!1),ee(a=>!a)},children:e.jsx(en,{size:16})}),e.jsxs("div",{className:`hp-stack${Pe?" leaving":""}`,children:[e.jsxs("div",{className:"hp-title",children:[e.jsx("div",{className:"hp-brand",children:"Forsion is All You Need"}),e.jsx("div",{className:"hp-clock",children:i.time}),u?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"hp-date",children:i.date}),e.jsx("div",{className:"hp-greet",children:ze})]}):e.jsxs("div",{className:"hp-meta",children:[ze," · ",i.date]})]}),ne&&e.jsx(ne.Composer,{onDispatch:Bt,onStartCall:Ut,onInputModeChange:pe,liveSpaceId:_e}),u&&Oe&&e.jsxs("button",{type:"button",className:"hp-pill","data-act":"home-pill",onClick:t=>{t.stopPropagation(),Vt(!!t.target.closest(".hp-pill-mic"))},children:[e.jsx("span",{className:"hp-pill-text","data-draft":ut?"":void 0,children:ut||n("home.pill")}),e.jsx("span",{className:"hp-pill-mic","aria-hidden":!0,children:e.jsx(fn,{})}),e.jsx("span",{className:"hp-pill-send","aria-hidden":!0,children:e.jsx(xn,{})})]}),u&&e.jsx(js,{tiles:j,actions:pt,onLaunch:he}),ae.length>0&&e.jsx("section",{className:"hp-status-cards",style:{"--hp-card-cols":ae.length<=4?ae.length:3,"--hp-card-cols-narrow":Math.min(ae.length,2)},children:ae.map(({id:t,space:a})=>e.jsxs("button",{type:"button",className:"hp-status-card","data-space-id":a.id,onClick:d=>{d.stopPropagation(),he(a.id)},onContextMenu:d=>V(d,"cards"),children:[e.jsx("span",{className:"hp-status-card-icon",children:a.icon&&e.jsx(a.icon,{})}),e.jsx("span",{className:"hp-status-card-name",children:X(a.name)}),e.jsx("span",{className:"hp-status-card-status",children:e.jsx(Ln,{spaceId:a.id})})]},t))}),!u&&e.jsx("section",{className:"hp-spaces","data-total":j.length,children:e.jsxs(et,{sensors:ge,collisionDetection:Mt,onDragStart:k,onDragOver:P,onDragCancel:I,onDragEnd:U,children:[e.jsxs("div",{className:"hp-space-row",children:[e.jsx(us,{actions:pt,spaces:qt,labelText:n("home.pinnedSpaces"),onLaunch:he}),e.jsx("span",{className:"hp-space-divider","aria-hidden":!0}),e.jsx("div",{className:"hp-space-main",children:ve.length>0?e.jsx(tt,{items:ve.map(t=>t.id),strategy:nt,children:e.jsxs("div",{className:"hp-dock",children:[ve.map(t=>e.jsx(Et,{tile:t,over:w===t.id,open:T?.id===t.id,onOpen:_,onLaunch:he,onMenu:(a,d)=>V(a,"folder",d)},t.id)),Le>0&&e.jsxs("button",{type:"button",className:"hp-tile hp-more",onClick:t=>{t.stopPropagation(),mt()},title:n("home.showAll"),children:[e.jsx("span",{className:"hp-tile-icon",children:e.jsx(wt,{size:20})}),e.jsx("span",{className:"hp-tile-name",children:n("home.showAllCount",{n:String(Le)})})]})]})}):j.length===0&&e.jsx("div",{className:"hp-spaces-empty",children:n("home.noSpaces")})})]}),e.jsxs(jt,{dropAnimation:null,children:[Ee&&!b&&e.jsx("div",{className:`hp-tile hp-drag-overlay${Ee.kind==="folder"?" hp-folder":""}`,children:e.jsx($e,{tile:Ee})}),Je&&!b&&e.jsx("div",{className:"hp-tile hp-drag-overlay hp-pinned-space",children:e.jsx($e,{tile:{kind:"space",id:`space:${Je.id}`,space:Je}})})]})]})})]}),e.jsx("input",{ref:Fe,className:"hp-wallpaper-file",type:"file",accept:"image/*",onChange:t=>{Ie(t.currentTarget.files?.[0]),t.currentTarget.value=""}}),se&&p.source==="bing"&&p.bing?.copyright&&e.jsx("div",{className:"hp-wallpaper-credit",title:p.bing.copyright,children:p.bing.copyright}),Q&&e.jsx("div",{className:"hp-wallpaper-stage",onClick:()=>ee(!1),children:e.jsxs("section",{className:"hp-wallpaper-sheet","aria-label":n("home.wallpaper.title"),onClick:t=>t.stopPropagation(),children:[e.jsxs("header",{className:"hp-wallpaper-head",children:[e.jsxs("div",{children:[e.jsx("strong",{children:n("home.wallpaper.title")}),e.jsx("span",{children:n("home.wallpaper.subtitle")})]}),e.jsx("button",{type:"button",onClick:()=>ee(!1),"aria-label":n("common.close"),children:e.jsx(Qe,{size:16})})]}),e.jsx("div",{className:"hp-wallpaper-sources","aria-label":n("home.wallpaper.source"),children:cs.map(t=>e.jsxs("button",{type:"button",className:p.source===t?"on":"","aria-pressed":p.source===t,"data-source":t,onClick:()=>Ke(t),children:[p.source===t&&e.jsx(He,{size:12}),n(`home.wallpaper.${t}`)]},t))}),ke&&e.jsx("div",{className:"hp-wallpaper-error",children:ke}),p.source==="theme"&&e.jsxs("div",{className:"hp-theme-presets",children:[e.jsx("p",{children:n("home.wallpaper.themeHint")}),e.jsx("div",{children:ls.map(t=>e.jsxs("button",{type:"button",className:p.themePreset===t?"on":"","data-preset":t,"aria-pressed":p.themePreset===t,onClick:()=>O({source:"theme",themePreset:t}),children:[e.jsxs("span",{className:"hp-theme-preview","data-preset":t,"aria-hidden":!0,children:[e.jsx(Ct,{preset:t,hour:i.hour,minute:i.minute,thumb:!0}),e.jsx("span",{className:"hp-theme-mini-clock"}),e.jsx("span",{className:"hp-theme-mini-box"})]}),e.jsx("span",{children:n(`home.wallpaper.preset.${t}`)}),p.themePreset===t&&e.jsx("i",{children:e.jsx(He,{size:11})})]},t))})]}),p.source==="bing"&&e.jsxs("div",{className:"hp-wallpaper-bing",children:[e.jsxs("div",{className:"hp-wallpaper-row",children:[e.jsxs("button",{type:"button",className:`hp-wallpaper-switch${p.bingDaily?" on":""}`,role:"switch","aria-checked":p.bingDaily,onClick:()=>{const t=!p.bingDaily;O({bingDaily:t,bing:t&&le[0]||p.bing})},children:[e.jsx("span",{"aria-hidden":!0})," ",n("home.wallpaper.daily")]}),e.jsxs("button",{type:"button",className:"hp-wallpaper-refresh",disabled:Ae,onClick:()=>Ne(t=>t+1),children:[e.jsx(gn,{size:13})," ",n("home.wallpaper.refresh")]})]}),Ae&&le.length===0&&e.jsx("div",{className:"hp-wallpaper-loading",children:n("home.wallpaper.loading")}),le.length>0&&e.jsx("div",{className:"hp-wallpaper-grid",children:le.map((t,a)=>e.jsxs("button",{type:"button",className:p.bing?.id===t.id?"on":"",title:t.copyright||t.title,"aria-label":t.title||t.copyright||n("home.wallpaper.bing"),onClick:()=>O({source:"bing",bing:t,bingDaily:a===0&&p.bingDaily}),children:[e.jsx("img",{src:t.thumbnailUrl,alt:""}),p.bing?.id===t.id&&e.jsx("span",{children:e.jsx(He,{size:12})})]},t.id))})]}),p.source==="image"&&e.jsxs("div",{className:"hp-theme-presets hp-wallpaper-images",children:[e.jsx("div",{children:e.jsxs("button",{type:"button",className:se?"on":"","data-image":"custom","aria-pressed":!!se,onClick:()=>z?O({source:"image"}):Fe.current?.click(),children:[e.jsx("span",{className:"hp-image-preview",style:z?{backgroundImage:`url(${JSON.stringify(z)})`}:void 0,"aria-hidden":!0,children:!z&&e.jsx(yt,{size:16})}),e.jsx("span",{children:n(z?"home.wallpaper.mine":"home.wallpaper.upload")}),se&&e.jsx("i",{children:e.jsx(He,{size:11})})]})}),z?e.jsxs("div",{className:"hp-wallpaper-custom",children:[e.jsx("div",{children:e.jsx("span",{children:n("home.wallpaper.customHint")})}),e.jsxs("button",{type:"button",onClick:()=>Fe.current?.click(),children:[e.jsx(yt,{size:13})," ",n("home.wallpaper.replace")]}),e.jsx("button",{type:"button",onClick:o,children:n("home.wallpaper.remove")})]}):e.jsx("p",{className:"hp-theme-note",children:n("home.wallpaper.customHint")})]}),e.jsxs("div",{className:"hp-wallpaper-options",children:[e.jsxs("button",{type:"button",className:p.motion&&!te?"on":"",role:"switch","data-option":"motion","aria-checked":p.motion&&!te,disabled:te,onClick:()=>O({motion:!p.motion}),children:[e.jsxs("span",{children:[e.jsx("strong",{children:n("home.wallpaper.motion")}),e.jsx("small",{children:n(te?"home.wallpaper.motionReduced":"home.wallpaper.motionHint")})]}),e.jsx("i",{"aria-hidden":!0})]}),e.jsxs("button",{type:"button",className:p.focusBlur?"on":"",role:"switch","aria-checked":p.focusBlur,onClick:()=>O({focusBlur:!p.focusBlur}),children:[e.jsxs("span",{children:[e.jsx("strong",{children:n("home.wallpaper.focusBlur")}),e.jsx("small",{children:n("home.wallpaper.focusBlurHint")})]}),e.jsx("i",{"aria-hidden":!0})]}),e.jsxs("button",{type:"button",className:p.vignette?"on":"",role:"switch","aria-checked":p.vignette,onClick:()=>O({vignette:!p.vignette}),children:[e.jsxs("span",{children:[e.jsx("strong",{children:n("home.wallpaper.vignette")}),e.jsx("small",{children:n("home.wallpaper.vignetteHint")})]}),e.jsx("i",{"aria-hidden":!0})]})]})]})}),b&&e.jsx("div",{className:"hp-organizer-stage",onClick:()=>v(!1),children:e.jsxs("section",{className:"hp-organizer-panel","aria-label":n("home.organizer.title"),onClick:t=>t.stopPropagation(),children:[e.jsxs("header",{className:"hp-organizer-head",children:[e.jsxs("div",{children:[e.jsx("span",{className:"hp-organizer-mark",children:e.jsx(wt,{size:16})}),e.jsxs("span",{children:[e.jsx("strong",{children:n("home.organizer.title")}),e.jsx("small",{children:n("home.spaceCount",{n:Wt})})]})]}),e.jsx("button",{type:"button",onClick:()=>v(!1),"aria-label":n("common.close"),children:e.jsx(Qe,{size:16})})]}),e.jsxs(et,{sensors:ge,collisionDetection:Mt,onDragStart:k,onDragOver:P,onDragCancel:I,onDragEnd:U,children:[e.jsx(tt,{items:j.map(t=>t.id),strategy:nt,children:e.jsxs("div",{className:"hp-organizer-grid",children:[j.map(t=>e.jsx(Et,{tile:t,over:w===t.id,open:!1,onOpen:_,onLaunch:a=>{v(!1),he(a)},onMenu:(a,d)=>V(a,"folder",d)},t.id)),e.jsxs("button",{type:"button",className:"hp-organizer-new",onClick:x,children:[e.jsx("span",{children:e.jsx(qn,{size:22})}),e.jsx("small",{children:n("home.newFolder")})]})]})}),e.jsx(jt,{dropAnimation:null,children:Ee&&e.jsx("div",{className:`hp-tile hp-drag-overlay${Ee.kind==="folder"?" hp-folder":""}`,children:e.jsx($e,{tile:Ee})})})]}),e.jsx("footer",{children:n("home.organizer.hint")})]})}),T&&A?.kind==="folder"&&e.jsx("div",{className:"hp-folder-stage",onClick:()=>D(null),children:e.jsxs("section",{className:"hp-folder-panel",style:{"--hp-folder-dx":`${T.dx}px`,"--hp-folder-dy":`${T.dy}px`},"aria-label":A.folder.name,onClick:t=>t.stopPropagation(),children:[e.jsxs("header",{className:"hp-folder-head",children:[e.jsxs("div",{className:"hp-folder-identity",children:[e.jsx("span",{className:"hp-folder-hero",children:e.jsx($e,{tile:A})}),e.jsxs("span",{children:[e.jsx("strong",{children:A.folder.name}),e.jsx("small",{children:n("home.folderCount",{n:K.length})})]})]}),e.jsx("button",{type:"button",onClick:()=>D(null),"aria-label":n("common.close"),children:e.jsx(Qe,{size:16})})]}),K.length===0&&e.jsx("div",{className:"hp-folder-empty",children:n("home.folderEmpty")}),K.length>0&&e.jsx(et,{sensors:ge,collisionDetection:Pt,onDragEnd:_t,children:e.jsx(tt,{items:A.folder.items,strategy:nt,children:e.jsx("div",{className:"hp-folder-grid",children:K.map(t=>e.jsx(ms,{member:t,onLaunch:a=>{D(null),he(a)},onMenu:(a,d)=>V(a,"member",d)},t.id))})})}),e.jsx("footer",{children:n("home.folderHint")})]})}),F&&Yt&&e.jsx(tn,{className:`ctx-menu${F.kind==="cards"?" hp-cards-menu":""}`,x:F.x,y:F.y,onClick:t=>t.stopPropagation(),children:e.jsx(In,{items:ft(F)})})]})}export{zs as HomepageView};
@@ -0,0 +1 @@
1
+ @font-face{font-family:Dancing Script;font-style:normal;font-weight:600;font-display:swap;src:url(./DancingScript-Bold-latin-CWNX0RqN.woff2) format("woff2")}.hp-root{position:relative;box-sizing:border-box;height:100%;overflow:clip;display:flex;--hp-padding-block: clamp(24px, 5vh, 48px);padding:calc(var(--hp-chrome-top, 0px) + var(--hp-padding-block)) 24px calc(var(--hp-chrome-bottom, 0px) + var(--hp-padding-block));isolation:isolate;background:var(--bg);--hp-glass-tint: color-mix(in srgb, var(--bg-card) 46%, transparent);--hp-glass-thick-tint: color-mix(in srgb, var(--bg-card) 58%, transparent);--hp-glass-sheen: var(--gl-sheen, linear-gradient(145deg, color-mix(in srgb, var(--bg-card) 20%, transparent), transparent 48%, color-mix(in srgb, var(--accent-ink) 4%, transparent)));--hp-glass-filter: var(--gl-blur-float, blur(40px) saturate(160%))}.hp-wallpaper,.hp-wallpaper-art,.hp-wallpaper-edge,.hp-wallpaper-tone,.hp-glow{position:absolute;inset:0;pointer-events:none}.hp-wallpaper{z-index:-5;background-position:center;background-size:cover;transform:scale(1.001);transition:transform .52s var(--ease-spring),filter .42s var(--ease-out)}.hp-root:not([data-wallpaper=true]) .hp-wallpaper,.hp-theme-preview{background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 96%,var(--text) 4%),var(--bg) 46%,var(--bg))}.hp-root:not([data-wallpaper=true])[data-theme-preset=path] .hp-wallpaper,.hp-theme-preview[data-preset=path]{background:radial-gradient(ellipse 60% 34% at 50% 100%,color-mix(in srgb,var(--bg-card) 70%,transparent),transparent 72%),linear-gradient(180deg,color-mix(in srgb,var(--bg) 97%,var(--text) 3%),var(--bg) 56%)}.hp-root:not([data-wallpaper=true])[data-theme-preset=paper] .hp-wallpaper,.hp-theme-preview[data-preset=paper]{background:radial-gradient(ellipse 85% 85% at 50% 46%,var(--bg) 55%,color-mix(in srgb,var(--bg) 94%,var(--text) 6%) 100%)}.hp-wallpaper-art{z-index:-4;overflow:hidden;container-type:size;transition:opacity var(--duration-slow) var(--ease-out),transform .52s var(--ease-spring),filter .42s var(--ease-out)}.hp-root[data-wallpaper=true] .hp-wallpaper-art{opacity:0}.hp-root{--hpw-grain-blend: multiply;--hpw-halo: 7%;--hpw-halo-mid: 2.3%}html.dark .hp-root{--hpw-grain-blend: screen;--hpw-halo: 16%;--hpw-halo-mid: 5.3%}.hpw-canvas{position:absolute;left:50%;top:50%;width:max(100cqw,160cqh);aspect-ratio:1600 / 1000;translate:-50% -50%;pointer-events:none}.hpw-static{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.hpw-grain{mix-blend-mode:var(--hpw-grain-blend)}.hpw-orbit,.hpw-planet,.hpw-halo{position:absolute}.hpw-orbit{aspect-ratio:1;animation:hpw-spin 120s steps(480) infinite}.hpw-planet{aspect-ratio:140 / 120;animation:hpw-spin 120s steps(480) infinite reverse}.hpw-planet>svg{display:block;width:100%;height:100%;overflow:visible}.hpw-halo{aspect-ratio:1;border-radius:50%;animation:hpw-breathe 4s steps(16) infinite alternate}.hpw-sun{background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 30%,transparent),transparent)}.hpw-moon{background:radial-gradient(closest-side,color-mix(in srgb,var(--accent-ink) var(--hpw-halo),transparent),color-mix(in srgb,var(--accent-ink) var(--hpw-halo-mid),transparent) 55%,transparent)}@keyframes hpw-spin{to{transform:rotate(1turn)}}@keyframes hpw-breathe{0%{opacity:.3;transform:scale(.7)}to{opacity:1;transform:scale(1.35)}}.hpw-glyphs{position:absolute;inset:0;pointer-events:none}.hpw-glyph-canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.hp-root:is([data-motion=off],[data-hidden]) :is(.hpw-orbit,.hpw-planet,.hpw-halo){animation-play-state:paused}.hpw-rings{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 76% 27%,color-mix(in srgb,var(--accent-ink) 13%,transparent) 0 7%,transparent 7.4%),repeating-radial-gradient(circle at 76% 27%,transparent 0 54px,color-mix(in srgb,var(--accent-ink) 16%,transparent) 55px 56px,transparent 57px 94px)}.hpw-rings:before{content:"";position:absolute;width:54%;height:70%;right:-9%;top:-16%;border:1px solid color-mix(in srgb,var(--accent-ink) 28%,transparent);border-radius:50%;transform:rotate(-24deg)}.hp-wallpaper-art .hpw-rings{opacity:.78;-webkit-mask-image:linear-gradient(115deg,transparent 8%,#000 48%,transparent 94%);mask-image:linear-gradient(115deg,transparent 8%,#000 48%,transparent 94%)}.hp-wallpaper-edge{z-index:-3;opacity:.46;background:linear-gradient(to right,color-mix(in srgb,var(--bg) 92%,transparent),transparent 18%,transparent 82%,color-mix(in srgb,var(--bg) 92%,transparent)),linear-gradient(to bottom,color-mix(in srgb,var(--bg) 82%,transparent),transparent 20%,transparent 72%,color-mix(in srgb,var(--bg) 94%,transparent));mask-image:radial-gradient(ellipse 74% 76% at center,transparent 39%,rgba(0,0,0,.58) 74%,#000 100%);-webkit-mask-image:radial-gradient(ellipse 74% 76% at center,transparent 39%,rgba(0,0,0,.58) 74%,#000 100%);backdrop-filter:blur(14px) saturate(118%);-webkit-backdrop-filter:blur(14px) saturate(118%);transition:opacity var(--duration-slow) var(--ease-out)}.hp-root[data-wallpaper=true] .hp-wallpaper-edge{opacity:1;backdrop-filter:blur(24px) saturate(128%);-webkit-backdrop-filter:blur(24px) saturate(128%)}.hp-root[data-wallpaper=true][data-vignette=false] .hp-wallpaper-edge{opacity:.64}.hp-wallpaper-tone{z-index:-2;opacity:0;background:var(--hp-center-scrim, linear-gradient(transparent, transparent)),linear-gradient(to bottom,color-mix(in srgb,var(--bg) 24%,transparent),transparent 34%),linear-gradient(to right,color-mix(in srgb,var(--bg) 24%,transparent),transparent 15%,transparent 85%,color-mix(in srgb,var(--bg) 24%,transparent)),radial-gradient(ellipse at center,transparent 36%,color-mix(in srgb,var(--bg) 64%,transparent) 100%);transition:opacity var(--duration-slow) var(--ease-out)}.hp-root[data-wallpaper=true] .hp-wallpaper-tone{opacity:1}.hp-root[data-wallpaper=true][data-vignette=false] .hp-wallpaper-tone{opacity:.36}.hp-root[data-vignette=true]{--hp-center-scrim: radial-gradient(ellipse 46% 40% at 50% 56%, color-mix(in srgb, var(--bg) 40%, transparent), transparent 78%)}.hp-glow{z-index:-1;background:var(--glow, none)}.hp-root[data-focus-blur=true].hp-composer-focused .hp-wallpaper,.hp-root[data-focus-blur=true].hp-composer-focused .hp-wallpaper-art,.hp-root[data-focus-blur=true].hp-layer-focused .hp-wallpaper,.hp-root[data-focus-blur=true].hp-layer-focused .hp-wallpaper-art,.hp-root[data-focus-blur=true].hp-secondary-open .hp-wallpaper{filter:blur(8px) brightness(.86);transform:scale(1.045)}.hp-root[data-focus-blur=true].hp-secondary-open .hp-wallpaper{filter:blur(15px) brightness(.8) saturate(.9);transform:scale(1.065)}.hp-root[data-focus-blur=true].hp-secondary-open .hp-wallpaper-art{filter:blur(8px) brightness(.82) saturate(.9);transform:scale(1.045)}.hp-wallpaper-button{position:absolute;z-index:5;top:calc(var(--hp-chrome-top, 0px) + 16px);right:16px;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border:var(--border-width) solid var(--border);border-radius:50%;background:var(--bg-card);color:var(--text-muted);box-shadow:var(--icon-shadow);cursor:pointer;transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-spring)}.hp-wallpaper-button:hover,.hp-wallpaper-button.on{color:var(--text);background:var(--bg-hover);transform:scale(1.05)}.hp-root .hp-wallpaper-button{background:color-mix(in srgb,var(--bg-card) 64%,transparent);backdrop-filter:blur(22px) saturate(145%);-webkit-backdrop-filter:blur(22px) saturate(145%)}.hp-wallpaper-file{display:none}.hp-wallpaper-credit{position:absolute;z-index:2;right:18px;bottom:12px;max-width:min(420px,54%);overflow:hidden;color:var(--text-light);font-size:var(--ui-font-caption, 11px);line-height:1.3;opacity:.58;text-overflow:ellipsis;white-space:nowrap}.hp-stack{position:relative;width:min(840px,100%);margin:auto;display:flex;flex-direction:column;align-items:center;gap:22px;transition:opacity var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.hp-title,.hp-composer,.hp-status-cards,.hp-spaces{transition:opacity .32s var(--ease-out),transform .36s var(--ease-spring)}.hp-composer-focused .hp-title{opacity:.58;transform:translateY(-5px) scale(.985)}.hp-composer-focused .hp-composer{transform:translateY(-2px) scale(1.012)}.hp-composer-focused .hp-status-cards,.hp-composer-focused .hp-spaces{opacity:.74;transform:translateY(5px) scale(.988)}.hp-layer-focused .hp-stack{opacity:.18;transform:scale(.965)}.hp-secondary-open .hp-stack{opacity:0;transform:scale(.955);pointer-events:none}.hp-stack.leaving{opacity:0;transform:scale(.985)}@keyframes hp-rise{0%{transform:translateY(10px)}to{transform:none}}.hp-title,.hp-composer,.hp-status-cards,.hp-spaces{animation:hp-rise var(--duration-slow) var(--ease-out) backwards}.hp-composer{animation-delay:60ms}.hp-status-cards{animation-delay:90ms}.hp-spaces{animation-delay:.12s}.hp-title{text-align:center;-webkit-user-select:none;user-select:none}.hp-brand{margin-bottom:6px;color:var(--text-faint);font-family:Dancing Script,Snell Roundhand,Segoe Script,cursive;font-size:30px;font-weight:700;line-height:1.2}.hp-clock{color:var(--text);font-size:64px;font-weight:250;font-variant-numeric:tabular-nums;letter-spacing:-.045em;line-height:1}.hp-meta{margin-top:12px;color:var(--text-muted);font-size:var(--ui-font-body, 13px)}.hp-date{margin-top:9px;color:var(--text-muted);font-size:var(--ui-font-meta, 12px)}.hp-greet{margin-top:3px;color:var(--text-light);font-size:var(--ui-font-body, 13px)}.hp-root[data-wallpaper=true] .hp-brand{color:var(--text);opacity:.62}.hp-root[data-wallpaper=true] .hp-meta,.hp-root[data-wallpaper=true] .hp-date,.hp-root[data-wallpaper=true] .hp-greet{color:var(--text);opacity:.7}.hp-status-cards{width:100%;display:grid;grid-template-columns:repeat(var(--hp-card-cols, 4),minmax(0,1fr));gap:10px}.hp-status-card{min-width:0;display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:9px;row-gap:5px;padding:12px 14px 13px;border:var(--border-width) solid color-mix(in srgb,var(--border) 85%,transparent);border-radius:var(--radius-lg);background:var(--hp-glass-sheen),var(--hp-glass-tint);backdrop-filter:var(--hp-glass-filter);-webkit-backdrop-filter:var(--hp-glass-filter);box-shadow:var(--card-shadow);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:transform var(--duration-fast) var(--ease-spring),background var(--duration-fast) var(--ease-out)}.hp-status-card:hover{transform:translateY(-2px);background:var(--hp-glass-sheen),color-mix(in srgb,var(--bg-card) 78%,transparent)}.hp-status-card:active{transform:scale(.98)}.hp-status-card-icon{display:inline-flex;color:var(--text-muted);transition:color var(--duration-fast) var(--ease-out)}.hp-status-card:hover .hp-status-card-icon{color:var(--text)}.hp-status-card-icon>svg{width:17px;height:17px}.hp-status-card-name,.hp-status-card-status{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hp-status-card-name{font-size:var(--ui-font-body, 13px);font-weight:600}.hp-status-card-status{grid-column:1 / -1;min-height:1.35em;color:var(--text-muted);font-size:var(--ui-font-meta, 12px)}@media(max-width:760px){.hp-status-cards{grid-template-columns:repeat(var(--hp-card-cols-narrow, 2),minmax(0,1fr))}}.hp-composer{width:100%}.hp-projectbar{display:flex;align-items:center;flex-wrap:wrap-reverse;gap:6px;padding:0 4px 6px}.hp-composer .t2c-inner{width:100%;max-width:none;padding:0}.hp-composer .t2c-card{box-shadow:var(--card-shadow)}.hp-spaces{box-sizing:border-box;width:100%;padding:0;border:var(--border-width) solid transparent;border-radius:var(--radius-lg);background:transparent}.hp-root .hp-composer .t2c-card{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;isolation:isolate}.hp-root .hp-composer .t2c-card:before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:var(--hp-glass-sheen),var(--hp-glass-tint);backdrop-filter:var(--hp-glass-filter);-webkit-backdrop-filter:var(--hp-glass-filter)}.hp-root[data-wallpaper=true] .hp-spaces{padding:4px 8px;border-color:transparent;background:var(--hp-glass-sheen),var(--hp-glass-tint);backdrop-filter:var(--hp-glass-filter);-webkit-backdrop-filter:var(--hp-glass-filter)}.hp-root .hp-composer .t2c-card.dragover{border-color:var(--accent-ink)}html[data-glass=off] .hp-root .hp-composer .t2c-card:before,html[data-glass=off] .hp-root[data-wallpaper=true] .hp-spaces,html[data-glass=off] .hp-root .hp-status-card,html[data-glass=off] .hp-root .hp-organizer-panel:before,html[data-glass=off] .hp-root .hp-folder-panel:before,html[data-glass=off] .hp-root .hp-organizer-grid .hp-tile-icon,html[data-glass=off] .hp-root .hp-organizer-new>span,html[data-glass=off] .hp-root .hp-wallpaper-button,html[data-glass=off] .hp-root .hp-wallpaper-edge,html[data-glass=off] .hp-root .hp-folder-head,html[data-glass=off] .hp-root .hp-organizer-head,html[data-glass=off] .hp-root .hp-wallpaper-sheet{background:var(--bg-card);backdrop-filter:none;-webkit-backdrop-filter:none}.hp-root .hp-composer .engine-picker-hint,.hp-root .hp-composer .agent-select-team{position:relative;isolation:isolate;padding:2px 10px;border-radius:var(--radius-pill)}.hp-root .hp-composer .project-pill{position:relative;isolation:isolate}.hp-root .hp-composer .engine-picker-hint:before,.hp-root .hp-composer .agent-select-team:before,.hp-root .hp-composer .project-pill:before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:color-mix(in srgb,var(--bg-card) 64%,transparent);backdrop-filter:var(--hp-glass-filter);-webkit-backdrop-filter:var(--hp-glass-filter)}html[data-glass=off] .hp-root .hp-composer .engine-picker-hint:before,html[data-glass=off] .hp-root .hp-composer .agent-select-team:before,html[data-glass=off] .hp-root .hp-composer .project-pill:before{background:var(--bg-card);backdrop-filter:none;-webkit-backdrop-filter:none}.hp-root .hp-composer .engine-picker-hint.is-default{display:none}.hp-space-row{width:100%;min-width:0;display:flex;justify-content:center;align-items:stretch;gap:5px}.hp-pinned-zone{box-sizing:border-box;flex:0 1 auto;width:max-content;min-width:0;max-width:min(42%,350px);display:flex;align-items:flex-start;gap:4px;overflow-x:auto;overscroll-behavior-x:contain;border-radius:var(--radius-md);transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.hp-pinned-zone[data-over=true]{background:color-mix(in srgb,var(--accent-light) 68%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent-ink) 12%,transparent)}.hp-space-divider{flex:0 0 1px;align-self:stretch;margin:12px 6px 20px;border-radius:var(--radius-pill, 999px);background:color-mix(in srgb,var(--border-strong) 68%,transparent)}.hp-space-main{flex:0 1 auto;min-width:0;display:flex;overflow-x:auto;overscroll-behavior-x:contain}.hp-pinned-zone .hp-tile,.hp-space-main .hp-tile{width:64px;min-height:60px;flex:0 0 64px;gap:5px;padding:6px 3px}.hp-space-row .hp-tile-icon{width:30px;height:30px;background:transparent}.hp-space-row .hp-tile:hover .hp-tile-icon{background:transparent}.hp-space-row .hp-tile-icon>svg{width:18px;height:18px}.hp-pinned-action{cursor:pointer;touch-action:auto}.hp-pinned-action:active{cursor:pointer}.hp-dock{display:flex;flex-wrap:nowrap;align-items:flex-start;justify-content:flex-start;gap:4px}.hp-tile{position:relative;box-sizing:border-box;width:82px;min-height:78px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:8px 5px 7px;border:var(--border-width) solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--text-muted);box-shadow:none;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;transition:transform var(--duration-fast) var(--ease-spring),color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out)}.hp-tile:hover{color:var(--text);background:var(--bg-hover);transform:translateY(-2px)}.hp-tile:active{cursor:grabbing;transform:scale(.97)}.hp-tile.dragging{opacity:.16;cursor:grabbing}.hp-tile-icon{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-md);background:var(--overlay-light, color-mix(in srgb, var(--text) 7%, transparent));color:var(--text-light);transition:transform var(--duration-fast) var(--ease-spring),background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.hp-tile:hover .hp-tile-icon{background:var(--overlay-medium, var(--bg-hover));color:var(--text)}.hp-tile-name{width:100%;overflow:hidden;color:inherit;font-size:var(--ui-font-caption, 11px);line-height:1.2;text-align:center;text-overflow:ellipsis;white-space:nowrap}.hp-tile[data-over]{border-color:var(--accent);box-shadow:0 0 0 .5px var(--accent)}.hp-folder[data-over] .hp-tile-icon{transform:scale(1.12);background:color-mix(in srgb,var(--accent) 16%,var(--overlay-light))}.hp-fpreview{display:grid;grid-template-columns:repeat(2,12px);grid-auto-rows:12px;place-content:center;gap:2px;background:var(--overlay-medium, var(--bg-hover))}.hp-fmini{display:inline-flex;align-items:center;justify-content:center;opacity:.82}.hp-folder.on{color:var(--text);background:var(--bg-hover)}.hp-folder-count{position:absolute;top:5px;right:6px;min-width:17px;height:17px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;border-radius:var(--radius-pill, 999px);background:var(--bg-card);color:var(--text-faint);font-size:var(--ui-font-caption, 11px);font-variant-numeric:tabular-nums}.hp-more{cursor:pointer}.hp-drag-overlay{pointer-events:none;cursor:grabbing;background:var(--bg-card);border-color:var(--accent);box-shadow:var(--card-shadow);opacity:.96;transform:rotate(1deg) scale(1.04)}.hp-spaces-empty{padding:20px 12px 22px;color:var(--text-faint);font-size:var(--ui-font-meta, 12px);text-align:center}@keyframes hp-stage-in{0%{opacity:0}to{opacity:1}}@keyframes hp-folder-open{0%{transform:translate(var(--hp-folder-dx),var(--hp-folder-dy)) scale(.24)}to{transform:none}}.hp-folder-stage,.hp-organizer-stage,.hp-wallpaper-stage{position:absolute;z-index:20;inset:0;display:grid;place-items:center;padding:calc(var(--hp-chrome-top, 0px) + 24px) 24px calc(var(--hp-chrome-bottom, 0px) + 24px)}.hp-folder-stage:before,.hp-organizer-stage:before,.hp-wallpaper-stage:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:color-mix(in srgb,var(--overlay-scrim) 72%,transparent);animation:hp-stage-in var(--duration-fast) var(--ease-out) both}.hp-folder-stage:before,.hp-organizer-stage:before{background:color-mix(in srgb,var(--overlay-scrim) 36%,transparent)}.hp-organizer-stage{z-index:20;overflow:auto}.hp-folder-panel,.hp-organizer-panel{position:relative;isolation:isolate;border-radius:var(--radius-chat-surface);box-shadow:var(--card-shadow)}.hp-root .hp-folder-panel:before,.hp-root .hp-organizer-panel:before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:var(--hp-glass-sheen),var(--hp-glass-thick-tint);backdrop-filter:var(--hp-glass-filter);-webkit-backdrop-filter:var(--hp-glass-filter)}.hp-folder-panel{box-sizing:border-box;width:min(680px,100%);min-height:min(330px,calc(100% - 16px));max-height:min(620px,calc(100% - 16px));overflow:hidden;display:flex;flex-direction:column;padding:18px;border:0;background:transparent;transform-origin:center;animation:hp-folder-open .36s var(--ease-spring) backwards}.hp-root .hp-wallpaper-sheet{border-color:color-mix(in srgb,var(--border) 76%,transparent);background:color-mix(in srgb,var(--bg-card) 70%,transparent);backdrop-filter:blur(34px) saturate(155%);-webkit-backdrop-filter:blur(34px) saturate(155%)}.hp-folder-head{flex:none;width:min(480px,calc(100% - 24px));margin-inline:auto;padding:6px 7px 6px 9px;border:var(--border-width) solid color-mix(in srgb,var(--border) 76%,transparent);border-radius:var(--radius-pill, 999px);background:color-mix(in srgb,var(--bg-card) 58%,transparent);backdrop-filter:blur(28px) saturate(150%);-webkit-backdrop-filter:blur(28px) saturate(150%)}.hp-folder-head,.hp-wallpaper-head{display:flex;align-items:center;justify-content:space-between;gap:18px}.hp-folder-head>button,.hp-wallpaper-head>button{width:30px;height:30px;flex:none;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:transparent;color:var(--text-muted);cursor:pointer}.hp-folder-head>button:hover,.hp-wallpaper-head>button:hover{color:var(--text);background:var(--bg-hover)}.hp-folder-identity{min-width:0;display:flex;align-items:center;gap:12px}.hp-folder-identity>span:last-child{min-width:0;display:flex;flex-direction:column}.hp-folder-identity strong{overflow:hidden;color:var(--text);font-size:var(--ui-font-heading, 14px);text-overflow:ellipsis;white-space:nowrap}.hp-folder-identity small{color:var(--text-faint);font-size:var(--ui-font-caption, 11px)}.hp-folder-hero{width:44px;height:44px;flex:none;display:inline-flex;align-items:center;justify-content:center}.hp-folder-hero>.hp-tile-icon{width:44px;height:44px}.hp-folder-hero>.hp-tile-name,.hp-folder-hero>.hp-folder-count{display:none}.hp-folder-grid{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-wrap:wrap;align-content:safe center;align-items:center;justify-content:center;gap:18px;padding:26px 4px 20px}.hp-folder-app{width:96px;min-width:0;min-height:104px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:10px 7px;border:var(--border-width) solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--text-light);font:inherit;font-size:var(--ui-font-caption, 11px);cursor:grab;touch-action:none;transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-spring),opacity var(--duration-fast) var(--ease-out)}.hp-folder-app:hover{color:var(--text);background:var(--bg-hover);transform:translateY(-3px)}.hp-folder-app:active{cursor:grabbing}.hp-folder-app.dragging{opacity:.18}.hp-folder-app>span:last-child{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hp-folder-app-icon{width:48px;height:48px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-md);background:var(--overlay-light)}.hp-folder-empty{margin:auto;max-width:270px;color:var(--text-faint);font-size:var(--ui-font-meta, 12px);line-height:1.6;text-align:center}.hp-folder-panel footer{flex:none;padding-top:12px;color:var(--text-ghost);font-size:var(--ui-font-caption, 11px);text-align:center}.hp-organizer-panel{box-sizing:border-box;width:min(590px,100%);max-height:calc(100% - 8px);overflow:hidden;display:flex;flex-direction:column;align-items:stretch;padding:8px 10px 7px;animation:hp-rise .36s var(--ease-spring) backwards}.hp-organizer-head{min-height:42px;flex:none;display:flex;align-items:center;justify-content:space-between;gap:14px;width:min(440px,calc(100% - 24px));margin:0 auto 9px;padding:5px 7px 5px 8px;border:var(--border-width) solid color-mix(in srgb,var(--border) 76%,transparent);border-radius:var(--radius-pill, 999px);background:color-mix(in srgb,var(--bg-card) 58%,transparent);backdrop-filter:blur(28px) saturate(150%);-webkit-backdrop-filter:blur(28px) saturate(150%)}.hp-organizer-head>div{min-width:0;display:flex;align-items:center;gap:9px}.hp-organizer-head>div>span:nth-child(2){min-width:0;display:flex;flex-direction:column}.hp-organizer-head strong{color:var(--text);font-size:var(--ui-font-meta, 12px);line-height:1.3}.hp-organizer-head small{color:var(--text-faint);font-size:var(--ui-font-caption, 11px)}.hp-organizer-mark{width:30px;height:30px;flex:none;display:grid;place-items:center;border-radius:50%;background:var(--overlay-light);color:var(--text-light)}.hp-organizer-head>button{width:30px;height:30px;flex:none;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:var(--text-muted);cursor:pointer}.hp-organizer-head>button:hover{color:var(--text);background:var(--bg-hover)}.hp-organizer-grid{box-sizing:border-box;display:grid;grid-template-columns:repeat(6,78px);grid-auto-rows:78px;align-content:start;justify-content:center;justify-items:center;gap:6px 8px;min-height:0;max-height:414px;overflow-y:auto;overscroll-behavior:contain;padding:5px 8px;scroll-padding-block:5px}.hp-organizer-grid .hp-tile,.hp-organizer-new{width:78px;min-height:78px;padding:5px 3px;gap:5px}.hp-organizer-grid .hp-tile{color:var(--text-light)}.hp-organizer-grid .hp-tile-icon,.hp-organizer-new>span{width:40px;height:40px;background:color-mix(in srgb,var(--bg-card) 54%,transparent);backdrop-filter:blur(18px) saturate(135%);-webkit-backdrop-filter:blur(18px) saturate(135%);box-shadow:var(--icon-shadow)}.hp-organizer-grid .hp-tile:hover{color:var(--text)}.hp-organizer-new{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:5px 3px;border:var(--border-width) solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--text-muted);font:inherit;cursor:pointer;transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-spring)}.hp-organizer-new>span{display:grid;place-items:center;border-radius:var(--radius-md);box-shadow:none}.hp-organizer-new small{max-width:100%;overflow:hidden;font-size:var(--ui-font-caption, 11px);text-overflow:ellipsis;white-space:nowrap}.hp-organizer-new:hover{color:var(--text);background:var(--bg-hover);transform:translateY(-2px)}.hp-organizer-grid .hp-tile-name,.hp-organizer-new small{font-size:var(--ui-font-caption, 11px)}.hp-organizer-panel>footer{flex:none;padding-top:7px;color:var(--text-ghost);font-size:var(--ui-font-caption, 11px);text-align:center}.hp-wallpaper-stage{z-index:30;justify-items:end}.hp-wallpaper-sheet{box-sizing:border-box;width:min(420px,100%);max-height:100%;overflow:auto;padding:18px;border:var(--border-width) solid var(--border);border-radius:calc(var(--radius-lg) + 4px);background:var(--bg-card);box-shadow:var(--card-shadow);animation:hp-rise var(--duration-slow) var(--ease-out) both}.hp-wallpaper-head>div{min-width:0;display:flex;flex-direction:column}.hp-wallpaper-head strong{color:var(--text);font-size:var(--ui-font-heading, 14px)}.hp-wallpaper-head span{color:var(--text-faint);font-size:var(--ui-font-caption, 11px);line-height:1.4}.hp-wallpaper-sources{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;margin-top:17px;padding:3px;border:var(--border-width) solid var(--border);border-radius:var(--radius-md);background:var(--overlay-subtle)}.hp-wallpaper-sources button{min-width:0;height:30px;display:inline-flex;align-items:center;justify-content:center;gap:4px;border:0;border-radius:calc(var(--radius-md) - 3px);background:transparent;color:var(--text-muted);font:inherit;font-size:var(--ui-font-caption, 11px);cursor:pointer}.hp-wallpaper-sources button:hover{color:var(--text)}.hp-wallpaper-sources button.on{background:var(--bg-card);color:var(--text);box-shadow:var(--btn-shadow)}.hp-wallpaper-loading,.hp-wallpaper-error{min-height:126px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:20px;color:var(--text-faint);font-size:var(--ui-font-caption, 11px);line-height:1.5;text-align:center}.hp-wallpaper-error{min-height:48px;color:var(--danger)}.hp-theme-presets{padding-top:13px}.hp-theme-presets>p{margin:0 1px 9px;color:var(--text-faint);font-size:var(--ui-font-caption, 11px);line-height:1.45}.hp-theme-presets>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.hp-theme-presets>p.hp-theme-note{margin:8px 1px 0}.hp-theme-presets button{position:relative;min-width:0;display:grid;grid-template-rows:auto 22px;overflow:hidden;padding:0;border:var(--border-width) solid transparent;border-radius:var(--radius-sm);background:var(--overlay-subtle);color:var(--text-muted);font:inherit;font-size:var(--ui-font-caption, 11px);cursor:pointer;transition:transform var(--duration-fast) var(--ease-spring),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.hp-theme-presets button:hover{color:var(--text);transform:translateY(-2px)}.hp-theme-presets button.on{border-color:color-mix(in srgb,var(--accent-ink) 72%,var(--border));color:var(--text)}.hp-theme-presets button>span:nth-child(2){align-self:center;padding-inline:7px;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.hp-theme-presets button>i{position:absolute;top:6px;right:6px;width:18px;height:18px;display:grid;place-items:center;border-radius:50%;background:var(--action-fill);color:var(--on-action);font-style:normal}.hp-theme-preview{position:relative;aspect-ratio:16 / 10;overflow:hidden;container-type:size}.hp-theme-preview svg *{vector-effect:non-scaling-stroke}.hp-theme-preview :is(.hpw-orbit,.hpw-planet,.hpw-halo){animation:none}.hp-theme-mini-clock,.hp-theme-mini-box{position:absolute;left:50%;translate:-50% 0}.hp-theme-mini-clock{top:36%;width:26%;height:9%;border-radius:2px;background:color-mix(in srgb,var(--text) 70%,transparent)}.hp-theme-mini-box{top:54%;width:58%;height:13%;border-radius:3px;background:var(--bg-card);box-shadow:0 0 0 .5px var(--border)}.hp-wallpaper-images{padding-top:13px}.hp-wallpaper-images>div:first-child{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.hp-image-preview{display:grid;place-items:center;aspect-ratio:16 / 10;background-color:var(--overlay-light);background-position:center;background-size:cover;color:var(--text-faint)}.hp-wallpaper-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 1px 9px}.hp-wallpaper-switch,.hp-wallpaper-refresh{display:inline-flex;align-items:center;gap:7px;border:0;background:transparent;color:var(--text-muted);font:inherit;font-size:var(--ui-font-caption, 11px);cursor:pointer}.hp-wallpaper-switch>span{position:relative;width:27px;height:16px;border-radius:var(--radius-pill, 999px);background:var(--overlay-strong)}.hp-wallpaper-switch>span:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--bg-card);transition:transform var(--duration-fast) var(--ease-spring)}.hp-wallpaper-switch.on>span{background:var(--signal-mark)}.hp-wallpaper-switch.on>span:after{transform:translate(11px)}.hp-wallpaper-refresh:hover{color:var(--text)}.hp-wallpaper-refresh:disabled{opacity:.45;cursor:wait}.hp-wallpaper-refresh:disabled svg{animation:hp-spin .85s linear infinite}@keyframes hp-spin{to{transform:rotate(1turn)}}.hp-wallpaper-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}.hp-wallpaper-grid button{position:relative;aspect-ratio:5 / 3;overflow:hidden;padding:0;border:var(--border-width) solid transparent;border-radius:var(--radius-sm);background:var(--overlay-light);cursor:pointer;transition:transform var(--duration-fast) var(--ease-spring),border-color var(--duration-fast) var(--ease-out)}.hp-wallpaper-grid button:hover{transform:translateY(-2px)}.hp-wallpaper-grid button.on{border-color:var(--accent-ink)}.hp-wallpaper-grid img{width:100%;height:100%;display:block;object-fit:cover}.hp-wallpaper-grid button>span{position:absolute;right:5px;bottom:5px;width:19px;height:19px;display:grid;place-items:center;border-radius:50%;background:var(--action-fill);color:var(--on-action)}.hp-wallpaper-images>.hp-wallpaper-custom{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:8px;padding:12px 1px 2px}.hp-wallpaper-custom>div{min-width:0;display:flex;flex-direction:column}.hp-wallpaper-custom strong{color:var(--text);font-size:var(--ui-font-caption, 11px)}.hp-wallpaper-custom span{color:var(--text-faint);font-size:var(--ui-font-caption, 11px)}.hp-wallpaper-custom button{min-height:29px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 8px;border:var(--border-width) solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font:inherit;font-size:var(--ui-font-caption, 11px);cursor:pointer}.hp-wallpaper-custom button:hover{color:var(--text);background:var(--bg-hover)}.hp-wallpaper-options{margin-top:14px;padding-top:8px;border-top:var(--border-width) solid var(--border)}.hp-wallpaper-options>button{width:100%;min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:7px 3px;border:0;background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer}.hp-wallpaper-options>button>span{min-width:0;display:flex;flex-direction:column}.hp-wallpaper-options strong{font-size:var(--ui-font-caption, 11px)}.hp-wallpaper-options small{color:var(--text-faint);font-size:var(--ui-font-caption, 11px);font-weight:400}.hp-wallpaper-options i{position:relative;width:27px;height:16px;flex:none;border-radius:var(--radius-pill, 999px);background:var(--overlay-strong)}.hp-wallpaper-options i:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--bg-card);transition:transform var(--duration-fast) var(--ease-spring)}.hp-wallpaper-options button.on i{background:var(--action-fill)}.hp-wallpaper-options>button:disabled{opacity:.5;cursor:default}.hp-cards-menu{max-height:min(70vh,520px);overflow-y:auto}.hp-wallpaper-options button.on i:after{transform:translate(11px)}@media(max-width:620px){.hp-root{padding-inline:12px;--hp-padding-block: 24px}.hp-wallpaper-button{top:calc(var(--hp-chrome-top, 0px) + 10px);right:10px}.hp-stack{gap:18px}.hp-clock{font-size:46px}.hp-brand{font-size:30px}.hp-dock{gap:2px}.hp-tile{width:70px;min-height:74px}.hp-pinned-zone{max-width:48%;gap:2px}.hp-space-divider{margin-inline:3px}.hp-composer .t2c-card{padding-inline:11px}.hp-folder-stage,.hp-organizer-stage,.hp-wallpaper-stage{padding:calc(var(--hp-chrome-top, 0px) + 10px) 10px calc(var(--hp-chrome-bottom, 0px) + 10px)}.hp-organizer-panel{width:min(390px,100%);padding-inline:2px}.hp-organizer-grid{grid-template-columns:repeat(4,72px);grid-auto-rows:76px;gap:4px 6px}.hp-organizer-grid .hp-tile,.hp-organizer-new{width:72px;min-height:76px}.hp-folder-panel{min-height:300px;padding:14px}.hp-folder-grid{gap:5px}.hp-folder-app{width:82px;min-height:92px}.hp-wallpaper-sheet{width:100%;padding:15px}.hp-wallpaper-credit{display:none}}@media(max-width:390px){.hp-organizer-panel{width:min(300px,100%)}.hp-organizer-grid{grid-template-columns:repeat(3,72px)}.hp-theme-presets>div{grid-template-columns:1fr}}@media(max-height:700px){.hp-root{--hp-padding-block: 20px}.hp-stack{gap:16px}.hp-brand{font-size:28px}.hp-clock{font-size:44px}.hp-meta,.hp-date{margin-top:6px}}@media(max-height:520px){.hp-root{--hp-padding-block: 12px}.hp-stack{gap:10px}.hp-brand{display:none}.hp-clock{font-size:32px}.hp-meta,.hp-date{margin-top:3px;font-size:var(--ui-font-caption, 11px)}.hp-greet{display:none}.hp-status-card{padding-block:8px}}@media(prefers-reduced-motion:reduce){.hp-title,.hp-composer,.hp-spaces,.hp-folder-panel,.hp-folder-stage,.hp-folder-stage:before,.hp-organizer-panel,.hp-organizer-stage,.hp-organizer-stage:before,.hp-wallpaper-sheet,.hp-wallpaper-stage,.hp-wallpaper-stage:before,.hp-status-cards,.hpw-orbit,.hpw-planet,.hpw-halo{animation:none}.hp-stack,.hp-wallpaper,.hp-wallpaper-art,.hp-tile,.hp-tile-icon,.hp-folder-app{transition-duration:.01ms!important}.hp-root[data-focus-blur=true].hp-composer-focused .hp-wallpaper,.hp-root[data-focus-blur=true].hp-composer-focused .hp-wallpaper-art,.hp-root[data-focus-blur=true].hp-layer-focused .hp-wallpaper,.hp-root[data-focus-blur=true].hp-layer-focused .hp-wallpaper-art,.hp-root[data-focus-blur=true].hp-secondary-open .hp-wallpaper{filter:none;transform:none}.hp-tile:hover,.hp-tile:active,.hp-status-card:hover,.hp-status-card:active,.hp-folder-app:hover,.hp-drag-overlay{transform:none}}.hp-still .hp-title,.hp-still .hp-composer,.hp-still .hp-spaces,.hp-still .hp-folder-panel,.hp-still .hp-folder-stage,.hp-still .hp-folder-stage:before,.hp-still .hp-organizer-panel,.hp-still .hp-organizer-stage,.hp-still .hp-organizer-stage:before,.hp-still .hp-wallpaper-sheet,.hp-still .hp-wallpaper-stage,.hp-still .hp-wallpaper-stage:before,.hp-still .hp-status-cards,.hp-still :is(.hpw-orbit,.hpw-planet,.hpw-halo){animation:none}.hp-still[data-focus-blur=true].hp-composer-focused .hp-wallpaper,.hp-still[data-focus-blur=true].hp-composer-focused .hp-wallpaper-art,.hp-still[data-focus-blur=true].hp-layer-focused .hp-wallpaper,.hp-still[data-focus-blur=true].hp-layer-focused .hp-wallpaper-art,.hp-still[data-focus-blur=true].hp-secondary-open .hp-wallpaper{filter:none;transform:none}.hp-still .hp-tile,.hp-still .hp-tile-icon,.hp-still .hp-folder-app{transition-duration:.01ms!important}.hp-root.hp-phone{--hp-dp: calc(1px / var(--uiz, 1));--hp-padding-block: calc(18 * var(--hp-dp));padding-inline:calc(18 * var(--hp-dp))}.hp-phone .hp-stack{align-items:stretch;height:100%;margin:0 auto;gap:calc(14 * var(--hp-dp))}.hp-phone .hp-title{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:calc(6 * var(--hp-dp));text-align:left;margin-bottom:auto}.hp-phone .hp-brand{flex:0 0 100%;order:1;margin:0 0 calc(4 * var(--hp-dp));color:var(--text);opacity:.38;font-size:var(--ui-font-title, 16px)}.hp-phone .hp-greet{flex:0 0 100%;order:2;margin:0;color:var(--text);font-size:var(--ui-font-display, 20px);font-weight:600;line-height:1.25}.hp-phone .hp-date{order:3;margin-top:calc(6 * var(--hp-dp));font-size:var(--ui-font-body, 13px)}.hp-phone .hp-clock{order:4;font-size:var(--ui-font-body, 13px);font-weight:400;letter-spacing:0;line-height:inherit;color:var(--text-muted)}.hp-phone .hp-clock:before{content:"·";margin-right:calc(6 * var(--hp-dp))}.hp-root.hp-phone[data-wallpaper=true] .hp-greet{opacity:1}.hp-root.hp-phone[data-wallpaper=true] .hp-clock{color:var(--text);opacity:.7}.hp-phone .hp-cards{order:2;display:grid;grid-template-columns:1fr 1fr;gap:calc(12 * var(--hp-dp))}.hp-phone .hp-card{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;align-content:space-between;column-gap:calc(10 * var(--hp-dp));row-gap:calc(8 * var(--hp-dp));min-height:calc(104 * var(--hp-dp));padding:calc(16 * var(--hp-dp));border:0;border-radius:var(--radius-lg, 16px);background:var(--hp-glass-sheen),var(--hp-glass-tint);backdrop-filter:var(--hp-glass-filter);-webkit-backdrop-filter:var(--hp-glass-filter);box-shadow:var(--card-shadow);color:var(--text);font-family:var(--font-ui);text-align:left}.hp-phone .hp-card:active{transform:scale(.98)}.hp-phone .hp-card-icon{display:inline-flex;align-self:center;color:var(--text-muted)}.hp-phone .hp-card-icon>svg{width:calc(24 * var(--hp-dp));height:calc(24 * var(--hp-dp))}.hp-phone .hp-card-name{align-self:center;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ui-font-heading, 14px);font-weight:600}.hp-phone .hp-card-status{grid-column:1 / -1;min-width:0;min-height:1.3em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ui-font-caption, 11px);line-height:1.3;color:var(--text-muted)}.hp-phone .hp-pill{order:3;display:flex;align-items:center;gap:calc(12 * var(--hp-dp));height:calc(54 * var(--hp-dp));padding:0 calc(8 * var(--hp-dp)) 0 calc(20 * var(--hp-dp));border:0;border-radius:var(--radius-pill, 999px);background:var(--hp-glass-sheen),var(--hp-glass-tint);backdrop-filter:var(--hp-glass-filter);-webkit-backdrop-filter:var(--hp-glass-filter);box-shadow:var(--card-shadow);color:var(--text-muted);font-family:var(--font-ui);font-size:var(--ui-font-body, 13px);text-align:left}.hp-phone .hp-pill-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hp-phone .hp-pill-text[data-draft]{color:var(--text)}.hp-phone .hp-pill-mic{align-self:stretch;display:grid;place-items:center;width:calc(44 * var(--hp-dp));margin-inline:calc(-8 * var(--hp-dp))}.hp-phone .hp-pill-mic>svg{width:calc(20 * var(--hp-dp));height:calc(20 * var(--hp-dp))}.hp-phone .hp-pill-send{display:grid;place-items:center;width:calc(38 * var(--hp-dp));height:calc(38 * var(--hp-dp));border-radius:50%;background:var(--action-fill);color:var(--on-action, #fff)}.hp-phone .hp-pill-send>svg{width:calc(18 * var(--hp-dp));height:calc(18 * var(--hp-dp))}.hp-phone .hp-composer{order:3}.hp-root.hp-phone:not(.hp-composer-focused) .hp-composer{display:none}.hp-root.hp-phone.hp-composer-focused .hp-pill,.hp-root.hp-phone.hp-composer-focused .hp-cards{display:none}.hp-root.hp-phone.hp-composer-focused .hp-composer{transform:none}.hp-root.hp-phone.hp-composer-focused .hp-title{opacity:1;transform:none}.hp-root[data-theme-preset=glyph]:not([data-wallpaper=true]) .hp-wallpaper-edge{display:none}.hp-root[data-theme-preset=glyph]:not([data-wallpaper=true]) .hp-wallpaper-art{filter:none;transform:none}
@@ -0,0 +1,3 @@
1
+ import{u as I,r as j,j as e,t as E}from"./index-YuejkHoJ.js";import{p as L,q as T,M as B,a6 as P,bz as Y,l as K}from"./pageStore-D_fKLv-o.js";import"./client-DD5czSuF.js";import{a as Q}from"./phoneList-BLVdQcXY.js";import{F as W,G as J,H as Z,J as ee,a as D,K as ie,M as te,N as ae,O as H,u as S,b as _,L as G,P as se,i as k,Q as ne,f as q,g as oe,p as re,j as le,I as de,m as O,k as ce,t as ue,R as me,c as he,d as ge}from"./imageStudio-D67oElIb.js";import{u as $,qV as xe,aN as pe,df as je,m3 as R,N as Se,jb as fe,aO as be,aP as ve,aQ as ye,b4 as we,R as Ne,ap as Ce}from"./appStore-BskcSDl6.js";/* empty css */import{L as ke}from"./lock-open-DVWCLSZm.js";import{G as Me}from"./git-branch-DzGWffyD.js";import{R as Ie}from"./rotate-ccw-CyZpL7MX.js";import{L as ze}from"./layout-grid-CzxXbCDa.js";import"./react-DOzedx9n.js";import"./InlineFiles-3g2jMUeA.js";import"./nativeDownload-DlnT8U-y.js";import"./dbStore-Bc2lC8ZI.js";import"./ipc-8cxXGSZK.js";import"./drawingStore-BD5m2eqn.js";const Ee=[["path",{d:"M6 2v14a2 2 0 0 0 2 2h14",key:"ron5a4"}],["path",{d:"M18 22V8a2 2 0 0 0-2-2H2",key:"7s9ehn"}]],$e=L("crop",Ee);const Pe=[["path",{d:"m3 7 5 5-5 5V7",key:"couhi7"}],["path",{d:"m21 7-5 5 5 5V7",key:"6ouia7"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 14v2",key:"8jcxud"}],["path",{d:"M12 8v2",key:"1woqiv"}],["path",{d:"M12 2v2",key:"tus03m"}]],Le=L("flip-horizontal-2",Pe);const Re=[["path",{d:"m17 3-5 5-5-5h10",key:"1ftt6x"}],["path",{d:"m17 21-5-5-5 5h10",key:"1m0wmu"}],["path",{d:"M4 12H2",key:"rhcxmi"}],["path",{d:"M10 12H8",key:"s88cx1"}],["path",{d:"M16 12h-2",key:"10asgb"}],["path",{d:"M22 12h-2",key:"14jgyd"}]],Fe=L("flip-vertical-2",Re);function Ae({image:i,onApply:d,onCancel:n}){const{t:l}=I(),a=W(i.blob),[c,g]=j.useState(i.crop||{x:0,y:0,w:i.width,h:i.height}),s=j.useRef(null),o=j.useRef(null),f=r=>{const u=Math.max(0,Math.min(i.width-1,Math.round(r.x))),b=Math.max(0,Math.min(i.height-1,Math.round(r.y)));return{x:u,y:b,w:Math.max(1,Math.min(i.width-u,Math.round(r.w))),h:Math.max(1,Math.min(i.height-b,Math.round(r.h)))}};return e.jsxs("div",{className:"ims-crop",onKeyDown:r=>{r.key==="Escape"&&(r.stopPropagation(),n())},children:[e.jsx("h4",{children:l("imageStudio.crop")}),e.jsx("p",{children:l("imageStudio.cropHint")}),e.jsxs("div",{ref:o,className:"ims-crop-stage",style:{aspectRatio:i.width/i.height},onPointerDown:r=>{const u=r.currentTarget.getBoundingClientRect(),b=r.target.dataset.edge||"move";s.current={pointer:r.pointerId,x:r.clientX,y:r.clientY,base:c,edge:b,sx:i.width/u.width,sy:i.height/u.height},r.currentTarget.setPointerCapture(r.pointerId),r.preventDefault()},onPointerMove:r=>{const u=s.current;if(!u||u.pointer!==r.pointerId)return;const b=(r.clientX-u.x)*u.sx,x=(r.clientY-u.y)*u.sy,h=u.base;if(u.edge==="move")g(f({...h,x:Math.max(0,Math.min(i.width-h.w,h.x+b)),y:Math.max(0,Math.min(i.height-h.h,h.y+x))}));else{const y=u.edge.includes("w")?Math.max(0,Math.min(h.x+h.w-1,h.x+b)):h.x,t=u.edge.includes("n")?Math.max(0,Math.min(h.y+h.h-1,h.y+x)):h.y,p=u.edge.includes("e")?Math.min(i.width,Math.max(h.x+1,h.x+h.w+b)):h.x+h.w,v=u.edge.includes("s")?Math.min(i.height,Math.max(h.y+1,h.y+h.h+x)):h.y+h.h;g(f({x:y,y:t,w:p-y,h:v-t}))}},onPointerUp:()=>{s.current=null},onPointerCancel:()=>{s.current=null},children:[a&&e.jsx("img",{src:a,alt:i.name,draggable:!1}),e.jsx("div",{className:"ims-crop-box",style:{left:`${c.x/i.width*100}%`,top:`${c.y/i.height*100}%`,width:`${c.w/i.width*100}%`,height:`${c.h/i.height*100}%`},children:["nw","ne","sw","se"].map(r=>e.jsx("span",{"data-edge":r,className:`ims-crop-handle ${r}`},r))})]}),e.jsxs("select",{"aria-label":l("imageStudio.cropRatio"),defaultValue:"",onChange:r=>{const u=Number(r.target.value)||i.width/i.height,b=Math.min(i.width,i.height*u),x=b/u;g(f({x:(i.width-b)/2,y:(i.height-x)/2,w:b,h:x}))},children:[e.jsx("option",{value:"",disabled:!0,children:l("imageStudio.cropRatio")}),e.jsx("option",{value:"0",children:l("imageStudio.original")}),[[1,"1:1"],[.8,"4:5"],[2/3,"2:3"],[16/9,"16:9"],[9/16,"9:16"]].map(([r,u])=>e.jsx("option",{value:r,children:u},u))]}),e.jsx("div",{className:"ims-fields",children:["x","y","w","h"].map(r=>e.jsxs("label",{children:[l(`imageStudio.${r}`),e.jsx("input",{type:"number","aria-label":l(`imageStudio.crop.${r}`),value:c[r],min:r==="x"||r==="y"?0:1,max:r==="x"||r==="w"?i.width:i.height,onChange:u=>g(f({...c,[r]:Number(u.target.value)||0}))})]},r))}),e.jsxs("div",{className:"ims-button-row",children:[e.jsx("button",{onClick:n,children:l("imageStudio.cancel")}),e.jsx("button",{className:"ims-primary",disabled:!J(c,i.width,i.height),onClick:()=>d(c),children:l("imageStudio.applyCrop")})]})]})}const Te=Z,qe=["low","medium","high","xhigh","max"];function Be(i,d,n,l){const[a,c]=n.split(":").map(Number),g=1+Math.max(.1,Math.min(1,l)),s=Math.ceil(Math.max(i*g,d*g*a/c)),o=Math.ceil(s*c/a);return{w:s,h:o,x:Math.floor((s-i)/2),y:Math.floor((o-d)/2)}}async function De(i,d,n,l,a){if(!i.length||i.length>8)throw new Error(E("imageStudio.ai.referenceLimit"));if(d!=="expand")return Promise.all(i.map(s=>ee(s,a)));const c=await D([i[0]],!0,1024),g=await ie(c);try{const s=Be(g.width,g.height,n,l),o=Math.min(1,1536/Math.max(s.w,s.h)),f=document.createElement("canvas");f.width=Math.round(s.w*o),f.height=Math.round(s.h*o);const r=f.getContext("2d");if(!r)throw new Error("Canvas unavailable");r.drawImage(g,s.x*o,s.y*o,g.width*o,g.height*o);const u=await new Promise((x,h)=>f.toBlob(y=>y?x(y):h(new Error("PNG encoding failed")),"image/png")),b=await te(u);return[{name:"expand-reference.png",mimeType:"image/png",size:u.size,data:b.split(",")[1]}]}finally{g.close()}}function He(i,d,n,l,a,c=""){return[E(`imageStudio.ai.prompt.${i}`),E(`imageStudio.ai.sourcePrompt.${i==="expand"?"current":a}`),d.trim(),E("imageStudio.ai.outputPrompt",{ratio:n.requested,engineRatio:n.engine,count:l}),c?E("imageStudio.ai.qualityPrompt",{quality:c}):""].filter(Boolean).join(`
2
+
3
+ `)}function _e({board:i,images:d}){const{t:n}=I(),[l,a]=j.useState("edit"),[c,g]=j.useState(""),[s,o]=j.useState("original"),[f,r]=j.useState("current"),[u,b]=j.useState(1),[x,h]=j.useState(.5),[y,t]=j.useState(""),[p,v]=j.useState(!1),[w,F]=j.useState(""),C=$(m=>!!(i.sessionId&&m.runningBySession[i.sessionId])),N=ae(d[0],s),V=async()=>{v(!0),F("");let m=[];try{const M=await H(i.id);if(S.getState().activeId!==i.id)return;if($.getState().runningBySession[M])throw new Error(n("imageStudio.ai.wait"));m=S.getState().beginGeneration(i.id,M,{count:u,aspect:N.aspect,ratio:N.requested,kind:"edit",sourceIds:d.map(X=>X.id)});const A=l==="expand"?"current":f,U=await De(d,l,N.requested,x,A);if(!await $.getState().send(He(l,c,N,u,A,y),U,void 0,void 0,void 0,M))throw new Error(n("imageStudio.ai.sendFailed"));S.getState().activateGeneration(m)}catch(M){m.length&&S.getState().failGeneration(i.id,{ids:m}),F(M instanceof Error?M.message:String(M))}finally{v(!1)}};return e.jsxs("details",{className:"ims-ai",open:!0,children:[e.jsxs("summary",{children:[e.jsx(T,{size:15}),n("imageStudio.ai.title"),e.jsxs("span",{children:[d.length," ",n("imageStudio.ai.references")]})]}),e.jsxs("div",{className:"ims-ai-body",children:[e.jsx("div",{className:"ims-ai-modes",role:"group","aria-label":n("imageStudio.ai.mode"),children:["edit","background","expand"].map(m=>e.jsx("button",{"aria-pressed":l===m,disabled:C||p||m!=="edit"&&d.length!==1,onClick:()=>a(m),children:n(`imageStudio.ai.${m}`)},m))}),e.jsx("p",{className:"ims-caption",children:n(`imageStudio.ai.hint.${l}`)}),e.jsx("textarea",{"aria-label":n("imageStudio.ai.instruction"),placeholder:n("imageStudio.ai.placeholder"),value:c,onChange:m=>g(m.target.value),maxLength:8e3,rows:3,disabled:p||C}),e.jsxs("label",{className:"ims-ai-source",children:[n("imageStudio.ai.source"),e.jsxs("select",{"aria-label":n("imageStudio.ai.source"),value:l==="expand"?"current":f,onChange:m=>r(m.target.value),disabled:p||C||l==="expand",children:[e.jsx("option",{value:"current",children:n("imageStudio.ai.source.current")}),e.jsx("option",{value:"original",children:n("imageStudio.ai.source.original")})]})]}),e.jsxs("div",{className:"ims-fields",children:[e.jsxs("label",{children:[n("imageStudio.ai.ratio"),e.jsxs("select",{"aria-label":n("imageStudio.ai.ratio"),value:s,onChange:m=>o(m.target.value),disabled:p||C,children:[e.jsx("option",{value:"original",children:n("imageStudio.ai.ratio.original",{ratio:N.originalLabel})}),Te.map(m=>e.jsx("option",{value:m,children:m},m))]})]}),e.jsxs("label",{children:[n("imageStudio.ai.count"),e.jsx("select",{"aria-label":n("imageStudio.ai.count"),value:u,onChange:m=>b(Number(m.target.value)),disabled:p||C,children:[1,2,3,4].map(m=>e.jsx("option",{children:m},m))})]}),e.jsxs("label",{children:[n("imageStudio.ai.quality"),e.jsxs("select",{"aria-label":n("imageStudio.ai.quality"),value:y,onChange:m=>t(m.target.value),disabled:p||C,children:[e.jsx("option",{value:"",children:n("imageStudio.ai.quality.default")}),qe.map(m=>e.jsx("option",{value:m,children:n(`imageStudio.ai.quality.${m}`)},m))]})]})]}),N.requested!==N.engine&&e.jsx("p",{className:"ims-caption ims-ai-ratio-note",children:n("imageStudio.ai.ratioFit",{ratio:N.requested,engineRatio:N.engine})}),(y==="xhigh"||y==="max")&&e.jsx("p",{className:"ims-caption",children:n("imageStudio.ai.qualityNote")}),l==="expand"&&e.jsxs("label",{children:[n("imageStudio.ai.margin"),e.jsx("input",{"aria-label":n("imageStudio.ai.margin"),type:"range",min:".1",max:"1",step:".1",value:x,onChange:m=>h(Number(m.target.value))}),e.jsxs("output",{children:[Math.round(x*100),"%"]})]}),e.jsxs("button",{className:"ims-primary",disabled:p||C||!d.length||d.length>8||l==="edit"&&!c.trim(),onClick:()=>{V()},children:[e.jsx(T,{size:15}),n(C||p?"imageStudio.ai.running":"imageStudio.ai.submit")]}),e.jsx("p",{className:"ims-caption",children:n("imageStudio.ai.preserve")}),w&&e.jsx("p",{role:"alert",children:w})]})]})}function ri(){const{t:i}=I(),d=S(o=>o.boards),n=S(o=>o.activeId),l=S(o=>o.ready);j.useEffect(()=>{S.getState().hydrate()},[]);const a=j.useMemo(()=>Object.values(d).sort((o,f)=>f.updatedAt-o.updatedAt).slice(0,12),[d]),c=o=>{o(),K.getState().openView("image-studio",{},"main")},g=()=>c(()=>S.getState().create(i("imageStudio.untitled"))),s=Y();return e.jsxs("nav",{className:`csn ims-nav${s?" pl-fab-room":""}`,"aria-label":i("imageStudio.title"),children:[e.jsxs("div",{className:"csn-section",children:[!s&&e.jsx("span",{className:"csn-heading",children:i("imageStudio.nav.create")}),!s&&e.jsxs("button",{type:"button",className:"csn-item",disabled:!l,onClick:g,children:[e.jsx(P,{size:16}),i("imageStudio.new")]}),e.jsxs("button",{type:"button",className:"csn-item","aria-current":l&&!n?"page":void 0,onClick:()=>c(()=>S.getState().close()),children:[e.jsx(ze,{size:16}),i("imageStudio.projects")]})]}),a.length>0&&e.jsxs("div",{className:"csn-section",children:[e.jsx("span",{className:"csn-heading",children:i("imageStudio.nav.recent")}),a.map(o=>{const f=le(o,1)[0];return e.jsxs("button",{type:"button",className:"csn-item",title:o.name,"aria-current":o.id===n?"page":void 0,onClick:()=>c(()=>S.getState().open(o.id)),children:[f?e.jsx("span",{className:"ims-nav-thumb",children:e.jsx(de,{image:f})}):e.jsx(R,{size:16}),e.jsx("span",{className:"ims-nav-name",children:o.name})]},o.id)})]}),s&&l&&e.jsx(Q,{label:i("imageStudio.new"),icon:e.jsx(P,{}),onClick:g})]})}function li(i){const{t:d}=I(),n=S(o=>o.activeId?o.boards[o.activeId]:void 0),[l,a]=j.useState(!1),[c,g]=j.useState("");j.useEffect(()=>{S.getState().hydrate()},[]),j.useEffect(()=>{n?.sessionId&&$.getState().loadSessionHistory(n.sessionId)},[n?.sessionId]);const s=Ce()?.Chat;return n?.sessionId&&s?e.jsx("div",{className:"ims-chat","data-image-studio-chat":n.id,children:e.jsx(s,{...i,params:{...i.params,followActive:!1,sessionId:n.sessionId,childSurface:!0}},n.sessionId)}):e.jsxs("div",{className:"ims-panel ims-chat-empty",children:[e.jsx(B,{size:26,strokeWidth:1.3}),e.jsx("h3",{children:d("imageStudio.chat")}),e.jsx("p",{children:d(n?"imageStudio.chatHint":"imageStudio.choose")}),n&&e.jsxs("button",{className:"ims-primary",disabled:l,onClick:async()=>{a(!0),g("");try{await H(n.id)}catch(o){g(String(o))}finally{a(!1)}},children:[l?e.jsx(Se,{size:15,className:"ims-spin"}):e.jsx(P,{size:15}),d("imageStudio.connect")]}),c&&e.jsx("p",{role:"alert",children:d("imageStudio.error",{error:c})})]})}function di(){const{t:i}=I(),d=S(s=>s.activeId?s.boards[s.activeId]:void 0),n=S(s=>s.selection),[l,a]=j.useState(""),c=d?_(d).reverse().filter(s=>s.name.toLocaleLowerCase().includes(l.toLocaleLowerCase())):[],g=(s,o)=>d&&S.getState().update(d.id,f=>O(f,r=>r.id===s?{...r,...o}:r));return e.jsxs("section",{className:"ims-panel ims-layers",children:[e.jsx("h3",{children:i("imageStudio.layers")}),e.jsx("input",{type:"search","aria-label":i("imageStudio.searchLayers"),placeholder:i("imageStudio.searchLayers"),value:l,onChange:s=>a(s.target.value)}),e.jsx("div",{className:"ims-asset-list",children:c.map(s=>e.jsxs("div",{className:`ims-layer-row${n.includes(s.id)?" is-selected":""}`,"data-layer-id":s.id,children:[e.jsxs("button",{className:"ims-asset","aria-pressed":n.includes(s.id),onClick:o=>S.setState({selection:o.shiftKey?n.includes(s.id)?n.filter(f=>f!==s.id):[...n,s.id]:[s.id]}),children:[e.jsx("div",{className:"ims-layer-thumb",children:e.jsx(G,{item:s})}),e.jsxs("span",{children:[e.jsx("strong",{children:s.name}),e.jsx("small",{children:i(`imageStudio.kind.${se(s)}`)})]})]}),e.jsx("button",{"aria-label":i(s.hidden?"imageStudio.show":"imageStudio.hide"),title:i(s.hidden?"imageStudio.show":"imageStudio.hide"),onClick:()=>g(s.id,{hidden:!s.hidden}),children:s.hidden?e.jsx(xe,{size:14}):e.jsx(pe,{size:14})}),e.jsx("button",{"aria-label":i(s.locked?"imageStudio.unlock":"imageStudio.lock"),title:i(s.locked?"imageStudio.unlock":"imageStudio.lock"),onClick:()=>g(s.id,{locked:!s.locked}),children:s.locked?e.jsx(je,{size:14}):e.jsx(ke,{size:14})})]},s.id))}),!c.length&&e.jsxs("div",{className:"ims-panel-empty",children:[e.jsx(R,{size:26}),e.jsx("p",{children:i(l.trim()?"imageStudio.noLayers":"imageStudio.layersEmpty")})]}),e.jsx("p",{className:"ims-caption",children:i("imageStudio.layersHint")})]})}function z({label:i,value:d,onChange:n,min:l=-1e5,max:a=1e5}){const[c,g]=j.useState(String(Math.round(d*100)/100));j.useEffect(()=>g(String(Math.round(d*100)/100)),[d]);const s=()=>{const o=Number(c);c.trim()&&Number.isFinite(o)?n(Math.max(l,Math.min(a,o))):g(String(d))};return e.jsxs("label",{children:[i,e.jsx("input",{type:"number","aria-label":i,value:c,min:l,max:a,onChange:o=>g(o.target.value),onBlur:s,onKeyDown:o=>{o.key==="Enter"&&o.currentTarget.blur()}})]})}function ci(){const{t:i}=I(),d=S(t=>t.activeId?t.boards[t.activeId]:void 0),n=S(t=>t.selection),l=d?_(d).filter(t=>n.includes(t.id)):[],a=l[0],c=a&&k(a)&&a.parentId?d?.images.find(t=>t.id===a.parentId):void 0,[g,s]=j.useState(""),[o,f]=j.useState(!1),[r,u]=j.useState(!1);j.useEffect(()=>{u(!1),s("")},[d?.id,a?.id]);const b=async t=>{f(!0),s("");try{await t()}catch(p){s(String(p))}finally{f(!1)}};if(!d||!a)return e.jsxs("div",{className:"ims-panel ims-panel-empty",children:[e.jsx(R,{size:26}),e.jsx("p",{children:i("imageStudio.select")})]});const x=t=>S.getState().update(d.id,p=>O(p,v=>v.id===a.id&&!v.locked?{...v,...t}:v)),h=t=>{k(a)&&x(me(a,t))},y=(t,p)=>{let v={x:a.x,y:a.y,w:a.w,h:a.h,[t]:p};if(k(a)&&(t==="w"||t==="h")){const w=ce(a);v={...v,...t==="w"?{h:p*w.h/w.w}:{w:p*w.w/w.h}}}S.getState().update(d.id,w=>ue(w,new Map([[a.id,v]])))};return e.jsxs("section",{className:"ims-panel ims-inspector",children:[e.jsx("h3",{children:i(l.length>1?"imageStudio.selection":"imageStudio.inspector")}),l.every(k)&&e.jsx(_e,{board:d,images:l.filter(k)},`${d.id}:${n.join(",")}`),l.length===1?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"ims-preview",style:{aspectRatio:a.w/a.h},children:e.jsx(G,{item:a})}),e.jsxs("fieldset",{disabled:a.locked,className:"ims-properties",children:[e.jsx("input",{"aria-label":i("imageStudio.layerName"),value:a.name,onChange:t=>x({name:t.target.value})}),e.jsx("div",{className:"ims-fields",children:["x","y","w","h"].map(t=>e.jsx(z,{label:i(`imageStudio.${t}`),value:a[t],min:t==="w"||t==="h"?1:-1e5,onChange:p=>y(t,p)},t))}),k(a)?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"ims-meta",children:[e.jsx("span",{children:i("imageStudio.original")}),e.jsxs("span",{children:[a.width," × ",a.height]})]}),c&&e.jsxs("button",{className:"ims-lineage",onClick:()=>S.setState({selection:[c.id]}),children:[e.jsx(Me,{size:14}),e.jsx("span",{children:i("imageStudio.versionOf")}),e.jsx("strong",{children:c.name})]}),e.jsxs("div",{className:"ims-button-row ims-transform",children:[e.jsx("button",{title:i("imageStudio.crop"),"aria-label":i("imageStudio.crop"),onClick:()=>u(!r),children:e.jsx($e,{size:16})}),e.jsx("button",{title:i("imageStudio.rotate"),"aria-label":i("imageStudio.rotate"),onClick:()=>h({rotation:((a.rotation||0)+90)%360}),children:e.jsx(fe,{size:16})}),e.jsx("button",{title:i("imageStudio.flipX"),"aria-label":i("imageStudio.flipX"),onClick:()=>h({flipX:!a.flipX}),children:e.jsx(Le,{size:16})}),e.jsx("button",{title:i("imageStudio.flipY"),"aria-label":i("imageStudio.flipY"),onClick:()=>h({flipY:!a.flipY}),children:e.jsx(Fe,{size:16})})]}),r&&e.jsx(Ae,{image:a,onCancel:()=>u(!1),onApply:t=>{h({crop:t}),u(!1)}},a.id),e.jsx(z,{label:i("imageStudio.angle"),value:a.rotation||0,min:0,max:359,onChange:t=>h({rotation:t})}),e.jsx("button",{onClick:()=>h({crop:void 0,rotation:0,flipX:!1,flipY:!1}),children:i("imageStudio.resetTransform")}),e.jsx("div",{className:"ims-adjustments",children:["brightness","contrast","saturation"].map(t=>e.jsxs("label",{children:[e.jsxs("span",{children:[i(`imageStudio.${t}`),e.jsxs("output",{children:[a[t],"%"]})]}),e.jsx("input",{"aria-label":i(`imageStudio.${t}`),type:"range",min:"0",max:"200",step:"5",value:a[t],onChange:p=>x({[t]:Number(p.target.value)})})]},t))}),e.jsxs("button",{onClick:()=>x({brightness:100,contrast:100,saturation:100}),children:[e.jsx(Ie,{size:14}),i("imageStudio.reset")]})]}):e.jsxs(e.Fragment,{children:[a.kind==="frame"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:[i("imageStudio.framePreset"),e.jsxs("select",{"aria-label":i("imageStudio.framePreset"),value:"",onChange:t=>{const[p,v]=t.target.value.split("x").map(Number);x({w:p,h:v})},children:[e.jsx("option",{value:"",disabled:!0,children:i("imageStudio.customSize")}),e.jsx("option",{value:"1080x1080",children:"1:1 · 1080 × 1080"}),e.jsx("option",{value:"1080x1350",children:"4:5 · 1080 × 1350"}),e.jsx("option",{value:"1080x1920",children:"9:16 · 1080 × 1920"}),e.jsx("option",{value:"1920x1080",children:"16:9 · 1920 × 1080"})]})]}),e.jsx("p",{children:i("imageStudio.frameHint")})]}),a.kind==="text"&&e.jsxs(e.Fragment,{children:[e.jsx("textarea",{"aria-label":i("imageStudio.textContent"),value:a.text,maxLength:1e4,rows:4,onChange:t=>x({text:t.target.value})}),e.jsxs("div",{className:"ims-fields",children:[e.jsxs("label",{children:[i("imageStudio.font"),e.jsx("select",{"aria-label":i("imageStudio.font"),value:a.fontFamily,onChange:t=>x({fontFamily:t.target.value}),children:["sans-serif","serif","monospace"].map(t=>e.jsx("option",{value:t,children:i(`imageStudio.font.${t}`)},t))})]}),e.jsx(z,{label:i("imageStudio.fontSize"),value:a.fontSize,min:6,max:500,onChange:t=>x({fontSize:t})})]}),e.jsxs("div",{className:"ims-fields",children:[e.jsxs("label",{children:[i("imageStudio.textAlign"),e.jsx("select",{"aria-label":i("imageStudio.textAlign"),value:a.align,onChange:t=>x({align:t.target.value}),children:["left","center","right"].map(t=>e.jsx("option",{value:t,children:i(`imageStudio.align.${t}`)},t))})]}),e.jsxs("label",{className:"ims-checkbox",children:[e.jsx("input",{type:"checkbox",checked:a.bold,onChange:t=>x({bold:t.target.checked})}),i("imageStudio.bold")]})]})]}),e.jsxs("div",{className:"ims-fields",children:[e.jsxs("label",{children:[i("imageStudio.fill"),e.jsx("input",{type:"color","aria-label":i("imageStudio.fill"),value:a.fill==="transparent"?"#ffffff":a.fill,onChange:t=>x({fill:t.target.value})})]}),a.kind!=="text"&&e.jsxs("label",{children:[i("imageStudio.stroke"),e.jsx("input",{type:"color","aria-label":i("imageStudio.stroke"),value:a.stroke,onChange:t=>x({stroke:t.target.value})})]})]}),a.kind!=="text"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{className:"ims-checkbox",children:[e.jsx("input",{type:"checkbox",checked:a.fill==="transparent",onChange:t=>x({fill:t.target.checked?"transparent":"#ffffff"})}),i("imageStudio.noFill")]}),e.jsxs("div",{className:"ims-fields",children:[e.jsx(z,{label:i("imageStudio.strokeWidth"),value:a.strokeWidth,min:0,max:100,onChange:t=>x({strokeWidth:t})}),e.jsx(z,{label:i("imageStudio.radius"),value:a.radius,min:0,max:1e3,onChange:t=>x({radius:t})})]})]})]})]}),a.locked&&e.jsx("p",{children:i("imageStudio.lockedHint")}),k(a)&&a.prompt&&e.jsxs("details",{className:"ims-prompt",children:[e.jsx("summary",{children:i("imageStudio.prompt")}),e.jsx("p",{children:a.prompt})]})]}):e.jsxs(e.Fragment,{children:[e.jsx("p",{children:i("imageStudio.selectedCount",{count:l.length})}),e.jsx("div",{className:"ims-align",children:["left","center","right","top","middle","bottom"].map(t=>e.jsx("button",{onClick:()=>S.getState().update(d.id,p=>ne(p,n,t)),children:i(`imageStudio.align.${t}`)},t))})]}),e.jsxs("div",{className:"ims-button-row",children:[e.jsx("button",{title:i("imageStudio.layerUp"),"aria-label":i("imageStudio.layerUp"),onClick:()=>S.getState().update(d.id,t=>q(t,n,"up")),children:e.jsx(be,{size:15})}),e.jsx("button",{title:i("imageStudio.layerDown"),"aria-label":i("imageStudio.layerDown"),onClick:()=>S.getState().update(d.id,t=>q(t,n,"down")),children:e.jsx(ve,{size:15})}),e.jsx("button",{title:i("imageStudio.remove"),"aria-label":i("imageStudio.remove"),onClick:oe,children:e.jsx(ye,{size:15})})]}),e.jsxs("div",{className:"ims-panel-actions",children:[e.jsxs("button",{disabled:o||l.every(t=>t.hidden),onClick:()=>{b(he)},children:[e.jsx(B,{size:14}),i("imageStudio.reference")]}),e.jsxs("button",{onClick:()=>re(!0),children:[e.jsx(we,{size:14}),i("imageStudio.duplicate")]}),l.length===1&&k(a)&&e.jsxs("button",{className:"ims-primary",disabled:o,onClick:()=>{b(async()=>ge(await D([a],!0),a.name.replace(/\.[^.]+$/,"")+".png"))},children:[e.jsx(Ne,{size:14}),i("imageStudio.export")]})]}),g&&e.jsx("p",{role:"alert",children:i("imageStudio.error",{error:g})})]})}export{di as ImageStudioAssets,li as ImageStudioChat,ci as ImageStudioInspector,ri as ImageStudioNav,z as NumberField};