@forsion/unit 2.13.3 → 2.13.5

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 (304) hide show
  1. package/main.mjs +135 -10
  2. package/package.json +1 -1
  3. package/release.json +5 -5
  4. package/web/assets/ArtificialView-BD1yHz1N.js +1 -0
  5. package/web/assets/AutomationBuilder-B09c-5Bi.js +1 -0
  6. package/web/assets/CalendarConfigView-Bd-ZDGPO.js +1 -0
  7. package/web/assets/CalendarSide-B0RVbOsg.js +1 -0
  8. package/web/assets/CalendarView-BHio-n_r.js +3 -0
  9. package/web/assets/CalendarView-t91KpUG7.css +1 -0
  10. package/web/assets/CapabilityMenu-DyHTEYLr.js +1 -0
  11. package/web/assets/Chrome-C7F6fdDp.js +1 -0
  12. package/web/assets/{CodeView-DRVh13k9.js → CodeView-BGOnrGhB.js} +3 -3
  13. package/web/assets/CtxMenuButtons-BYjrbUKS.js +1 -0
  14. package/web/assets/DashboardGridView-CR-R_qV8.js +25 -0
  15. package/web/assets/DashboardGridView-RoVFSkNO.css +1 -0
  16. package/web/assets/EventCard-QyYorE1_.js +1 -0
  17. package/web/assets/ExcalidrawCanvas-BgcFPMpU.css +1 -0
  18. package/web/assets/ExcalidrawCanvas-lwJCN6uB.js +1 -0
  19. package/web/assets/FloatingToc-DO7SH8Ku.js +1 -0
  20. package/web/assets/GitCloneDialog-CbW-RJak.js +1 -0
  21. package/web/assets/GitCloneDialog-DOxZk2K0.css +1 -0
  22. package/web/assets/HomepageView-Bx8FbWlY.css +1 -0
  23. package/web/assets/HomepageView-CHJEhf9c.js +4 -0
  24. package/web/assets/ImageStudioPanels-CgVf0wiq.js +3 -0
  25. package/web/assets/ImageStudioView-4WcX0_V4.js +1 -0
  26. package/web/assets/InlineAiPanel-CdIPINsA.js +1 -0
  27. package/web/assets/InlineAiPanel-DZZijfif.css +1 -0
  28. package/web/assets/InlineFiles-CAIyTk1n.js +1 -0
  29. package/web/assets/MarkdownBlock-Cqfk5DhC.css +1 -0
  30. package/web/assets/MarkdownBlock-DSItkLhu.js +58 -0
  31. package/web/assets/ModelPill--CU3XTIQ.js +2 -0
  32. package/web/assets/{ModelPill-CzdNh7Mt.css → ModelPill-BiUsuhy3.css} +1 -1
  33. package/web/assets/MuseLibraryView-16p1zsxz.css +1 -0
  34. package/web/assets/MuseLibraryView-PlS7HAlV.js +2 -0
  35. package/web/assets/MuseView-CvsO62Fo.js +7 -0
  36. package/web/assets/PageHistoryPanel-CDh7nm78.js +2 -0
  37. package/web/assets/{PdfAnnotator-CW0wPWRB.js → PdfAnnotator-DafvjP3U.js} +3 -3
  38. package/web/assets/PenRow-CEy-s6SF.js +1 -0
  39. package/web/assets/PluginToolCard-BmTRr5JT.css +1 -0
  40. package/web/assets/PluginToolCard-DCzLhsCA.js +2 -0
  41. package/web/assets/ProductView-AUqnTwmQ.js +1 -0
  42. package/web/assets/SettingsPage-B9mmkWaM.js +3 -0
  43. package/web/assets/StudioGuestSurface-OOhRA8nt.js +1 -0
  44. package/web/assets/TodoListView-BkgMe44I.js +1 -0
  45. package/web/assets/Tooltip-DOYi44eY.js +1 -0
  46. package/web/assets/UnifiedPage-CTmQpf2T.css +1 -0
  47. package/web/assets/UnifiedPage-s7-tDSwG.js +712 -0
  48. package/web/assets/ViewSelectionBar-WmSWMFsR.js +2 -0
  49. package/web/assets/appStore-DDOkzWDA.js +456 -0
  50. package/web/assets/appStore-iy8_Tmac.css +1 -0
  51. package/web/assets/arrow-up-right-BptN64d-.js +1 -0
  52. package/web/assets/{artificial-BzLFkChP.css → artificial-BubVxExB.css} +1 -1
  53. package/web/assets/astryxBridge-BL56QfEv.js +69 -0
  54. package/web/assets/astryxBridge-djzCiy4v.css +1 -0
  55. package/web/assets/automationListSource-B1jz6q0t.js +1 -0
  56. package/web/assets/boardSurface-CP4HNmcm.js +1 -0
  57. package/web/assets/calendarNavStore-DCi7VBmM.js +1 -0
  58. package/web/assets/canvasPrefs-ArsX3NFO.js +1 -0
  59. package/web/assets/chatBoxSurface-DRsDr-MT.js +1 -0
  60. package/web/assets/chevron-up-ChXNh14u.js +1 -0
  61. package/web/assets/{client-BqhpYbYL.js → client-fKy9CWk0.js} +1 -1
  62. package/web/assets/code-xml-DCCD9eCS.js +1 -0
  63. package/web/assets/{codeStudioStore-Dq5i8nbE.js → codeStudioStore-BgLfCDK2.js} +8 -8
  64. package/web/assets/codingNavigation-BrkLENBZ.css +1 -0
  65. package/web/assets/contextMenuSurface-BF593l2M.js +1 -0
  66. package/web/assets/copy-plus-ClKrSgM7.js +1 -0
  67. package/web/assets/create-DYmVT68X.js +14 -0
  68. package/web/assets/dashboardSurface-C6cbR3oG.js +1 -0
  69. package/web/assets/dbStore-BIG5Mfh2.js +1 -0
  70. package/web/assets/deskCapture-q-jRDIcc.js +1 -0
  71. package/web/assets/{diff2html-OoRdHZ_O.js → diff2html-Di8qIz6O.js} +2 -2
  72. package/web/assets/{docx-preview-B43XC8Cn.js → docx-preview-B-URZXdP.js} +1 -1
  73. package/web/assets/draft-CBSW5tHx.js +2 -0
  74. package/web/assets/drawingStore-CGvTqqYW.js +7 -0
  75. package/web/assets/file-down-Z913cCyQ.js +1 -0
  76. package/web/assets/floatingTocSurface-DGwTiqvU.js +1 -0
  77. package/web/assets/foldActions-DGIPTmE1.js +1 -0
  78. package/web/assets/folder-1OJQeDI1.js +1 -0
  79. package/web/assets/folder-minus-D_j1SwHu.js +1 -0
  80. package/web/assets/folder-plus-DP9sFr26.js +1 -0
  81. package/web/assets/gestures-ZhFAENNZ.js +1 -0
  82. package/web/assets/git-branch-BMajF2cu.js +1 -0
  83. package/web/assets/homeCardStatus-5R7XkxFL.js +1 -0
  84. package/web/assets/i18n-CAf4PT1o.css +1 -0
  85. package/web/assets/i18n.generated-DW_l6CkR.js +15 -0
  86. package/web/assets/imageStudio-CwG21Bat.css +1 -0
  87. package/web/assets/imageStudio-DC_syDtx.js +4 -0
  88. package/web/assets/index-B8A3nKeL.js +1 -0
  89. package/web/assets/{index-DDMXVG0h.js → index-BDZIQnEx.js} +2 -2
  90. package/web/assets/index-BYKR7EVg.js +1 -0
  91. package/web/assets/index-BeW45J9J.js +7 -0
  92. package/web/assets/index-BnJguNqI.js +1 -0
  93. package/web/assets/index-BniT-A2n.js +1 -0
  94. package/web/assets/index-C--E96Ul.js +1 -0
  95. package/web/assets/index-CI2esW1X.js +1 -0
  96. package/web/assets/index-CIKPZc3Q.js +1 -0
  97. package/web/assets/index-COzdD7mZ.js +13 -0
  98. package/web/assets/index-CPfmhZ3Z.js +1 -0
  99. package/web/assets/index-CVLDDD5Z.js +1 -0
  100. package/web/assets/index-CWXpOSI2.js +1 -0
  101. package/web/assets/index-Cg1FWM_p.js +1 -0
  102. package/web/assets/index-CmsN2Zm2.js +1 -0
  103. package/web/assets/index-CtCYv9bF.js +1 -0
  104. package/web/assets/index-CtRdzpNh.js +1 -0
  105. package/web/assets/index-D-ClOPbg.js +1 -0
  106. package/web/assets/{index-CobUnTcv.js → index-DfhEDV2T.js} +2 -2
  107. package/web/assets/index-Dr6YmrrT.js +1 -0
  108. package/web/assets/index-SpegRFQV.js +1 -0
  109. package/web/assets/index-bF04pF8q.js +3 -0
  110. package/web/assets/index-fDB1l4d-.js +3398 -0
  111. package/web/assets/index-jzlU5luC.js +1 -0
  112. package/web/assets/{index-D102FOuM.js → index-uhvJ8AiJ.js} +1 -1
  113. package/web/assets/{invitePage-BW0BH8Ac.js → invitePage-iOT1zBvp.js} +1 -1
  114. package/web/assets/{ipc-D7yENkjV.js → ipc-SAPDwyQ4.js} +1 -1
  115. package/web/assets/{jszip.min-UE5d5vPJ.js → jszip.min-B3n1FGCb.js} +1 -1
  116. package/web/assets/launchpad-C9U9hpWJ.css +1 -0
  117. package/web/assets/launchpad-CcmSwlJl.js +2 -0
  118. package/web/assets/layout-grid-oIyIGbc5.js +1 -0
  119. package/web/assets/linkFollow-uke1Xtit.js +8 -0
  120. package/web/assets/{listFold-CKxjyY5_.js → listFold-BeNv2v6M.js} +1 -1
  121. package/web/assets/lock-open-D2nMg0ga.js +1 -0
  122. package/web/assets/log-out-D70NCXC4.js +1 -0
  123. package/web/assets/magnet-Cqmm97W8.js +1 -0
  124. package/web/assets/main-B9aT0WXG.js +15 -0
  125. package/web/assets/main-BlVApHpj.css +1 -0
  126. package/web/assets/markdownEditorSurface-BiDH0__r.css +1 -0
  127. package/web/assets/markdownEditorSurface-zUzFity2.js +3 -0
  128. package/web/assets/mediaPlayer-DB4KUvua.js +1 -0
  129. package/web/assets/message-square-plus-BvUfAAZm.js +1 -0
  130. package/web/assets/{messages-4w1Khzm1.js → messages-GQUjmbwW.js} +1 -1
  131. package/web/assets/minimize-2-CMhzL6ZW.js +1 -0
  132. package/web/assets/mobileEntry-6u7TYC4s.css +1 -0
  133. package/web/assets/mobileEntry-BnHzrdoC.js +13 -0
  134. package/web/assets/modelPickerSurface-Dtz40Ae2.js +1 -0
  135. package/web/assets/nativeDownload-DsGyUSJ5.js +1 -0
  136. package/web/assets/nativeSheetMenu--iihXNVd.js +1 -0
  137. package/web/assets/pageStore-CyvNZEYX.js +13 -0
  138. package/web/assets/pageStore-ys8L4rjF.css +1 -0
  139. package/web/assets/{pageTree-CIXFRCLk.js → pageTree-Ci2qzrs1.js} +4 -4
  140. package/web/assets/pen-line-DC3lbEY1.js +1 -0
  141. package/web/assets/pen-tool-DD5_N4lZ.js +1 -0
  142. package/web/assets/pencil--sWwxHdP.js +1 -0
  143. package/web/assets/phoneList-BpLxxdq6.css +1 -0
  144. package/web/assets/phoneList-DKRMxQHf.js +1 -0
  145. package/web/assets/pluginChat-82zZt47Y.js +2 -0
  146. package/web/assets/react-b7FrqRQR.js +1 -0
  147. package/web/assets/recordSurface-vUX25Z8R.js +1 -0
  148. package/web/assets/redo-2-CqlqhWrI.js +1 -0
  149. package/web/assets/rotate-ccw-D8kni6Ni.js +1 -0
  150. package/web/assets/selectionActions-DIq0xDm8.js +2 -0
  151. package/web/assets/selectionBarSurface-B94e5JW_.js +1 -0
  152. package/web/assets/sessionTitle-Ctp4iNKu.js +1 -0
  153. package/web/assets/settingsPageSurface-C9TA3mJg.js +1 -0
  154. package/web/assets/sharePage-CY04XCAf.js +2 -0
  155. package/web/assets/{shareViewer-BzuSyJv_.js → shareViewer-DweNF8Ch.js} +2 -2
  156. package/web/assets/star-B0sZEmbj.js +1 -0
  157. package/web/assets/tableSurface-CSBYBw5P.js +1 -0
  158. package/web/assets/tanguProbe-B8Qv2vcm.js +6 -0
  159. package/web/assets/{terminalView-SAxITnRW.js → terminalView-BLGdmdl7.js} +3 -3
  160. package/web/assets/theme-CUWFlazV.css +1 -0
  161. package/web/assets/type-Dt7RNB9g.js +1 -0
  162. package/web/assets/undo-2-QimgpLBn.js +1 -0
  163. package/web/assets/{unitAccount-BPYRAa3m.js → unitAccount-DL3jfd84.js} +1 -1
  164. package/web/assets/{unitBridge-BNVzai6X.js → unitBridge-BSsCy1zP.js} +1 -1
  165. package/web/assets/{unitCloudTransport-iFweA1xk.js → unitCloudTransport-CI_6H0TU.js} +1 -1
  166. package/web/assets/unitOwnerAccess-CiQ7nD7E.js +1 -0
  167. package/web/assets/unitShim-Dl2ksNp-.js +5 -0
  168. package/web/assets/upload-Dy7svciS.js +1 -0
  169. package/web/assets/userSpaces-oMHIWgYe.js +1 -0
  170. package/web/assets/viewportLock-B0l1GU_k.css +1 -0
  171. package/web/assets/viewportLock-BZq5PTeN.js +738 -0
  172. package/web/assets/zoom-in-DDEtY_Go.js +1 -0
  173. package/web/excalidraw/excalidraw.js +4 -2
  174. package/web/index.html +12 -13
  175. package/web/assets/ArtificialView-DS97zlMg.js +0 -1
  176. package/web/assets/AutomationBuilder-BsJc8wuC.js +0 -1
  177. package/web/assets/CalendarConfigView-BN8mraSo.js +0 -1
  178. package/web/assets/CalendarView-D55PA1vn.js +0 -1
  179. package/web/assets/CapabilityMenu-BVrokPpT.js +0 -1
  180. package/web/assets/CheckboxInput-BuJ3HPm_.js +0 -1
  181. package/web/assets/Chrome-amTcZNE4.js +0 -1
  182. package/web/assets/DashboardGridView-D9s9pez_.css +0 -1
  183. package/web/assets/DashboardGridView-DlFyYfUh.js +0 -17
  184. package/web/assets/EventCard-DUrn2krw.js +0 -1
  185. package/web/assets/ExcalidrawCanvas-4uYrLYin.css +0 -1
  186. package/web/assets/ExcalidrawCanvas-TpbzBF-J.js +0 -1
  187. package/web/assets/FloatingToc-B1d4-5EL.js +0 -1
  188. package/web/assets/HomepageView-DnQ_5Obe.css +0 -1
  189. package/web/assets/HomepageView-nzKfbHM-.js +0 -1
  190. package/web/assets/ImageStudioPanels-B2PTq6Yb.js +0 -3
  191. package/web/assets/ImageStudioView-Cawr6pGW.js +0 -1
  192. package/web/assets/InlineFiles-DKPH5JHz.js +0 -1
  193. package/web/assets/MarkdownBlock--__nPQGh.css +0 -1
  194. package/web/assets/MarkdownBlock-BHpDy2qQ.js +0 -58
  195. package/web/assets/ModelPill-ChzAM3z1.js +0 -2
  196. package/web/assets/MuseLibraryView-DLuQ_jyV.js +0 -2
  197. package/web/assets/MuseView-CDDwV6SR.js +0 -6
  198. package/web/assets/PageHistoryPanel-BbdXpjJM.js +0 -2
  199. package/web/assets/PenRow-BY-MZLDQ.js +0 -1
  200. package/web/assets/ProductView-0ieVL3rY.js +0 -1
  201. package/web/assets/RightPanel-BRexwQ3W.js +0 -4
  202. package/web/assets/RunLocationPicker-BrDfOu8-.css +0 -1
  203. package/web/assets/RunLocationPicker-CadYiE7C.js +0 -43
  204. package/web/assets/SketchCard-BcXCdBAs.js +0 -641
  205. package/web/assets/StudioGuestSurface-ZJFKnNYF.js +0 -1
  206. package/web/assets/TodoListView-DuRdVFgB.js +0 -1
  207. package/web/assets/Tooltip-DtDUL18W.js +0 -1
  208. package/web/assets/UnifiedPage-CWXc_mo1.css +0 -1
  209. package/web/assets/UnifiedPage-D7JTfABH.js +0 -68
  210. package/web/assets/appStore-ClD7vq5L.css +0 -1
  211. package/web/assets/appStore-affnJoin.js +0 -3292
  212. package/web/assets/approvalText-Cy2UAUAQ.js +0 -2
  213. package/web/assets/arrow-up-right-R4P9Mmxz.js +0 -1
  214. package/web/assets/astryxBridge-CF_hpqC2.css +0 -1
  215. package/web/assets/astryxBridge-CT2wZJXs.js +0 -70
  216. package/web/assets/automationListSource-JVBMsMbC.js +0 -1
  217. package/web/assets/boardSurface-Ce0_vf9f.js +0 -1
  218. package/web/assets/book-open-CcXCToyx.js +0 -1
  219. package/web/assets/calendarNavStore-tQJRVpum.js +0 -1
  220. package/web/assets/canvasPrefs-CSuX9aLF.js +0 -1
  221. package/web/assets/chatBoxSurface-IG6Vu4Dz.js +0 -1
  222. package/web/assets/circle-question-mark-O8AhUz35.js +0 -1
  223. package/web/assets/circle-x-AV2ZWulM.js +0 -1
  224. package/web/assets/code-xml-DdR58F83.js +0 -1
  225. package/web/assets/codingNavigation-CxdCK78-.js +0 -53
  226. package/web/assets/codingNavigation-_tOR0ell.css +0 -1
  227. package/web/assets/create-BgJN5qsj.js +0 -14
  228. package/web/assets/dashboardSurface-BY-AFB-r.js +0 -1
  229. package/web/assets/deskCapture-BD2qD6NI.js +0 -1
  230. package/web/assets/emoji-BPdA62d7.js +0 -1
  231. package/web/assets/floatingTocSurface-BM2SYE_u.js +0 -1
  232. package/web/assets/foldActions-BcyvNVBs.js +0 -1
  233. package/web/assets/folder-CCZqnwRc.js +0 -1
  234. package/web/assets/folder-plus-BJKT1Pqg.js +0 -1
  235. package/web/assets/gestures-BwPbZDkU.js +0 -1
  236. package/web/assets/hack2gate-dark-Dx2RtDRI.jpg +0 -0
  237. package/web/assets/hack2gate-light-DRKq9tyS.jpg +0 -0
  238. package/web/assets/hand-DRu7IJdU.js +0 -1
  239. package/web/assets/hard-drive-CXNJUCXw.js +0 -1
  240. package/web/assets/i18n-BMo19xaR.css +0 -1
  241. package/web/assets/i18n.generated-DvY59Zq3.js +0 -15
  242. package/web/assets/imageStudio-Axwmd4GW.js +0 -2
  243. package/web/assets/imageStudio-DZ0qGU2s.css +0 -1
  244. package/web/assets/index-B1rE_NwA.js +0 -1
  245. package/web/assets/index-BFTY79aq.js +0 -1
  246. package/web/assets/index-BGEkZBs2.js +0 -1
  247. package/web/assets/index-BO2XJc36.js +0 -13
  248. package/web/assets/index-BYUntVIZ.js +0 -297
  249. package/web/assets/index-C65u4fXd.js +0 -1
  250. package/web/assets/index-C_Ohi-I3.js +0 -1
  251. package/web/assets/index-CkMhazev.js +0 -1
  252. package/web/assets/index-D3CYvMpl.js +0 -1
  253. package/web/assets/index-D78izbLA.js +0 -1
  254. package/web/assets/index-DY0M_dpd.js +0 -1
  255. package/web/assets/index-DcbZwhpE.js +0 -1
  256. package/web/assets/index-Dlkq7gkE.js +0 -1
  257. package/web/assets/index-HqmJW2np.js +0 -1
  258. package/web/assets/index-LxlyPm0_.js +0 -1
  259. package/web/assets/index-Uq4J2aoW.js +0 -1
  260. package/web/assets/index-WbVt2P8R.js +0 -3
  261. package/web/assets/index-XyjIhkPw.js +0 -1
  262. package/web/assets/index-Y2kzYlZq.js +0 -1
  263. package/web/assets/index-mB0EQkyZ.js +0 -1
  264. package/web/assets/index-pJh7JN7_.js +0 -1
  265. package/web/assets/index-taRxNsbp.js +0 -7
  266. package/web/assets/launchpad-C2c1MSVX.css +0 -1
  267. package/web/assets/layout-grid-Hs3eDA07.js +0 -1
  268. package/web/assets/linkFollow-Msu1XH9v.js +0 -8
  269. package/web/assets/list-tree-DmuRb-p9.js +0 -1
  270. package/web/assets/lock-kffGfeHt.js +0 -1
  271. package/web/assets/log-out-B5gEP0tF.js +0 -1
  272. package/web/assets/main-BiS_5wrB.css +0 -1
  273. package/web/assets/main-DIyFlyfK.js +0 -20
  274. package/web/assets/markdownEditorSurface-Bql20IAf.css +0 -1
  275. package/web/assets/markdownEditorSurface-Cx2rqFAY.js +0 -3
  276. package/web/assets/message-square-plus-DxBPIhPS.js +0 -1
  277. package/web/assets/minus-CfoZ4oxr.js +0 -1
  278. package/web/assets/mobileEntry-B8JwR53-.js +0 -13
  279. package/web/assets/mobileEntry-DS1vohuL.css +0 -1
  280. package/web/assets/nativeDownload-Udrv_tmU.js +0 -1
  281. package/web/assets/pageChrome-D-9npbUE.js +0 -1
  282. package/web/assets/pageChrome-eO9pb2fH.css +0 -1
  283. package/web/assets/pen-tool-D_Y9We9x.js +0 -1
  284. package/web/assets/pencil-DGiTRzW1.js +0 -1
  285. package/web/assets/phoneList-BQfCJwKF.css +0 -1
  286. package/web/assets/phoneList-DHUia6HT.js +0 -9
  287. package/web/assets/pluginChat-BXuJiMYi.js +0 -2
  288. package/web/assets/redo-2-QgiKEg9T.js +0 -1
  289. package/web/assets/rotate-ccw-BLoH5er1.js +0 -1
  290. package/web/assets/sharePage-DYYN5usb.js +0 -2
  291. package/web/assets/star-BmywYD3u.js +0 -1
  292. package/web/assets/tableSurface-21LDYY_G.js +0 -1
  293. package/web/assets/terminal-BlmA_Z1C.js +0 -1
  294. package/web/assets/theme-Dgqst5S9.css +0 -1
  295. package/web/assets/type-DmIL6FB-.js +0 -1
  296. package/web/assets/undo-2-yMeXc8Wi.js +0 -1
  297. package/web/assets/unitOwnerAccess-Bggl7bDP.js +0 -1
  298. package/web/assets/unitShim-BP2nBO_k.js +0 -5
  299. package/web/assets/upload-D20PZHXc.js +0 -1
  300. package/web/assets/userSpaces-CrLrKklx.js +0 -1
  301. package/web/assets/viewportLock-DO1lzA2N.css +0 -1
  302. package/web/assets/viewportLock-tlT6H_Hc.js +0 -629
  303. package/web/assets/workflow-Bd6xBHiT.js +0 -1
  304. package/web/assets/zoom-in-_TgFOpyv.js +0 -1
@@ -0,0 +1 @@
1
+ import{r as o,j as e,u as xe}from"./index-fDB1l4d-.js";import{p3 as le,b0 as Ze,k9 as Je,k5 as Qe,j2 as et,kc as tt,p4 as at,i as nt,ag as it,p5 as lt,p6 as $e,p7 as Ie,dp as Fe,p8 as Re,hK as be,p9 as st,aW as pe,pa as ot,pb as rt,aU as ut,aV as dt,L as ct,W as mt,iY as ht,pc as bt,pd as pt,l as xt,pe as vt,pf as jt,u as gt}from"./appStore-DDOkzWDA.js";import{p as ft,T as yt,b7 as Nt,bv as _t,aj as Ct,ba as kt,b9 as wt,u as St,Z as De,q as Te,a6 as Et,am as Pt,B as $t,D as Ft,as as Rt}from"./pageStore-CyvNZEYX.js";import{u as ie}from"./dbStore-BIG5Mfh2.js";import{C as Dt}from"./CapabilityMenu-DyHTEYLr.js";import{u as Tt}from"./gestures-ZhFAENNZ.js";import{a as zt,C as Mt}from"./Chrome-C7F6fdDp.js";import{d as It,e as At,f as qt,g as Ht}from"./canvasPrefs-ArsX3NFO.js";import{R as Vt}from"./rotate-ccw-D8kni6Ni.js";import"./messages-GQUjmbwW.js";const Wt=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],Lt=ft("circle-question-mark",Wt);function Ot({controller:i,open:c,title:b,onClose:C,children:h}){const[j]=o.useState(()=>document.createElement("div"));j.className="auto-extension";const a=o.useRef(null),k=o.useRef(C);k.current=C;const v=o.useRef(b);return v.current=b,o.useEffect(()=>{if(!(!i||!c)){try{a.current=i.open({id:"automation-context",title:()=>v.current,mount:f=>(f.appendChild(j),()=>j.remove()),onClose:()=>k.current()})}catch{k.current()}return()=>{a.current?.close(),a.current=null}}},[i,c,j]),c?i?yt.createPortal(h,j):e.jsx("div",{className:"auto-extension auto-extension-inline",children:h}):null}const oa=["reminder","briefing","table","button"];function Bt(i,c){return i?i==="briefing"||i==="button"?[{...le("agent_run"),prompt:c(`automation.ux.${i}.prompt`)}]:[{...le("notify"),title:c(`automation.ux.${i}.name`),body:c(`automation.ux.${i}.body`)}]:[le("notify")]}function ze(i,c,b){if(i.type==="notify")return i.title.trim()?null:"notify";if(i.type==="agent_run")return i.agentSlug?i.prompt.trim()?null:"prompt":"agent";if(i.type==="db_row_add"||i.type==="db_row_edit"){if(!/\.db$/i.test(i.dbPath.trim()))return"table";if(!i.cells.some(h=>h.k.trim()))return"cells";if(i.type==="db_row_edit"){if(c!=="db_changed"&&(!i.rowId.trim()&&!i.matchColumn.trim()||i.rowFrom.trim()))return"row";if(i.matchColumn.trim()&&!i.matchValue.trim())return"match"}return null}const C=b.find(h=>h.name===i.tool);if(!C)return"tool";if((C.parameters.required||[]).some(h=>!(i.argValues[h]||"").trim()))return"args";for(const[h,j]of Object.entries(i.argValues)){if(!j.trim())continue;const a=C.parameters.properties?.[h];if(a?.type==="number"&&!Number.isFinite(Number(j)))return"args";if(a?.type==="object"||a?.type==="array")try{const k=JSON.parse(j);if(a.type==="array"?!Array.isArray(k):!k||typeof k!="object"||Array.isArray(k))return"json"}catch{return"json"}}return null}function Ut(i){return(i||[]).map(c=>({value:`{{row.${c.id}}}`,label:c.name}))}const Kt=i=>({x:0,y:i*132,w:244,h:84}),Yt=({nodes:i,selected:c,onSelect:b,children:C})=>{const{t:h}=xe(),j=o.useId().replace(/:/g,""),a=o.useRef(null),[k,v]=o.useState({}),[f,$]=o.useState(It),[I,F]=o.useState(At),p=Nt(a),m=new Map(i.map((n,s)=>[n.id,k[n.id]||Kt(s)])),P=i.map(n=>n.id).join(","),x=Tt(a,p,{boxes:()=>m,identity:()=>P,commit:n=>v(s=>({...s,...Object.fromEntries(n)})),hitKey:n=>n.closest("[data-flow-node]")?.dataset.flowNode||null,onEnterEdit:b,onDoubleClick:n=>{n&&b(n)},minW:244,minH:84,repel:!0},f);o.useEffect(()=>x.bind(a.current),[x.bind]),o.useEffect(()=>p.bindWheel(a.current),[p.bindWheel]);const D=o.useRef(()=>p.fitTo([...m.values()],64));D.current=()=>p.fitTo([...m.values()],64),o.useEffect(()=>{v({});const n=requestAnimationFrame(()=>D.current());return()=>cancelAnimationFrame(n)},[P]),o.useEffect(()=>{const n=new ResizeObserver(()=>D.current());return a.current&&n.observe(a.current),()=>n.disconnect()},[]);const A=n=>x.live?.get(n)||m.get(n);return e.jsx("div",{className:"auto-canvas-shell am-app",children:e.jsxs("div",{className:"auto-canvas amx-stage",ref:a,tabIndex:0,"aria-label":h("automation.ux.flow"),onPointerUpCapture:n=>{if(x.busy)return;const s=document.elementFromPoint(n.clientX,n.clientY)?.closest("[data-flow-node]");s&&a.current?.contains(s)&&b(s.dataset.flowNode)},children:[e.jsx("div",{className:"amx-stage-grid",style:_t(p.vp)}),e.jsxs("div",{className:"auto-canvas-world",style:{transform:`translate(${p.vp.x}px, ${p.vp.y}px) scale(${p.vp.z})`},children:[e.jsxs("svg",{className:"auto-canvas-edges","aria-hidden":"true",children:[e.jsx("defs",{children:e.jsx("marker",{id:j,markerWidth:"8",markerHeight:"8",refX:"6",refY:"3",orient:"auto",children:e.jsx("path",{d:"M0,0 L6,3 L0,6",fill:"none",stroke:"currentColor"})})}),i.slice(1).map((n,s)=>{const y=A(i[s].id),w=A(n.id),q=y.x+y.w/2,H=y.y+y.h,X=w.x+w.w/2,W=w.y;return e.jsx("path",{d:`M${q},${H} C${q},${H+28} ${X},${W-28} ${X},${W}`,markerEnd:`url(#${j})`},n.id)})]}),i.map(n=>{const s=A(n.id);return e.jsxs("div",{"data-flow-node":n.id,role:"button",tabIndex:0,"aria-pressed":c===n.id,className:`auto-flow-node ${c===n.id?"selected":""}`,style:{left:s.x,top:s.y,width:s.w,height:s.h},onClick:()=>b(n.id),onKeyDown:y=>{y.key==="Enter"&&(y.preventDefault(),b(n.id))},children:[e.jsx("span",{className:"auto-flow-icon",children:n.icon}),e.jsx("strong",{children:n.title}),e.jsx("span",{className:"auto-flow-status",title:h(n.ready?"automation.ux.ready":"automation.ux.incomplete"),children:n.ready?e.jsx(Ct,{size:13}):e.jsx(Ze,{size:13})}),e.jsx("span",{className:"auto-flow-subtitle",children:n.subtitle})]},n.id)}),x.marquee&&e.jsx("div",{className:"amx-stage-marquee",style:{left:x.marquee.x,top:x.marquee.y,width:x.marquee.w,height:x.marquee.h}})]}),C&&e.jsx("div",{className:"amx-stage-tools auto-canvas-tools",children:C}),e.jsx(zt,{zoom:p.vp.z,onZoomBy:n=>{const{w:s,h:y}=kt(a.current);p.setVp(wt(p.vp,p.vp.z*n,s/2,y/2))},onFit:()=>D.current(),snap:f,onSnap:n=>{$(n),Ht(n)},mini:I,onMini:n=>{F(n),qt(n)},extra:e.jsx("button",{type:"button",title:h("automation.ux.arrange"),onClick:()=>{v({}),requestAnimationFrame(()=>D.current())},children:e.jsx(Vt,{size:12})})}),I&&e.jsx(Mt,{hostRef:a,vp:p.vp,items:i.map(n=>({key:n.id,kind:"card",box:A(n.id)})),onCenter:p.centerOn})]})})},Me=({label:i,value:c,onChange:b,multiline:C,maxLength:h=4e3,placeholder:j,columns:a,hasRow:k})=>{const{t:v}=xe(),f=o.useId(),$=o.useRef(null),I=o.useRef({start:c.length,end:c.length}),F=m=>{if(!m)return;const{start:P,end:x}=I.current;c.length-(x-P)+m.length>h||(b(c.slice(0,P)+m+c.slice(x)),requestAnimationFrame(()=>{$.current?.focus(),$.current?.setSelectionRange(P+m.length,P+m.length)}))},p={id:f,ref:$,value:c,maxLength:h,placeholder:j,onChange:m=>b(m.target.value),onSelect:m=>{I.current={start:m.currentTarget.selectionStart??c.length,end:m.currentTarget.selectionEnd??c.length}}};return e.jsxs("div",{className:"field auto-template-field",children:[e.jsxs("div",{className:"auto-field-heading",children:[e.jsx("label",{htmlFor:f,children:i}),e.jsxs("select",{"aria-label":v("automation.ux.insertVariable",{field:i}),value:"",onChange:m=>F(m.target.value),children:[e.jsx("option",{value:"",children:v("automation.ux.variables")}),e.jsx("option",{value:"{{today}}",children:v("automation.ux.today")}),e.jsx("option",{value:"{{now}}",children:v("automation.ux.now")}),k&&e.jsxs("optgroup",{label:v("automation.ux.triggerRow"),children:[e.jsx("option",{value:"{{row.id}}",children:v("automation.ux.rowId")}),Ut(a).map(m=>e.jsx("option",{value:m.value,children:m.label},m.value))]})]})]}),C?e.jsx("textarea",{...p}):e.jsx("input",{type:"text",...p})]})};function Gt(){const i=new Date(Date.now()+36e5);i.setMinutes(0,0,0);const c=b=>String(b).padStart(2,"0");return`${i.getFullYear()}-${c(i.getMonth()+1)}-${c(i.getDate())}T${c(i.getHours())}:00`}const Xt=({editing:i,starter:c,fixedManual:b,onSaved:C,onCancel:h,extendView:j})=>{const{t:a}=xe(),k=Je(),v=Qe(),f=v.actionsCatalog,[$,I]=o.useState(i?.desc||(c?a(`automation.ux.${c}.name`):"")),[F,p]=o.useState("trigger"),[m,P]=o.useState(!1),x=t=>{p(t),P(!0)},[D,A]=o.useState(i?.enabled??!!b),n=i?.cond,[s,y]=o.useState(n?n.type==="event_seen"?"event_seen":n.type==="file_chars_gte"?"file_chars_gte":n.type==="manual"?"manual":n.type==="db_changed"?"db_changed":"timer":b||c==="button"?"manual":c==="table"?"db_changed":"timer"),[w,q]=o.useState(n?.type==="at"?"at":n?.type==="every"?"every":"daily_at"),[H,X]=o.useState(n?.type==="daily_at"?n.time:"09:00"),W=!!i&&et(i),[Z,Ae]=o.useState(n?.type==="at"&&!W?n.datetime.replace(" ","T"):Gt()),J=n?.type==="every"?/^(\d+)([mhd])$/.exec(n.interval):null,[Q,qe]=o.useState(J?J[1]:"1"),[ve,He]=o.useState(J?J[2]:"h"),[se,Ve]=o.useState(n?.type==="event_seen"?n.match:""),[oe,We]=o.useState(n?.type==="file_chars_gte"?n.path:""),[re,Le]=o.useState(n?.type==="file_chars_gte"?String(n.n):"100"),[R,Oe]=o.useState(n?.type==="db_changed"?n.path:""),[z,je]=o.useState(n?.type==="db_changed"?n.event:"row_added"),[V,ge]=o.useState(()=>tt(n)),fe=(t,d)=>ge(r=>d?r.includes(t)?r:[...r,t]:r.filter(l=>l!==t)),[ue,Be]=o.useState(n?.type==="db_changed"&&n.equals||""),[L,de]=o.useState(()=>at(n)),ce=(t,d)=>de(r=>r.map((l,u)=>u===t?{...l,...d}:l));o.useEffect(()=>{nt()},[]);const ye=St(t=>t.files),O=o.useMemo(()=>ye.filter(t=>/\.db$/i.test(t)),[ye]);o.useEffect(()=>{for(const t of O)ie.getState().load(t,t)},[O]);const Ne=ie(it(t=>O.filter(d=>t.entries[d]?.data?.source!==void 0))),ee=o.useMemo(()=>O.filter(t=>!Ne.includes(t)),[O,Ne]),B=ie(t=>s==="db_changed"&&R?t.entries[R]?.data?.columns:void 0),U=o.useMemo(()=>B?.filter(t=>t.type!=="formula"&&t.type!=="lookup"),[B]),[S,te]=o.useState(()=>i?lt(i):Bt(c,a)),[me,Ue]=o.useState(i&&!i.actions?.length&&!i.agentSlug&&i.prompt||""),[K,_e]=o.useState(()=>$e(i,s)),Ce=o.useRef(!1);o.useEffect(()=>{!i&&!Ce.current&&_e($e(null,s))},[s,i]);const[Y,ke]=o.useState(!1),[we,ae]=o.useState(""),Ke=t=>{if(S.length>=24)return;const d=le(t);te(r=>[...r,d]),x(String(d.key))},Se=S.some(t=>t.type==="agent_run"),g=(t,d)=>te(r=>r.map(l=>l.key===t?{...l,...d}:l)),Ee=(t,d)=>te(r=>{const l=t+d;if(l<0||l>=r.length)return r;const u=[...r];return[u[t],u[l]]=[u[l],u[t]],u});if(Ie(i))return e.jsxs("div",{className:"auto-builder",children:[e.jsxs("div",{className:"auto-builder-title",children:[e.jsx(Fe,{size:17})," ",a("automation.builder.editTitle")]}),e.jsx("div",{className:"auto-node",children:e.jsx("div",{className:"auto-hint",children:a("automation.builder.unsupported")})}),e.jsx("div",{className:"auto-builder-actions",children:e.jsx("button",{className:"btn ghost",onClick:()=>h?h():v.closeBuilder(),children:a("common.cancel")})})]});const Pe=!(s==="timer"&&(w==="daily_at"&&!/^\d{1,2}:\d{2}$/.test(H)||w==="at"&&!Z||w==="every"&&(!Number.isInteger(Number(Q))||Number(Q)<1))||s==="event_seen"&&!se.trim()||s==="file_chars_gte"&&(!oe.trim()||!(Number(re)>0))||s==="db_changed"&&(!/\.db$/i.test(R.trim())||z==="cell_changed"&&!V.length||L.length>Re||L.some(t=>t.column.trim()&&(t.op==="eq"||t.op==="ne")&&!t.value.trim()))),E=[];$.trim()||E.push({node:"trigger",text:a("automation.ux.issue.name")}),Pe||E.push({node:"trigger",text:a("automation.ux.issue.trigger")}),!S.length&&(!i||s==="manual")&&E.push({node:"review",text:a("automation.ux.issue.steps")}),S.forEach((t,d)=>{const r=ze(t,s,f);r&&E.push({node:String(t.key),text:`${d+1}. ${a(`automation.ux.issue.${r}`)}`})}),s!=="timer"&&s!=="manual"&&(!K.trim()||!Number.isFinite(Number(K))||Number(K)<0)&&E.push({node:"review",text:a("automation.ux.issue.cooldown")});const ne=E.length===0,Ye=async()=>{if(!ne||Y)return;const t=s==="timer"?w:s;if(t==="at"&&(ht(Z)?.getTime()??0)<Date.now()-5*6e4){ae(a("automation.builder.atPast"));return}const d=u=>ie.getState().entries[u]?.data?.source!==void 0;if([...t==="db_changed"?[R.trim()]:[],...S.filter(u=>u.type==="db_row_add"||u.type==="db_row_edit").map(u=>u.dbPath.trim())].filter(Boolean).some(d)){ae(a("automation.builder.dbNoteView"));return}ke(!0),ae("");const l=bt(S,f);try{const u=await pt(xt(),{id:i?.id,actor:"user",desc:$.trim(),cond_type:t,time:t==="daily_at"?H:void 0,datetime:t==="at"?Z:void 0,interval:t==="every"?`${Math.floor(Number(Q))}${ve}`:void 0,match:t==="event_seen"?se.trim():void 0,path:t==="file_chars_gte"?oe.trim():t==="db_changed"?R.trim():void 0,n:t==="file_chars_gte"?Number(re):void 0,event:t==="db_changed"?z:void 0,column_id:t==="db_changed"&&z==="cell_changed"?V[0]:void 0,column_ids:t==="db_changed"&&z==="cell_changed"&&V.length>1?V:void 0,equals:t==="db_changed"&&z==="cell_changed"&&ue.trim()?ue.trim():void 0,where:t==="db_changed"?jt(L):void 0,vault:t==="db_changed"&&i?.cond.type==="db_changed"?i.cond.vault:void 0,prompt:S.length?void 0:me.trim()||void 0,cooldown_hours:vt(s,K),actions:S.length?l:null,enabled:D});if(i?.id||Rt("automation.create"),C){v.bump(),C(u);return}v.acceptSaved(u),gt.getState().toast(a("automation.ux.saved"))}catch(u){ae(String(u?.message||u))}finally{ke(!1)}},he=t=>t==="notify"?e.jsx(ct,{size:14}):t==="agent_run"?e.jsx($t,{size:14}):t==="db_row_add"||t==="db_row_edit"?e.jsx(Ft,{size:14}):e.jsx(mt,{size:14}),Ge=[{id:"trigger",title:a("automation.builder.trigger"),subtitle:a(`automation.builder.${s==="timer"?"condTimer":s==="manual"?"condManual":s==="db_changed"?"condDb":s==="event_seen"?"condEvent":"condFile"}`),icon:e.jsx(De,{size:17}),ready:Pe&&!!$.trim()},...S.map((t,d)=>({id:String(t.key),title:`${d+1}. ${a(`automation.step.${t.type}`)}`,subtitle:t.title||t.prompt||t.dbPath||t.tool||a("automation.ux.setupHint"),icon:he(t.type),ready:!ze(t,s,f)})),...!S.length&&i&&s!=="manual"?[{id:"muse",title:a("automation.builder.museFallback"),subtitle:me||a("automation.builder.museFallbackHint"),icon:e.jsx(Te,{size:17}),ready:!0}]:[],{id:"review",title:a("automation.ux.finish"),subtitle:a(ne?"automation.ux.allReady":"automation.ux.finishHint"),icon:e.jsx(be,{size:17}),ready:ne}],Xe=e.jsxs(e.Fragment,{children:[e.jsxs(Dt,{label:a("automation.ux.addStep"),className:"btn ghost sm",disabled:Y||S.length>=24,items:["notify","agent_run","db_row_add","db_row_edit","tool_call"].map(t=>({id:t,label:a(`automation.step.${t}`),icon:he(t),disabled:t==="tool_call"&&!f.length,onSelect:()=>Ke(t)})),children:[e.jsx(Et,{size:14}),a("automation.ux.addStep")]}),e.jsx("button",{className:"icon-btn",title:a("automation.ux.help"),onClick:()=>x("help"),children:e.jsx(Lt,{size:15})})]});return e.jsxs("div",{className:`auto-builder auto-workflow-builder ${b?"auto-builder-embedded":""}`,children:[e.jsxs("div",{className:"auto-builder-title",children:[e.jsx(Fe,{size:17}),e.jsx("span",{children:a(i?"automation.builder.editTitle":"automation.builder.title")}),e.jsx("button",{className:"btn ghost sm",disabled:Y,onClick:()=>h?h():v.closeBuilder(),children:a("common.cancel")})]}),e.jsx("div",{className:"auto-builder-workspace",hidden:!j&&m,children:e.jsx(Yt,{nodes:Ge,selected:m?F:"",onSelect:x,children:Xe})}),e.jsxs(Ot,{controller:j,open:m,title:a("automation.ux.setup"),onClose:()=>P(!1),children:[!j&&e.jsxs("button",{className:"btn ghost sm auto-inline-back",onClick:()=>P(!1),children:[e.jsx(Pt,{size:14}),a("automation.ux.flow")]}),e.jsxs("div",{className:"auto-inspector","aria-label":a("automation.ux.setup"),children:[e.jsxs("div",{className:"auto-node",hidden:F!=="trigger",children:[e.jsxs("div",{className:"auto-node-head",children:[e.jsx("span",{className:"auto-ic",children:e.jsx(De,{size:14})}),a("automation.builder.trigger")]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.desc")}),e.jsx("input",{"aria-label":a("automation.builder.desc"),type:"text",value:$,maxLength:200,placeholder:a("automation.builder.descPh"),onChange:t=>I(t.target.value)})]}),!b&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.condType")}),e.jsxs("div",{className:"auto-seg",children:[e.jsx("button",{className:s==="timer"?"active":"",onClick:()=>y("timer"),children:a("automation.builder.condTimer")}),e.jsx("button",{className:s==="event_seen"?"active":"",onClick:()=>y("event_seen"),children:a("automation.builder.condEvent")}),e.jsx("button",{className:s==="file_chars_gte"?"active":"",onClick:()=>y("file_chars_gte"),children:a("automation.builder.condFile")}),e.jsx("button",{className:s==="db_changed"?"active":"",onClick:()=>y("db_changed"),children:a("automation.builder.condDb")}),e.jsx("button",{className:s==="manual"?"active":"",onClick:()=>y("manual"),children:a("automation.builder.condManual")})]})]}),s==="db_changed"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbPath")}),e.jsxs("select",{value:R,onChange:t=>{Oe(t.target.value),ge([])},children:[e.jsx("option",{value:"",children:a("automation.builder.dbPickDb")}),ee.map(t=>e.jsx("option",{value:t,children:t},t)),R&&!ee.includes(R)&&e.jsx("option",{value:R,children:R})]})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbEvent")}),e.jsxs("div",{className:"auto-seg",children:[e.jsx("button",{className:z==="row_added"?"active":"",onClick:()=>je("row_added"),children:a("automation.builder.dbEventRow")}),e.jsx("button",{className:z==="cell_changed"?"active":"",onClick:()=>je("cell_changed"),children:a("automation.builder.dbEventCell")})]})]}),z==="cell_changed"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbColumn")}),e.jsxs("div",{className:"auto-checks",children:[(U??[]).map(t=>e.jsxs("label",{className:"auto-check",children:[e.jsx("input",{type:"checkbox",checked:V.includes(t.id),onChange:d=>fe(t.id,d.target.checked)}),t.name]},t.id)),V.filter(t=>!(U??[]).some(d=>d.id===t)).map(t=>e.jsxs("label",{className:"auto-check",children:[e.jsx("input",{type:"checkbox",checked:!0,onChange:()=>fe(t,!1)}),"(",t,")"]},t)),!U&&e.jsx("span",{className:"auto-hint",children:a("automation.builder.dbColsLoading")})]}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.dbColumnsHint")})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbEquals")}),e.jsx("input",{type:"text",value:ue,maxLength:200,placeholder:a("automation.builder.dbEqualsPh"),onChange:t=>Be(t.target.value)})]})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbWhere")}),L.map((t,d)=>e.jsxs("div",{className:"auto-inline",children:[e.jsxs("select",{value:t.column,onChange:r=>ce(d,{column:r.target.value}),children:[e.jsx("option",{value:"",children:a(B?"automation.builder.dbPickCol":"automation.builder.dbColsLoading")}),(B??[]).map(r=>e.jsx("option",{value:r.id,children:r.name},r.id)),t.column&&!(B??[]).some(r=>r.id===t.column)&&e.jsxs("option",{value:t.column,children:["(",t.column,")"]})]}),e.jsx("select",{value:t.op,onChange:r=>ce(d,{op:r.target.value}),children:st.map(r=>e.jsx("option",{value:r,children:a(r==="eq"?"automation.builder.dbWhereOpEq":r==="ne"?"automation.builder.dbWhereOpNe":r==="empty"?"automation.builder.dbWhereOpEmpty":"automation.builder.dbWhereOpNotEmpty")},r))}),e.jsx("input",{type:"text",value:t.value,maxLength:200,disabled:t.op==="empty"||t.op==="notempty",placeholder:a("automation.builder.dbWhereValPh"),onChange:r=>ce(d,{value:r.target.value})}),e.jsx("button",{className:"icon-btn",title:a("common.delete"),onClick:()=>de(r=>r.filter((l,u)=>u!==d)),children:e.jsx(pe,{size:12})})]},d)),e.jsx("button",{className:"icon-btn",title:a("automation.builder.dbWhereAdd"),disabled:L.length>=Re,onClick:()=>de(t=>[...t,{column:"",op:"eq",value:""}]),children:"+"}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.dbWhereHint")})]}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.dbHint")})]}),s==="manual"&&e.jsx("div",{className:"auto-hint",children:a("automation.builder.manualHint")}),s==="timer"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.timerMode")}),e.jsxs("div",{className:"auto-seg",children:[e.jsx("button",{className:w==="daily_at"?"active":"",onClick:()=>q("daily_at"),children:a("automation.builder.timerDaily")}),e.jsx("button",{className:w==="at"?"active":"",onClick:()=>q("at"),children:a("automation.builder.timerOnce")}),e.jsx("button",{className:w==="every"?"active":"",onClick:()=>q("every"),children:a("automation.builder.timerEvery")})]})]}),w==="daily_at"&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.time")}),e.jsx("input",{type:"time",value:H,onChange:t=>X(t.target.value)})]}),w==="at"&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.datetime")}),e.jsx("input",{type:"datetime-local",value:Z,onChange:t=>Ae(t.target.value)}),e.jsx("div",{className:"auto-hint",children:a(W?"automation.builder.expiredReset":"automation.builder.onceHint")})]}),w==="every"&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.interval")}),e.jsxs("div",{className:"auto-inline",children:[e.jsx("input",{type:"number",value:Q,min:1,style:{width:90},onChange:t=>qe(t.target.value)}),e.jsxs("select",{value:ve,onChange:t=>He(t.target.value),children:[e.jsx("option",{value:"m",children:a("automation.builder.unitM")}),e.jsx("option",{value:"h",children:a("automation.builder.unitH")}),e.jsx("option",{value:"d",children:a("automation.builder.unitD")})]})]}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.everyHint")})]})]}),s==="event_seen"&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.match")}),e.jsx("input",{type:"text",list:"auto-event-catalog",value:se,maxLength:120,placeholder:a("automation.builder.matchPh"),onChange:t=>Ve(t.target.value)}),e.jsxs("datalist",{id:"auto-event-catalog",children:[ot.map(t=>e.jsx("option",{value:t},t)),rt().map(t=>e.jsx("option",{value:t.name,label:t.label},t.name))]}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.matchHint")})]}),s==="file_chars_gte"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.path")}),e.jsx("input",{type:"text",value:oe,placeholder:"~/Forsion/Notes/xxx.md",onChange:t=>We(t.target.value)})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.chars")}),e.jsx("input",{type:"number",value:re,min:1,onChange:t=>Le(t.target.value)})]})]})]}),S.map((t,d)=>{const r=t.type==="tool_call"?f.find(l=>l.name===t.tool):void 0;return e.jsxs("div",{className:"auto-node",hidden:F!==String(t.key),children:[e.jsxs("div",{className:"auto-node-head",children:[e.jsx("span",{className:"auto-ic",children:he(t.type)}),a("automation.builder.stepN",{n:String(d+1)})," · ",a(`automation.step.${t.type}`),e.jsxs("span",{className:"auto-step-tools",children:[e.jsx("button",{className:"icon-btn",disabled:d===0,title:a("automation.builder.moveUp"),onClick:()=>Ee(d,-1),children:e.jsx(ut,{size:12})}),e.jsx("button",{className:"icon-btn",disabled:d===S.length-1,title:a("automation.builder.moveDown"),onClick:()=>Ee(d,1),children:e.jsx(dt,{size:12})}),e.jsx("button",{className:"icon-btn",title:a("common.delete"),onClick:()=>{te(l=>l.filter(u=>u.key!==t.key)),x("trigger")},children:e.jsx(pe,{size:12})})]})]}),t.type==="notify"&&e.jsxs(e.Fragment,{children:[e.jsx(Me,{label:a("automation.builder.notifyTitle"),value:t.title,maxLength:200,placeholder:a("automation.builder.notifyTitlePh"),onChange:l=>g(t.key,{title:l}),columns:U,hasRow:s==="db_changed"}),e.jsx(Me,{label:a("automation.builder.notifyBody"),value:t.body,multiline:!0,onChange:l=>g(t.key,{body:l}),columns:U,hasRow:s==="db_changed"}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.notifyHint")})]}),t.type==="agent_run"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.runner")}),e.jsxs("select",{value:t.agentSlug,onChange:l=>g(t.key,{agentSlug:l.target.value}),children:[e.jsx("option",{value:"",children:a("automation.builder.runnerPick")}),k.filter(l=>l.slug!=="muse").map(l=>e.jsx("option",{value:l.slug,children:l.name},l.slug))]})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.prompt")}),e.jsx("textarea",{value:t.prompt,maxLength:500,placeholder:a("automation.builder.promptPh"),onChange:l=>g(t.key,{prompt:l.target.value})})]})]}),(t.type==="db_row_add"||t.type==="db_row_edit")&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbPath")}),e.jsxs("select",{value:t.dbPath,onChange:l=>g(t.key,{dbPath:l.target.value}),children:[e.jsx("option",{value:"",children:a("automation.builder.dbPickDb")}),ee.map(l=>e.jsx("option",{value:l,children:l},l)),t.dbPath&&!ee.includes(t.dbPath)&&e.jsx("option",{value:t.dbPath,children:t.dbPath})]})]}),t.type==="db_row_edit"&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbRowId")}),e.jsx("input",{type:"text",value:t.rowId,placeholder:a(s==="db_changed"?"automation.builder.dbRowIdPh":"automation.builder.dbRowIdRequired"),onChange:l=>g(t.key,{rowId:l.target.value})})]}),t.type==="db_row_edit"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbRowFrom")}),e.jsx("input",{type:"text",value:t.rowFrom,maxLength:200,placeholder:a("automation.builder.dbRowFromPh"),onChange:l=>g(t.key,{rowFrom:l.target.value})})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbMatch")}),e.jsxs("div",{className:"auto-inline",children:[e.jsx("input",{type:"text",value:t.matchColumn,maxLength:200,placeholder:a("automation.builder.dbCellKey"),style:{width:120},onChange:l=>g(t.key,{matchColumn:l.target.value})}),e.jsx("input",{type:"text",value:t.matchValue,maxLength:2e3,placeholder:a("automation.builder.dbMatchValPh"),onChange:l=>g(t.key,{matchValue:l.target.value})})]}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.dbTargetHint")})]})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbCells")}),t.cells.map((l,u)=>e.jsxs("div",{className:"auto-inline",children:[e.jsx("input",{type:"text",value:l.k,placeholder:a("automation.builder.dbCellKey"),style:{width:120},onChange:M=>g(t.key,{cells:t.cells.map((N,T)=>T===u?{...N,k:M.target.value}:N)})}),e.jsx("input",{type:"text",value:l.v,placeholder:a(u===0?"automation.builder.dbCellValPh":"automation.builder.dbCellVal"),onChange:M=>g(t.key,{cells:t.cells.map((N,T)=>T===u?{...N,v:M.target.value}:N)})}),e.jsx("button",{className:"icon-btn",title:a("common.delete"),disabled:t.cells.length<=1,onClick:()=>g(t.key,{cells:t.cells.filter((M,N)=>N!==u)}),children:e.jsx(pe,{size:12})})]},u)),e.jsx("button",{className:"icon-btn",title:a("automation.builder.dbCellAdd"),onClick:()=>g(t.key,{cells:[...t.cells,{k:"",v:""}]}),children:"+"}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.dbCellsHint")})]}),t.type==="db_row_add"&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbSkipIfEmpty")}),e.jsx("input",{type:"text",value:t.skipIfEmpty,maxLength:200,placeholder:a("automation.builder.dbSkipIfEmptyPh"),onChange:l=>g(t.key,{skipIfEmpty:l.target.value})})]})]}),t.type==="tool_call"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.tool")}),e.jsxs("select",{value:t.tool,onChange:l=>{const u=f.find(N=>N.name===l.target.value),M=Object.fromEntries((u?.parameters.required||[]).filter(N=>u?.parameters.properties?.[N]?.type==="boolean").map(N=>[N,"false"]));g(t.key,{tool:l.target.value,argValues:M})},children:[e.jsx("option",{value:"",children:a("automation.builder.toolPick")}),f.map(l=>e.jsxs("option",{value:l.name,children:[l.name,l.dangerous?" ⚠":""]},l.name))]}),r&&e.jsxs("div",{className:"auto-hint",children:[r.description,r.dangerous?` · ${a("automation.builder.dangerous")}`:""]})]}),r&&Object.entries(r.parameters.properties||{}).map(([l,u])=>{const M=(r.parameters.required||[]).includes(l),N=`${l}${M?" *":""}`,T=t.argValues[l]||"",G=_=>g(t.key,{argValues:{...t.argValues,[l]:_}});return e.jsxs("div",{className:"field",children:[e.jsx("label",{title:u.description||"",children:N}),u.enum?.length?e.jsxs("select",{value:T,onChange:_=>G(_.target.value),children:[e.jsx("option",{value:""}),u.enum.map(_=>e.jsx("option",{value:_,children:_},_))]}):u.type==="boolean"?e.jsxs("label",{className:"auto-check",children:[e.jsx("input",{type:"checkbox",checked:T==="true",onChange:_=>G(_.target.checked?"true":"false")})," ",u.description||""]}):u.type==="number"?e.jsx("input",{type:"number",value:T,onChange:_=>G(_.target.value)}):u.type==="string"?e.jsx("textarea",{rows:2,value:T,placeholder:u.description||"",onChange:_=>G(_.target.value)}):e.jsx("textarea",{rows:2,value:T,placeholder:`JSON — ${u.description||""}`,onChange:_=>G(_.target.value)})]},l)})]})]},t.key)}),S.length===0&&i&&s!=="manual"&&e.jsxs("div",{className:"auto-node auto-node-muse",hidden:F!=="muse",children:[e.jsxs("div",{className:"auto-node-head",children:[e.jsx("span",{className:"auto-ic",children:e.jsx(Te,{size:14})}),a("automation.builder.museFallback")]}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.museFallbackHint")}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.prompt")}),e.jsx("textarea",{value:me,maxLength:500,placeholder:a("automation.builder.promptPh"),onChange:t=>Ue(t.target.value)})]})]}),e.jsxs("div",{className:"auto-node auto-review",hidden:F!=="review",children:[e.jsxs("div",{className:"auto-node-head",children:[e.jsx(be,{size:16}),a("automation.ux.review")]}),e.jsx("p",{className:"auto-hint",children:a("automation.ux.enableHint")}),e.jsxs("label",{className:"auto-check",children:[e.jsx("input",{type:"checkbox",checked:D,onChange:t=>A(t.target.checked)}),a("automation.ux.enabledLabel")]}),E.length?e.jsxs("div",{className:"auto-validation",role:"status",children:[e.jsx("strong",{children:a("automation.ux.checklist")}),E.map((t,d)=>e.jsx("button",{onClick:()=>x(t.node),children:t.text},d))]}):e.jsxs("p",{className:"auto-ready",children:[e.jsx(be,{size:14}),a("automation.ux.allReady")]}),s!=="timer"&&s!=="manual"&&e.jsxs("div",{className:"auto-guard",children:[e.jsx("label",{children:a("automation.builder.cooldown")}),e.jsx("input",{type:"number",value:K,min:Se?1:s==="db_changed"?0:.25,step:"1",onChange:t=>{Ce.current=!0,_e(t.target.value)}}),e.jsx("span",{className:"auto-hint",children:a(Se?"automation.builder.cooldownAgentHint":s==="db_changed"?"automation.builder.cooldownDbHint":"automation.builder.cooldownHint")})]})]}),e.jsxs("div",{className:"auto-node",hidden:F!=="help",children:[e.jsx("h3",{children:a("automation.ux.flow")}),e.jsx("p",{className:"auto-hint",children:a("automation.ux.canvasOrder")}),e.jsx("p",{className:"auto-hint",children:a("automation.ux.nativeHint")})]})]})]}),e.jsxs("div",{className:"auto-builder-actions auto-builder-footer",children:[e.jsx("div",{className:"auto-save-status","aria-live":"polite",children:we?e.jsx("span",{role:"alert",children:we}):E.length?e.jsxs("button",{onClick:()=>x(E[0].node),children:[E[0].text,E.length>1?` (+${E.length-1})`:""]}):e.jsx("span",{children:a("automation.ux.allReady")})}),e.jsx("button",{className:"btn ghost sm",onClick:()=>x("review"),children:a("automation.ux.review")}),e.jsx("button",{className:"btn sm",disabled:!ne||Y,onClick:()=>{Ye()},children:Y?"…":a(D?"automation.ux.saveEnabled":"automation.ux.savePaused")})]})]})},ra=Object.freeze(Object.defineProperty({__proto__:null,AutomationBuilder:Xt,hasUnsupportedParts:Ie},Symbol.toStringTag,{value:"Module"}));export{Ot as A,Lt as C,oa as S,Xt as a,ra as b};
@@ -0,0 +1 @@
1
+ import{j as e,u as H,r as m,a as ea}from"./index-fDB1l4d-.js";import{l as sa,aH as na,aA as ta,u as ca,a6 as la,X as G,D as V}from"./pageStore-CyvNZEYX.js";import"./client-fKy9CWk0.js";import{A as oa}from"./astryxBridge-BL56QfEv.js";import{qA as ra,eT as _,qB as ia,qi as da,qp as ma,q_ as ua,qj as E,qM as ha,qy as fa,qD as ga,qk as pa,qr as xa,qs as ba,qt as ja,q$ as v,ql as y,qm as va,qo as Na,qH as Ca,G as wa,f9 as F,eH as Da,r0 as W,r1 as ya,r2 as U,r3 as Ma,r4 as ka,l0 as za,S as Sa}from"./appStore-DDOkzWDA.js";import{u as qa}from"./dbStore-BIG5Mfh2.js";import{u as I}from"./calendarNavStore-DCi7VBmM.js";import{U as Aa}from"./upload-Dy7svciS.js";import"./react-b7FrqRQR.js";import"./ipc-SAPDwyQ4.js";import"./nativeDownload-DsGyUSJ5.js";import"./drawingStore-CGvTqqYW.js";ea({"calcfg.prevMonth":{zh:"上个月",en:"Previous month"},"calcfg.nextMonth":{zh:"下个月",en:"Next month"},"calcfg.jumpToDay":{zh:"跳转到这一天",en:"Jump to this day"},"calcfg.title":{zh:"日历",en:"Calendars"},"calcfg.empty":{zh:"还没有加入日历的多维表。",en:"No databases added to the calendar yet."},"calcfg.eventColor":{zh:"事件颜色",en:"Event color"},"calcfg.fetchFailed":{zh:"拉取失败",en:"Fetch failed"},"calcfg.default":{zh:"默认",en:"Default"},"calcfg.defaultHint":{zh:"新建的事件落在这里",en:"New events go here"},"calcfg.showName":{zh:"在日历中显示「{name}」",en:"Show “{name}” in the calendar"},"calcfg.srcAgent":{zh:"Agent 日程(只读)",en:"Agent schedule (read-only)"},"calcfg.srcOther":{zh:"{side} 的日历(只读)",en:"Calendar from {side} (read-only)"},"calcfg.srcIcs":{zh:"外部日历(只读)",en:"External calendar (read-only)"},"calcfg.more":{zh:"更多",en:"More"},"calcfg.addCalendar":{zh:"添加日历",en:"Add calendar"},"calcfg.addDatabase":{zh:"添加多维表",en:"Add database"},"calcfg.subscribeExternal":{zh:"订阅外部日历",en:"Subscribe to external calendar"},"calcfg.subscribeHint":{zh:"粘贴 .ics 订阅地址(Google / Outlook / Apple 日历「密钥地址」都行)",en:"Paste an .ics subscription URL (Google, Outlook, or Apple Calendar's private address all work)"},"calcfg.importIcs":{zh:"导入 .ics 文件",en:"Import .ics file"},"calcfg.fileTooLarge":{zh:"文件过大(> {mb}MB)",en:"File too large (over {mb} MB)"},"calcfg.notIcs":{zh:"这不是一个 .ics 日历文件",en:"That isn't an .ics calendar file"},"calcfg.readFailed":{zh:"读取失败:{msg}",en:"Failed to read: {msg}"},"calcfg.renameCalendar":{zh:"重命名日历",en:"Rename calendar"},"calcfg.renameSub":{zh:"重命名订阅",en:"Rename subscription"},"calcfg.rename":{zh:"重命名",en:"Rename"},"calcfg.refreshNow":{zh:"立即刷新",en:"Refresh now"},"calcfg.unsubscribe":{zh:"取消订阅",en:"Unsubscribe"},"calcfg.setDefaultDb":{zh:"设为默认日历",en:"Set as default calendar"},"calcfg.openInNewTab":{zh:"在新标签打开",en:"Open in new tab"},"calcfg.columnMapping":{zh:"日期与完成列…",en:"Date and done columns…"},"calcfg.removeFromCalendar":{zh:"从日历移除",en:"Remove from calendar"},"calcfg.searchDbPlaceholder":{zh:"搜索要加入日历的多维表…",en:"Search databases to add to the calendar…"},"calcfg.noCandidates":{zh:"没有含日期属性的可添加多维表",en:"No databases with a date property available to add"},"calcfg.footHint":{zh:"只有含「日期」属性的多维表会出现在这里",en:"Only databases with a Date property appear here"}});function Wa(){return e.jsx(oa,{children:e.jsxs("div",{className:"amx-calside",children:[e.jsx(Ea,{}),e.jsx(Pa,{})]})})}const T=s=>new Date(s.getFullYear(),s.getMonth(),1);function Ea(){const{t:s}=H(),o=sa(n=>(n.mainTabs,((n.api?na(n.api):null)?.params??{}).__type==="calendar")),f=I(n=>n.visibleStart),g=I(n=>n.visibleEnd),N=I(n=>n.requestJump),x=m.useMemo(()=>ra(new Date),[]),[u,d]=m.useState(()=>T(x));m.useEffect(()=>{if(o&&f&&g){const n=_(f),i=ia(n,Math.floor(da(_(g),n)/2));d(T(i))}},[o,f,g]);const C=ma(),p=m.useMemo(()=>ua(u),[u,C]),w=E(x,!0),c=n=>{if(!o||!f||!g)return!1;const i=E(n,!0);return i>=f&&i<=g},M=n=>{d(T(n)),o&&N(E(n,!0))};return e.jsxs("div",{className:"amx-mini",children:[e.jsxs("div",{className:"amx-mini-head",children:[e.jsx("span",{className:"amx-mini-title",children:ha(u)}),e.jsx("button",{className:"amx-mini-nav",onClick:()=>d(new Date(u.getFullYear(),u.getMonth()-1,1)),"aria-label":s("calcfg.prevMonth"),children:e.jsx(fa,{size:14})}),e.jsx("button",{className:"amx-mini-nav",onClick:()=>d(new Date(u.getFullYear(),u.getMonth()+1,1)),"aria-label":s("calcfg.nextMonth"),children:e.jsx(ta,{size:14})})]}),e.jsx("div",{className:"amx-mini-dow",children:ga().map(n=>e.jsx("span",{children:n},n))}),e.jsx("div",{className:"amx-mini-grid",children:p.map((n,i)=>{const j=n.getMonth()!==u.getMonth(),b=E(n,!0)===w,k=c(n),D=k?`${i%7===0||!c(p[i-1])?" band-start":""}${i%7===6||!p[i+1]||!c(p[i+1])?" band-end":""}`:"";return e.jsx("button",{className:`amx-mini-day${j?" out":""}${b?" today":""}${k?" band":""}${D}`,onClick:()=>M(n),title:o?s("calcfg.jumpToDay"):void 0,children:n.getDate()},+n)})})]})}function Pa(){const{t:s}=H(),o=ca(a=>a.vaultRoot)??"",f=pa(),g=xa(),N=ba(),x=ja(),u=v(a=>a.errors),d=y(a=>a.byVault),C=y(a=>a.setColor),p=y(a=>a.toggleHidden),w=y(a=>a.setDefault),c=y(a=>a.addMember),M=y(a=>a.removeMember),[n,i]=m.useState(!1),[j,b]=m.useState(null),[k,D]=m.useState(null),[t,h]=m.useState(null),[z,q]=m.useState(null);m.useEffect(()=>{if(!t&&!j)return;const a=l=>{l.key==="Escape"&&(l.stopPropagation(),h(null),b(null))};return window.addEventListener("keydown",a,!0),()=>window.removeEventListener("keydown",a,!0)},[t,j]);const Y=m.useMemo(()=>new Set(f.map(a=>a.db.path)),[f]),L=[...f.map(a=>({db:a.db})),...g.map(a=>({db:a,readonly:!0,kind:"agent"})),...N.map(a=>({db:a,readonly:!0,kind:"other"})),...x.map(a=>({db:a,readonly:!0,kind:"ics"}))],O=va(o,d),J=a=>{h(null),F(s("calcfg.renameCalendar"),a.name).then(l=>{const r=l?.trim();r&&r!==a.name&&qa.getState().mutate(a.path,A=>({...A,name:r}))})},S=a=>a.slice(6),R=a=>u[S(a)],X=()=>{F(s("calcfg.subscribeExternal"),"",{label:s("calcfg.subscribeHint")}).then(a=>{const l=a?.trim();l&&v.getState().add(l)})},K=()=>{const a=document.createElement("input");a.type="file",a.accept=".ics,text/calendar",a.onchange=()=>{const l=a.files?.[0];if(l){if(l.size>U){D(s("calcfg.fileTooLarge",{mb:U/1024/1024}));return}D(null),l.text().then(r=>{v.getState().importText(Ma(r)||l.name.replace(/\.ics$/i,""),r)||D(s("calcfg.notIcs"))}).catch(r=>D(s("calcfg.readFailed",{msg:r?.message||String(r)})))}},a.click()},Q=a=>{const l=a.currentTarget.getBoundingClientRect();b({x:Math.max(12,Math.min(l.left,window.innerWidth-200)),y:l.bottom+4})};return e.jsxs("div",{className:"amx-calcfg",children:[e.jsxs("div",{className:"amx-calcfg-head",children:[e.jsx("span",{children:s("calcfg.title")}),e.jsx("button",{className:"amx-calcfg-addbtn","aria-label":s("calcfg.addCalendar"),title:s("calcfg.addCalendar"),onClick:Q,children:e.jsx(la,{size:14})})]}),L.length===0&&e.jsx("div",{className:"amx-calcfg-empty",children:s("calcfg.empty")}),e.jsx("div",{className:"amx-calcfg-list",children:L.map(({db:a,readonly:l,kind:r},A)=>{const $=Na(o,d,a.path,A),P=!Ca(o,d,a.path),Z=!l&&(O?O===a.path:A===0);return e.jsxs("div",{className:"amx-calcfg-row",children:[e.jsx("button",{className:`amx-calcfg-swatch${P?" on":""}`,style:{"--amx-swatch":$},role:"checkbox","aria-checked":P,"aria-label":s("calcfg.showName",{name:a.name}),onClick:()=>p(o,a.path)}),e.jsxs("span",{className:`amx-calcfg-name${P?"":" off"}`,title:R(a.path)||a.name,children:[a.name,r==="ics"&&R(a.path)&&e.jsxs("span",{className:"amx-calcfg-err",children:[" · ",s("calcfg.fetchFailed")]})]}),Z&&e.jsx("span",{className:"amx-calcfg-default",title:s("calcfg.defaultHint"),children:s("calcfg.default")}),e.jsx("button",{className:"amx-calcfg-more",title:s("calcfg.more"),"aria-label":s("calcfg.more"),onClick:aa=>{const B=aa.currentTarget.getBoundingClientRect();h({db:a,kind:r,color:$,x:Math.min(B.left,window.innerWidth-200),y:B.bottom+4})},children:"⋯"})]},a.path)})}),k&&e.jsx("div",{className:"amx-calcfg-hint",style:{color:"var(--danger)"},children:k}),j&&e.jsx("div",{className:"amx-db-popwrap",onMouseDown:()=>b(null),children:e.jsxs(G,{className:"amx-db-pop amx-calcfg-addmenu",x:j.x,y:j.y,onMouseDown:a=>a.stopPropagation(),children:[e.jsxs("button",{className:"amx-db-opt",onClick:()=>{b(null),i(!0)},children:[e.jsx(V,{size:14})," ",s("calcfg.addDatabase")]}),e.jsxs("button",{className:"amx-db-opt",onClick:()=>{b(null),X()},children:[e.jsx(wa,{size:14})," ",s("calcfg.subscribeExternal")]}),e.jsxs("button",{className:"amx-db-opt",onClick:()=>{b(null),K()},children:[e.jsx(Aa,{size:14})," ",s("calcfg.importIcs")]})]})}),t&&e.jsx("div",{className:"amx-db-popwrap",onMouseDown:()=>h(null),children:e.jsxs(G,{className:"amx-db-pop amx-calcfg-menu",x:t.x,y:t.y,onMouseDown:a=>a.stopPropagation(),children:[t.kind&&e.jsx("div",{className:"amx-calcfg-menusrc",children:t.kind==="agent"?s("calcfg.srcAgent"):t.kind==="other"?s("calcfg.srcOther",{side:t.db.vaultLabel||""}):s("calcfg.srcIcs")}),e.jsxs("label",{className:"amx-db-opt amx-calcfg-colorrow",children:[e.jsx("span",{className:"amx-calcfg-colordot",style:{background:t.color}}),s("calcfg.eventColor"),e.jsx("input",{type:"color",value:t.color,onChange:a=>{C(o,t.db.path,a.target.value),h({...t,color:a.target.value})}})]}),t.kind==="agent"||t.kind==="other"?null:t.kind==="ics"?e.jsxs(e.Fragment,{children:[!!v.getState().subs.find(a=>a.id===S(t.db.path))?.url&&e.jsx("button",{className:"amx-db-opt",onClick:()=>{v.getState().refresh(S(t.db.path)),h(null)},children:s("calcfg.refreshNow")}),e.jsx("button",{className:"amx-db-opt",onClick:()=>{const a=S(t.db.path),l=t.db.name;h(null),F(s("calcfg.renameSub"),l).then(r=>{r?.trim()&&v.getState().rename(a,r.trim())})},children:s("calcfg.rename")}),e.jsx("button",{className:"amx-db-opt amx-db-opt-danger",onClick:()=>{v.getState().remove(S(t.db.path)),h(null)},children:s("calcfg.unsubscribe")})]}):e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"amx-db-opt",onClick:()=>J(t.db),children:s("calcfg.rename")}),e.jsx("button",{className:"amx-db-opt",onClick:()=>{w(o,t.db.path),h(null)},children:s("calcfg.setDefaultDb")}),e.jsx("button",{className:"amx-db-opt",onClick:()=>{Da(t.db.path),h(null)},children:s("calcfg.openInNewTab")}),e.jsx("button",{className:"amx-db-opt",onClick:()=>{q(t.db),h(null)},children:s("calcfg.columnMapping")}),e.jsx("button",{className:"amx-db-opt amx-db-opt-danger",onClick:()=>{M(o,t.db.path),h(null)},children:s("calcfg.removeFromCalendar")})]})]})}),n&&e.jsx(Fa,{memberPaths:Y,onClose:()=>i(!1),onAdd:(a,l,r)=>{c(o,a.path,l,r),i(!1)}}),z&&e.jsx("div",{className:"amx-db-popwrap",onMouseDown:()=>q(null),children:e.jsx("div",{className:"amx-db-pop amx-calpick-pop",onMouseDown:a=>a.stopPropagation(),children:e.jsx(W,{dbName:z.name,columns:z.columns,initial:ya(o,d,z.path),onCancel:()=>q(null),onConfirm:(a,l)=>{c(o,z.path,a,l),q(null)}})})})]})}function Fa({memberPaths:s,onClose:o,onAdd:f}){const{t:g}=H(),N=ka(),[x,u]=m.useState(""),[d,C]=m.useState(null),p=m.useMemo(()=>N.filter(c=>!s.has(c.path)&&c.columns.some(za)),[N,s]),w=x?p.filter(c=>c.name.toLowerCase().includes(x.toLowerCase())):p;return e.jsx("div",{className:"amx-qf-scrim",onMouseDown:o,children:d?e.jsx("div",{className:"amx-qf-card",onMouseDown:c=>c.stopPropagation(),children:e.jsx(W,{dbName:d.name,columns:d.columns,onCancel:()=>C(null),onConfirm:(c,M)=>f(d,c,M)})}):e.jsxs("div",{className:"amx-qf",onMouseDown:c=>c.stopPropagation(),children:[e.jsxs("div",{className:"amx-qf-head",children:[e.jsx(Sa,{size:16,className:"amx-qf-searchicon"}),e.jsx("input",{autoFocus:!0,className:"amx-qf-input",placeholder:g("calcfg.searchDbPlaceholder"),value:x,onChange:c=>u(c.target.value)})]}),e.jsxs("div",{className:"amx-qf-list",children:[w.map(c=>e.jsxs("button",{className:"amx-qf-row",onClick:()=>C(c),children:[e.jsx("span",{className:"amx-qf-icon",children:e.jsx(V,{size:15})}),e.jsx("span",{className:"amx-qf-title",children:c.name||c.path}),e.jsx("span",{className:"amx-qf-sub",children:c.path.replace(/\\/g,"/").split("/").slice(0,-1).join("/")||"/"})]},c.path)),w.length===0&&e.jsx("div",{className:"amx-qf-empty",children:g("calcfg.noCandidates")})]}),e.jsx("div",{className:"amx-qf-foot",children:g("calcfg.footHint")})]})})}export{Wa as CalendarConfigView};
@@ -0,0 +1 @@
1
+ import{r as e,j as i}from"./index-fDB1l4d-.js";import{TodoListView as s}from"./TodoListView-BkgMe44I.js";import{u as o}from"./calendarNavStore-DCi7VBmM.js";import"./astryxBridge-BL56QfEv.js";import"./appStore-DDOkzWDA.js";import"./react-b7FrqRQR.js";import"./pageStore-CyvNZEYX.js";import"./client-fKy9CWk0.js";import"./ipc-SAPDwyQ4.js";import"./nativeDownload-DsGyUSJ5.js";import"./dbStore-BIG5Mfh2.js";import"./drawingStore-CGvTqqYW.js";import"./draft-CBSW5tHx.js";import"./EventCard-QyYorE1_.js";import"./chevron-up-ChXNh14u.js";import"./Tooltip-DOYi44eY.js";function g(){const r=o(m=>m.setSideEl),t=e.useRef(null);return e.useEffect(()=>(r(t.current),()=>{o.getState().sideEl===t.current&&r(null)}),[r]),i.jsx("div",{className:"amx-calside2",ref:t,children:i.jsx(s,{params:{side:!0}})})}export{g as CalendarSide};
@@ -0,0 +1,3 @@
1
+ import{u as It,r as p,j as l,a as Gt,t as st}from"./index-fDB1l4d-.js";import{p as tn,am as en,F as nn,T as an,X as rn,av as sn,aE as ln,ad as qe,u as He,h as on,aj as Oe,R as ot,bt as cn,as as he,br as dn,aA as un,a7 as mn}from"./pageStore-CyvNZEYX.js";import"./client-fKy9CWk0.js";import{A as Ee}from"./astryxBridge-BL56QfEv.js";import{aW as fn,bb as pn,k$ as Ye,pQ as ve,qg as hn,pR as Be,pU as yn,pV as gn,oi as we,eT as K,qh as Jt,qi as Rt,qj as Mt,qk as Fe,ql as Xe,qm as le,pX as xn,p_ as vn,qn as B,qo as be,qp as wn,qq as Se,qr as bn,qs as kn,qt as Mn,qu as Dn,qv as Cn,qw as En,qx as $e,qy as Sn,qz as Ht,qA as G,qB as $t,qC as fe,qD as $n,qE as jn,qF as Ue,qG as Ot,qH as Tn,qI as zn,qJ as je,qK as Te,qL as ze,qM as We,qN as Rn,qO as ae}from"./appStore-DDOkzWDA.js";import{u as w,H as Nn}from"./calendarNavStore-DCi7VBmM.js";import{c as Pn,a as In,b as nt,d as Zt,s as Ve,r as ke,o as Ln,e as An,E as qn,f as Hn,u as On,g as Yn}from"./EventCard-QyYorE1_.js";import{R as Bn}from"./redo-2-CqlqhWrI.js";import{U as Fn}from"./undo-2-QimgpLBn.js";import{C as Xn,a as Un}from"./copy-plus-ClKrSgM7.js";import{n as ft}from"./nativeDownload-DsGyUSJ5.js";import{c as Wn}from"./react-b7FrqRQR.js";import{p as oe,d as ye,B as re,D as Vn,a as se,b as ce,T as pe}from"./draft-CBSW5tHx.js";import{Z as _n,a as Kn}from"./zoom-in-DDEtY_Go.js";import{R as Zn}from"./rotate-ccw-D8kni6Ni.js";import"./ipc-SAPDwyQ4.js";import"./dbStore-BIG5Mfh2.js";import"./drawingStore-CGvTqqYW.js";import"./chevron-up-ChXNh14u.js";const Jn=[["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M8.12 8.12 12 12",key:"1alkpv"}],["path",{d:"M20 4 8.12 15.88",key:"xgtan2"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M14.8 14.8 20 20",key:"ptml3r"}]],Gn=tn("scissors",Jn);Gt({"calevmenu.copy":{zh:"复制",en:"Copy"},"calevmenu.cut":{zh:"剪切",en:"Cut"},"calevmenu.clone":{zh:"克隆",en:"Clone"},"calevmenu.paste":{zh:"粘贴",en:"Paste"},"calevmenu.delete":{zh:"删除",en:"Delete"},"calevmenu.undo":{zh:"撤销",en:"Undo"},"calevmenu.redo":{zh:"重做",en:"Redo"},"calevmenu.summary":{zh:"复制摘要",en:"Copy summary"},"calevmenu.back":{zh:"返回详情",en:"Back to details"},"calevmenu.readonly":{zh:"此来源只支持查看和复制摘要。",en:"This source supports viewing and copying a summary."},"calevmenu.fixedTime":{zh:"系统时间属性不可移动。",en:"System time properties cannot be moved."},"calevmenu.note":{zh:"此事件关联笔记文件,删除时需确认。",en:"This event is a note file. Deletion requires confirmation."}});const Qn={copy:pn,cut:Gn,clone:Un,paste:Xn,delete:fn,undo:Fn,redo:Bn,summary:nn},Re={copy:"C",cut:"X",clone:"D",paste:"V",undo:"Z",redo:"⇧Z",delete:"Del"};function Ne({at:r,mobile:c,writable:i,note:o,hasClip:f,onRun:x,onClose:$,hasEvent:I=!0,canCut:Y=!0}){const{t:N}=It(),L=p.useRef(null);p.useEffect(()=>{L.current?.querySelector("button:not([disabled])")?.focus();const v=j=>{L.current?.contains(j.target)||$()};return c||window.addEventListener("pointerdown",v),()=>window.removeEventListener("pointerdown",v)},[]);const C=I?i?["copy","cut","clone","paste","summary","delete","undo","redo"]:["summary"]:["paste","undo","redo"],V=l.jsxs("div",{ref:L,className:`amx-cal-eventmenu${c?" phone":""}`,role:"menu",onKeyDown:v=>{if(v.key==="Escape"||c&&v.key==="ArrowLeft"){v.preventDefault(),v.stopPropagation(),$();return}const j=Array.from(L.current?.querySelectorAll("button:not([disabled])")??[]);if(["ArrowDown","ArrowUp","Home","End"].includes(v.key)){v.preventDefault();const q=j.indexOf(document.activeElement),F=v.key==="Home"?0:v.key==="End"?j.length-1:(q+(v.key==="ArrowDown"?1:-1)+j.length)%j.length;j[F]?.focus()}},children:[c&&l.jsxs("button",{role:"menuitem",onClick:$,children:[l.jsx(en,{size:16}),N("calevmenu.back")]}),I&&(!i||o)&&l.jsx("p",{children:N(o?"calevmenu.note":"calevmenu.readonly")}),C.map(v=>{const j=Qn[v];return l.jsxs("button",{role:"menuitem","aria-label":N(`calevmenu.${v}`),className:v==="delete"?"danger":"",title:v==="cut"&&!Y?N("calevmenu.fixedTime"):void 0,disabled:v==="cut"&&!Y||v==="paste"&&!f||v==="undo"&&!Pn()||v==="redo"&&!In(),onClick:()=>x(v),children:[l.jsx(j,{size:16}),l.jsx("span",{children:N(`calevmenu.${v}`)}),!c&&Re[v]&&l.jsx("kbd",{"aria-hidden":"true",children:v==="delete"?"Del":`${navigator.platform.includes("Mac")?"⌘":"Ctrl+"}${Re[v]}`})]},v)})]});return c?V:an.createPortal(l.jsx(rn,{x:r.x,y:r.y,className:"ctx-menu amx-cal-menu-position",children:V}),document.body)}Gt({"calclip.copied":{zh:"已复制事件",en:"Event copied"},"calclip.cut":{zh:"已剪切,选择时间格后粘贴",en:"Event cut. Choose a time slot and paste"},"calclip.created":{zh:"已创建事件副本",en:"Event duplicated"},"calclip.failed":{zh:"操作未完成,原事件已保留。",en:"The action could not finish. The original event was kept."},"calclip.scope":{zh:"请在原智库的同一日历中粘贴。",en:"Paste into the same calendar in the original vault."},"calclip.noteCopy":{zh:"笔记事件请在来源中复制文件,以保留完整正文。",en:"Duplicate the note in its source to preserve the complete document."}});const Pt=Wn(()=>({clip:null}));let ie=0;function _t(){++ie,Pt.setState({clip:null})}function Pe(r,c=!1){const i=++ie;if(r.db.readonly||c&&ve(r.db.columns.find(f=>f.id===r.colId)?.type??""))return!1;const o=Zt(r.db,r.row.rowId);if(!o)return!1;if(r.db.isNoteView&&!c){const f=nt();return(async()=>{try{if(await sn(!0),nt()!==f||i!==ie)return!1;const x=await ln.readTextFile(o.rowId);return x==null||nt()!==f||i!==ie?!1:(Pt.setState({clip:{scope:f,event:{...r,row:structuredClone(o),noteText:x},cut:c}}),ft({level:"info",text:st("calclip.copied")}),!0)}catch{return ft({level:"warning",text:st("calclip.failed")}),!1}})()}return Pt.setState({clip:{scope:nt(),event:{...r,row:structuredClone(o)},cut:c}}),ft({level:"info",text:st(c?"calclip.cut":"calclip.copied")}),!0}function Ie(r,c){const i=we(r);if(!i||!c)return r;const o=K(i.start),f=new Date(c);i.allDay&&f.setHours(0,0,0,0);const x=i.end?i.allDay?Jt(K(i.end),Rt(f,o)):new Date(f.getTime()+K(i.end).getTime()-o.getTime()):null;return`${Mt(f,i.allDay)}${x?`/${Mt(x,i.allDay)}`:""}`}async function Me(r,c=r.raw){const i=nt();if(r.db.readonly)return null;if(c!==r.raw&&ve(r.db.columns.find(f=>f.id===r.colId)?.type??""))return ft({level:"warning",text:st("calclip.failed")}),null;const o=Ye(r.db.path);if(!o||JSON.stringify(o.columns)!==JSON.stringify(r.db.columns))return ft({level:"warning",text:st("calclip.failed")}),null;try{const f=await hn({...r.db,rows:[r.row]},r.row.rowId,()=>nt()===i,r.noteText);if(!f||i!==nt())return null;if(c!==r.raw&&Be(r.db,f,r.colId,c),r.db.isNoteView)return ft({level:"info",text:st("calclip.created")}),f;const x=structuredClone(Zt(r.db,f));let $=[];return Ln(st("calclip.created"),()=>Ve(r.db,Zt(r.db,f),x)?($=yn(r.db,f,x),!0):!1,()=>Zt(r.db,f)?!1:(gn(r.db,x,$),!0)),f}catch{return ft({level:"error",text:st("calclip.failed")}),null}}async function _e(r,c){const i=Pt.getState().clip;if(!i)return null;const o=i.event;if(i.scope!==nt()||r&&r.path!==o.db.path||r?.readonly)return ft({level:"warning",text:st("calclip.scope")}),null;const f=Ye(o.db.path);if(!f||JSON.stringify(f.columns)!==JSON.stringify(o.db.columns))return ft({level:"warning",text:st("calclip.failed")}),null;if(i.cut){const $=Zt(o.db,o.row.rowId);if(!$||!Ve(o.db,$,o.row))return ft({level:"warning",text:st("calclip.failed")}),null;const I=Ie(o.raw,c);return ke(o.db,$,o.colId,o.raw,I,o.title),_t(),{db:o.db,id:$.rowId}}const x=await Me(o,Ie(o.raw,c));return x?{db:o.db,id:x}:null}Gt({"calside.newEvent":{zh:"新事件",en:"New event"},"calside.calendar":{zh:"日历",en:"Calendar"},"calside.save":{zh:"保存",en:"Save"},"calside.cancel":{zh:"取消",en:"Cancel"},"calside.discard":{zh:"放弃未保存的事件?",en:"Discard this unsaved event?"},"calside.paste":{zh:"在此粘贴事件",en:"Paste event here"},"calside.hint":{zh:"标题在格子里直接打。Enter 保存,Esc 取消;没写标题不会新建。",en:"Type the title right in the grid. Enter saves, Esc cancels; nothing is created without a title."}});const ta=300,ea=300;function na({rootRef:r,onPasted:c}){const{t:i}=It(),o=w(m=>m.draft),f=Pt(m=>m.clip),x=qe==="mobile"||!!window.tangu?.mobile,$=w(m=>m.draftApi),I=Fe(),Y=He(m=>m.vaultRoot)??"",N=Xe(m=>m.byVault),[L,C]=p.useState(null),V=o?`${o.day}|${o.endDay}|${o.startMin}|${o.endMin}`:"",v=()=>{(!o?.title.trim()||window.confirm(i("calside.discard")))&&$?.cancel()};if(on(x&&o?{mode:"page",title:i("calside.newEvent"),back:i("calside.cancel"),onBack:v}:null),p.useLayoutEffect(()=>{if(!x||!o)return;const m=k=>{k.preventDefault(),k.detail?.probe||v()};return window.addEventListener("forsion:mobile-back",m),()=>window.removeEventListener("forsion:mobile-back",m)},[x,o]),p.useLayoutEffect(()=>{if(!V||x){C(null);return}const m=()=>{const k=document.querySelector(".amx-cal-draft-input")?.closest(".amx-cal-draft"),S=k?.closest(".amx-cal-tscroll, .amx-cal-mscroll")?.getBoundingClientRect(),_=k?.getBoundingClientRect();if(!_||!S||_.bottom<S.top||_.top>S.bottom||_.right<S.left||_.left>S.right){C(null);return}C(An({left:_.left,top:_.top,right:_.right,bottom:_.bottom,zoom:ot(k)||1},{w:ta,h:ea,maxRight:r.current?.getBoundingClientRect().right}))};return m(),window.addEventListener("scroll",m,!0),window.addEventListener("resize",m),()=>{window.removeEventListener("scroll",m,!0),window.removeEventListener("resize",m)}},[V,r]),!o||!L&&!x)return null;const j=I.filter(m=>!m.db.readonly),q=oe(I,o.dbPath,le(Y,N))?.db.path,F=xn(ye(o)),O=m=>{const k=w.getState().draft;k&&w.getState().setDraft({...k,dbPath:m})},H=m=>m.preventDefault();return l.jsxs("section",{className:`amx-cal-cardwrap amx-cal-draftcard${x?" amx-cal-drawer":""}`,"data-kb-rise":x?"bar":void 0,style:x?void 0:L,role:"dialog","aria-modal":"false","aria-label":i("calside.newEvent"),onMouseDown:x?void 0:H,onPointerDown:m=>m.stopPropagation(),children:[x?l.jsxs(l.Fragment,{children:[l.jsx("button",{className:"amx-cal-drawer-grab","aria-label":i("calside.cancel"),onClick:v,children:l.jsx("span",{})}),l.jsx("input",{className:"amx-cal-card-title",value:o.title,placeholder:i("calside.newEvent"),"aria-label":i("calside.newEvent"),onChange:m=>w.getState().setDraft({...o,title:m.target.value})}),l.jsx(vn,{value:ye(o),onChange:m=>{const k=we(m);if(!k)return;const S=K(k.start),_=k.end?K(k.end):B(S,30);w.getState().setDraft({...o,day:k.start.slice(0,10),endDay:(k.end??k.start).slice(0,10),startMin:k.allDay?null:S.getHours()*60+S.getMinutes(),endMin:k.allDay?0:(_.getTime()-K(k.start.slice(0,10)).getTime())/6e4})}})]}):l.jsx("div",{className:"amx-cal-draft-title",children:o.title||l.jsx("span",{className:"ph",children:i("calside.newEvent")})}),F&&l.jsxs("div",{className:"amx-cal-draft-time",children:[l.jsxs("span",{className:"amx-cal-card-timehead",children:[F.head,F.badge&&l.jsx("span",{className:"amx-cal-card-badge",children:F.badge})]}),F.date&&l.jsx("span",{className:"amx-cal-card-timesub",children:F.date})]}),l.jsx("div",{className:"amx-cal-draft-label",children:i("calside.calendar")}),l.jsx("div",{className:"amx-cal-draft-cals",children:j.map(m=>l.jsxs("button",{className:`amx-cal-draft-cal${m.db.path===q?" on":""}`,onMouseDown:H,onClick:()=>O(m.db.path),children:[l.jsx("i",{style:{background:be(Y,N,m.db.path,I.indexOf(m))}}),l.jsx("span",{children:m.db.name}),m.db.path===q&&l.jsx(Oe,{size:13})]},m.db.path))}),!x&&l.jsx("p",{className:"amx-cal-draft-hint",children:i("calside.hint")}),x&&f&&l.jsx("button",{onClick:()=>{if(o.title.trim()&&!window.confirm(i("calside.discard")))return;const m=nt();_e(q?I.find(k=>k.db.path===q)?.db:void 0,B(K(o.day),o.startMin??0)).then(k=>{k&&nt()===m&&w.getState().draft===o&&($?.cancel(),c?.(`${k.db.path}::${k.id}`))})},children:i("calside.paste")}),l.jsxs("div",{className:"amx-cal-draft-actions",children:[l.jsx("button",{className:"amx-cal-draft-cancel",onMouseDown:x?void 0:H,onClick:x?v:()=>$?.cancel(),children:i("calside.cancel")}),l.jsx("button",{className:"amx-cal-draft-save",disabled:!o.title.trim(),onMouseDown:H,onClick:()=>$?.commit(),children:i("calside.save")})]})]})}Gt({"calkeys.modeDay":{zh:"日",en:"Day"},"calkeys.modeWeek":{zh:"周",en:"Week"},"calkeys.mode3day":{zh:"3 日",en:"3 days"},"calkeys.modeMonth":{zh:"月",en:"Month"}});const Ke=[{id:"day",get label(){return st("calkeys.modeDay")},key:"d"},{id:"week",get label(){return st("calkeys.modeWeek")},key:"w"},{id:"3day",get label(){return st("calkeys.mode3day")},key:"3"},{id:"month",get label(){return st("calkeys.modeMonth")},key:"m"}];function aa(r){const c=(r.metaKey||r.ctrlKey)&&!r.altKey;if(c&&(r.shiftKey&&r.key.toLowerCase()==="z"||r.key.toLowerCase()==="y"))return{kind:"redo"};if(c&&!r.shiftKey&&(r.key==="z"||r.key==="Z"))return{kind:"undo"};if(c&&r.key.toLowerCase()==="x")return{kind:"cut"};if(c&&(r.key==="d"||r.key==="D"))return{kind:"duplicate"};if(c&&(r.key==="c"||r.key==="C"))return{kind:"copy"};if(c&&(r.key==="v"||r.key==="V"))return{kind:"paste"};if(r.metaKey||r.ctrlKey||r.altKey)return null;if(r.key==="ContextMenu"||r.shiftKey&&r.key==="F10")return{kind:"menu"};if(r.key==="Delete"||r.key==="Backspace")return{kind:"delete"};if(r.key==="ArrowLeft")return{kind:"prev"};if(r.key==="ArrowRight")return{kind:"next"};if(r.key==="Escape")return{kind:"escape"};if(r.key==="Enter")return{kind:"rename"};if(r.key==="c"||r.key==="C")return{kind:"new"};if(r.key==="t"||r.key==="T")return{kind:"today"};const i=Ke.find(o=>o.key===r.key.toLowerCase());return i?{kind:"mode",mode:i.id}:null}const Wt=r=>r.end?.getTime()??r.start.getTime()+3600*1e3;function ra(r){const c=[...r].sort((o,f)=>o.start.getTime()-f.start.getTime()||Wt(o)-Wt(f)),i=new Map;for(let o=0;o<c.length;){let f=o+1,x=Wt(c[o]);for(;f<c.length&&c[f].start.getTime()<x;)x=Math.max(x,Wt(c[f])),f+=1;const $=c.slice(o,f),I=[],Y=$.map(L=>{let C=I.findIndex(V=>V<=L.start.getTime());return C<0&&(C=I.length),I[C]=Wt(L),{ev:L,lane:C}}),N=Math.max(1,I.length);for(const{ev:L,lane:C}of Y)i.set(L.key,{lane:C,laneCount:N,leftPct:C/N*100,widthPct:100/N});o=f}return i}Gt({"calview.untitled":{zh:"未命名",en:"Untitled"},"calview.newEventTitle":{zh:"新事件",en:"New event"},"calview.newEvent":{zh:"新建事件",en:"New event"},"calview.today":{zh:"今天",en:"Today"},"calview.prevPage":{zh:"上一页",en:"Previous"},"calview.nextPage":{zh:"下一页",en:"Next"},"calview.weekNo":{zh:"第 {n} 周",en:"Week {n}"},"calview.zoomOut":{zh:"缩小时间轴",en:"Zoom out timeline"},"calview.zoomIn":{zh:"放大时间轴",en:"Zoom in timeline"},"calview.densityReset":{zh:"恢复默认密度",en:"Reset to default density"},"calview.weekStart":{zh:"一周开始于",en:"Week starts on"},"calview.weekStartAuto":{zh:"跟随语言({day})",en:"Match language ({day})"},"calview.sunday":{zh:"周日",en:"Sunday"},"calview.monday":{zh:"周一",en:"Monday"},"calview.empty":{zh:"还没有日历事件。单击时间格新建,按住拖出时长,或按 C。",en:"No calendar events yet. Click a time slot to add one, drag to set its length, or press C."},"calview.emptyNoDb":{zh:"还没有日历。在左栏「日历」右边点 +,选一个含日期属性的多维表。",en:'No calendars yet. Use + next to "Calendars" in the left panel to pick a database with a date property.'},"calview.allDay":{zh:"全天",en:"All-day"},"calview.a11yAllDayEvent":{zh:"{title},全天事件",en:"{title}, all-day event"},"calview.allDayDragHint":{zh:"{title}(可拖入时间格设为定时)",en:"{title} (drag into a time slot to schedule it)"},"calview.a11yEvent":{zh:"{title},{time}",en:"{title}, {time}"},"calview.a11yEventRange":{zh:"{title},{start} 至 {end}",en:"{title}, {start} to {end}"},"calview.a11yDone":{zh:"标记完成:{title}",en:"Mark done: {title}"},"calview.monthFirst":{zh:"{m}月1",en:"{m}/1"},"calview.moreItems":{zh:"还有 {n} 项",en:"{n} more"},"calview.viewOptions":{zh:"显示选项",en:"Display options"},"calview.a11yMoreEvents":{zh:"查看 {m} 月 {d} 日全部 {n} 个事件",en:"View all {n} events on {m}/{d}"},"calview.a11yDayEvents":{zh:"{m} 月 {d} 日事件",en:"Events on {m}/{d}"},"calview.dayHeading":{zh:"{m} 月 {d} 日",en:"{m}/{d}"},"calview.closeAgenda":{zh:"关闭日程列表",en:"Close agenda list"},"calview.resizeStart":{zh:"调整开始时间",en:"Adjust start time"},"calview.resizeEnd":{zh:"调整结束时间",en:"Adjust end time"}});const kt=26,Le=8.4,ge=34,Vt=150,Ae=40,P=!(qe==="mobile"||typeof window<"u"&&window.tangu?.mobile);function sa(r,c,i){const o=[];return r.forEach(({db:f,dateCol:x,checkboxCol:$},I)=>{if(Tn(c,i,f.path))return;const Y=be(c,i,f.path,I);for(const N of f.rows){const L=typeof N.cells[x]=="string"?N.cells[x]:"",C=we(L);C&&o.push({key:`${f.path}::${N.rowId}`,color:Y,db:f,row:N,colId:x,title:N.name,raw:L,start:K(C.start),end:C.end?K(C.end):null,allDay:C.allDay,readonly:!!f.readonly&&!f.writeCell||ve(f.columns.find(V=>V.id===x)?.type??""),check:$,done:$?N.cells[$]===!0:void 0})}}),o}const la=r=>P&&!!r.check&&r.allDay&&!r.end,et=r=>`${String(r.getHours()).padStart(2,"0")}:${String(r.getMinutes()).padStart(2,"0")}`,xt=r=>`${String(Math.floor(r/60)).padStart(2,"0")}:${String(r%60).padStart(2,"0")}`,X=r=>Mt(r,!0),mt=r=>{const c=r.currentTarget,i=c.getBoundingClientRect();return{left:i.left,top:i.top,right:i.right,bottom:i.bottom,zoom:ot(c)||1}},Kt=(r,c,i)=>c?`${Mt(r,i)}/${Mt(c,i)}`:Mt(r,i),St=(r,c,i,o=r.allDay)=>ke(r.db,r.row,r.colId,r.raw,Kt(c,i,o),r.title),Nt=r=>({"--amx-event-color":r}),De=(r,c,i)=>{const o=G(i).getTime(),f=G(r).getTime()<o,x=G(c??r).getTime()>o;return`${f?" continues-left":""}${x?" continues-right":""}`};function xe(){const r=w.getState();r.draft&&(r.draft.title.trim()?r.draftApi?.commit():r.setDraft(null))}const Ze=r=>r.draft?`${r.draft.day}|${r.draft.endDay}|${r.draft.startMin}|${r.draft.endMin}`:"";function Ta({leafId:r}={}){const{t:c}=It(),i=wn(),o=Se(s=>s.pref),f=Fe(),x=bn(),$=kn(),I=Mn(),Y=Dn(),N=He(s=>s.vaultRoot)??"",L=Xe(s=>s.byVault),C=w(s=>s.mode),V=w(s=>s.setMode);cn(r,{modes:Ke.map(s=>({value:s.id,label:s.label,hotkey:s.key.toUpperCase()})),value:C,onChange:s=>V(s)});const v=w(s=>s.hourPx),j=w(s=>s.setHourPx),q=w(s=>s.jumpNonce),F=w(s=>s.selection),O=w(s=>!!s.draft),[H,m]=p.useState(null),[k,S]=p.useState(null),[_,T]=p.useState(!1),[vt,wt]=p.useState(null),[dt,ut]=p.useState(!1),[ct,A]=p.useState(!1),U=Pt(s=>s.clip),J=p.useRef(void 0),jt=p.useRef(null),at=p.useRef(null),Tt=p.useRef(null);p.useEffect(()=>{C!=="month"&&(Tt.current=null)},[C]);const pt=p.useRef(null),Q=p.useRef(null),tt=p.useRef(0);p.useEffect(()=>{if(!q)return;const s=w.getState().jumpDate;s&&at.current?.goto(K(s))},[q]),Cn();const ht=p.useMemo(()=>[...f.map(s=>({db:s.db,dateCol:s.dateCol,checkboxCol:s.checkboxCol})),...[...x,...$,...I,...Y].map(s=>({db:s,dateCol:En(s)?.id})).filter(s=>!!s.dateCol)],[f,x,$,I,Y]),W=p.useMemo(()=>sa(ht,N,L),[ht,N,L]),y=p.useRef(W);y.current=W;const d=p.useMemo(()=>W.map(s=>s.title?s:{...s,title:c("calview.untitled")}),[W,c]),M=H?.key??F?.key??null,z=M?W.find(s=>s.key===M)??null:null;pt.current=z;const rt=oe(f,null,le(N,L)),it=s=>{const u=oe(f,s,le(N,L));return u?be(N,L,u.db.path,f.indexOf(u)):"var(--accent)"},D=(s,u)=>{if(++tt.current,P)xe();else{if(w.getState().draft?.title.trim()&&!window.confirm(c("calside.discard")))return;w.getState().setDraft(null)}Q.current=null;const t=y.current.find(e=>e.key===s);t&&w.getState().setSelection({key:s,target:t}),S(null),T(!1),A(!1),J.current=void 0,m({key:s,at:u})},Z=s=>{const u=y.current.find(t=>t.key===s);if(!u){Q.current=s;return}if(w.getState().setSelection({key:s,target:u}),!P){const t=gt.current?.querySelector(`[data-key="${CSS.escape(s)}"]`);if(t){const e=t.getBoundingClientRect();T(!1),m({key:s,at:{left:e.left,top:e.top,right:e.right,bottom:e.bottom,zoom:ot(t)||1}})}}};p.useEffect(()=>{const s=w.getState();H&&!W.some(a=>a.key===H.key)&&(m(null),S(null));const u=Q.current;u&&W.some(a=>a.key===u)&&(Q.current=null,Z(u));const t=w.getState().selection;if(!t)return;const e=W.find(a=>a.key===t.key);e?e!==t.target&&s.setSelection({key:t.key,target:e}):s.setSelection(null)},[W]),p.useEffect(()=>(m(null),S(null),wt(null),_t(),w.getState().setSelection(null),()=>{_t()}),[N]);const yt=()=>{++tt.current;const s=w.getState(),u=!!s.draft||!!s.selection||!!H;if(P)xe();else if(s.draft){if(s.draft.title.trim()&&!window.confirm(c("calside.discard")))return!0;s.setDraft(null)}return s.selection&&s.setSelection(null),m(null),S(null),J.current=void 0,u},Dt=s=>{if(++tt.current,!rt)return;const u=w.getState();u.setSelection(null),m(null),J.current=B(K(s.day),s.startMin??0),u.setDraft({...s,title:"",dbPath:U&&f.some(t=>t.db.path===U.event.db.path)?U.event.db.path:null})},Lt=p.useRef(async()=>{});Lt.current=async()=>{const s=w.getState(),u=s.draft;if(!u)return;s.setDraft(null);const t=oe(f,u.dbPath,le(N,L));if(!t)return;const e=s.selection,a=tt.current,n=nt(),h=await $e(t.db,t.dateCol,ye(u),u.title.trim()||c("calview.newEventTitle"));he("calendar.event"),a===tt.current&&n===nt()&&!w.getState().draft&&w.getState().selection===e&&Z(`${t.db.path}::${h}`)},p.useEffect(()=>(w.getState().setDraftApi({commit:()=>{Lt.current()},cancel:()=>w.getState().setDraft(null)}),()=>{const u=w.getState();u.setDraftApi(null),u.setDraft(null),u.setSelection(null)}),[]);const Yt=async(s,u,t)=>{if(!rt)return;if(!P){const g=X(s);Dt({day:g,endDay:g,startMin:u,endMin:u===null?0:u+30});return}const{db:e,dateCol:a}=rt;let n;if(u===null)n=Mt(s,!0);else{const g=B(G(s),u);n=`${Mt(g,!1)}/${Mt(B(g,30),!1)}`}const h=await $e(e,a,n,c("calview.newEventTitle"));he("calendar.event"),m({key:`${e.path}::${h}`,at:t})},bt=()=>{const s=new Date,u=X(s);if(at.current?.today(),C==="month"){Dt({day:u,endDay:u,startMin:null,endMin:0});return}const[t,e]=ce(Math.ceil((s.getHours()*60+s.getMinutes())/15)*15,0,!0);Dt({day:u,endDay:u,startMin:t,endMin:e})},Bt=p.useRef(bt);Bt.current=bt;const Ct=p.useRef(yt);Ct.current=yt;const At=s=>{const u=pt.current;switch(S(null),gt.current?.focus({preventScroll:!0}),s){case"copy":u&&Pe(u);break;case"cut":u&&Pe(u,!0);break;case"clone":{const t=tt.current,e=nt();u&&Me(u).then(a=>{a&&t===tt.current&&e===nt()&&(m(null),Z(`${u.db.path}::${a}`))});break}case"paste":{const t=w.getState().draft;if(t?.title.trim()&&!window.confirm(c("calside.discard")))break;const e=tt.current,a=nt(),n=J.current??(t?B(K(t.day),t.startMin??0):void 0);_e(n?void 0:u?.db,n).then(h=>{!h||e!==tt.current||nt()!==a||w.getState().draft!==t||(w.getState().setDraft(null),m(null),Z(`${h.db.path}::${h.id}`))});break}case"delete":if(!u||u.db.readonly)break;Yn(u.db,u.row,u.title),w.getState().setSelection(null),m(null),U?.cut&&U.event.row.rowId===u.row.rowId&&U.event.db.path===u.db.path&&_t();break;case"undo":On();break;case"redo":Hn();break;case"summary":u&&navigator.clipboard?.writeText(`${u.title}
2
+ ${u.raw}
3
+ ${u.db.name}`).catch(()=>ft({level:"warning",text:c("calclip.failed")}));break}},Qt=p.useRef(At);Qt.current=At;const te=()=>{k?S(null):Ct.current()};p.useEffect(()=>{if(P||!H&&!k)return;const s=u=>{u.preventDefault(),u.detail?.probe||te()};return window.addEventListener("forsion:mobile-back",s),()=>window.removeEventListener("forsion:mobile-back",s)},[H,k]);const gt=p.useRef(null);p.useEffect(()=>{const s=u=>{const t=gt.current;if(!t||!t.getClientRects().length)return;const e=u.target;if(u.isComposing||e?.closest('[role="menu"]')||e&&e.closest("input, textarea, select, [contenteditable]"))return;const a=w.getState().sideEl,n=document.activeElement;if(n?.closest('[role="dialog"]')&&!n.closest(".amx-cal-cardcatch.calendar"))return;const h=!!n?.closest(".amx-calcfg");if(n&&n!==document.body&&!t.contains(n)&&!a?.contains(n)&&!h&&n.closest(".dv-react-part"))return;const g=aa(u);if(!g||h&&!["today","prev","next","mode"].includes(g.kind))return;const R=pt.current,E=w.getState();switch(g.kind){case"copy":case"cut":case"paste":case"duplicate":case"delete":case"undo":case"redo":Qt.current(g.kind==="duplicate"?"clone":g.kind);break;case"menu":{if(!R)return;const b=t.querySelector(`[data-key="${CSS.escape(R.key)}"]`)?.getBoundingClientRect();b&&S({x:b.left,y:b.bottom});break}case"new":if(!P)return;Bt.current();break;case"today":at.current?.today();break;case"rename":{if(e?.closest("button")&&!e.closest(".amx-cal-event, .amx-cal-chip-ev")||!R)return;if(A(!0),H)break;if(!E.selection)return;const b=t.querySelector(`[data-key="${CSS.escape(E.selection.key)}"]`)??t.querySelector(`.amx-cal-mcell[data-date="${X(R.start)}"], .amx-cal-daycol2[data-date="${X(R.start)}"]`);if(!b)return;const lt=b.getBoundingClientRect();m({key:E.selection.key,at:{left:lt.left,top:lt.top,right:lt.right,bottom:lt.bottom,zoom:ot(b)||1}}),E.setSelection(null);break}case"escape":if(Pt.getState().clip?.cut&&_t(),k){S(null);break}if(E.draft)E.setDraft(null);else if(E.selection||H)Ct.current();else return;break;case"prev":at.current?.prev();break;case"next":at.current?.next();break;case"mode":E.setMode(g.mode);break}u.preventDefault()};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[H,k]);const[de,ue]=p.useState(7);p.useLayoutEffect(()=>{const s=gt.current;if(!s)return;const u=()=>{if(!s.clientWidth)return;const e=s.clientWidth-52;ue(e>=588?7:e>=252?3:1)};u();const t=new ResizeObserver(u);return t.observe(s),()=>t.disconnect()},[]);const qt=Math.min(C==="week"?7:C==="3day"?3:1,de),Ft=s=>c(s===1?"calview.monday":"calview.sunday"),ee=[{value:"auto",label:c("calview.weekStartAuto",{day:Ft(zn())})},{value:0,label:Ft(0)},{value:1,label:Ft(1)}],Xt=(s,u)=>{const t=f.find(n=>n.db.path===s.dbPath),e=t?.db.rows.find(n=>n.rowId===s.rowId);if(!t||!e||t.db.readonly)return;const a=typeof e.cells[t.dateCol]=="string"?e.cells[t.dateCol]:"";ke(t.db,e,t.dateCol,a,u,e.name)},me=s=>s?l.jsx(Oe,{size:14}):l.jsx("span",{style:{display:"inline-block",width:14}}),ne={events:d,selectedKey:M,cutKey:U?.cut?`${U.event.db.path}::${U.event.row.rowId}`:null,onPick:D,canCreate:!!rt,onDismiss:yt,onDraft:Dt,colorOf:it,onTodoDrop:Xt,titleRef:jt,onGesture:s=>{ut(!!s),wt(u=>u?.key===s?.key&&u?.raw===s?.raw?u:s),s&&(w.getState().selection?.key!==s.key&&w.getState().setSelection({key:s.key,target:s}),T(!0))}};return l.jsxs("div",{className:`amx-cal${P?"":" mobile"}${!P&&(H||O)?` drawer-open${_&&H?" drawer-small":""}`:""}`,ref:gt,tabIndex:-1,"data-cut-key":U?.cut?`${U.event.db.path}::${U.event.row.rowId}`:void 0,onContextMenu:s=>{if(s.target.closest(".amx-cal-cardwrap, input, textarea"))return;const u=s.target.closest("[data-key]"),t=y.current.find(a=>a.key===u?.dataset.key);if(t){s.preventDefault(),s.stopPropagation();const a=u.getBoundingClientRect();P?(w.getState().setSelection({key:t.key,target:t}),m(null),J.current=void 0):D(t.key,{left:a.left,top:a.top,right:a.right,bottom:a.bottom,zoom:ot(u)||1}),S({x:s.clientX,y:s.clientY});return}const e=s.target.closest("[data-date]");if(e?.dataset.date){s.preventDefault(),s.stopPropagation(),yt();const a=e.classList.contains("amx-cal-daycol2")?Math.max(0,Math.min(1425,Ht((s.clientY-e.getBoundingClientRect().top)/(ot(e)||1)/v*60))):0;J.current=B(K(e.dataset.date),a),S({x:s.clientX,y:s.clientY})}},children:[l.jsx(Ee,{children:l.jsxs("header",{className:"amx-cal-bar",children:[l.jsxs("div",{className:"amx-cal-nav",children:[l.jsx(dn,{leafId:r}),l.jsx("span",{className:"amx-cal-title",ref:jt})]}),l.jsxs("div",{className:"amx-cal-modes",children:[l.jsx(re,{size:"sm",variant:"secondary",label:c("calview.today"),onClick:()=>at.current?.today()}),l.jsx(re,{size:"sm",variant:"ghost",isIconOnly:!0,icon:l.jsx(Sn,{size:14}),label:c("calview.prevPage"),onClick:()=>at.current?.prev()}),l.jsx(re,{size:"sm",variant:"ghost",isIconOnly:!0,icon:l.jsx(un,{size:14}),label:c("calview.nextPage"),onClick:()=>at.current?.next()}),l.jsxs(Vn,{button:{label:c("calview.viewOptions"),isIconOnly:!0,icon:l.jsx(mn,{size:14}),variant:"ghost",size:"sm"},menuWidth:208,children:[C!=="month"&&l.jsx(se,{icon:l.jsx(_n,{size:14}),label:c("calview.zoomOut"),onClick:()=>j(v-8)}),C!=="month"&&l.jsx(se,{icon:l.jsx(Kn,{size:14}),label:c("calview.zoomIn"),onClick:()=>j(v+8)}),C!=="month"&&l.jsx(se,{icon:l.jsx(Zn,{size:14}),label:c("calview.densityReset"),endContent:`${v}px`,onClick:()=>j(Nn)}),C!=="month"&&l.jsx("div",{className:"amx-cal-menusep",role:"separator"}),l.jsx("div",{className:"amx-cal-menulabel",children:c("calview.weekStart")}),ee.map(s=>l.jsx(se,{icon:me(o===s.value),label:s.label,onClick:()=>Se.getState().setPref(s.value)},String(s.value)))]})]})]})}),d.length===0&&l.jsxs("div",{className:"amx-cal-empty",children:[c(rt?"calview.empty":"calview.emptyNoDb"),rt&&P&&l.jsx(Ee,{children:l.jsx(re,{size:"sm",variant:"secondary",label:c("calview.newEvent"),onClick:bt})})]}),C==="month"?l.jsx(ia,{ref:at,anchorRef:Tt,...ne,onCreate:(s,u)=>{Yt(s,null,u)}},`dow${i}`):l.jsx(ca,{ref:at,n:qt,weekStartDow:C==="week"&&qt===7?i:null,...ne,onCreate:(s,u,t)=>{Yt(s,u,t)}}),z&&H&&(!P||!dt)&&l.jsx(qn,{calendar:!0,focusTitle:ct,ev:vt??z,at:H.at,collapsed:!P&&_,onExpand:()=>T(!1),maxRight:gt.current?.getBoundingClientRect().right,onClose:te,onActions:s=>{const u=s.currentTarget.getBoundingClientRect();S({x:u.left,y:u.bottom}),T(!1)},actions:!P&&k?l.jsx(Ne,{at:k,mobile:!0,canCut:!z.readonly,writable:!z.db.readonly,note:z.db.isNoteView,hasClip:!!U,onRun:At,onClose:()=>S(null)}):void 0},z.key),k&&(P||!H)&&l.jsx(Ne,{at:k,mobile:!1,hasEvent:!!z,canCut:!z?.readonly,writable:!z?.db.readonly,note:!!z?.db.isNoteView,hasClip:!!U,onRun:At,onClose:()=>S(null)}),l.jsx(na,{rootRef:gt,onPasted:Z})]})}function Je({first:r=!0}){const{t:c}=It(),i=w(o=>o.draft?.title??"");return!r||!P?l.jsx("span",{className:"amx-cal-event-title",children:i||c("calview.newEventTitle")}):l.jsx("input",{className:"amx-cal-draft-input",autoFocus:!0,value:i,placeholder:c("calview.newEventTitle"),"aria-label":c("calview.newEventTitle"),onChange:o=>{const f=w.getState();f.draft&&f.setDraft({...f.draft,title:o.target.value})},onKeyDown:o=>{if(!o.nativeEvent.isComposing)if(o.key==="Enter"){o.preventDefault();const f=w.getState();f.draft?.title.trim()?f.draftApi?.commit():f.setDraft(null)}else o.key==="Escape"&&(o.preventDefault(),w.getState().setDraft(null))},onBlur:o=>{o.relatedTarget instanceof Element&&o.relatedTarget.closest(".amx-cal-draftcard")||document.hasFocus()&&xe()}})}const Ge={onPointerDown:r=>r.stopPropagation(),onMouseDown:r=>{r.target instanceof HTMLInputElement||r.preventDefault()}};function Qe({day:r,colorOf:c}){const i=w(o=>o.draft);return i?l.jsxs("div",{className:`amx-cal-chip-ev amx-cal-draft selected${De(K(i.day),K(i.endDay),r)}`,style:Nt(c(i.dbPath)),...Ge,children:[i.startMin!==null&&l.jsx("span",{className:"amx-cal-chip-t",children:xt(i.startMin)}),l.jsx(Je,{first:X(r)===i.day})]}):null}function oa({hourPx:r,colorOf:c}){const i=w(f=>f.draft);if(!i||i.startMin===null)return null;const o=(i.endMin-i.startMin)/60*r;return l.jsxs("div",{className:`amx-cal-event amx-cal-draft selected${o<ge?" short":""}`,style:{...Nt(c(i.dbPath)),top:i.startMin/60*r,height:Math.max(14,o),left:2,width:"calc(100% - 4px)"},...Ge,children:[l.jsx(Je,{}),l.jsx("span",{className:"amx-cal-event-t",children:o<ge?xt(i.startMin):`${xt(i.startMin)}–${xt(i.endMin)}`})]})}const ca=p.forwardRef(function({n:c,weekStartDow:i,events:o,selectedKey:f,cutKey:x,onPick:$,canCreate:I,onDismiss:Y,onDraft:N,colorOf:L,onTodoDrop:C,onCreate:V,titleRef:v,onGesture:j},q){const{t:F}=It(),O=p.useRef(null),H=p.useRef(null),[m,k]=p.useState(0),[S,_]=p.useState(0),T=w(t=>t.hourPx),vt=w(t=>t.setVisibleRange),wt=w(Ze),dt=wt?wt.split("|"):null,ut=()=>{H.current&&O.current&&(H.current.style.transform=`translateY(${-O.current.scrollTop}px)`)},ct=p.useMemo(()=>G(new Date),[]),A=p.useMemo(()=>{const t=$t(ct,-Vt);return Array.from({length:Vt*2+1},(e,a)=>$t(t,a))},[ct]),U=t=>i==null?t:Math.max(0,t-(A[t].getDay()-i+7)%7),J=p.useRef(Vt),jt=p.useRef(void 0),at=p.useRef(!1),Tt=p.useRef(""),pt=p.useRef(-1),Q=p.useRef(null),tt=p.useRef(null),ht=()=>{tt.current&&(tt.current.style.display="none")},W=p.useRef(null),y=p.useRef(null),[d,M]=p.useState(()=>{const t=new Date;return t.getHours()*60+t.getMinutes()});p.useEffect(()=>{const t=setInterval(()=>{const e=new Date;M(e.getHours()*60+e.getMinutes())},3e4);return()=>clearInterval(t)},[]),p.useEffect(()=>()=>vt(null,null),[vt]);const z=B(ct,d).getTime(),rt=()=>{const t=O.current;if(!t||!m)return;const e=Math.max(0,Math.min(A.length-c,Math.round(t.scrollLeft/m)));J.current=e;const a=A[e+Math.floor((c-1)/2)],n=We(a),h=F("calview.weekNo",{n:Rn(a)});n+h!==Tt.current&&(Tt.current=n+h,v.current&&(v.current.textContent=n,v.current.dataset.week=h)),e*8+c!==pt.current&&(pt.current=e*8+c,vt(X(A[e]),X(A[Math.min(A.length-1,e+c-1)])),t.querySelector(".amx-cal-allday2.lead")?.classList.remove("lead"),t.querySelector(`.amx-cal-allday2[data-date="${X(A[e])}"]`)?.classList.add("lead"))},it=()=>{const t=O.current,e=t?.clientWidth?t.querySelector(".amx-cal-daycol2"):null;e&&_(Math.max(0,e.offsetTop-(kt+14)))};p.useLayoutEffect(()=>{const t=O.current;if(!t)return;const e=c>=3?84:180,a=()=>{t.clientWidth&&(k(Math.max(e,t.clientWidth/c)),it())};a();const n=new ResizeObserver(a);return n.observe(t),()=>n.disconnect()},[c]),p.useLayoutEffect(it,[o,m,c,wt]),p.useLayoutEffect(()=>{const t=O.current;if(!(!t||!m)){if(!at.current){J.current=Vt,at.current=!0;const e=t.querySelector(".amx-cal-daycol2"),a=e?e.offsetTop:kt+14;t.scrollTop=Math.max(0,a+d/60*T-t.clientHeight/2)}jt.current!==i&&(jt.current=i,J.current=U(J.current)),t.scrollLeft=J.current*m,rt(),ut()}},[m,i]);const D=p.useRef(T);p.useLayoutEffect(()=>{const t=O.current,e=D.current;if(D.current=T,!t||e===T)return;const a=t.querySelector(".amx-cal-daycol2"),n=a?a.offsetTop:kt+14,h=t.clientHeight/2,g=(t.scrollTop+h-n)/e;t.scrollTop=Math.max(0,n+g*T-h),ut()},[T]),p.useEffect(()=>{const t=O.current;if(!t)return;const e=a=>{if(!a.ctrlKey&&!a.metaKey)return;a.preventDefault();const n=w.getState();n.setHourPx(n.hourPx*(a.deltaY<0?1.12:1/1.12))};return t.addEventListener("wheel",e,{passive:!1}),()=>t.removeEventListener("wheel",e)},[]),p.useImperativeHandle(q,()=>({prev:()=>O.current?.scrollBy({left:-c*m,behavior:"smooth"}),next:()=>O.current?.scrollBy({left:c*m,behavior:"smooth"}),today:()=>O.current?.scrollTo({left:U(Vt)*m,behavior:"smooth"}),goto:t=>{if(!m)return;const e=Math.min(A.length-c,U(Math.max(0,Math.min(A.length-1,Rt(G(t),A[0])))));O.current?.scrollTo({left:e*m,behavior:"smooth"})}}),[c,m,A,i]);const Z=kt+14+S,yt=(t,e=0)=>{const a=O.current,n=a.getBoundingClientRect(),h=ot(a)||1,g=Math.max(0,Math.min(A.length-1,Math.floor(((t.clientX-n.left)/h+a.scrollLeft)/m))),R=((t.clientY-n.top)/h-e+a.scrollTop-Z)/T*60;return{col:g,raw:R,min:Math.max(0,Math.min(1425,Math.floor(R/15)*15))}},Dt=(t,e,a)=>{if(e.stopPropagation(),bt(),t.readonly||e.button!==0||!P&&f!==t.key)return;ht();const n=e.currentTarget.closest(".amx-cal-event"),h=n.getBoundingClientRect(),g=ot(n)||1,R=(e.clientY-h.top)/g,E=Math.min(Le,h.height/g/4),b=a??(P&&f===t.key?R<E?"start":h.height/g-R<E?"end":"move":"move"),lt=ze(t.start,t.end,T),zt=Math.max(14,lt.height),Et=n.querySelector(".amx-cal-event-t");n.setPointerCapture(e.pointerId),W.current={mode:b,ev:t,el:n,tEl:Et,t0:Et?.textContent??"",pid:e.pointerId,x0:e.clientX,y0:e.clientY,zoom:g,top0:lt.top,h0:zt,grabOffY:R,durMin:t.end?(t.end.getTime()-t.start.getTime())/6e4:60,msDur:t.end?t.end.getTime()-t.start.getTime():0,col0:Rt(G(t.start),A[0]),min0:t.start.getHours()*60+t.start.getMinutes(),dup:P&&b==="move"&&e.altKey&&!t.db.readonly,shadow:null,dyMin:0,moved:!1,target:null}},Lt=t=>{const e=W.current;if(!e||t.pointerId!==e.pid){if(P&&t.currentTarget.classList.contains("selected")){const E=t.currentTarget,b=E.getBoundingClientRect(),lt=(t.clientY-b.top)/(ot(E)||1),zt=Math.min(Le,b.height/(ot(E)||1)/4);E.style.cursor=lt<zt||b.height/(ot(E)||1)-lt<zt?"ns-resize":"grab"}return}if(e.last=t,t.pointerType==="mouse"&&t.buttons===0){Yt(e.ev,t);return}if(e.mode==="move"){if(!e.moved&&Math.hypot(t.clientX-e.x0,t.clientY-e.y0)<=3||!m||!O.current)return;if(!e.moved){e.moved=!0,e.el.classList.add("dragging"),j?.(e.ev);const Ut=e.el.cloneNode(!0);Ut.classList.remove("dragging","selected"),Ut.classList.add(e.dup?"dup-src":"drag-shadow"),Ut.removeAttribute("aria-label"),e.el.parentElement?.insertBefore(Ut,e.el),e.shadow=Ut}const E=yt(t,e.grabOffY),b=Math.max(0,Math.min(1440-Math.min(e.durMin,1440),Ht(E.raw))),lt=b===Ht(e.min0)&&E.col===e.col0,zt=lt?e.min0:b;e.target=lt?null:{iso:X(A[E.col]),topMin:b},e.el.style.transform=`translate(${(E.col-e.col0)*m}px, ${(zt-e.min0)/60*T}px)`;const Et=B(A[E.col],zt);j?.({...e.ev,raw:Kt(Et,e.ev.end?new Date(Et.getTime()+e.msDur):null,!1)});const Ce=e.msDur?`${et(Et)}–${et(new Date(Et.getTime()+e.msDur))}`:et(Et);e.tEl&&(e.tEl.textContent=lt?e.t0:E.col!==e.col0?`${Te(A[E.col].getDay())} ${Ce}`:Ce);return}const a=Ht((t.clientY-e.y0)/e.zoom/T*60),h=((e.ev.end??B(e.ev.start,60)).getTime()-e.ev.start.getTime())/6e4,g=e.mode==="start"?Math.max(-e.min0,Math.min(h-15,a)):Math.max(15-h,a);if(!e.moved&&Math.abs(t.clientY-e.y0)<5)return;e.moved||(e.moved=!0,e.el.classList.add("dragging")),e.dyMin=g;const R=g/60*T;if(e.mode==="end"?e.el.style.height=`${Math.max(14,e.h0+R)}px`:(e.el.style.top=`${e.top0+R}px`,e.el.style.height=`${Math.max(14,e.h0-R)}px`),g!==0&&e.tEl){const E=e.ev.end??B(e.ev.start,60);if(e.mode==="end"){let b=B(E,g);b.getTime()<=e.ev.start.getTime()&&(b=B(e.ev.start,15)),e.tEl.textContent=`${et(e.ev.start)}–${et(b)} · ${ae(Math.round((b.getTime()-e.ev.start.getTime())/6e4))}`,j?.({...e.ev,raw:Kt(e.ev.start,b,!1)})}else{let b=B(e.ev.start,g);b.getTime()>=E.getTime()&&(b=B(E,-15)),e.tEl.textContent=`${et(b)}–${et(E)} · ${ae(Math.round((E.getTime()-b.getTime())/6e4))}`,j?.({...e.ev,raw:Kt(b,E,!1)})}}},Yt=(t,e)=>{const a=W.current;if(a&&e.pointerId!==a.pid||(W.current=null,!a))return;if(j?.(null),a.el.classList.remove("dragging"),a.mode==="move"){if(a.el.style.transform="",a.shadow?.remove(),!a.target){a.tEl&&(a.tEl.textContent=a.t0),a.moved||$(t.key,mt(e));return}const h=B(G(K(a.target.iso)),a.target.topMin),g=t.end?new Date(h.getTime()+a.msDur):null;if(a.tEl&&(a.tEl.textContent=a.t0),a.dup){const R=Kt(h,g,t.allDay);Me(t,R);return}St(t,h,g);return}if(a.el.style.top=`${a.top0}px`,a.el.style.height=`${a.h0}px`,a.dyMin===0){a.tEl&&(a.tEl.textContent=a.t0),a.moved||$(t.key,mt(e));return}const n=t.end??B(t.start,60);if(a.mode==="end"){let h=B(n,a.dyMin);h.getTime()<=t.start.getTime()&&(h=B(t.start,15)),St(t,t.start,h)}else{let h=B(t.start,a.dyMin);h.getTime()>=n.getTime()&&(h=B(n,-15)),St(t,h,n)}},bt=()=>{const t=W.current;W.current=null,t&&(j?.(null),t.el.classList.remove("dragging"),t.el.style.transform="",t.el.style.top=`${t.top0}px`,t.el.style.height=`${t.h0}px`,t.shadow?.remove(),t.tEl&&(t.tEl.textContent=t.t0))},Bt=p.useRef(Lt);Bt.current=Lt,p.useEffect(()=>{const t=a=>{(a.type==="blur"||a.key==="Escape")&&bt()},e=window.setInterval(()=>{const a=W.current,n=O.current;if(!a?.moved||!a.last||!n)return;const h=n.getBoundingClientRect(),g=a.last.clientX,R=a.last.clientY,E=g<h.left+24?-12:g>h.right-24?12:0,b=R<h.top+Z+24?-12:R>h.bottom-24?12:0;(E||b)&&(n.scrollBy(E,b),Bt.current(a.last))},32);return window.addEventListener("blur",t),window.addEventListener("keydown",t),()=>{clearInterval(e),window.removeEventListener("blur",t),window.removeEventListener("keydown",t),bt()}},[]);const Ct=p.useRef(null),At=(t,e)=>{if(e.stopPropagation(),e.button!==0||t.readonly||!P&&f!==t.key)return;const a=e.currentTarget.getBoundingClientRect(),n=Math.min(8,a.width/4);Ct.current={x:e.clientX,y:e.clientY,mode:f===t.key&&P?e.clientX-a.left<n?"start":a.right-e.clientX<n?"end":"move":"move"},e.currentTarget.setPointerCapture(e.pointerId)},Qt=(t,e)=>{const a=Ct.current;if(Ct.current=null,!a)return;if(Math.hypot(e.clientX-a.x,e.clientY-a.y)<5){$(t.key,mt(e));return}const n=document.elementFromPoint(e.clientX,e.clientY)?.closest(".amx-cal-allday2");if(n?.dataset.date){const R=K(n.dataset.date);if(a.mode==="start")St(t,R>(t.end??t.start)?t.end??t.start:R,t.end,!0);else if(a.mode==="end")St(t,t.start,R<t.start?t.start:R,!0);else{const E=Rt(R,t.start);St(t,Jt(t.start,E),t.end?Jt(t.end,E):null,!0)}return}const h=document.elementFromPoint(e.clientX,e.clientY)?.closest(".amx-cal-daycol2"),g=h?.getAttribute("data-date");if(h&&g){const R=h.getBoundingClientRect(),E=Math.max(0,Math.min(1410,Ht((e.clientY-R.top)/(ot(h)||1)/T*60))),b=B(G(K(g)),E);St(t,b,B(b,30),!1);return}$(t.key,mt(e))},te=t=>{const e=tt.current;if(!e)return;const a=t.target,n=w.getState();if(!P||!I||t.pointerType==="touch"||W.current||n.draft||n.selection||!m||!a.closest(".amx-cal-daycol2")||a.closest(".amx-cal-event, .amx-cal-draft")){ht();return}const h=yt(t),[g,R]=ce(h.min,h.min,!0);e.style.display="block",e.style.left=`${h.col*m+2}px`,e.style.width=`${m-4}px`,e.style.top=`${Z+g/60*T}px`,e.style.height=`${(R-g)/60*T}px`},gt=t=>t.moved?ce(Math.min(t.min,t.cur.min),Math.max(t.min,t.cur.min)+15,!1):ce(t.min,t.min,!0),de=t=>{if(!P||t.button!==0||t.pointerType==="touch")return;const e=t.target;if(e.closest(".amx-cal-event, .amx-cal-chip-ev, .amx-cal-draft"))return;const a=e.closest(".amx-cal-allday2")?"all":e.closest(".amx-cal-daycol2")?"time":null;if(!a||!m)return;ht();const n=Y();if(O.current?.closest(".amx-cal")?.focus({preventScroll:!0}),n||!I)return;t.preventDefault();const h=yt(t);t.currentTarget.setPointerCapture(t.pointerId),y.current={pid:t.pointerId,zone:a,col:h.col,min:h.min,cur:h,x0:t.clientX,y0:t.clientY,moved:!1}},ue=t=>{const e=y.current;if(!e){te(t);return}if(t.pointerId!==e.pid)return;if(t.pointerType==="mouse"&&t.buttons===0){qt();return}if(!e.moved&&Math.hypot(t.clientX-e.x0,t.clientY-e.y0)<4)return;e.moved=!0,e.cur=yt(t);const a=Q.current;if(a)if(a.style.display="block",e.zone==="time"){const[n,h]=gt(e);a.style.left=`${e.col*m+2}px`,a.style.width=`${m-4}px`,a.style.top=`${Z+n/60*T}px`,a.style.height=`${(h-n)/60*T}px`,a.textContent=`${xt(n)}–${xt(h)} · ${ae(h-n)}`}else{const n=Math.min(e.col,e.cur.col),h=Math.max(e.col,e.cur.col);a.style.left=`${n*m+4}px`,a.style.width=`${(h-n+1)*m-8}px`,a.style.top=`${kt+14+3}px`,a.style.height="20px",a.textContent=h>n?ae((h-n+1)*1440):""}},qt=t=>{const e=y.current;if(!(e&&t&&t.pointerId!==e.pid)&&(y.current=null,Q.current&&(Q.current.style.display="none"),!!e))if(e.zone==="time"){const[a,n]=gt(e);N({day:X(A[e.col]),endDay:X(A[e.col]),startMin:a,endMin:n})}else{const[a,n]=e.moved?[Math.min(e.col,e.cur.col),Math.max(e.col,e.cur.col)]:[e.col,e.col];N({day:X(A[a]),endDay:X(A[n]),startMin:null,endMin:0})}},Ft=()=>{y.current=null,Q.current&&(Q.current.style.display="none")},ee=t=>{const e=t.target,a=e.closest(".amx-cal-allday2")?"all":e.closest(".amx-cal-daycol2")?"time":null;if(!a||!m)return null;const n=yt(t),h=X(A[n.col]),g=Math.min(n.min,1410);return{zone:a,col:n.col,s:g,value:a==="all"?h:`${h}T${xt(g)}/${h}T${xt(g+30)}`}},Xt=()=>{Q.current&&(Q.current.style.display="none")},me=t=>{if(!C||!t.dataTransfer.types.includes(pe))return;t.preventDefault(),t.dataTransfer.dropEffect="move";const e=ee(t),a=Q.current;if(a){if(!e){Xt();return}a.style.display="block",a.style.left=`${e.col*m+(e.zone==="all"?4:2)}px`,a.style.width=`${m-(e.zone==="all"?8:4)}px`,a.style.top=`${e.zone==="all"?kt+14+3:Z+e.s/60*T}px`,a.style.height=e.zone==="all"?"20px":`${30/60*T}px`,a.textContent=e.zone==="all"?"":`${xt(e.s)}–${xt(e.s+30)}`}},ne=t=>{if(!C||!t.dataTransfer.types.includes(pe))return;t.preventDefault(),Xt();const e=ee(t);if(e)try{C(JSON.parse(t.dataTransfer.getData(pe)),e.value)}catch{}},s=p.useMemo(()=>{const t=o.filter(n=>n.allDay&&!la(n)).sort((n,h)=>+G(n.start)-+G(h.start)||+G(h.end??h.start)-+G(n.end??n.start)),e=[],a=new Map;for(const n of t){const h=+G(n.start);let g=e.findIndex(R=>R<h);g<0&&(g=e.length),e[g]=+G(n.end??n.start),a.set(n.key,g)}return{list:t,lane:a}},[o]),u=t=>!!dt&&dt[2]==="null"&&X(t)>=dt[0]&&X(t)<=dt[1];return l.jsxs("div",{className:"amx-cal-timerow",style:{"--amx-hour-px":`${T}px`},children:[l.jsx("div",{className:"amx-cal-gutterfixed",children:l.jsxs("div",{className:"amx-cal-gutterinner",children:[l.jsx("div",{className:"amx-cal-gcorner",style:{height:kt+14}}),l.jsx("div",{className:"amx-cal-gallday",style:{height:S},children:F("calview.allDay")}),l.jsxs("div",{className:"amx-cal-ghours",ref:H,children:[je.map(t=>l.jsx("div",{className:"amx-cal-hour",style:{height:T},children:t===0?"":`${t}:00`},t)),l.jsxs("span",{className:"amx-cal-nowlabel",style:{top:d/60*T},children:[String(Math.floor(d/60)).padStart(2,"0"),":",String(d%60).padStart(2,"0")]})]})]})}),l.jsx("div",{className:"amx-cal-tscroll",ref:O,onScroll:()=>{rt(),ut()},onPointerLeave:ht,children:l.jsxs("div",{className:"amx-cal-tgrid2",style:{gridTemplateColumns:`repeat(${A.length}, ${m}px)`,gridTemplateRows:`${kt+14}px auto ${je.length*T}px`},onPointerDown:de,onPointerMove:ue,onPointerUp:qt,onPointerCancel:Ft,onLostPointerCapture:()=>{y.current&&qt()},onDragOver:me,onDragLeave:t=>{t.relatedTarget instanceof Node&&t.currentTarget.contains(t.relatedTarget)||Xt()},onDrop:ne,children:[A.map(t=>l.jsxs("div",{className:`amx-cal-thead2${Ot(t,ct)?" today":""}`,children:[l.jsx("span",{className:"amx-cal-tdow",children:Te(t.getDay())}),l.jsxs("span",{className:"amx-cal-tdate",children:[t.getMonth()+1,"/",t.getDate()]})]},+t)),A.map(t=>{const e=s.list.filter(n=>Ue(n.start,n.end,t)),a=[];for(const n of e)a[s.lane.get(n.key)??0]=n;return l.jsxs("div",{className:"amx-cal-allday2","data-date":X(t),onClick:P?void 0:n=>{n.target.closest(".amx-cal-chip-ev")||Y()||V(t,null,mt(n))},children:[Array.from(a,(n,h)=>n?l.jsx("button",{"data-key":n.key,className:`amx-cal-chip-ev amx-cal-alldrag${n.readonly?" readonly":""}${x===n.key?" cut":""}${f===n.key?" selected":""}${+G(n.end??n.start)<+ct?" past":""}${De(n.start,n.end,t)}`,style:Nt(n.color),"aria-label":F("calview.a11yAllDayEvent",{title:n.title}),title:n.readonly?n.title:F("calview.allDayDragHint",{title:n.title}),onPointerDown:g=>At(n,g),onPointerUp:g=>Qt(n,g),onPointerCancel:()=>{Ct.current=null},onClick:g=>{(n.readonly||!P&&f!==n.key||g.detail===0)&&$(n.key,mt(g))},children:n.title},n.key):l.jsx("span",{className:"amx-cal-chip-gap"},`gap${h}`)),u(t)&&l.jsx(Qe,{day:t,colorOf:L})]},+t)}),A.map(t=>l.jsxs("div",{className:"amx-cal-daycol2","data-date":X(t),onClick:P?void 0:e=>{if(e.target.closest(".amx-cal-event")||Y())return;const a=e.currentTarget.getBoundingClientRect(),n=ot(e.currentTarget)||1,h=Math.max(0,Math.min(1410,Ht((e.clientY-a.top)/n/T*60)));V(t,h,{left:e.clientX,top:e.clientY,right:e.clientX,bottom:e.clientY,zoom:n})},children:[(()=>{const e=o.filter(n=>!n.allDay&&Ot(n.start,t)),a=ra(e);return e.map(n=>{const h=ze(n.start,n.end,T),g=a.get(n.key)??{leftPct:0,widthPct:100},R=h.height<ge,E=(n.end??n.start).getTime()<z;return l.jsxs("button",{"data-key":n.key,className:`amx-cal-event${n.readonly?" readonly":""}${x===n.key?" cut":""}${f===n.key?" selected":""}${R?" short":""}${E?" past":""}${n.check?" todo":""}${n.done?" done":""}`,style:{...Nt(n.color),top:h.top,height:Math.max(14,h.height),left:`calc(${g.leftPct}% + 2px)`,width:`calc(${g.widthPct}% - 4px)`},"aria-label":n.end?F("calview.a11yEventRange",{title:n.title,start:et(n.start),end:et(n.end)}):F("calview.a11yEvent",{title:n.title,time:et(n.start)}),title:n.title,onPointerDown:b=>Dt(n,b),onPointerMove:Lt,onPointerUp:b=>Yt(n,b),onPointerCancel:bt,onLostPointerCapture:bt,onClick:b=>{(n.readonly||!P&&f!==n.key||b.detail===0)&&$(n.key,mt(b))},children:[n.check&&l.jsx("span",{className:"amx-cal-event-check",role:"checkbox","aria-checked":!!n.done,"aria-label":F("calview.a11yDone",{title:n.title}),onPointerDown:b=>b.stopPropagation(),onClick:b=>{b.stopPropagation(),n.db.readonly||(Be(n.db,n.row.rowId,n.check,n.done?void 0:!0),n.done||he("todo.done"))}}),l.jsx("span",{className:"amx-cal-event-title",children:n.title}),l.jsx("span",{className:"amx-cal-event-t",children:R||!n.end?et(n.start):`${et(n.start)}–${et(n.end)}`}),!P&&f===n.key&&!n.readonly&&m*g.widthPct/100>=88&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"amx-cal-handle start","aria-label":F("calview.resizeStart"),onPointerDown:b=>Dt(n,b,"start")}),l.jsx("span",{className:"amx-cal-handle end","aria-label":F("calview.resizeEnd"),onPointerDown:b=>Dt(n,b,"end")})]})]},n.key)})})(),dt&&dt[2]!=="null"&&dt[0]===X(t)&&l.jsx(oa,{hourPx:T,colorOf:L}),l.jsx("div",{className:`amx-cal-nowline${Ot(t,ct)?" today":""}`,style:{top:d/60*T}})]},+t)),l.jsx("div",{className:"amx-cal-hoverslot",ref:tt}),l.jsx("div",{className:"amx-cal-making",ref:Q,style:Nt(L(null))})]})})]})}),ia=p.forwardRef(function({anchorRef:c,events:i,selectedKey:o,cutKey:f,onPick:x,canCreate:$,onDismiss:I,onDraft:Y,colorOf:N,onCreate:L,titleRef:C},V){const{t:v}=It(),j=p.useRef(null),[q,F]=p.useState(0),O=w(y=>y.setVisibleRange),H=w(Ze),m=H?H.split("|"):null,k=p.useMemo(()=>G(new Date),[]),S=p.useMemo(()=>{const y=$t(fe(k),-Ae*7);return Array.from({length:Ae*2+1},(d,M)=>$t(y,M*7))},[k]),_=p.useRef(!1),[T,vt]=p.useState(null),wt=p.useRef(""),dt=p.useRef(-1),ut=p.useRef(null);p.useEffect(()=>()=>O(null,null),[O]);const ct=(y,d)=>Math.round(Rt(fe(new Date(y,d,1)),S[0])/7),A=()=>{const y=j.current;if(!y||!q)return;const d=Math.max(0,Math.min(S.length-1,Math.round(y.scrollTop/q))),M=$t(S[d],3),z=We(M);if(c&&(c.current={y:M.getFullYear(),m:M.getMonth()}),z!==wt.current&&(wt.current=z,C.current&&(C.current.textContent=z,delete C.current.dataset.week)),d!==dt.current){dt.current=d;const rt=Math.max(1,Math.round(y.clientHeight/q)),it=S[Math.min(S.length-1,d+rt-1)];O(X(S[d]),X($t(it,6)))}};p.useLayoutEffect(()=>{const y=j.current;if(!y)return;const d=()=>{y.clientHeight&&F(Math.max(64,(y.clientHeight-kt)/6))};d();const M=new ResizeObserver(d);return M.observe(y),()=>M.disconnect()},[]),p.useLayoutEffect(()=>{const y=j.current;if(!y||!q||_.current)return;_.current=!0;const d=c?.current;if(d){let M=Math.max(0,Math.min(S.length-1,ct(d.y,d.m)));$t(S[M],3).getMonth()!==d.m&&M+1<S.length&&(M+=1),y.scrollTop=M*q}else y.scrollTop=ct(k.getFullYear(),k.getMonth())*q;A()},[q]),p.useImperativeHandle(V,()=>({prev:()=>U(-1),next:()=>U(1),today:()=>j.current?.scrollTo({top:ct(k.getFullYear(),k.getMonth())*q,behavior:"smooth"}),goto:y=>{if(!q)return;const d=Math.max(0,Math.min(S.length-1,Math.round(Rt(fe(y),S[0])/7)));j.current?.scrollTo({top:d*q,behavior:"smooth"})}}),[q]);const U=y=>{const d=j.current;if(!d||!q)return;const M=Math.max(0,Math.min(S.length-1,Math.round(d.scrollTop/q))),z=$t(S[M],3);d.scrollTo({top:Math.max(0,ct(z.getFullYear(),z.getMonth()+y))*q,behavior:"smooth"})},J=p.useRef(null),jt=(y,d)=>{d.stopPropagation(),!(d.button!==0||y.readonly||!P&&o!==y.key)&&(J.current={x:d.clientX,y:d.clientY},d.currentTarget.setPointerCapture(d.pointerId))},at=(y,d)=>{const M=J.current;if(J.current=null,!M)return;const z=mt(d);if(Math.hypot(d.clientX-M.x,d.clientY-M.y)<5){x(y.key,z);return}if(y.readonly){x(y.key,z);return}const it=document.elementFromPoint(d.clientX,d.clientY)?.closest(".amx-cal-mcell")?.getAttribute("data-date");if(it){const D=Rt(K(it),y.start);if(D!==0){St(y,Jt(y.start,D),y.end?Jt(y.end,D):null);return}}x(y.key,z)},Tt=y=>document.elementFromPoint(y.clientX,y.clientY)?.closest(".amx-cal-mcell")?.getAttribute("data-date")??null,pt=(y,d)=>{j.current?.querySelectorAll(".amx-cal-mcell").forEach(M=>{const z=M.dataset.date??"";M.classList.toggle("making",!!y&&!!d&&z>=y&&z<=d)})},Q=y=>{if(!P||y.button!==0||y.pointerType==="touch")return;const d=y.target;if(d.closest(".amx-cal-chip-ev, .amx-cal-more, .amx-cal-draft"))return;const M=d.closest(".amx-cal-mcell")?.getAttribute("data-date");if(!M)return;const z=I();j.current?.closest(".amx-cal")?.focus({preventScroll:!0}),!(z||!$)&&(y.preventDefault(),y.currentTarget.setPointerCapture(y.pointerId),ut.current={pid:y.pointerId,a:M,b:M,moved:!1})},tt=y=>{const d=ut.current;if(!d||y.pointerId!==d.pid)return;if(y.pointerType==="mouse"&&y.buttons===0){ht();return}const M=Tt(y);!M||M===d.b||(d.b=M,d.moved=!0,pt(d.a<M?d.a:M,d.a<M?M:d.a))},ht=y=>{const d=ut.current;if(d&&y&&y.pointerId!==d.pid||(ut.current=null,!d))return;d.moved&&pt(null,null);const[M,z]=d.a<d.b?[d.a,d.b]:[d.b,d.a];Y({day:M,endDay:z,startMin:null,endMin:0})},W=()=>{ut.current?.moved&&pt(null,null),ut.current=null};return l.jsxs("div",{className:"amx-cal-mscroll",ref:j,onScroll:A,children:[l.jsx("div",{className:"amx-cal-weekhead2",children:$n().map(y=>l.jsx("div",{children:y},y))}),l.jsx("div",{className:"amx-cal-mweeks",onPointerDown:Q,onPointerMove:tt,onPointerUp:ht,onPointerCancel:W,children:S.map(y=>l.jsx("div",{className:"amx-cal-mweek",style:{height:q},children:jn(y,7).map(d=>{const M=X(d),z=i.filter(D=>Ue(D.start,D.end,d)),rt=!!m&&M>=m[0]&&M<=m[1],it=rt?2:3;return l.jsxs("div",{className:`amx-cal-mcell${Ot(d,k)?" today":""}`,"data-date":M,onClick:P?void 0:D=>{D.target.closest(".amx-cal-chip-ev")||I()||L(d,{left:D.clientX,top:D.clientY,right:D.clientX,bottom:D.clientY,zoom:ot(D.currentTarget)||1})},children:[l.jsx("div",{className:"amx-cal-mnum",children:d.getDate()===1?v("calview.monthFirst",{m:d.getMonth()+1}):d.getDate()}),rt&&l.jsx(Qe,{day:d,colorOf:N}),z.slice(0,it).map(D=>l.jsxs("button",{"data-key":D.key,className:`amx-cal-chip-ev${D.readonly?" readonly":""}${o===D.key?" selected":""}${De(D.start,D.end,d)}`,style:Nt(D.color),title:D.title,"aria-label":!D.allDay&&Ot(D.start,d)?v("calview.a11yEvent",{title:D.title,time:et(D.start)}):D.title,onPointerDown:Z=>jt(D,Z),onPointerUp:Z=>at(D,Z),onPointerCancel:()=>{J.current=null},onClick:Z=>{(D.readonly||!P&&o!==D.key||Z.detail===0)&&x(D.key,mt(Z))},children:[!D.allDay&&Ot(D.start,d)&&l.jsx("span",{className:"amx-cal-chip-t",children:et(D.start)})," ",D.title]},D.key)),z.length>it&&l.jsx("button",{className:"amx-cal-more","aria-label":v("calview.a11yMoreEvents",{m:d.getMonth()+1,d:d.getDate(),n:z.length}),onClick:D=>vt({day:d,events:z,at:mt(D)}),children:v("calview.moreItems",{n:z.length-it})})]},+d)})},+y))}),T&&l.jsx(da,{day:T.day,events:T.events,at:T.at,onPick:(y,d)=>{vt(null),x(y,d)},onClose:()=>vt(null)})]})});function da({day:r,events:c,at:i,onPick:o,onClose:f}){const{t:x}=It(),$=292,I=i.zoom||1,Y=12*I,N=Math.max(Y,Math.min(i.left,window.innerWidth-$*I-Y))/I,L=Math.max(Y,Math.min(i.bottom+6*I,window.innerHeight-356*I-Y))/I,C=p.useRef(null),V=p.useRef(f);return V.current=f,p.useEffect(()=>{const v=document.activeElement instanceof HTMLElement?document.activeElement:null;C.current?.querySelector(".amx-cal-agenda-list > button")?.focus();const j=q=>{q.key==="Escape"&&(q.preventDefault(),V.current())};return window.addEventListener("keydown",j),()=>{window.removeEventListener("keydown",j),v?.focus()}},[]),l.jsx("div",{className:"amx-cal-agenda-overlay",onMouseDown:f,children:l.jsxs("section",{className:"amx-cal-agenda",ref:C,role:"dialog","aria-modal":"true","aria-label":x("calview.a11yDayEvents",{m:r.getMonth()+1,d:r.getDate()}),style:{left:N,top:L,width:$},onMouseDown:v=>v.stopPropagation(),children:[l.jsxs("header",{children:[l.jsx("strong",{children:x("calview.dayHeading",{m:r.getMonth()+1,d:r.getDate()})}),l.jsx("button",{onClick:f,"aria-label":x("calview.closeAgenda"),children:"×"})]}),l.jsx("div",{className:"amx-cal-agenda-list",children:c.map(v=>l.jsxs("button",{style:Nt(v.color),onClick:j=>o(v.key,mt(j)),children:[l.jsx("span",{className:"amx-cal-agenda-time",children:v.allDay?x("calview.allDay"):et(v.start)}),l.jsx("span",{children:v.title})]},v.key))})]})})}export{Ta as CalendarView,ia as MonthScroll};
@@ -0,0 +1 @@
1
+ .amx-cal-cardcatch.calendar{pointer-events:none}.amx-cal-cardcatch.calendar>.amx-cal-cardwrap{pointer-events:auto}.amx-cal-card-buttons{display:inline-flex}.amx-cal-event:before,.amx-cal-event:after{display:none}.amx-cal-eventmenu{color:var(--text);font-family:var(--font-ui);font-size:var(--menu-text-size);line-height:var(--menu-line-height);min-width:0;padding:3px;box-sizing:border-box}.amx-cal-eventmenu>button{display:flex;align-items:center;gap:9px;width:100%;min-height:var(--menu-row-height, 30px);border:0;background:transparent;color:inherit;font:inherit;text-align:left;padding:5px 8px;border-radius:var(--radius-sm);cursor:pointer}.amx-cal-eventmenu>button:hover,.amx-cal-eventmenu>button:focus-visible{background:var(--menu-hover)}.amx-cal-eventmenu>button:disabled{opacity:.4;cursor:default}.amx-cal-eventmenu .danger{color:var(--danger, #d64b4b)}.amx-cal-eventmenu kbd{margin-left:auto;padding-left:24px;font:inherit;font-size:var(--ui-font-caption);color:var(--text-muted)}.amx-cal-eventmenu p{max-width:250px;margin:6px 8px;color:var(--text-muted);font-size:var(--ui-font-meta)}.amx-cal-menu-position{z-index:90;width:240px;max-width:calc(100vw - 16px)}.amx-cal-event.cut,.amx-cal-chip-ev.cut{opacity:.4}.amx-cal.mobile .amx-cal-event:not(.selected),.amx-cal.mobile .amx-cal-chip-ev:not(.selected){touch-action:pan-x pan-y}.amx-cal.mobile .amx-cal-event.selected{overflow:visible;touch-action:none;outline:2px solid var(--amx-event-color);outline-offset:1px}.amx-cal.mobile .amx-cal-event-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.amx-cal-handle{position:absolute;width:44px;height:44px;touch-action:none;z-index:5;display:grid;place-items:center}.amx-cal-handle:after{content:"";width:13px;height:13px;border:2px solid var(--bg-card);border-radius:50%;background:var(--amx-event-color);box-shadow:0 0 0 1px var(--amx-event-color)}.amx-cal-handle.start{top:-22px;left:0}.amx-cal-handle.end{bottom:-22px;right:0}.amx-cal.mobile.drawer-open{padding-bottom:min(350px,46dvh);box-sizing:border-box}.amx-cal.mobile.drawer-open.drawer-small{padding-bottom:116px}.amx-cal-cardwrap.amx-cal-drawer{inset:auto 0 0;width:auto;height:min(350px,46dvh);max-height:72dvh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding-bottom:env(safe-area-inset-bottom,0px);box-sizing:border-box;background:var(--bg);transform-origin:bottom center;animation:ui-menu-enter var(--menu-enter-duration, .14s) var(--menu-enter-easing, ease-out)}.amx-cal-cardwrap.amx-cal-drawer.collapsed{height:116px;overflow:hidden}.amx-cal-drawer-grab{display:grid;place-items:center;width:100%;height:22px;background:transparent;border:0;padding:0;touch-action:none}.amx-cal-drawer-grab span{width:34px;height:4px;border-radius:var(--radius-pill);background:var(--text-faint)}.amx-cal-drawer .amx-cal-card-x{width:44px;height:44px}.amx-cal-drawer .amx-cal-cardin{padding:0 14px 16px}.amx-cal-drawer-summary{display:flex;align-items:center;gap:8px;padding:2px 10px 12px}.amx-cal-drawer-summary>div{display:flex;flex:1;min-width:0;flex-direction:column;gap:6px}.amx-cal-drawer-summary strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ui-font-body)}.amx-cal-drawer-summary span{font-size:var(--ui-font-heading);font-variant-numeric:tabular-nums}.amx-cal-eventmenu.phone{padding:0 14px 16px}.amx-cal-eventmenu.phone>button{min-height:44px}.amx-cal.mobile .amx-cal-chip-ev.selected{touch-action:none}.amx-cal-draftcard.amx-cal-drawer{padding:0 18px 16px}.amx-cal-draftcard.amx-cal-drawer input{min-height:36px}@media(prefers-reduced-motion:reduce){.amx-cal-cardwrap.amx-cal-drawer{animation:none}}
@@ -0,0 +1 @@
1
+ import{r as s,j as r}from"./index-fDB1l4d-.js";import{a8 as D,T as k,X as C,aj as A}from"./pageStore-CyvNZEYX.js";import"./client-fKy9CWk0.js";import{aG as L,S}from"./appStore-DDOkzWDA.js";function O({label:u,children:g,items:w,className:E="capability-menu-trigger",searchLabel:d,selection:p=!1,disabled:j=!1,acceptsDrag:y}){const b=s.useId(),a=s.useRef(null),l=s.useRef(null),[n,f]=s.useState(null),[h,x]=s.useState(""),i=(e=!0)=>{f(null),x(""),e&&a.current?.isConnected&&a.current.focus()},m=()=>{const e=a.current?.getBoundingClientRect();e&&f({x:e.left,y:e.bottom+4,top:e.top})};s.useEffect(()=>{if(!n)return;const e=c=>{!l.current?.contains(c.target)&&!a.current?.contains(c.target)&&i(!1)},t=c=>{if(l.current?.contains(c.target))return;const o=a.current?.getBoundingClientRect();if(!o||!a.current?.isConnected){i(!1);return}(Math.abs(o.left-n.x)>1||Math.abs(o.bottom+4-n.y)>1)&&f({x:o.left,y:o.bottom+4,top:o.top})};return document.addEventListener("pointerdown",e),window.addEventListener("resize",t),document.addEventListener("scroll",t,!0),()=>{document.removeEventListener("pointerdown",e),window.removeEventListener("resize",t),document.removeEventListener("scroll",t,!0)}},[n]),s.useEffect(()=>{if(!n||L())return;const e=l.current;(e?.querySelector("input")||e?.querySelector('[aria-checked="true"]:not(:disabled), button:not(:disabled)'))?.focus({preventScroll:!0})},[!!n]);const v=w.filter(e=>e.label.toLowerCase().includes(h.trim().toLowerCase()));return r.jsxs(r.Fragment,{children:[r.jsx("button",{ref:a,type:"button",className:E,"aria-label":u,title:u,"aria-haspopup":"menu","aria-expanded":!!n,"aria-controls":n?b:void 0,disabled:j,onDragEnter:e=>{y?.(e.dataTransfer)&&(e.preventDefault(),n||m())},onDragOver:e=>{y?.(e.dataTransfer)&&e.preventDefault()},onClick:()=>n?i():m(),onKeyDown:e=>{(e.key==="ArrowDown"||e.key==="ArrowUp")&&(e.preventDefault(),m())},children:g||r.jsxs(r.Fragment,{children:[r.jsx("span",{children:u}),r.jsx(D,{size:13})]})}),n&&k.createPortal(r.jsx("div",{className:"ui-popover-backdrop",style:{pointerEvents:"none"},children:r.jsxs(C,{style:{pointerEvents:"auto"},x:n.x,y:n.y,anchorTop:n.top,innerRef:e=>{l.current=e},id:b,className:`ui-popover capability-menu${p?" capability-menu-selection":""}`,role:"menu","aria-label":u,onKeyDown:e=>{if(e.key==="Escape"){e.preventDefault(),e.stopPropagation(),i();return}if(e.key==="Tab"){i();return}if(!["ArrowDown","ArrowUp","Home","End"].includes(e.key)||e.target instanceof HTMLInputElement&&["Home","End"].includes(e.key))return;e.preventDefault(),e.stopPropagation();const t=Array.from(l.current?.querySelectorAll("button:not(:disabled)")||[]),c=t.indexOf(document.activeElement),o=e.key==="Home"?0:e.key==="End"?t.length-1:(c+(e.key==="ArrowDown"?1:-1)+t.length)%t.length;t[o]?.focus()},children:[d&&r.jsxs("label",{className:"capability-menu-search",children:[r.jsx(S,{size:14}),r.jsx("input",{"aria-label":d,placeholder:d,value:h,onChange:e=>x(e.target.value)})]}),r.jsx("div",{className:"capability-menu-items",children:v.map(e=>r.jsxs("button",{type:"button",role:p?"menuitemradio":"menuitem","aria-label":e.label,"aria-checked":p?!!e.selected:void 0,disabled:e.disabled,className:`${e.danger?"danger":""}${e.dropActive?" capability-menu-drop":""}`,onDragOver:e.onDragOver,onDragLeave:e.onDragLeave,onDrop:e.onDrop,onClick:()=>{i(),e.onSelect()},children:[r.jsx("span",{className:"capability-menu-icon",children:e.icon}),r.jsx("span",{children:e.label}),e.hint&&r.jsx("small",{className:"capability-menu-hint",children:e.hint}),e.selected&&r.jsx(A,{size:14})]},e.id))})]})}),document.body)]})}export{O as C};
@@ -0,0 +1 @@
1
+ import{r as D,u as P,j as r,a as O}from"./index-fDB1l4d-.js";import{p as H,R as S,a6 as T}from"./pageStore-CyvNZEYX.js";import"./client-fKy9CWk0.js";import{hx as E,f4 as $}from"./appStore-DDOkzWDA.js";import{M as X}from"./magnet-Cqmm97W8.js";const Y=[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]],b=H("map",Y),B=18,L=(e,n)=>e.x<n.x+n.w&&e.x+e.w>n.x&&e.y<n.y+n.h&&e.y+e.h>n.y,W=(e,n)=>({x:e.x-n,y:e.y-n,w:e.w+n*2,h:e.h+n*2});function J(e,n,m={x:0,y:0},u=B,i){if(!e.length||!n.length)return{x:0,y:0};const x=n.map(o=>W(o,Math.max(0,u))),d=(o,a)=>e.every(f=>{const h={...f,x:f.x+o,y:f.y+a};return i&&(h.x<i.x||h.y<i.y||h.x+h.w>i.x+i.w||h.y+h.h>i.y+i.h)?!1:x.every(M=>!L(h,M))});if(d(0,0))return{x:0,y:0};const y=new Set([0]),c=new Set([0]);for(const o of e)for(const a of x)y.add(Math.floor(a.x-(o.x+o.w))),y.add(Math.ceil(a.x+a.w-o.x)),c.add(Math.floor(a.y-(o.y+o.h))),c.add(Math.ceil(a.y+a.h-o.y));const g=Math.hypot(m.x,m.y);let s=null;for(const o of y)for(const a of c){if(!d(o,a))continue;const f=g?(o*m.x+a*m.y)/g:0,h=o!==0&&a!==0?.1:0,M=o*o+a*a+h-f*.001;(!s||M<s.score)&&(s={x:o,y:a,score:M})}return s?{x:s.x,y:s.y}:{x:0,y:0}}O({"cvminimap.aria":{zh:"画布缩略图",en:"Canvas minimap"},"cvminimap.hint":{zh:"画布缩略图:点击或拖动以导航",en:"Canvas minimap: click or drag to navigate"}});const w=184,z=112,R=7;function K({hostRef:e,vp:n,items:m,onCenter:u}){const i=D.useRef(!1),{t:x}=P(),d=e.current;if(!d||!m.length)return null;const y=S(d)||1,c=d.getBoundingClientRect(),g={x:-n.x/n.z,y:-n.y/n.z,w:Math.max(1,c.width/y/n.z),h:Math.max(1,c.height/y/n.z)},s=[...m.map(t=>t.box),g],o=Math.min(...s.map(t=>t.x)),a=Math.min(...s.map(t=>t.y)),f=Math.max(...s.map(t=>t.x+t.w)),h=Math.max(...s.map(t=>t.y+t.h)),M=Math.max(1,f-o),v=Math.max(1,h-a),l=Math.min((w-R*2)/M,(z-R*2)/v),C=(w-M*l)/2-o*l,j=(z-v*l)/2-a*l,I=t=>({x:C+t.x*l,y:j+t.y*l,w:Math.max(1.5,t.w*l),h:Math.max(1.5,t.h*l)}),N=t=>{const p=t.currentTarget.getBoundingClientRect(),A=(t.clientX-p.left)/Math.max(1,p.width)*w,_=(t.clientY-p.top)/Math.max(1,p.height)*z;u((A-C)/l,(_-j)/l)},k=I(g);return r.jsx("div",{className:"amx-stage-minimap",role:"navigation","aria-label":x("cvminimap.aria"),title:x("cvminimap.hint"),onPointerDown:t=>{t.preventDefault(),t.stopPropagation(),i.current=!0;try{t.currentTarget.setPointerCapture(t.pointerId)}catch{}N(t)},onPointerMove:t=>{i.current&&(t.preventDefault(),t.stopPropagation(),N(t))},onPointerUp:t=>{i.current=!1;try{t.currentTarget.releasePointerCapture(t.pointerId)}catch{}},onPointerCancel:()=>{i.current=!1},children:r.jsxs("svg",{viewBox:`0 0 ${w} ${z}`,"aria-hidden":"true",children:[m.map(t=>{const p=I(t.box);return r.jsx("rect",{className:`amx-mini-item is-${t.kind}`,"data-mini-key":t.key,x:p.x,y:p.y,width:p.w,height:p.h,rx:t.kind==="frame"?2:1.5},t.key)}),r.jsx("rect",{className:"amx-mini-viewport",x:k.x,y:k.y,width:k.w,height:k.h,rx:"2"})]})})}O({"ckchrome.zoomOut":{zh:"缩小",en:"Zoom out"},"ckchrome.zoomIn":{zh:"放大",en:"Zoom in"},"ckchrome.zoomReset":{zh:"重置为 100%",en:"Reset to 100%"},"ckchrome.fit":{zh:"适应内容",en:"Fit to content"},"ckchrome.snap":{zh:"点阵吸附",en:"Snap to grid"},"ckchrome.snapOff":{zh:"关闭点阵吸附",en:"Turn off snap to grid"},"ckchrome.snapOn":{zh:"开启点阵吸附",en:"Turn on snap to grid"},"ckchrome.miniHide":{zh:"隐藏缩略图",en:"Hide minimap"},"ckchrome.miniShow":{zh:"显示缩略图",en:"Show minimap"}});function Q({zoom:e,onZoomBy:n,onFit:m,snap:u,onSnap:i,mini:x,onMini:d,extra:y}){const{t:c}=P();return r.jsxs("div",{className:"amx-stage-hud",children:[r.jsx("button",{type:"button",onClick:()=>n(1/1.2),title:c("ckchrome.zoomOut"),children:r.jsx(E,{size:12})}),r.jsx("button",{type:"button",className:"amx-hud-zoom",onClick:()=>n(1/e),title:c("ckchrome.zoomReset"),children:r.jsxs("span",{children:[Math.round(e*100),"%"]})}),r.jsx("button",{type:"button",onClick:()=>n(1.2),title:c("ckchrome.zoomIn"),children:r.jsx(T,{size:12})}),r.jsx("button",{type:"button",onClick:m,title:c("ckchrome.fit"),children:r.jsx($,{size:12})}),y,i&&r.jsx("button",{type:"button",className:`amx-snap-toggle${u?" is-on":""}`,"aria-pressed":!!u,"aria-label":c("ckchrome.snap"),title:c(u?"ckchrome.snapOff":"ckchrome.snapOn"),onClick:()=>i(!u),children:r.jsx(X,{size:12})}),r.jsx("button",{type:"button",className:x?"is-on":"","aria-pressed":x,title:c(x?"ckchrome.miniHide":"ckchrome.miniShow"),onClick:()=>d(!x),children:r.jsx(b,{size:12})})]})}export{K as C,b as M,Q as a,J as r};