@forsion/unit 2.13.4 → 2.13.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/main.mjs +129 -10
- package/package.json +1 -1
- package/release.json +6 -5
- package/web/assets/ArtificialView-DHqb9CTL.js +1 -0
- package/web/assets/AutomationBuilder-CzBKmOiw.js +1 -0
- package/web/assets/CalendarConfigView-Blw47NCs.js +1 -0
- package/web/assets/CalendarSide-CFSzme3H.js +1 -0
- package/web/assets/CalendarView-B8sQfgZt.js +3 -0
- package/web/assets/CalendarView-t91KpUG7.css +1 -0
- package/web/assets/CapabilityMenu-Dzn6RbB1.js +1 -0
- package/web/assets/Chrome-owLewFu4.js +1 -0
- package/web/assets/{CodeView-GZ0BAgoW.js → CodeView-E18NDilX.js} +3 -3
- package/web/assets/CtxMenuButtons-CAiwQkOK.js +1 -0
- package/web/assets/DashboardGridView-CBbYKcCo.js +25 -0
- package/web/assets/DashboardGridView-RoVFSkNO.css +1 -0
- package/web/assets/EventCard-D9uQe7g4.js +1 -0
- package/web/assets/ExcalidrawCanvas-BSOERegJ.js +1 -0
- package/web/assets/ExcalidrawCanvas-BgcFPMpU.css +1 -0
- package/web/assets/FloatingToc-iK08Qpjc.js +1 -0
- package/web/assets/{GitCloneDialog-Bj9G3o-n.css → GitCloneDialog-DOxZk2K0.css} +1 -1
- package/web/assets/GitCloneDialog-DfY0kqhP.js +1 -0
- package/web/assets/HomepageView-BCqFe1Ym.js +4 -0
- package/web/assets/HomepageView-Bx8FbWlY.css +1 -0
- package/web/assets/ImageStudioPanels-DdwihAkT.js +3 -0
- package/web/assets/ImageStudioView-gJSYrmu1.js +1 -0
- package/web/assets/InlineAiPanel-CjYOW0_0.js +1 -0
- package/web/assets/InlineFiles-3g2jMUeA.js +1 -0
- package/web/assets/{MarkdownBlock-DQTuoen3.css → MarkdownBlock-Cqfk5DhC.css} +1 -1
- package/web/assets/MarkdownBlock-DjsGkPZ_.js +58 -0
- package/web/assets/{ModelPill-CzdNh7Mt.css → ModelPill-BiUsuhy3.css} +1 -1
- package/web/assets/ModelPill-DgyXBsL9.js +2 -0
- package/web/assets/MuseLibraryView-D_HBijmU.js +2 -0
- package/web/assets/MuseView-BVDlmM6i.js +7 -0
- package/web/assets/{PageHistoryPanel-Bn4-XmdK.js → PageHistoryPanel-B1EAPZeX.js} +2 -2
- package/web/assets/{PdfAnnotator-Cq8cklTz.js → PdfAnnotator-bdB9evsY.js} +3 -3
- package/web/assets/PenRow-DCOIGlfY.js +1 -0
- package/web/assets/PluginToolCard-BXE5vA1h.js +2 -0
- package/web/assets/PluginToolCard-BmTRr5JT.css +1 -0
- package/web/assets/ProductView-l5Q7uBy6.js +1 -0
- package/web/assets/SettingsPage-fjxfS_Mt.js +3 -0
- package/web/assets/StudioGuestSurface-360CWUwf.js +1 -0
- package/web/assets/TodoListView-BsPt2GUU.js +1 -0
- package/web/assets/Tooltip-CuXpWtdJ.js +1 -0
- package/web/assets/UnifiedPage-6xbFLtXT.js +712 -0
- package/web/assets/UnifiedPage-CTmQpf2T.css +1 -0
- package/web/assets/{ViewSelectionBar-35x8TiLA.js → ViewSelectionBar-C5FDh7fO.js} +2 -2
- package/web/assets/appStore-BskcSDl6.js +455 -0
- package/web/assets/appStore-iy8_Tmac.css +1 -0
- package/web/assets/arrow-up-right-DEykpgsH.js +1 -0
- package/web/assets/{artificial-BzLFkChP.css → artificial-BubVxExB.css} +1 -1
- package/web/assets/astryxBridge-B2IZdPvo.js +69 -0
- package/web/assets/astryxBridge-djzCiy4v.css +1 -0
- package/web/assets/automationListSource-Cm09JKkK.js +1 -0
- package/web/assets/boardSurface-Dv-aVaUJ.js +1 -0
- package/web/assets/calendarNavStore-FKStA7Hh.js +1 -0
- package/web/assets/canvasPrefs-CMulOS0k.js +1 -0
- package/web/assets/chatBoxSurface-BR_G6cxG.js +1 -0
- package/web/assets/chevron-up-C_EDOZzI.js +1 -0
- package/web/assets/{client-CaivGZFR.js → client-DD5czSuF.js} +5 -5
- package/web/assets/code-xml-vTB4LtTf.js +1 -0
- package/web/assets/{codeStudioStore-DhyMazGT.js → codeStudioStore-OswE1_s0.js} +8 -8
- package/web/assets/codingNavigation-BrkLENBZ.css +1 -0
- package/web/assets/contextMenuSurface-DqdYEGuH.js +1 -0
- package/web/assets/copy-plus-CVHqDNny.js +1 -0
- package/web/assets/create-DZWy4zBR.js +14 -0
- package/web/assets/dashboardSurface-Co4byEQm.js +1 -0
- package/web/assets/dbStore-Bc2lC8ZI.js +2 -0
- package/web/assets/deskCapture-BfTzH2aO.js +1 -0
- package/web/assets/{diff2html-Daje9Kkm.js → diff2html-0MkNy2ws.js} +2 -2
- package/web/assets/{docx-preview-CABR7n30.js → docx-preview-CwNWZegI.js} +1 -1
- package/web/assets/draft-DTzuTatQ.js +2 -0
- package/web/assets/drawingStore-BD5m2eqn.js +7 -0
- package/web/assets/file-down-Cjo_T6By.js +1 -0
- package/web/assets/floatingTocSurface-D3IIVNnq.js +1 -0
- package/web/assets/foldActions-utwZpRrA.js +1 -0
- package/web/assets/folder-DiaFWdCg.js +1 -0
- package/web/assets/folder-minus-DUEOcs12.js +1 -0
- package/web/assets/folder-plus-Cmhq0GcR.js +1 -0
- package/web/assets/gestures-Bx9M0le5.js +1 -0
- package/web/assets/git-branch-DzGWffyD.js +1 -0
- package/web/assets/homeCardStatus-NAk4A77P.js +1 -0
- package/web/assets/i18n-CAf4PT1o.css +1 -0
- package/web/assets/i18n.generated-D4-Wu9Wh.js +15 -0
- package/web/assets/imageStudio-CwG21Bat.css +1 -0
- package/web/assets/imageStudio-D67oElIb.js +4 -0
- package/web/assets/index-3VWZ1rsL.js +13 -0
- package/web/assets/index-58wBjkHy.js +3 -0
- package/web/assets/index-B9_zH7f5.js +1 -0
- package/web/assets/index-BQrMYjou.js +1 -0
- package/web/assets/index-BWrWMYua.js +1 -0
- package/web/assets/index-BdLJBf4-.js +1 -0
- package/web/assets/index-Bf3W92Hb.js +1 -0
- package/web/assets/index-BjmPaLFA.js +1 -0
- package/web/assets/index-Bv-vJTzF.js +7 -0
- package/web/assets/index-C7yb62gg.js +1 -0
- package/web/assets/index-C9gBBMYv.js +1 -0
- package/web/assets/index-CiQ59Kib.js +1 -0
- package/web/assets/{index-gt5JBIFf.js → index-CzTUjEMt.js} +2 -2
- package/web/assets/index-D4Qx6o3E.js +1 -0
- package/web/assets/index-DDBcn3UD.js +1 -0
- package/web/assets/index-DEADY94l.js +1 -0
- package/web/assets/index-DGTKsPAQ.js +1 -0
- package/web/assets/index-DRwDqvjf.js +1 -0
- package/web/assets/{index-BGfvNj7R.js → index-DexVkoxH.js} +2 -2
- package/web/assets/{index-O05r2Ty6.js → index-IMOhRWY8.js} +1 -1
- package/web/assets/index-XjvpYHIo.js +1 -0
- package/web/assets/index-YuejkHoJ.js +3412 -0
- package/web/assets/index-pH0266gX.js +1 -0
- package/web/assets/index-sQl_bGM_.js +1 -0
- package/web/assets/index-vbNFy5lS.js +1 -0
- package/web/assets/{invitePage-Bgveo6Hj.js → invitePage-BT_rFfab.js} +1 -1
- package/web/assets/{ipc-B6hkgxQL.js → ipc-8cxXGSZK.js} +1 -1
- package/web/assets/{jszip.min-eU-k-vEy.js → jszip.min-By4OI3XR.js} +1 -1
- package/web/assets/launchpad-BX4jQyF4.js +2 -0
- package/web/assets/launchpad-C9U9hpWJ.css +1 -0
- package/web/assets/layout-grid-CzxXbCDa.js +1 -0
- package/web/assets/linkFollow-J2c0wSgB.js +8 -0
- package/web/assets/{listFold-M8s5JYEC.js → listFold-B_2Xqxn_.js} +1 -1
- package/web/assets/lock-open-DVWCLSZm.js +1 -0
- package/web/assets/log-out-CdKTS7HC.js +1 -0
- package/web/assets/magnet-BmVcZ9U4.js +1 -0
- package/web/assets/main-BlVApHpj.css +1 -0
- package/web/assets/main-CForzSFD.js +15 -0
- package/web/assets/markdownEditorSurface-BiDH0__r.css +1 -0
- package/web/assets/markdownEditorSurface-Bs8FJNHu.js +3 -0
- package/web/assets/mediaPlayer-O9pVRl_k.js +1 -0
- package/web/assets/message-square-plus-CspBv9iG.js +1 -0
- package/web/assets/{messages-CKtabOqy.js → messages-CG7ywZ-K.js} +1 -1
- package/web/assets/minimize-2-Bq4vUin-.js +1 -0
- package/web/assets/mobileEntry-6u7TYC4s.css +1 -0
- package/web/assets/mobileEntry-CptXQ4Ov.js +13 -0
- package/web/assets/modelPickerSurface-C0SkjaPL.js +1 -0
- package/web/assets/nativeDownload-DlnT8U-y.js +1 -0
- package/web/assets/nativeSheetMenu-CVC51DzC.js +1 -0
- package/web/assets/pageStore-BC6Z18n7.css +1 -0
- package/web/assets/pageStore-D_fKLv-o.js +13 -0
- package/web/assets/{pageTree-BYYPgZm_.js → pageTree-DtDKozTg.js} +3 -3
- package/web/assets/pen-line-ho1GgAe2.js +1 -0
- package/web/assets/pen-tool-CV-FKFEZ.js +1 -0
- package/web/assets/pencil-BgF4Kiqp.js +1 -0
- package/web/assets/phoneList-BLVdQcXY.js +1 -0
- package/web/assets/phoneList-BpLxxdq6.css +1 -0
- package/web/assets/pluginChat-C6t6DWhY.js +2 -0
- package/web/assets/react-DOzedx9n.js +1 -0
- package/web/assets/recordSurface-C9SRNjy4.js +1 -0
- package/web/assets/redo-2-DWZTaEz-.js +1 -0
- package/web/assets/rotate-ccw-CyZpL7MX.js +1 -0
- package/web/assets/selectionActions-C2a8ImJm.js +2 -0
- package/web/assets/selectionBarSurface-DaXlyy1s.js +1 -0
- package/web/assets/sessionTitle-BtZ1BteL.js +1 -0
- package/web/assets/settingsPageSurface-Cg8FNZq3.js +1 -0
- package/web/assets/sharePage-vnghra3Q.js +2 -0
- package/web/assets/{shareViewer-BiMqIBxP.js → shareViewer-CWJQHiV-.js} +2 -2
- package/web/assets/star-ZEpUQwnX.js +1 -0
- package/web/assets/tableSurface-DfEdzVDn.js +1 -0
- package/web/assets/tanguProbe-BboOas-a.js +6 -0
- package/web/assets/{terminalView-lbcBgG0c.js → terminalView-xp8ARBLi.js} +3 -3
- package/web/assets/type-CMyP4cKt.js +1 -0
- package/web/assets/undo-2-C4ZCsMsx.js +1 -0
- package/web/assets/{unitAccount-DGwGsmC3.js → unitAccount-DNxfGo3c.js} +1 -1
- package/web/assets/{unitBridge-CE2yAvm0.js → unitBridge-Bq0n1ZM6.js} +1 -1
- package/web/assets/{unitCloudTransport-BGFwkaDM.js → unitCloudTransport-CErylgEO.js} +1 -1
- package/web/assets/unitOwnerAccess-7s-3dfNM.js +1 -0
- package/web/assets/unitShim-BfheyIG8.js +5 -0
- package/web/assets/upload-VtCrluEO.js +1 -0
- package/web/assets/userSpaces-BpeYjLni.js +1 -0
- package/web/assets/viewportLock-B0l1GU_k.css +1 -0
- package/web/assets/viewportLock-cVUalJAI.js +738 -0
- package/web/assets/zoom-in-C7R8s9x-.js +1 -0
- package/web/excalidraw/excalidraw.js +4 -2
- package/web/index.html +12 -13
- package/web/assets/ArtificialView-DLh75dAI.js +0 -1
- package/web/assets/AutomationBuilder-DNWWGnFr.js +0 -1
- package/web/assets/CalendarConfigView-G7je7k9-.js +0 -1
- package/web/assets/CalendarView-B2MtaOJk.js +0 -1
- package/web/assets/CapabilityMenu-DJaZ_Cyt.js +0 -1
- package/web/assets/CheckboxInput-FYXLaZke.js +0 -1
- package/web/assets/Chrome-CFonajM4.js +0 -1
- package/web/assets/DashboardGridView-D9s9pez_.css +0 -1
- package/web/assets/DashboardGridView-Xgw4wa0_.js +0 -17
- package/web/assets/EventCard-_39F_I5M.js +0 -1
- package/web/assets/ExcalidrawCanvas-4uYrLYin.css +0 -1
- package/web/assets/ExcalidrawCanvas-rXujil36.js +0 -1
- package/web/assets/FloatingToc-DNqAkkI0.js +0 -1
- package/web/assets/GitCloneDialog-CQx-O4j1.js +0 -1
- package/web/assets/HomepageView-DcWmTPQO.css +0 -1
- package/web/assets/HomepageView-MYEk3RCs.js +0 -3
- package/web/assets/ImageStudioPanels-4wnb2XF4.js +0 -3
- package/web/assets/ImageStudioView-qrmW8pfx.js +0 -1
- package/web/assets/InlineAiPanel-B3kd1ob2.js +0 -1
- package/web/assets/InlineFiles-Clnqh9jD.js +0 -1
- package/web/assets/MarkdownBlock-DT_wsaja.js +0 -58
- package/web/assets/ModelPill-JaIH3ffZ.js +0 -2
- package/web/assets/MuseLibraryView-DOJVVeU6.js +0 -2
- package/web/assets/MuseView-uxTmjVQa.js +0 -6
- package/web/assets/PenRow-COOYAaxx.js +0 -1
- package/web/assets/ProductView-DPTveulg.js +0 -1
- package/web/assets/RightPanel-BJUacrsf.js +0 -4
- package/web/assets/RightPanel-D0zk1g3I.css +0 -1
- package/web/assets/SketchCard-B_UU5sxV.js +0 -641
- package/web/assets/StudioGuestSurface-yBa4QKfX.js +0 -1
- package/web/assets/TargetHealthNotice-BLzDB-Xl.css +0 -1
- package/web/assets/TargetHealthNotice-CgkdTdhB.js +0 -47
- package/web/assets/TodoListView-CricdCfW.js +0 -1
- package/web/assets/Tooltip-o8ZqIb3L.js +0 -1
- package/web/assets/UnifiedPage-BWAyqj65.js +0 -69
- package/web/assets/UnifiedPage-CWXc_mo1.css +0 -1
- package/web/assets/appStore-CI1_L5OS.js +0 -3357
- package/web/assets/appStore-DQc2marq.css +0 -1
- package/web/assets/approvalText-Cy2UAUAQ.js +0 -2
- package/web/assets/arrow-up-right-BDsMFoNQ.js +0 -1
- package/web/assets/astryxBridge-CF_hpqC2.css +0 -1
- package/web/assets/astryxBridge-CH_c5xjo.js +0 -70
- package/web/assets/automationListSource-CB6AWkL_.js +0 -1
- package/web/assets/boardSurface-CLvEUjbF.js +0 -1
- package/web/assets/book-open-BLzEdGfu.js +0 -1
- package/web/assets/calendarNavStore-BHUNxDx8.js +0 -1
- package/web/assets/canvasPrefs-CvE7mgyq.js +0 -1
- package/web/assets/chatBoxSurface-CuuHLzs5.js +0 -1
- package/web/assets/circle-question-mark-BM4ZRxQS.js +0 -1
- package/web/assets/circle-x-DTcNGZDT.js +0 -1
- package/web/assets/code-xml-AE3mT4T5.js +0 -1
- package/web/assets/codingNavigation-B0kVsy4x.js +0 -53
- package/web/assets/codingNavigation-DHCidM4N.css +0 -1
- package/web/assets/create-1JI2I47p.js +0 -14
- package/web/assets/dashboardSurface-CIE5HybN.js +0 -1
- package/web/assets/deskCapture-COW7aG5Y.js +0 -1
- package/web/assets/emoji-DZ9CA_3l.css +0 -1
- package/web/assets/emoji-DphwSxPx.js +0 -1
- package/web/assets/floatingTocSurface-BOm2QYBK.js +0 -1
- package/web/assets/foldActions-DNbJPlPl.js +0 -1
- package/web/assets/folder-DotgUhYD.js +0 -1
- package/web/assets/folder-plus-aJgL9NeP.js +0 -1
- package/web/assets/gestures-dqncPOwo.js +0 -1
- package/web/assets/git-branch-CwR2qic6.js +0 -1
- package/web/assets/hack2gate-dark-Dx2RtDRI.jpg +0 -0
- package/web/assets/hack2gate-light-DRKq9tyS.jpg +0 -0
- package/web/assets/hand-XNkzNiW2.js +0 -1
- package/web/assets/hard-drive-CfWKRoAE.js +0 -1
- package/web/assets/i18n-CykmULlm.css +0 -1
- package/web/assets/i18n.generated-BwynSSMk.js +0 -15
- package/web/assets/imageStudio-CWgLpC_d.js +0 -2
- package/web/assets/imageStudio-DZ0qGU2s.css +0 -1
- package/web/assets/index-B65ULikK.js +0 -1
- package/web/assets/index-BIIeiIap.js +0 -1
- package/web/assets/index-BOzsniE1.js +0 -297
- package/web/assets/index-BfrjVzia.js +0 -13
- package/web/assets/index-Bi9UtjVz.js +0 -1
- package/web/assets/index-C1uilc9i.js +0 -1
- package/web/assets/index-C3Dc3Ivz.js +0 -1
- package/web/assets/index-CJF_Ld1Y.js +0 -1
- package/web/assets/index-CMARP4oV.js +0 -1
- package/web/assets/index-C_RsQVNm.js +0 -7
- package/web/assets/index-ChyxZMm8.js +0 -1
- package/web/assets/index-CoKcOaZg.js +0 -1
- package/web/assets/index-CuviSCbk.js +0 -1
- package/web/assets/index-Cw43kua8.js +0 -1
- package/web/assets/index-D1fu6XQN.js +0 -3
- package/web/assets/index-DG-hXb63.js +0 -1
- package/web/assets/index-DjnTfJpN.js +0 -1
- package/web/assets/index-Dtw0abst.js +0 -1
- package/web/assets/index-W3ErfZiX.js +0 -1
- package/web/assets/index-Yc56b3XX.js +0 -1
- package/web/assets/index-d4jCdYJH.js +0 -1
- package/web/assets/index-siHtlYTM.js +0 -1
- package/web/assets/launchpad-C2c1MSVX.css +0 -1
- package/web/assets/layout-grid-CraV7nhh.js +0 -1
- package/web/assets/linkFollow-BpvDWzUx.js +0 -8
- package/web/assets/list-tree-cLJw-jYQ.js +0 -1
- package/web/assets/lock-DBkXXwaI.js +0 -1
- package/web/assets/lock-open-C-9-AWct.js +0 -1
- package/web/assets/log-out-C8bDXj9P.js +0 -1
- package/web/assets/main-BiS_5wrB.css +0 -1
- package/web/assets/main-CMk6twzA.js +0 -20
- package/web/assets/markdownEditorSurface-Bql20IAf.css +0 -1
- package/web/assets/markdownEditorSurface-DgQ0TUWH.js +0 -3
- package/web/assets/message-square-plus-8pfimvem.js +0 -1
- package/web/assets/minus-CfA9fAN3.js +0 -1
- package/web/assets/mobileEntry-DS1vohuL.css +0 -1
- package/web/assets/mobileEntry-NcMcK0LV.js +0 -13
- package/web/assets/nativeDownload-CNtwSCy0.js +0 -1
- package/web/assets/pageChrome-BR4cfIaA.js +0 -1
- package/web/assets/pageChrome-BbUhILy0.css +0 -1
- package/web/assets/pen-tool-C5ftHCnm.js +0 -1
- package/web/assets/pencil-ehhM9_9k.js +0 -1
- package/web/assets/phoneList-B6gwUJZF.js +0 -9
- package/web/assets/phoneList-iRdfiKA8.css +0 -1
- package/web/assets/pluginChat-DTTWWiUS.js +0 -2
- package/web/assets/redo-2-DCEAgQlN.js +0 -1
- package/web/assets/rotate-ccw-DdkrbRAB.js +0 -1
- package/web/assets/selectionActions-BQD2kox1.js +0 -2
- package/web/assets/selectionBarSurface-CzUZmJDJ.js +0 -1
- package/web/assets/server-Ddu9f1k3.js +0 -1
- package/web/assets/sharePage-CNrm2xTC.js +0 -2
- package/web/assets/star-Dxv7XANS.js +0 -1
- package/web/assets/tableSurface-Bly1iCXc.js +0 -1
- package/web/assets/terminal-CAmmC9cV.js +0 -1
- package/web/assets/type-Dz6rnTvG.js +0 -1
- package/web/assets/undo-2-B7izWNb_.js +0 -1
- package/web/assets/unitOwnerAccess-D4nKS6Gg.js +0 -1
- package/web/assets/unitShim-2_2hhGxS.js +0 -5
- package/web/assets/upload-DqpRRAhG.js +0 -1
- package/web/assets/userSpaces-VFu4s05v.js +0 -1
- package/web/assets/viewportLock-3AOdDmwi.js +0 -631
- package/web/assets/viewportLock-djvL8fUQ.css +0 -1
- package/web/assets/zoom-in-Bf-eKTnH.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as o,j as e,u as pe}from"./index-YuejkHoJ.js";import{os as le,aW as Ze,jw as Je,js as Qe,ir as et,jz as tt,ot as at,g as nt,ab as it,ou as lt,ov as $e,ow as Ae,dg as Fe,ox as De,ha as be,oy as st,aQ as xe,oz as ot,oA as rt,aO as ut,aP as dt,D as ct,W as mt,ik as ht,oB as bt,oC as xt,oD as pt,oE as vt,u as jt}from"./appStore-BskcSDl6.js";import{p as gt,T as ft,b7 as yt,bv as Nt,aj as _t,ba as Ct,b9 as kt,u as wt,Z as Re,q as ze,a6 as St,am as Et,B as Pt,D as $t,as as Ft}from"./pageStore-D_fKLv-o.js";import{u as ie,h as Dt}from"./dbStore-Bc2lC8ZI.js";import{C as Rt}from"./CapabilityMenu-Dzn6RbB1.js";import{u as zt}from"./gestures-Bx9M0le5.js";import{a as Tt,C as Mt}from"./Chrome-owLewFu4.js";import{d as At,e as It,f as qt,g as Ht}from"./canvasPrefs-CMulOS0k.js";import{R as Wt}from"./rotate-ccw-CyZpL7MX.js";import"./messages-CG7ywZ-K.js";const Vt=[["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=gt("circle-question-mark",Vt);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?ft.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 Te(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}),Gt=({nodes:i,selected:c,onSelect:b,children:C})=>{const{t:h}=pe(),j=o.useId().replace(/:/g,""),a=o.useRef(null),[k,v]=o.useState({}),[f,$]=o.useState(At),[A,F]=o.useState(It),x=yt(a),m=new Map(i.map((n,s)=>[n.id,k[n.id]||Kt(s)])),P=i.map(n=>n.id).join(","),p=zt(a,x,{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(()=>p.bind(a.current),[p.bind]),o.useEffect(()=>x.bindWheel(a.current),[x.bindWheel]);const R=o.useRef(()=>x.fitTo([...m.values()],64));R.current=()=>x.fitTo([...m.values()],64),o.useEffect(()=>{v({});const n=requestAnimationFrame(()=>R.current());return()=>cancelAnimationFrame(n)},[P]),o.useEffect(()=>{const n=new ResizeObserver(()=>R.current());return a.current&&n.observe(a.current),()=>n.disconnect()},[]);const I=n=>p.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(p.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:Nt(x.vp)}),e.jsxs("div",{className:"auto-canvas-world",style:{transform:`translate(${x.vp.x}px, ${x.vp.y}px) scale(${x.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=I(i[s].id),w=I(n.id),q=y.x+y.w/2,H=y.y+y.h,Y=w.x+w.w/2,V=w.y;return e.jsx("path",{d:`M${q},${H} C${q},${H+28} ${Y},${V-28} ${Y},${V}`,markerEnd:`url(#${j})`},n.id)})]}),i.map(n=>{const s=I(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(_t,{size:13}):e.jsx(Ze,{size:13})}),e.jsx("span",{className:"auto-flow-subtitle",children:n.subtitle})]},n.id)}),p.marquee&&e.jsx("div",{className:"amx-stage-marquee",style:{left:p.marquee.x,top:p.marquee.y,width:p.marquee.w,height:p.marquee.h}})]}),C&&e.jsx("div",{className:"amx-stage-tools auto-canvas-tools",children:C}),e.jsx(Tt,{zoom:x.vp.z,onZoomBy:n=>{const{w:s,h:y}=Ct(a.current);x.setVp(kt(x.vp,x.vp.z*n,s/2,y/2))},onFit:()=>R.current(),snap:f,onSnap:n=>{$(n),Ht(n)},mini:A,onMini:n=>{F(n),qt(n)},extra:e.jsx("button",{type:"button",title:h("automation.ux.arrange"),onClick:()=>{v({}),requestAnimationFrame(()=>R.current())},children:e.jsx(Wt,{size:12})})}),A&&e.jsx(Mt,{hostRef:a,vp:x.vp,items:i.map(n=>({key:n.id,kind:"card",box:I(n.id)})),onCenter:x.centerOn})]})})},Me=({label:i,value:c,onChange:b,multiline:C,maxLength:h=4e3,placeholder:j,columns:a,hasRow:k})=>{const{t:v}=pe(),f=o.useId(),$=o.useRef(null),A=o.useRef({start:c.length,end:c.length}),F=m=>{if(!m)return;const{start:P,end:p}=A.current;c.length-(p-P)+m.length>h||(b(c.slice(0,P)+m+c.slice(p)),requestAnimationFrame(()=>{$.current?.focus(),$.current?.setSelectionRange(P+m.length,P+m.length)}))},x={id:f,ref:$,value:c,maxLength:h,placeholder:j,onChange:m=>b(m.target.value),onSelect:m=>{A.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",{...x}):e.jsx("input",{type:"text",...x})]})};function Xt(){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 Yt=({editing:i,starter:c,fixedManual:b,onSaved:C,onCancel:h,extendView:j})=>{const{t:a}=pe(),k=Je(),v=Qe(),f=v.actionsCatalog,[$,A]=o.useState(i?.desc||(c?a(`automation.ux.${c}.name`):"")),[F,x]=o.useState("trigger"),[m,P]=o.useState(!1),p=t=>{x(t),P(!0)},[R,I]=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,Y]=o.useState(n?.type==="daily_at"?n.time:"09:00"),V=!!i&&et(i),[Z,Ie]=o.useState(n?.type==="at"&&!V?n.datetime.replace(" ","T"):Xt()),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,We]=o.useState(n?.type==="event_seen"?n.match:""),[oe,Ve]=o.useState(n?.type==="file_chars_gte"?n.path:""),[re,Le]=o.useState(n?.type==="file_chars_gte"?String(n.n):"100"),[D,Oe]=o.useState(n?.type==="db_changed"?n.path:""),[T,je]=o.useState(n?.type==="db_changed"?n.event:"row_added"),[W,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=wt(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"&&D?t.entries[D]?.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[G,ke]=o.useState(!1),[we,ae]=o.useState(""),Ke=t=>{if(S.length>=24)return;const d=le(t);te(r=>[...r,d]),p(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(Ae(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(D.trim())||T==="cell_changed"&&!W.length||L.length>De||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=Te(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,Ge=async()=>{if(!ne||G)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"?[D.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 xt(Dt(),{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"?D.trim():void 0,n:t==="file_chars_gte"?Number(re):void 0,event:t==="db_changed"?T:void 0,column_id:t==="db_changed"&&T==="cell_changed"?W[0]:void 0,column_ids:t==="db_changed"&&T==="cell_changed"&&W.length>1?W:void 0,equals:t==="db_changed"&&T==="cell_changed"&&ue.trim()?ue.trim():void 0,where:t==="db_changed"?vt(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:pt(s,K),actions:S.length?l:null,enabled:R});if(i?.id||Ft("automation.create"),C){v.bump(),C(u);return}v.acceptSaved(u),jt.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(Pt,{size:14}):t==="db_row_add"||t==="db_row_edit"?e.jsx($t,{size:14}):e.jsx(mt,{size:14}),Xe=[{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(Re,{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:!Te(t,s,f)})),...!S.length&&i&&s!=="manual"?[{id:"muse",title:a("automation.builder.museFallback"),subtitle:me||a("automation.builder.museFallbackHint"),icon:e.jsx(ze,{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}],Ye=e.jsxs(e.Fragment,{children:[e.jsxs(Rt,{label:a("automation.ux.addStep"),className:"btn ghost sm",disabled:G||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(St,{size:14}),a("automation.ux.addStep")]}),e.jsx("button",{className:"icon-btn",title:a("automation.ux.help"),onClick:()=>p("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:G,onClick:()=>h?h():v.closeBuilder(),children:a("common.cancel")})]}),e.jsx("div",{className:"auto-builder-workspace",hidden:!j&&m,children:e.jsx(Gt,{nodes:Xe,selected:m?F:"",onSelect:p,children:Ye})}),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(Et,{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(Re,{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=>A(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:D,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)),D&&!ee.includes(D)&&e.jsx("option",{value:D,children:D})]})]}),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:T==="row_added"?"active":"",onClick:()=>je("row_added"),children:a("automation.builder.dbEventRow")}),e.jsx("button",{className:T==="cell_changed"?"active":"",onClick:()=>je("cell_changed"),children:a("automation.builder.dbEventCell")})]})]}),T==="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:W.includes(t.id),onChange:d=>fe(t.id,d.target.checked)}),t.name]},t.id)),W.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(xe,{size:12})})]},d)),e.jsx("button",{className:"icon-btn",title:a("automation.builder.dbWhereAdd"),disabled:L.length>=De,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=>Y(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=>Ie(t.target.value)}),e.jsx("div",{className:"auto-hint",children:a(V?"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=>We(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=>Ve(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)),p("trigger")},children:e.jsx(xe,{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,z)=>z===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,z)=>z===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(xe,{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?" *":""}`,z=t.argValues[l]||"",X=_=>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:z,onChange:_=>X(_.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:z==="true",onChange:_=>X(_.target.checked?"true":"false")})," ",u.description||""]}):u.type==="number"?e.jsx("input",{type:"number",value:z,onChange:_=>X(_.target.value)}):u.type==="string"?e.jsx("textarea",{rows:2,value:z,placeholder:u.description||"",onChange:_=>X(_.target.value)}):e.jsx("textarea",{rows:2,value:z,placeholder:`JSON — ${u.description||""}`,onChange:_=>X(_.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(ze,{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:R,onChange:t=>I(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:()=>p(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:()=>p(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:()=>p("review"),children:a("automation.ux.review")}),e.jsx("button",{className:"btn sm",disabled:!ne||G,onClick:()=>{Ge()},children:G?"…":a(R?"automation.ux.saveEnabled":"automation.ux.savePaused")})]})]})},ra=Object.freeze(Object.defineProperty({__proto__:null,AutomationBuilder:Yt,hasUnsupportedParts:Ae},Symbol.toStringTag,{value:"Module"}));export{Ot as A,Lt as C,oa as S,Yt as a,ra as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e,u as O,r as m,a as ea}from"./index-YuejkHoJ.js";import{l as sa,aH as na,aA as ta,u as ca,a6 as la,X as G,D as _}from"./pageStore-D_fKLv-o.js";import"./client-DD5czSuF.js";import{A as oa}from"./astryxBridge-B2IZdPvo.js";import{pY as ra,eI as W,pZ as ia,p$ as da,pM as ma,qv as ua,qa as E,qe as ha,pW as fa,q0 as pa,pF as ga,pO as xa,pP as ba,pQ as ja,qw as v,pG as y,pH as va,pJ as Na,q4 as Ca,G as wa,e_ as F,ex as Da,qx as J,qy as ya,qz as Y,qA as Ma,qB as ka,ko as za,S as Sa}from"./appStore-BskcSDl6.js";import{u as qa}from"./dbStore-Bc2lC8ZI.js";import{u as I}from"./calendarNavStore-FKStA7Hh.js";import{U as Aa}from"./upload-VtCrluEO.js";import"./react-DOzedx9n.js";import"./ipc-8cxXGSZK.js";import"./nativeDownload-DlnT8U-y.js";import"./drawingStore-BD5m2eqn.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 Ja(){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}=O(),o=sa(n=>(n.mainTabs,((n.api?na(n.api):null)?.params??{}).__type==="calendar")),f=I(n=>n.visibleStart),p=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&&p){const n=W(f),i=ia(n,Math.floor(da(W(p),n)/2));d(T(i))}},[o,f,p]);const C=ma(),g=m.useMemo(()=>ua(u),[u,C]),w=E(x,!0),c=n=>{if(!o||!f||!p)return!1;const i=E(n,!0);return i>=f&&i<=p},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:pa().map(n=>e.jsx("span",{children:n},n))}),e.jsx("div",{className:"amx-mini-grid",children:g.map((n,i)=>{const j=n.getMonth()!==u.getMonth(),b=E(n,!0)===w,k=c(n),D=k?`${i%7===0||!c(g[i-1])?" band-start":""}${i%7===6||!g[i+1]||!c(g[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}=O(),o=ca(a=>a.vaultRoot)??"",f=ga(),p=xa(),N=ba(),x=ja(),u=v(a=>a.errors),d=y(a=>a.byVault),C=y(a=>a.setColor),g=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 U=m.useMemo(()=>new Set(f.map(a=>a.db.path)),[f]),L=[...f.map(a=>({db:a.db})),...p.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"}))],R=va(o,d),V=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),H=a=>u[S(a)],Q=()=>{F(s("calcfg.subscribeExternal"),"",{label:s("calcfg.subscribeHint")}).then(a=>{const l=a?.trim();l&&v.getState().add(l)})},X=()=>{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>Y){D(s("calcfg.fileTooLarge",{mb:Y/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()},K=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:K,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&&(R?R===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:()=>g(o,a.path)}),e.jsxs("span",{className:`amx-calcfg-name${P?"":" off"}`,title:H(a.path)||a.name,children:[a.name,r==="ics"&&H(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(_,{size:14})," ",s("calcfg.addDatabase")]}),e.jsxs("button",{className:"amx-db-opt",onClick:()=>{b(null),Q()},children:[e.jsx(wa,{size:14})," ",s("calcfg.subscribeExternal")]}),e.jsxs("button",{className:"amx-db-opt",onClick:()=>{b(null),X()},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:()=>V(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:U,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(J,{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:p}=O(),N=ka(),[x,u]=m.useState(""),[d,C]=m.useState(null),g=m.useMemo(()=>N.filter(c=>!s.has(c.path)&&c.columns.some(za)),[N,s]),w=x?g.filter(c=>c.name.toLowerCase().includes(x.toLowerCase())):g;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(J,{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:p("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(_,{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:p("calcfg.noCandidates")})]}),e.jsx("div",{className:"amx-qf-foot",children:p("calcfg.footHint")})]})})}export{Ja as CalendarConfigView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,j as i}from"./index-YuejkHoJ.js";import{TodoListView as s}from"./TodoListView-BsPt2GUU.js";import{u as o}from"./calendarNavStore-FKStA7Hh.js";import"./astryxBridge-B2IZdPvo.js";import"./appStore-BskcSDl6.js";import"./dbStore-Bc2lC8ZI.js";import"./pageStore-D_fKLv-o.js";import"./react-DOzedx9n.js";import"./client-DD5czSuF.js";import"./ipc-8cxXGSZK.js";import"./nativeDownload-DlnT8U-y.js";import"./drawingStore-BD5m2eqn.js";import"./draft-DTzuTatQ.js";import"./EventCard-D9uQe7g4.js";import"./chevron-up-C_EDOZzI.js";import"./Tooltip-CuXpWtdJ.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 Rt,r as u,j as r,a as re,t as Zt}from"./index-YuejkHoJ.js";import{p as Ue,am as Ve,F as _e,T as Ke,X as Ze,ad as Te,u as Re,h as Ge,aj as ze,R as rt,bt as Je,as as ue,br as Qe,aA as tn,a7 as en}from"./pageStore-D_fKLv-o.js";import"./client-DD5czSuF.js";import{A as ve}from"./astryxBridge-B2IZdPvo.js";import{aQ as nn,b4 as an,pC as sn,pD as rn,pE as me,pF as Ne,pG as Pe,pH as ee,pe as ln,ph as on,nH as Le,eI as et,pI as B,pJ as ye,pK as pt,pL as Ie,pM as cn,pN as we,pO as dn,pP as un,pQ as mn,pR as fn,pS as hn,pT as pn,pU as Gt,pV as be,pW as yn,pX as Lt,pY as Q,pZ as Ct,p_ as ie,p$ as It,q0 as gn,q1 as xn,q2 as Ae,q3 as At,q4 as vn,pd as wn,q5 as bn,q6 as kn,ps as Mn,q7 as He,q8 as ke,q9 as Dn,pi as Ye,qa as $t,qb as Me,qc as De,qd as Ce,pr as Cn,qe,qf as se,qg as En,qh as Jt}from"./appStore-BskcSDl6.js";import{u as v,H as Sn}from"./calendarNavStore-FKStA7Hh.js";import{c as jn,E as $n}from"./EventCard-D9uQe7g4.js";import{R as Tn}from"./redo-2-DWZTaEz-.js";import{U as Rn}from"./undo-2-C4ZCsMsx.js";import{C as zn,a as Nn}from"./copy-plus-CVHqDNny.js";import{n as Pn}from"./nativeDownload-DlnT8U-y.js";import{p as ne,d as fe,B as Qt,D as Ln,a as te,b as ae,T as de}from"./draft-DTzuTatQ.js";import{Z as In,a as An}from"./zoom-in-C7R8s9x-.js";import{R as Hn}from"./rotate-ccw-CyZpL7MX.js";import"./react-DOzedx9n.js";import"./dbStore-Bc2lC8ZI.js";import"./ipc-8cxXGSZK.js";import"./drawingStore-BD5m2eqn.js";import"./chevron-up-C_EDOZzI.js";const Yn=[["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"}]],qn=Ue("scissors",Yn);re({"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 On={copy:an,cut:qn,clone:Nn,paste:zn,delete:nn,undo:Rn,redo:Tn,summary:_e},Ee={copy:"C",cut:"X",clone:"D",paste:"V",undo:"Z",redo:"⇧Z",delete:"Del"};function Se({at:l,mobile:d,writable:h,note:p,hasClip:y,onRun:M,onClose:H,hasEvent:I=!0,canCut:O=!0}){const{t:z}=Rt(),P=u.useRef(null);u.useEffect(()=>{P.current?.querySelector("button:not([disabled])")?.focus();const x=j=>{P.current?.contains(j.target)||H()};return d||window.addEventListener("pointerdown",x),()=>window.removeEventListener("pointerdown",x)},[]);const C=I?h?["copy","cut","clone","paste","summary","delete","undo","redo"]:["summary"]:["paste","undo","redo"],V=r.jsxs("div",{ref:P,className:`amx-cal-eventmenu${d?" phone":""}`,role:"menu",onKeyDown:x=>{if(x.key==="Escape"||d&&x.key==="ArrowLeft"){x.preventDefault(),x.stopPropagation(),H();return}const j=Array.from(P.current?.querySelectorAll("button:not([disabled])")??[]);if(["ArrowDown","ArrowUp","Home","End"].includes(x.key)){x.preventDefault();const A=j.indexOf(document.activeElement),F=x.key==="Home"?0:x.key==="End"?j.length-1:(A+(x.key==="ArrowDown"?1:-1)+j.length)%j.length;j[F]?.focus()}},children:[d&&r.jsxs("button",{role:"menuitem",onClick:H,children:[r.jsx(Ve,{size:16}),z("calevmenu.back")]}),I&&(!h||p)&&r.jsx("p",{children:z(p?"calevmenu.note":"calevmenu.readonly")}),C.map(x=>{const j=On[x];return r.jsxs("button",{role:"menuitem","aria-label":z(`calevmenu.${x}`),className:x==="delete"?"danger":"",title:x==="cut"&&!O?z("calevmenu.fixedTime"):void 0,disabled:x==="cut"&&!O||x==="paste"&&!y||x==="undo"&&!sn()||x==="redo"&&!rn(),onClick:()=>M(x),children:[r.jsx(j,{size:16}),r.jsx("span",{children:z(`calevmenu.${x}`)}),!d&&Ee[x]&&r.jsx("kbd",{"aria-hidden":"true",children:x==="delete"?"Del":`${navigator.platform.includes("Mac")?"⌘":"Ctrl+"}${Ee[x]}`})]},x)})]});return d?V:Ke.createPortal(r.jsx(Ze,{x:l.x,y:l.y,className:"ctx-menu amx-cal-menu-position",children:V}),document.body)}re({"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 Bn=300,Fn=300;function Xn({rootRef:l,onPasted:d}){const{t:h}=Rt(),p=v(i=>i.draft),y=me(i=>i.clip),M=Te==="mobile"||!!window.tangu?.mobile,H=v(i=>i.draftApi),I=Ne(),O=Re(i=>i.vaultRoot)??"",z=Pe(i=>i.byVault),[P,C]=u.useState(null),V=p?`${p.day}|${p.endDay}|${p.startMin}|${p.endMin}`:"",x=()=>{(!p?.title.trim()||window.confirm(h("calside.discard")))&&H?.cancel()};if(Ge(M&&p?{mode:"page",title:h("calside.newEvent"),back:h("calside.cancel"),onBack:x}:null),u.useLayoutEffect(()=>{if(!M||!p)return;const i=b=>{b.preventDefault(),b.detail?.probe||x()};return window.addEventListener("forsion:mobile-back",i),()=>window.removeEventListener("forsion:mobile-back",i)},[M,p]),u.useLayoutEffect(()=>{if(!V||M){C(null);return}const i=()=>{const b=document.querySelector(".amx-cal-draft-input")?.closest(".amx-cal-draft"),S=b?.closest(".amx-cal-tscroll, .amx-cal-mscroll")?.getBoundingClientRect(),_=b?.getBoundingClientRect();if(!_||!S||_.bottom<S.top||_.top>S.bottom||_.right<S.left||_.left>S.right){C(null);return}C(jn({left:_.left,top:_.top,right:_.right,bottom:_.bottom,zoom:rt(b)||1},{w:Bn,h:Fn,maxRight:l.current?.getBoundingClientRect().right}))};return i(),window.addEventListener("scroll",i,!0),window.addEventListener("resize",i),()=>{window.removeEventListener("scroll",i,!0),window.removeEventListener("resize",i)}},[V,l]),!p||!P&&!M)return null;const j=I.filter(i=>!i.db.readonly),A=ne(I,p.dbPath,ee(O,z))?.db.path,F=ln(fe(p)),q=i=>{const b=v.getState().draft;b&&v.getState().setDraft({...b,dbPath:i})},Y=i=>i.preventDefault();return r.jsxs("section",{className:`amx-cal-cardwrap amx-cal-draftcard${M?" amx-cal-drawer":""}`,"data-kb-rise":M?"bar":void 0,style:M?void 0:P,role:"dialog","aria-modal":"false","aria-label":h("calside.newEvent"),onMouseDown:M?void 0:Y,onPointerDown:i=>i.stopPropagation(),children:[M?r.jsxs(r.Fragment,{children:[r.jsx("button",{className:"amx-cal-drawer-grab","aria-label":h("calside.cancel"),onClick:x,children:r.jsx("span",{})}),r.jsx("input",{className:"amx-cal-card-title",value:p.title,placeholder:h("calside.newEvent"),"aria-label":h("calside.newEvent"),onChange:i=>v.getState().setDraft({...p,title:i.target.value})}),r.jsx(on,{value:fe(p),onChange:i=>{const b=Le(i);if(!b)return;const S=et(b.start),_=b.end?et(b.end):B(S,30);v.getState().setDraft({...p,hasEnd:!!b.end,day:b.start.slice(0,10),endDay:(b.end??b.start).slice(0,10),startMin:b.allDay?null:S.getHours()*60+S.getMinutes(),endMin:b.allDay?0:(_.getTime()-et(b.start.slice(0,10)).getTime())/6e4})}})]}):r.jsx("div",{className:"amx-cal-draft-title",children:p.title||r.jsx("span",{className:"ph",children:h("calside.newEvent")})}),F&&r.jsxs("div",{className:"amx-cal-draft-time",children:[r.jsxs("span",{className:"amx-cal-card-timehead",children:[F.head,F.badge&&r.jsx("span",{className:"amx-cal-card-badge",children:F.badge})]}),F.date&&r.jsx("span",{className:"amx-cal-card-timesub",children:F.date})]}),r.jsx("div",{className:"amx-cal-draft-label",children:h("calside.calendar")}),r.jsx("div",{className:"amx-cal-draft-cals",children:j.map(i=>r.jsxs("button",{className:`amx-cal-draft-cal${i.db.path===A?" on":""}`,onMouseDown:Y,onClick:()=>q(i.db.path),children:[r.jsx("i",{style:{background:ye(O,z,i.db.path,I.indexOf(i))}}),r.jsx("span",{children:i.db.name}),i.db.path===A&&r.jsx(ze,{size:13})]},i.db.path))}),!M&&r.jsx("p",{className:"amx-cal-draft-hint",children:h("calside.hint")}),M&&y&&r.jsx("button",{onClick:()=>{if(p.title.trim()&&!window.confirm(h("calside.discard")))return;const i=pt();Ie(A?I.find(b=>b.db.path===A)?.db:void 0,B(et(p.day),p.startMin??0)).then(b=>{b&&pt()===i&&v.getState().draft===p&&(H?.cancel(),d?.(`${b.db.path}::${b.id}`))})},children:h("calside.paste")}),r.jsxs("div",{className:"amx-cal-draft-actions",children:[r.jsx("button",{className:"amx-cal-draft-cancel",onMouseDown:M?void 0:Y,onClick:M?x:()=>H?.cancel(),children:h("calside.cancel")}),r.jsx("button",{className:"amx-cal-draft-save",disabled:!p.title.trim(),onMouseDown:Y,onClick:()=>H?.commit(),children:h("calside.save")})]})]})}re({"calkeys.modeDay":{zh:"日",en:"Day"},"calkeys.modeWeek":{zh:"周",en:"Week"},"calkeys.mode3day":{zh:"3 日",en:"3 days"},"calkeys.modeMonth":{zh:"月",en:"Month"}});const Oe=[{id:"day",get label(){return Zt("calkeys.modeDay")},key:"d"},{id:"week",get label(){return Zt("calkeys.modeWeek")},key:"w"},{id:"3day",get label(){return Zt("calkeys.mode3day")},key:"3"},{id:"month",get label(){return Zt("calkeys.modeMonth")},key:"m"}];function Wn(l){const d=(l.metaKey||l.ctrlKey)&&!l.altKey;if(d&&(l.shiftKey&&l.key.toLowerCase()==="z"||l.key.toLowerCase()==="y"))return{kind:"redo"};if(d&&!l.shiftKey&&(l.key==="z"||l.key==="Z"))return{kind:"undo"};if(d&&l.key.toLowerCase()==="x")return{kind:"cut"};if(d&&(l.key==="d"||l.key==="D"))return{kind:"duplicate"};if(d&&(l.key==="c"||l.key==="C"))return{kind:"copy"};if(d&&(l.key==="v"||l.key==="V"))return{kind:"paste"};if(l.metaKey||l.ctrlKey||l.altKey)return null;if(l.key==="ContextMenu"||l.shiftKey&&l.key==="F10")return{kind:"menu"};if(l.key==="Delete"||l.key==="Backspace")return{kind:"delete"};if(l.key==="ArrowLeft")return{kind:"prev"};if(l.key==="ArrowRight")return{kind:"next"};if(l.key==="Escape")return{kind:"escape"};if(l.key==="Enter")return{kind:"rename"};if(l.key==="c"||l.key==="C")return{kind:"new"};if(l.key==="t"||l.key==="T")return{kind:"today"};const h=Oe.find(p=>p.key===l.key.toLowerCase());return h?{kind:"mode",mode:h.id}:null}const Ft=l=>l.end?.getTime()??l.start.getTime()+3600*1e3;function Un(l){const d=[...l].sort((p,y)=>p.start.getTime()-y.start.getTime()||Ft(p)-Ft(y)),h=new Map;for(let p=0;p<d.length;){let y=p+1,M=Ft(d[p]);for(;y<d.length&&d[y].start.getTime()<M;)M=Math.max(M,Ft(d[y])),y+=1;const H=d.slice(p,y),I=[],O=H.map(P=>{let C=I.findIndex(V=>V<=P.start.getTime());return C<0&&(C=I.length),I[C]=Ft(P),{ev:P,lane:C}}),z=Math.max(1,I.length);for(const{ev:P,lane:C}of O)h.set(P.key,{lane:C,laneCount:z,leftPct:C/z*100,widthPct:100/z});p=y}return h}re({"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 wt=26,je=8.4,he=34,Xt=150,$e=40,N=!(Te==="mobile"||typeof window<"u"&&window.tangu?.mobile);function Vn(l,d,h){const p=[];return l.forEach(({db:y,dateCol:M,checkboxCol:H},I)=>{if(vn(d,h,y.path))return;const O=ye(d,h,y.path,I);for(const z of y.rows){const P=typeof z.cells[M]=="string"?z.cells[M]:"",C=Le(P);C&&p.push({key:`${y.path}::${z.rowId}`,color:O,db:y,row:z,colId:M,title:z.name,raw:P,start:et(C.start),end:C.end?et(C.end):null,allDay:C.allDay,readonly:!!y.readonly&&!y.writeCell||wn(y.columns.find(V=>V.id===M)?.type??""),check:H,done:H?z.cells[H]===!0:void 0})}}),p}const _n=l=>N&&!!l.check&&l.allDay&&!l.end,tt=l=>`${String(l.getHours()).padStart(2,"0")}:${String(l.getMinutes()).padStart(2,"0")}`,yt=l=>`${String(Math.floor(l/60)).padStart(2,"0")}:${String(l%60).padStart(2,"0")}`,X=l=>$t(l,!0),ut=l=>{const d=l.currentTarget,h=d.getBoundingClientRect();return{left:h.left,top:h.top,right:h.right,bottom:h.bottom,zoom:rt(d)||1}},Wt=(l,d,h)=>d?`${$t(l,h)}/${$t(d,h)}`:$t(l,h),Dt=(l,d,h,p=l.allDay)=>Ye(l.db,l.row,l.colId,l.raw,Wt(d,h,p),l.title),Tt=l=>({"--amx-event-color":l}),ge=(l,d,h)=>{const p=Q(h).getTime(),y=Q(l).getTime()<p,M=Q(d??l).getTime()>p;return`${y?" continues-left":""}${M?" continues-right":""}`};function pe(){const l=v.getState();l.draft&&(l.draft.title.trim()?l.draftApi?.commit():l.setDraft(null))}const Be=l=>l.draft?`${l.draft.day}|${l.draft.endDay}|${l.draft.startMin}|${l.draft.endMin}`:"";function xa({leafId:l}={}){const{t:d}=Rt(),h=cn(),p=we(s=>s.pref),y=Ne(),M=dn(),H=un(),I=mn(),O=fn(),z=Re(s=>s.vaultRoot)??"",P=Pe(s=>s.byVault),C=v(s=>s.mode),V=v(s=>s.setMode);Je(l,{modes:Oe.map(s=>({value:s.id,label:s.label,hotkey:s.key.toUpperCase()})),value:C,onChange:s=>V(s)});const x=v(s=>s.hourPx),j=v(s=>s.setHourPx),A=v(s=>s.jumpNonce),F=v(s=>s.selection),q=v(s=>!!s.draft),[Y,i]=u.useState(null),[b,S]=u.useState(null),[_,$]=u.useState(!1),[gt,xt]=u.useState(null),[ct,it]=u.useState(!1),[lt,L]=u.useState(!1),W=me(s=>s.clip),K=u.useRef(void 0),Et=u.useRef(null),nt=u.useRef(null),St=u.useRef(null);u.useEffect(()=>{C!=="month"&&(St.current=null)},[C]);const dt=u.useRef(null),G=u.useRef(null),J=u.useRef(0);u.useEffect(()=>{if(!A)return;const s=v.getState().jumpDate;s&&nt.current?.goto(et(s))},[A]),hn();const mt=u.useMemo(()=>[...y.map(s=>({db:s.db,dateCol:s.dateCol,checkboxCol:s.checkboxCol})),...[...M,...H,...I,...O].map(s=>({db:s,dateCol:pn(s)?.id})).filter(s=>!!s.dateCol)],[y,M,H,I,O]),U=u.useMemo(()=>Vn(mt,z,P),[mt,z,P]),f=u.useRef(U);f.current=U;const o=u.useMemo(()=>U.map(s=>s.title?s:{...s,title:d("calview.untitled")}),[U,d]),k=Y?.key??F?.key??null,T=k?U.find(s=>s.key===k)??null:null;dt.current=T;const at=ne(y,null,ee(z,P)),ot=s=>{const c=ne(y,s,ee(z,P));return c?ye(z,P,c.db.path,y.indexOf(c)):"var(--accent)"},D=(s,c)=>{if(++J.current,N)pe();else{if(v.getState().draft?.title.trim()&&!window.confirm(d("calside.discard")))return;v.getState().setDraft(null)}G.current=null;const t=f.current.find(e=>e.key===s);t&&v.getState().setSelection({key:s,target:t}),S(null),$(!1),L(!1),K.current=void 0,i({key:s,at:c})},Z=s=>{const c=f.current.find(t=>t.key===s);if(!c){G.current=s;return}if(v.getState().setSelection({key:s,target:c}),!N){const t=ht.current?.querySelector(`[data-key="${CSS.escape(s)}"]`);if(t){const e=t.getBoundingClientRect();$(!1),i({key:s,at:{left:e.left,top:e.top,right:e.right,bottom:e.bottom,zoom:rt(t)||1}})}}};u.useEffect(()=>{const s=v.getState();Y&&!U.some(a=>a.key===Y.key)&&(i(null),S(null));const c=G.current;c&&U.some(a=>a.key===c)&&(G.current=null,Z(c));const t=v.getState().selection;if(!t)return;const e=U.find(a=>a.key===t.key);e?e!==t.target&&s.setSelection({key:t.key,target:e}):s.setSelection(null)},[U]),u.useLayoutEffect(()=>{i(null),S(null),xt(null),Gt(),J.current++,G.current=null,K.current=void 0,dt.current=null;const s=v.getState();return s.setDraft(null),s.setSelection(null),()=>{Gt()}},[z]);const ft=()=>{++J.current;const s=v.getState(),c=!!s.draft||!!s.selection||!!Y;if(N)pe();else if(s.draft){if(s.draft.title.trim()&&!window.confirm(d("calside.discard")))return!0;s.setDraft(null)}return s.selection&&s.setSelection(null),i(null),S(null),K.current=void 0,c},bt=s=>{if(++J.current,!at)return;const c=v.getState();c.setSelection(null),i(null),K.current=B(et(s.day),s.startMin??0),c.setDraft({...s,scope:pt(),title:"",dbPath:W&&y.some(t=>t.db.path===W.event.db.path)?W.event.db.path:null})},zt=u.useRef(async()=>{});zt.current=async()=>{const s=v.getState(),c=s.draft;if(!c)return;if(c.scope!==pt()){s.setDraft(null);return}s.setDraft(null);const t=ne(y,c.dbPath,ee(z,P));if(!t)return;const e=s.selection,a=J.current,n=pt(),m=await be(t.db,t.dateCol,fe(c),c.title.trim()||d("calview.newEventTitle"));ue("calendar.event"),a===J.current&&n===pt()&&!v.getState().draft&&v.getState().selection===e&&Z(`${t.db.path}::${m}`)},u.useEffect(()=>(v.getState().setDraftApi({commit:()=>{zt.current()},cancel:()=>v.getState().setDraft(null)}),()=>{const c=v.getState();c.setDraftApi(null),c.setDraft(null),c.setSelection(null)}),[]);const Ht=async(s,c,t)=>{if(!at)return;if(!N){const g=X(s);bt({day:g,endDay:g,startMin:c,endMin:c===null?0:c+30});return}const{db:e,dateCol:a}=at;let n;if(c===null)n=$t(s,!0);else{const g=B(Q(s),c);n=`${$t(g,!1)}/${$t(B(g,30),!1)}`}const m=await be(e,a,n,d("calview.newEventTitle"));ue("calendar.event"),i({key:`${e.path}::${m}`,at:t})},vt=()=>{const s=new Date,c=X(s);if(nt.current?.today(),C==="month"){bt({day:c,endDay:c,startMin:null,endMin:0});return}const[t,e]=ae(Math.ceil((s.getHours()*60+s.getMinutes())/15)*15,0,!0);bt({day:c,endDay:c,startMin:t,endMin:e})},Yt=u.useRef(vt);Yt.current=vt;const kt=u.useRef(ft);kt.current=ft;const Nt=s=>{const c=dt.current;switch(S(null),ht.current?.focus({preventScroll:!0}),s){case"copy":c&&ke(c);break;case"cut":c&&ke(c,!0);break;case"clone":{const t=J.current,e=pt();c&&He(c).then(a=>{a&&t===J.current&&e===pt()&&(i(null),Z(`${c.db.path}::${a}`))});break}case"paste":{const t=v.getState().draft;if(t?.title.trim()&&!window.confirm(d("calside.discard")))break;const e=J.current,a=pt(),n=K.current??(t?B(et(t.day),t.startMin??0):void 0);Ie(n?void 0:c?.db,n).then(m=>{!m||e!==J.current||pt()!==a||v.getState().draft!==t||(v.getState().setDraft(null),i(null),Z(`${m.db.path}::${m.id}`))});break}case"delete":if(!c||c.db.readonly)break;Mn(c.db,c.row,c.title),v.getState().setSelection(null),i(null),W?.cut&&W.event.row.rowId===c.row.rowId&&W.event.db.path===c.db.path&&Gt();break;case"undo":kn();break;case"redo":bn();break;case"summary":c&&navigator.clipboard?.writeText(`${c.title}
|
|
2
|
+
${c.raw}
|
|
3
|
+
${c.db.name}`).catch(()=>Pn({level:"warning",text:d("calclip.failed")}));break}},Ut=u.useRef(Nt);Ut.current=Nt;const Vt=()=>{b?S(null):kt.current()};u.useEffect(()=>{if(N||!Y&&!b)return;const s=c=>{c.preventDefault(),c.detail?.probe||Vt()};return window.addEventListener("forsion:mobile-back",s),()=>window.removeEventListener("forsion:mobile-back",s)},[Y,b]);const ht=u.useRef(null);u.useEffect(()=>{const s=c=>{const t=ht.current;if(!t||!t.getClientRects().length)return;const e=c.target;if(c.isComposing||e?.closest('[role="menu"]')||e&&e.closest("input, textarea, select, [contenteditable]"))return;const a=v.getState().sideEl,n=document.activeElement;if(n?.closest('[role="dialog"]')&&!n.closest(".amx-cal-cardcatch.calendar"))return;const m=!!n?.closest(".amx-calcfg");if(n&&n!==document.body&&!t.contains(n)&&!a?.contains(n)&&!m&&n.closest(".dv-react-part"))return;const g=Wn(c);if(!g||m&&!["today","prev","next","mode"].includes(g.kind))return;const R=dt.current,E=v.getState();switch(g.kind){case"copy":case"cut":case"paste":case"duplicate":case"delete":case"undo":case"redo":Ut.current(g.kind==="duplicate"?"clone":g.kind);break;case"menu":{if(!R)return;const w=t.querySelector(`[data-key="${CSS.escape(R.key)}"]`)?.getBoundingClientRect();w&&S({x:w.left,y:w.bottom});break}case"new":if(!N)return;Yt.current();break;case"today":nt.current?.today();break;case"rename":{if(e?.closest("button")&&!e.closest(".amx-cal-event, .amx-cal-chip-ev")||!R)return;if(L(!0),Y)break;if(!E.selection)return;const w=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(!w)return;const st=w.getBoundingClientRect();i({key:E.selection.key,at:{left:st.left,top:st.top,right:st.right,bottom:st.bottom,zoom:rt(w)||1}}),E.setSelection(null);break}case"escape":if(me.getState().clip?.cut&&Gt(),b){S(null);break}if(E.draft)E.setDraft(null);else if(E.selection||Y)kt.current();else return;break;case"prev":nt.current?.prev();break;case"next":nt.current?.next();break;case"mode":E.setMode(g.mode);break}c.preventDefault()};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[Y,b]);const[le,oe]=u.useState(7);u.useLayoutEffect(()=>{const s=ht.current;if(!s)return;const c=()=>{if(!s.clientWidth)return;const e=s.clientWidth-52;oe(e>=588?7:e>=252?3:1)};c();const t=new ResizeObserver(c);return t.observe(s),()=>t.disconnect()},[]);const Pt=Math.min(C==="week"?7:C==="3day"?3:1,le),qt=s=>d(s===1?"calview.monday":"calview.sunday"),_t=[{value:"auto",label:d("calview.weekStartAuto",{day:qt(Dn())})},{value:0,label:qt(0)},{value:1,label:qt(1)}],Ot=(s,c)=>{const t=y.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]:"";Ye(t.db,e,t.dateCol,a,c,e.name)},ce=s=>s?r.jsx(ze,{size:14}):r.jsx("span",{style:{display:"inline-block",width:14}}),Kt={events:o,selectedKey:k,cutKey:W?.cut?`${W.event.db.path}::${W.event.row.rowId}`:null,onPick:D,canCreate:!!at,onDismiss:ft,onDraft:bt,colorOf:ot,onTodoDrop:Ot,titleRef:Et,onGesture:s=>{it(!!s),xt(c=>c?.key===s?.key&&c?.raw===s?.raw?c:s),s&&(v.getState().selection?.key!==s.key&&v.getState().setSelection({key:s.key,target:s}),$(!0))}};return r.jsxs("div",{className:`amx-cal${N?"":" mobile"}${!N&&(Y||q)?` drawer-open${_&&Y?" drawer-small":""}`:""}`,ref:ht,tabIndex:-1,"data-cut-key":W?.cut?`${W.event.db.path}::${W.event.row.rowId}`:void 0,onContextMenu:s=>{if(s.target.closest(".amx-cal-cardwrap, input, textarea"))return;const c=s.target.closest("[data-key]"),t=f.current.find(a=>a.key===c?.dataset.key);if(t){s.preventDefault(),s.stopPropagation();const a=c.getBoundingClientRect();N?(v.getState().setSelection({key:t.key,target:t}),i(null),K.current=void 0):D(t.key,{left:a.left,top:a.top,right:a.right,bottom:a.bottom,zoom:rt(c)||1}),S({x:s.clientX,y:s.clientY});return}const e=s.target.closest("[data-date]");if(e?.dataset.date){s.preventDefault(),s.stopPropagation(),ft();const a=e.classList.contains("amx-cal-daycol2")?Math.max(0,Math.min(1425,Lt((s.clientY-e.getBoundingClientRect().top)/(rt(e)||1)/x*60))):0;K.current=B(et(e.dataset.date),a),S({x:s.clientX,y:s.clientY})}},children:[r.jsx(ve,{children:r.jsxs("header",{className:"amx-cal-bar",children:[r.jsxs("div",{className:"amx-cal-nav",children:[r.jsx(Qe,{leafId:l}),r.jsx("span",{className:"amx-cal-title",ref:Et})]}),r.jsxs("div",{className:"amx-cal-modes",children:[r.jsx(Qt,{size:"sm",variant:"secondary",label:d("calview.today"),onClick:()=>nt.current?.today()}),r.jsx(Qt,{size:"sm",variant:"ghost",isIconOnly:!0,icon:r.jsx(yn,{size:14}),label:d("calview.prevPage"),onClick:()=>nt.current?.prev()}),r.jsx(Qt,{size:"sm",variant:"ghost",isIconOnly:!0,icon:r.jsx(tn,{size:14}),label:d("calview.nextPage"),onClick:()=>nt.current?.next()}),r.jsxs(Ln,{button:{label:d("calview.viewOptions"),isIconOnly:!0,icon:r.jsx(en,{size:14}),variant:"ghost",size:"sm"},menuWidth:208,children:[C!=="month"&&r.jsx(te,{icon:r.jsx(In,{size:14}),label:d("calview.zoomOut"),onClick:()=>j(x-8)}),C!=="month"&&r.jsx(te,{icon:r.jsx(An,{size:14}),label:d("calview.zoomIn"),onClick:()=>j(x+8)}),C!=="month"&&r.jsx(te,{icon:r.jsx(Hn,{size:14}),label:d("calview.densityReset"),endContent:`${x}px`,onClick:()=>j(Sn)}),C!=="month"&&r.jsx("div",{className:"amx-cal-menusep",role:"separator"}),r.jsx("div",{className:"amx-cal-menulabel",children:d("calview.weekStart")}),_t.map(s=>r.jsx(te,{icon:ce(p===s.value),label:s.label,onClick:()=>we.getState().setPref(s.value)},String(s.value)))]})]})]})}),o.length===0&&r.jsxs("div",{className:"amx-cal-empty",children:[d(at?"calview.empty":"calview.emptyNoDb"),at&&N&&r.jsx(ve,{children:r.jsx(Qt,{size:"sm",variant:"secondary",label:d("calview.newEvent"),onClick:vt})})]}),C==="month"?r.jsx(Gn,{ref:nt,anchorRef:St,...Kt,onCreate:(s,c)=>{Ht(s,null,c)}},`dow${h}`):r.jsx(Zn,{ref:nt,n:Pt,weekStartDow:C==="week"&&Pt===7?h:null,...Kt,onCreate:(s,c,t)=>{Ht(s,c,t)}}),T&&Y&&(!N||!ct)&&r.jsx($n,{calendar:!0,focusTitle:lt,ev:gt??T,at:Y.at,collapsed:!N&&_,onExpand:()=>$(!1),maxRight:ht.current?.getBoundingClientRect().right,onClose:Vt,onActions:s=>{const c=s.currentTarget.getBoundingClientRect();S({x:c.left,y:c.bottom}),$(!1)},actions:!N&&b?r.jsx(Se,{at:b,mobile:!0,canCut:!T.readonly,writable:!T.db.readonly,note:T.db.isNoteView,hasClip:!!W,onRun:Nt,onClose:()=>S(null)}):void 0},T.key),b&&(N||!Y)&&r.jsx(Se,{at:b,mobile:!1,hasEvent:!!T,canCut:!T?.readonly,writable:!T?.db.readonly,note:!!T?.db.isNoteView,hasClip:!!W,onRun:Nt,onClose:()=>S(null)}),r.jsx(Xn,{rootRef:ht,onPasted:Z})]})}function Fe({first:l=!0}){const{t:d}=Rt(),h=v(p=>p.draft?.title??"");return!l||!N?r.jsx("span",{className:"amx-cal-event-title",children:h||d("calview.newEventTitle")}):r.jsx("input",{className:"amx-cal-draft-input",autoFocus:!0,value:h,placeholder:d("calview.newEventTitle"),"aria-label":d("calview.newEventTitle"),onChange:p=>{const y=v.getState();y.draft&&y.setDraft({...y.draft,title:p.target.value})},onKeyDown:p=>{if(!p.nativeEvent.isComposing)if(p.key==="Enter"){p.preventDefault();const y=v.getState();y.draft?.title.trim()?y.draftApi?.commit():y.setDraft(null)}else p.key==="Escape"&&(p.preventDefault(),v.getState().setDraft(null))},onBlur:p=>{p.relatedTarget instanceof Element&&p.relatedTarget.closest(".amx-cal-draftcard")||document.hasFocus()&&pe()}})}const Xe={onPointerDown:l=>l.stopPropagation(),onMouseDown:l=>{l.target instanceof HTMLInputElement||l.preventDefault()}};function We({day:l,colorOf:d}){const h=v(p=>p.draft);return h?r.jsxs("div",{className:`amx-cal-chip-ev amx-cal-draft selected${ge(et(h.day),et(h.endDay),l)}`,style:Tt(d(h.dbPath)),...Xe,children:[h.startMin!==null&&r.jsx("span",{className:"amx-cal-chip-t",children:yt(h.startMin)}),r.jsx(Fe,{first:X(l)===h.day})]}):null}function Kn({hourPx:l,colorOf:d}){const h=v(y=>y.draft);if(!h||h.startMin===null)return null;const p=(h.endMin-h.startMin)/60*l;return r.jsxs("div",{className:`amx-cal-event amx-cal-draft selected${p<he?" short":""}`,style:{...Tt(d(h.dbPath)),top:h.startMin/60*l,height:Math.max(14,p),left:2,width:"calc(100% - 4px)"},...Xe,children:[r.jsx(Fe,{}),r.jsx("span",{className:"amx-cal-event-t",children:p<he?yt(h.startMin):`${yt(h.startMin)}–${yt(h.endMin)}`})]})}const Zn=u.forwardRef(function({n:d,weekStartDow:h,events:p,selectedKey:y,cutKey:M,onPick:H,canCreate:I,onDismiss:O,onDraft:z,colorOf:P,onTodoDrop:C,onCreate:V,titleRef:x,onGesture:j},A){const{t:F}=Rt(),q=u.useRef(null),Y=u.useRef(null),[i,b]=u.useState(0),[S,_]=u.useState(0),$=v(t=>t.hourPx),gt=v(t=>t.setVisibleRange),xt=v(Be),ct=xt?xt.split("|"):null,it=()=>{Y.current&&q.current&&(Y.current.style.transform=`translateY(${-q.current.scrollTop}px)`)},lt=u.useMemo(()=>Q(new Date),[]),L=u.useMemo(()=>{const t=Ct(lt,-Xt);return Array.from({length:Xt*2+1},(e,a)=>Ct(t,a))},[lt]),W=t=>h==null?t:Math.max(0,t-(L[t].getDay()-h+7)%7),K=u.useRef(Xt),Et=u.useRef(void 0),nt=u.useRef(!1),St=u.useRef(""),dt=u.useRef(-1),G=u.useRef(null),J=u.useRef(null),mt=()=>{J.current&&(J.current.style.display="none")},U=u.useRef(null),f=u.useRef(null),[o,k]=u.useState(()=>{const t=new Date;return t.getHours()*60+t.getMinutes()});u.useEffect(()=>{const t=setInterval(()=>{const e=new Date;k(e.getHours()*60+e.getMinutes())},3e4);return()=>clearInterval(t)},[]),u.useEffect(()=>()=>gt(null,null),[gt]);const T=B(lt,o).getTime(),at=()=>{const t=q.current;if(!t||!i)return;const e=Math.max(0,Math.min(L.length-d,Math.round(t.scrollLeft/i)));K.current=e;const a=L[e+Math.floor((d-1)/2)],n=qe(a),m=F("calview.weekNo",{n:En(a)});n+m!==St.current&&(St.current=n+m,x.current&&(x.current.textContent=n,x.current.dataset.week=m)),e*8+d!==dt.current&&(dt.current=e*8+d,gt(X(L[e]),X(L[Math.min(L.length-1,e+d-1)])),t.querySelector(".amx-cal-allday2.lead")?.classList.remove("lead"),t.querySelector(`.amx-cal-allday2[data-date="${X(L[e])}"]`)?.classList.add("lead"))},ot=()=>{const t=q.current,e=t?.clientWidth?t.querySelector(".amx-cal-daycol2"):null;e&&_(Math.max(0,e.offsetTop-(wt+14)))};u.useLayoutEffect(()=>{const t=q.current;if(!t)return;const e=d>=3?84:180,a=()=>{t.clientWidth&&(b(Math.max(e,t.clientWidth/d)),ot())};a();const n=new ResizeObserver(a);return n.observe(t),()=>n.disconnect()},[d]),u.useLayoutEffect(ot,[p,i,d,xt]),u.useLayoutEffect(()=>{const t=q.current;if(!(!t||!i)){if(!nt.current){K.current=Xt,nt.current=!0;const e=t.querySelector(".amx-cal-daycol2"),a=e?e.offsetTop:wt+14;t.scrollTop=Math.max(0,a+o/60*$-t.clientHeight/2)}Et.current!==h&&(Et.current=h,K.current=W(K.current)),t.scrollLeft=K.current*i,at(),it()}},[i,h]);const D=u.useRef($);u.useLayoutEffect(()=>{const t=q.current,e=D.current;if(D.current=$,!t||e===$)return;const a=t.querySelector(".amx-cal-daycol2"),n=a?a.offsetTop:wt+14,m=t.clientHeight/2,g=(t.scrollTop+m-n)/e;t.scrollTop=Math.max(0,n+g*$-m),it()},[$]),u.useEffect(()=>{const t=q.current;if(!t)return;const e=a=>{if(!a.ctrlKey&&!a.metaKey)return;a.preventDefault();const n=v.getState();n.setHourPx(n.hourPx*(a.deltaY<0?1.12:1/1.12))};return t.addEventListener("wheel",e,{passive:!1}),()=>t.removeEventListener("wheel",e)},[]),u.useImperativeHandle(A,()=>({prev:()=>q.current?.scrollBy({left:-d*i,behavior:"smooth"}),next:()=>q.current?.scrollBy({left:d*i,behavior:"smooth"}),today:()=>q.current?.scrollTo({left:W(Xt)*i,behavior:"smooth"}),goto:t=>{if(!i)return;const e=Math.min(L.length-d,W(Math.max(0,Math.min(L.length-1,It(Q(t),L[0])))));q.current?.scrollTo({left:e*i,behavior:"smooth"})}}),[d,i,L,h]);const Z=wt+14+S,ft=(t,e=0)=>{const a=q.current,n=a.getBoundingClientRect(),m=rt(a)||1,g=Math.max(0,Math.min(L.length-1,Math.floor(((t.clientX-n.left)/m+a.scrollLeft)/i))),R=((t.clientY-n.top)/m-e+a.scrollTop-Z)/$*60;return{col:g,raw:R,min:Math.max(0,Math.min(1425,Math.floor(R/15)*15))}},bt=(t,e,a)=>{if(e.stopPropagation(),vt(),t.readonly||e.button!==0||!N&&y!==t.key)return;mt();const n=e.currentTarget.closest(".amx-cal-event"),m=n.getBoundingClientRect(),g=rt(n)||1,R=(e.clientY-m.top)/g,E=Math.min(je,m.height/g/4),w=a??(N&&y===t.key?R<E?"start":m.height/g-R<E?"end":"move":"move"),st=Ce(t.start,t.end,$),jt=Math.max(14,st.height),Mt=n.querySelector(".amx-cal-event-t");n.setPointerCapture(e.pointerId),U.current={mode:w,ev:t,el:n,tEl:Mt,t0:Mt?.textContent??"",pid:e.pointerId,x0:e.clientX,y0:e.clientY,zoom:g,top0:st.top,h0:jt,grabOffY:R,durMin:t.end?(t.end.getTime()-t.start.getTime())/6e4:60,msDur:t.end?t.end.getTime()-t.start.getTime():0,col0:It(Q(t.start),L[0]),min0:t.start.getHours()*60+t.start.getMinutes(),dup:N&&w==="move"&&e.altKey&&!t.db.readonly,shadow:null,dyMin:0,moved:!1,target:null}},zt=t=>{const e=U.current;if(!e||t.pointerId!==e.pid){if(N&&t.currentTarget.classList.contains("selected")){const E=t.currentTarget,w=E.getBoundingClientRect(),st=(t.clientY-w.top)/(rt(E)||1),jt=Math.min(je,w.height/(rt(E)||1)/4);E.style.cursor=st<jt||w.height/(rt(E)||1)-st<jt?"ns-resize":"grab"}return}if(e.last=t,t.pointerType==="mouse"&&t.buttons===0){Ht(e.ev,t);return}if(e.mode==="move"){if(!e.moved&&Math.hypot(t.clientX-e.x0,t.clientY-e.y0)<=3||!i||!q.current)return;if(!e.moved){e.moved=!0,e.el.classList.add("dragging"),j?.(e.ev);const Bt=e.el.cloneNode(!0);Bt.classList.remove("dragging","selected"),Bt.classList.add(e.dup?"dup-src":"drag-shadow"),Bt.removeAttribute("aria-label"),e.el.parentElement?.insertBefore(Bt,e.el),e.shadow=Bt}const E=ft(t,e.grabOffY),w=Math.max(0,Math.min(1440-Math.min(e.durMin,1440),Lt(E.raw))),st=w===Lt(e.min0)&&E.col===e.col0,jt=st?e.min0:w;e.target=st?null:{iso:X(L[E.col]),topMin:w},e.el.style.transform=`translate(${(E.col-e.col0)*i}px, ${(jt-e.min0)/60*$}px)`;const Mt=B(L[E.col],jt);j?.({...e.ev,raw:Wt(Mt,e.ev.end?new Date(Mt.getTime()+e.msDur):null,!1)});const xe=e.msDur?`${tt(Mt)}–${tt(new Date(Mt.getTime()+e.msDur))}`:tt(Mt);e.tEl&&(e.tEl.textContent=st?e.t0:E.col!==e.col0?`${De(L[E.col].getDay())} ${xe}`:xe);return}const a=Lt((t.clientY-e.y0)/e.zoom/$*60),m=((e.ev.end??B(e.ev.start,60)).getTime()-e.ev.start.getTime())/6e4,g=e.mode==="start"?Math.max(-e.min0,Math.min(m-15,a)):Math.max(15-m,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*$;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 w=B(E,g);w.getTime()<=e.ev.start.getTime()&&(w=B(e.ev.start,15)),e.tEl.textContent=`${tt(e.ev.start)}–${tt(w)} · ${Jt(Math.round((w.getTime()-e.ev.start.getTime())/6e4))}`,j?.({...e.ev,raw:Wt(e.ev.start,w,!1)})}else{let w=B(e.ev.start,g);w.getTime()>=E.getTime()&&(w=B(E,-15)),e.tEl.textContent=`${tt(w)}–${tt(E)} · ${Jt(Math.round((E.getTime()-w.getTime())/6e4))}`,j?.({...e.ev,raw:Wt(w,E,!1)})}}},Ht=(t,e)=>{const a=U.current;if(a&&e.pointerId!==a.pid||(U.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||H(t.key,ut(e));return}const m=B(Q(et(a.target.iso)),a.target.topMin),g=t.end?new Date(m.getTime()+a.msDur):null;if(a.tEl&&(a.tEl.textContent=a.t0),a.dup){const R=Wt(m,g,t.allDay);He(t,R);return}Dt(t,m,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||H(t.key,ut(e));return}const n=t.end??B(t.start,60);if(a.mode==="end"){let m=B(n,a.dyMin);m.getTime()<=t.start.getTime()&&(m=B(t.start,15)),Dt(t,t.start,m)}else{let m=B(t.start,a.dyMin);m.getTime()>=n.getTime()&&(m=B(n,-15)),Dt(t,m,n)}},vt=()=>{const t=U.current;U.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))},Yt=u.useRef(zt);Yt.current=zt,u.useEffect(()=>{const t=a=>{(a.type==="blur"||a.key==="Escape")&&vt()},e=window.setInterval(()=>{const a=U.current,n=q.current;if(!a?.moved||!a.last||!n)return;const m=n.getBoundingClientRect(),g=a.last.clientX,R=a.last.clientY,E=g<m.left+24?-12:g>m.right-24?12:0,w=R<m.top+Z+24?-12:R>m.bottom-24?12:0;(E||w)&&(n.scrollBy(E,w),Yt.current(a.last))},32);return window.addEventListener("blur",t),window.addEventListener("keydown",t),()=>{clearInterval(e),window.removeEventListener("blur",t),window.removeEventListener("keydown",t),vt()}},[]);const kt=u.useRef(null),Nt=(t,e)=>{if(e.stopPropagation(),e.button!==0||t.readonly||!N&&y!==t.key)return;const a=e.currentTarget.getBoundingClientRect(),n=Math.min(8,a.width/4);kt.current={x:e.clientX,y:e.clientY,mode:y===t.key&&N?e.clientX-a.left<n?"start":a.right-e.clientX<n?"end":"move":"move"},e.currentTarget.setPointerCapture(e.pointerId)},Ut=(t,e)=>{const a=kt.current;if(kt.current=null,!a)return;if(Math.hypot(e.clientX-a.x,e.clientY-a.y)<5){H(t.key,ut(e));return}const n=document.elementFromPoint(e.clientX,e.clientY)?.closest(".amx-cal-allday2");if(n?.dataset.date){const R=et(n.dataset.date);if(a.mode==="start")Dt(t,R>(t.end??t.start)?t.end??t.start:R,t.end,!0);else if(a.mode==="end")Dt(t,t.start,R<t.start?t.start:R,!0);else{const E=It(R,t.start);Dt(t,se(t.start,E),t.end?se(t.end,E):null,!0)}return}const m=document.elementFromPoint(e.clientX,e.clientY)?.closest(".amx-cal-daycol2"),g=m?.getAttribute("data-date");if(m&&g){const R=m.getBoundingClientRect(),E=Math.max(0,Math.min(1410,Lt((e.clientY-R.top)/(rt(m)||1)/$*60))),w=B(Q(et(g)),E);Dt(t,w,B(w,30),!1);return}H(t.key,ut(e))},Vt=t=>{const e=J.current;if(!e)return;const a=t.target,n=v.getState();if(!N||!I||t.pointerType==="touch"||U.current||n.draft||n.selection||!i||!a.closest(".amx-cal-daycol2")||a.closest(".amx-cal-event, .amx-cal-draft")){mt();return}const m=ft(t),[g,R]=ae(m.min,m.min,!0);e.style.display="block",e.style.left=`${m.col*i+2}px`,e.style.width=`${i-4}px`,e.style.top=`${Z+g/60*$}px`,e.style.height=`${(R-g)/60*$}px`},ht=t=>t.moved?ae(Math.min(t.min,t.cur.min),Math.max(t.min,t.cur.min)+15,!1):ae(t.min,t.min,!0),le=t=>{if(!N||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||!i)return;mt();const n=O();if(q.current?.closest(".amx-cal")?.focus({preventScroll:!0}),n||!I)return;t.preventDefault();const m=ft(t);t.currentTarget.setPointerCapture(t.pointerId),f.current={pid:t.pointerId,zone:a,col:m.col,min:m.min,cur:m,x0:t.clientX,y0:t.clientY,moved:!1}},oe=t=>{const e=f.current;if(!e){Vt(t);return}if(t.pointerId!==e.pid)return;if(t.pointerType==="mouse"&&t.buttons===0){Pt();return}if(!e.moved&&Math.hypot(t.clientX-e.x0,t.clientY-e.y0)<4)return;e.moved=!0,e.cur=ft(t);const a=G.current;if(a)if(a.style.display="block",e.zone==="time"){const[n,m]=ht(e);a.style.left=`${e.col*i+2}px`,a.style.width=`${i-4}px`,a.style.top=`${Z+n/60*$}px`,a.style.height=`${(m-n)/60*$}px`,a.textContent=`${yt(n)}–${yt(m)} · ${Jt(m-n)}`}else{const n=Math.min(e.col,e.cur.col),m=Math.max(e.col,e.cur.col);a.style.left=`${n*i+4}px`,a.style.width=`${(m-n+1)*i-8}px`,a.style.top=`${wt+14+3}px`,a.style.height="20px",a.textContent=m>n?Jt((m-n+1)*1440):""}},Pt=t=>{const e=f.current;if(!(e&&t&&t.pointerId!==e.pid)&&(f.current=null,G.current&&(G.current.style.display="none"),!!e))if(e.zone==="time"){const[a,n]=ht(e);z({day:X(L[e.col]),endDay:X(L[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];z({day:X(L[a]),endDay:X(L[n]),startMin:null,endMin:0})}},qt=()=>{f.current=null,G.current&&(G.current.style.display="none")},_t=t=>{const e=t.target,a=e.closest(".amx-cal-allday2")?"all":e.closest(".amx-cal-daycol2")?"time":null;if(!a||!i)return null;const n=ft(t),m=X(L[n.col]),g=Math.min(n.min,1410);return{zone:a,col:n.col,s:g,value:a==="all"?m:`${m}T${yt(g)}/${m}T${yt(g+30)}`}},Ot=()=>{G.current&&(G.current.style.display="none")},ce=t=>{if(!C||!t.dataTransfer.types.includes(de))return;t.preventDefault(),t.dataTransfer.dropEffect="move";const e=_t(t),a=G.current;if(a){if(!e){Ot();return}a.style.display="block",a.style.left=`${e.col*i+(e.zone==="all"?4:2)}px`,a.style.width=`${i-(e.zone==="all"?8:4)}px`,a.style.top=`${e.zone==="all"?wt+14+3:Z+e.s/60*$}px`,a.style.height=e.zone==="all"?"20px":`${30/60*$}px`,a.textContent=e.zone==="all"?"":`${yt(e.s)}–${yt(e.s+30)}`}},Kt=t=>{if(!C||!t.dataTransfer.types.includes(de))return;t.preventDefault(),Ot();const e=_t(t);if(e)try{C(JSON.parse(t.dataTransfer.getData(de)),e.value)}catch{}},s=u.useMemo(()=>{const t=p.filter(n=>n.allDay&&!_n(n)).sort((n,m)=>+Q(n.start)-+Q(m.start)||+Q(m.end??m.start)-+Q(n.end??n.start)),e=[],a=new Map;for(const n of t){const m=+Q(n.start);let g=e.findIndex(R=>R<m);g<0&&(g=e.length),e[g]=+Q(n.end??n.start),a.set(n.key,g)}return{list:t,lane:a}},[p]),c=t=>!!ct&&ct[2]==="null"&&X(t)>=ct[0]&&X(t)<=ct[1];return r.jsxs("div",{className:"amx-cal-timerow",style:{"--amx-hour-px":`${$}px`},children:[r.jsx("div",{className:"amx-cal-gutterfixed",children:r.jsxs("div",{className:"amx-cal-gutterinner",children:[r.jsx("div",{className:"amx-cal-gcorner",style:{height:wt+14}}),r.jsx("div",{className:"amx-cal-gallday",style:{height:S},children:F("calview.allDay")}),r.jsxs("div",{className:"amx-cal-ghours",ref:Y,children:[Me.map(t=>r.jsx("div",{className:"amx-cal-hour",style:{height:$},children:t===0?"":`${t}:00`},t)),r.jsxs("span",{className:"amx-cal-nowlabel",style:{top:o/60*$},children:[String(Math.floor(o/60)).padStart(2,"0"),":",String(o%60).padStart(2,"0")]})]})]})}),r.jsx("div",{className:"amx-cal-tscroll",ref:q,onScroll:()=>{at(),it()},onPointerLeave:mt,children:r.jsxs("div",{className:"amx-cal-tgrid2",style:{gridTemplateColumns:`repeat(${L.length}, ${i}px)`,gridTemplateRows:`${wt+14}px auto ${Me.length*$}px`},onPointerDown:le,onPointerMove:oe,onPointerUp:Pt,onPointerCancel:qt,onLostPointerCapture:()=>{f.current&&Pt()},onDragOver:ce,onDragLeave:t=>{t.relatedTarget instanceof Node&&t.currentTarget.contains(t.relatedTarget)||Ot()},onDrop:Kt,children:[L.map(t=>r.jsxs("div",{className:`amx-cal-thead2${At(t,lt)?" today":""}`,children:[r.jsx("span",{className:"amx-cal-tdow",children:De(t.getDay())}),r.jsxs("span",{className:"amx-cal-tdate",children:[t.getMonth()+1,"/",t.getDate()]})]},+t)),L.map(t=>{const e=s.list.filter(n=>Ae(n.start,n.end,t)),a=[];for(const n of e)a[s.lane.get(n.key)??0]=n;return r.jsxs("div",{className:"amx-cal-allday2","data-date":X(t),onClick:N?void 0:n=>{n.target.closest(".amx-cal-chip-ev")||O()||V(t,null,ut(n))},children:[Array.from(a,(n,m)=>n?r.jsx("button",{"data-key":n.key,className:`amx-cal-chip-ev amx-cal-alldrag${n.readonly?" readonly":""}${M===n.key?" cut":""}${y===n.key?" selected":""}${+Q(n.end??n.start)<+lt?" past":""}${ge(n.start,n.end,t)}`,style:Tt(n.color),"aria-label":F("calview.a11yAllDayEvent",{title:n.title}),title:n.readonly?n.title:F("calview.allDayDragHint",{title:n.title}),onPointerDown:g=>Nt(n,g),onPointerUp:g=>Ut(n,g),onPointerCancel:()=>{kt.current=null},onClick:g=>{(n.readonly||!N&&y!==n.key||g.detail===0)&&H(n.key,ut(g))},children:n.title},n.key):r.jsx("span",{className:"amx-cal-chip-gap"},`gap${m}`)),c(t)&&r.jsx(We,{day:t,colorOf:P})]},+t)}),L.map(t=>r.jsxs("div",{className:"amx-cal-daycol2","data-date":X(t),onClick:N?void 0:e=>{if(e.target.closest(".amx-cal-event")||O())return;const a=e.currentTarget.getBoundingClientRect(),n=rt(e.currentTarget)||1,m=Math.max(0,Math.min(1410,Lt((e.clientY-a.top)/n/$*60)));V(t,m,{left:e.clientX,top:e.clientY,right:e.clientX,bottom:e.clientY,zoom:n})},children:[(()=>{const e=p.filter(n=>!n.allDay&&At(n.start,t)),a=Un(e);return e.map(n=>{const m=Ce(n.start,n.end,$),g=a.get(n.key)??{leftPct:0,widthPct:100},R=m.height<he,E=(n.end??n.start).getTime()<T;return r.jsxs("button",{"data-key":n.key,className:`amx-cal-event${n.readonly?" readonly":""}${M===n.key?" cut":""}${y===n.key?" selected":""}${R?" short":""}${E?" past":""}${n.check?" todo":""}${n.done?" done":""}`,style:{...Tt(n.color),top:m.top,height:Math.max(14,m.height),left:`calc(${g.leftPct}% + 2px)`,width:`calc(${g.widthPct}% - 4px)`},"aria-label":n.end?F("calview.a11yEventRange",{title:n.title,start:tt(n.start),end:tt(n.end)}):F("calview.a11yEvent",{title:n.title,time:tt(n.start)}),title:n.title,onPointerDown:w=>bt(n,w),onPointerMove:zt,onPointerUp:w=>Ht(n,w),onPointerCancel:vt,onLostPointerCapture:vt,onClick:w=>{(n.readonly||!N&&y!==n.key||w.detail===0)&&H(n.key,ut(w))},children:[n.check&&r.jsx("span",{className:"amx-cal-event-check",role:"checkbox","aria-checked":!!n.done,"aria-label":F("calview.a11yDone",{title:n.title}),onPointerDown:w=>w.stopPropagation(),onClick:w=>{w.stopPropagation(),n.db.readonly||(Cn(n.db,n.row.rowId,n.check,n.done?void 0:!0),n.done||ue("todo.done"))}}),r.jsx("span",{className:"amx-cal-event-title",children:n.title}),r.jsx("span",{className:"amx-cal-event-t",children:R||!n.end?tt(n.start):`${tt(n.start)}–${tt(n.end)}`}),!N&&y===n.key&&!n.readonly&&i*g.widthPct/100>=88&&r.jsxs(r.Fragment,{children:[r.jsx("span",{className:"amx-cal-handle start","aria-label":F("calview.resizeStart"),onPointerDown:w=>bt(n,w,"start")}),r.jsx("span",{className:"amx-cal-handle end","aria-label":F("calview.resizeEnd"),onPointerDown:w=>bt(n,w,"end")})]})]},n.key)})})(),ct&&ct[2]!=="null"&&ct[0]===X(t)&&r.jsx(Kn,{hourPx:$,colorOf:P}),r.jsx("div",{className:`amx-cal-nowline${At(t,lt)?" today":""}`,style:{top:o/60*$}})]},+t)),r.jsx("div",{className:"amx-cal-hoverslot",ref:J}),r.jsx("div",{className:"amx-cal-making",ref:G,style:Tt(P(null))})]})})]})}),Gn=u.forwardRef(function({anchorRef:d,events:h,selectedKey:p,cutKey:y,onPick:M,canCreate:H,onDismiss:I,onDraft:O,colorOf:z,onCreate:P,titleRef:C},V){const{t:x}=Rt(),j=u.useRef(null),[A,F]=u.useState(0),q=v(f=>f.setVisibleRange),Y=v(Be),i=Y?Y.split("|"):null,b=u.useMemo(()=>Q(new Date),[]),S=u.useMemo(()=>{const f=Ct(ie(b),-$e*7);return Array.from({length:$e*2+1},(o,k)=>Ct(f,k*7))},[b]),_=u.useRef(!1),[$,gt]=u.useState(null),xt=u.useRef(""),ct=u.useRef(-1),it=u.useRef(null);u.useEffect(()=>()=>q(null,null),[q]);const lt=(f,o)=>Math.round(It(ie(new Date(f,o,1)),S[0])/7),L=()=>{const f=j.current;if(!f||!A)return;const o=Math.max(0,Math.min(S.length-1,Math.round(f.scrollTop/A))),k=Ct(S[o],3),T=qe(k);if(d&&(d.current={y:k.getFullYear(),m:k.getMonth()}),T!==xt.current&&(xt.current=T,C.current&&(C.current.textContent=T,delete C.current.dataset.week)),o!==ct.current){ct.current=o;const at=Math.max(1,Math.round(f.clientHeight/A)),ot=S[Math.min(S.length-1,o+at-1)];q(X(S[o]),X(Ct(ot,6)))}};u.useLayoutEffect(()=>{const f=j.current;if(!f)return;const o=()=>{f.clientHeight&&F(Math.max(64,(f.clientHeight-wt)/6))};o();const k=new ResizeObserver(o);return k.observe(f),()=>k.disconnect()},[]),u.useLayoutEffect(()=>{const f=j.current;if(!f||!A||_.current)return;_.current=!0;const o=d?.current;if(o){let k=Math.max(0,Math.min(S.length-1,lt(o.y,o.m)));Ct(S[k],3).getMonth()!==o.m&&k+1<S.length&&(k+=1),f.scrollTop=k*A}else f.scrollTop=lt(b.getFullYear(),b.getMonth())*A;L()},[A]),u.useImperativeHandle(V,()=>({prev:()=>W(-1),next:()=>W(1),today:()=>j.current?.scrollTo({top:lt(b.getFullYear(),b.getMonth())*A,behavior:"smooth"}),goto:f=>{if(!A)return;const o=Math.max(0,Math.min(S.length-1,Math.round(It(ie(f),S[0])/7)));j.current?.scrollTo({top:o*A,behavior:"smooth"})}}),[A]);const W=f=>{const o=j.current;if(!o||!A)return;const k=Math.max(0,Math.min(S.length-1,Math.round(o.scrollTop/A))),T=Ct(S[k],3);o.scrollTo({top:Math.max(0,lt(T.getFullYear(),T.getMonth()+f))*A,behavior:"smooth"})},K=u.useRef(null),Et=(f,o)=>{o.stopPropagation(),!(o.button!==0||f.readonly||!N&&p!==f.key)&&(K.current={x:o.clientX,y:o.clientY},o.currentTarget.setPointerCapture(o.pointerId))},nt=(f,o)=>{const k=K.current;if(K.current=null,!k)return;const T=ut(o);if(Math.hypot(o.clientX-k.x,o.clientY-k.y)<5){M(f.key,T);return}if(f.readonly){M(f.key,T);return}const ot=document.elementFromPoint(o.clientX,o.clientY)?.closest(".amx-cal-mcell")?.getAttribute("data-date");if(ot){const D=It(et(ot),f.start);if(D!==0){Dt(f,se(f.start,D),f.end?se(f.end,D):null);return}}M(f.key,T)},St=f=>document.elementFromPoint(f.clientX,f.clientY)?.closest(".amx-cal-mcell")?.getAttribute("data-date")??null,dt=(f,o)=>{j.current?.querySelectorAll(".amx-cal-mcell").forEach(k=>{const T=k.dataset.date??"";k.classList.toggle("making",!!f&&!!o&&T>=f&&T<=o)})},G=f=>{if(!N||f.button!==0||f.pointerType==="touch")return;const o=f.target;if(o.closest(".amx-cal-chip-ev, .amx-cal-more, .amx-cal-draft"))return;const k=o.closest(".amx-cal-mcell")?.getAttribute("data-date");if(!k)return;const T=I();j.current?.closest(".amx-cal")?.focus({preventScroll:!0}),!(T||!H)&&(f.preventDefault(),f.currentTarget.setPointerCapture(f.pointerId),it.current={pid:f.pointerId,a:k,b:k,moved:!1})},J=f=>{const o=it.current;if(!o||f.pointerId!==o.pid)return;if(f.pointerType==="mouse"&&f.buttons===0){mt();return}const k=St(f);!k||k===o.b||(o.b=k,o.moved=!0,dt(o.a<k?o.a:k,o.a<k?k:o.a))},mt=f=>{const o=it.current;if(o&&f&&f.pointerId!==o.pid||(it.current=null,!o))return;o.moved&&dt(null,null);const[k,T]=o.a<o.b?[o.a,o.b]:[o.b,o.a];O({day:k,endDay:T,startMin:null,endMin:0})},U=()=>{it.current?.moved&&dt(null,null),it.current=null};return r.jsxs("div",{className:"amx-cal-mscroll",ref:j,onScroll:L,children:[r.jsx("div",{className:"amx-cal-weekhead2",children:gn().map(f=>r.jsx("div",{children:f},f))}),r.jsx("div",{className:"amx-cal-mweeks",onPointerDown:G,onPointerMove:J,onPointerUp:mt,onPointerCancel:U,children:S.map(f=>r.jsx("div",{className:"amx-cal-mweek",style:{height:A},children:xn(f,7).map(o=>{const k=X(o),T=h.filter(D=>Ae(D.start,D.end,o)),at=!!i&&k>=i[0]&&k<=i[1],ot=at?2:3;return r.jsxs("div",{className:`amx-cal-mcell${At(o,b)?" today":""}`,"data-date":k,onClick:N?void 0:D=>{D.target.closest(".amx-cal-chip-ev")||I()||P(o,{left:D.clientX,top:D.clientY,right:D.clientX,bottom:D.clientY,zoom:rt(D.currentTarget)||1})},children:[r.jsx("div",{className:"amx-cal-mnum",children:o.getDate()===1?x("calview.monthFirst",{m:o.getMonth()+1}):o.getDate()}),at&&r.jsx(We,{day:o,colorOf:z}),T.slice(0,ot).map(D=>r.jsxs("button",{"data-key":D.key,className:`amx-cal-chip-ev${D.readonly?" readonly":""}${p===D.key?" selected":""}${ge(D.start,D.end,o)}`,style:Tt(D.color),title:D.title,"aria-label":!D.allDay&&At(D.start,o)?x("calview.a11yEvent",{title:D.title,time:tt(D.start)}):D.title,onPointerDown:Z=>Et(D,Z),onPointerUp:Z=>nt(D,Z),onPointerCancel:()=>{K.current=null},onClick:Z=>{(D.readonly||!N&&p!==D.key||Z.detail===0)&&M(D.key,ut(Z))},children:[!D.allDay&&At(D.start,o)&&r.jsx("span",{className:"amx-cal-chip-t",children:tt(D.start)})," ",D.title]},D.key)),T.length>ot&&r.jsx("button",{className:"amx-cal-more","aria-label":x("calview.a11yMoreEvents",{m:o.getMonth()+1,d:o.getDate(),n:T.length}),onClick:D=>gt({day:o,events:T,at:ut(D)}),children:x("calview.moreItems",{n:T.length-ot})})]},+o)})},+f))}),$&&r.jsx(Jn,{day:$.day,events:$.events,at:$.at,onPick:(f,o)=>{gt(null),M(f,o)},onClose:()=>gt(null)})]})});function Jn({day:l,events:d,at:h,onPick:p,onClose:y}){const{t:M}=Rt(),H=292,I=h.zoom||1,O=12*I,z=Math.max(O,Math.min(h.left,window.innerWidth-H*I-O))/I,P=Math.max(O,Math.min(h.bottom+6*I,window.innerHeight-356*I-O))/I,C=u.useRef(null),V=u.useRef(y);return V.current=y,u.useEffect(()=>{const x=document.activeElement instanceof HTMLElement?document.activeElement:null;C.current?.querySelector(".amx-cal-agenda-list > button")?.focus();const j=A=>{A.key==="Escape"&&(A.preventDefault(),V.current())};return window.addEventListener("keydown",j),()=>{window.removeEventListener("keydown",j),x?.focus()}},[]),r.jsx("div",{className:"amx-cal-agenda-overlay",onMouseDown:y,children:r.jsxs("section",{className:"amx-cal-agenda",ref:C,role:"dialog","aria-modal":"true","aria-label":M("calview.a11yDayEvents",{m:l.getMonth()+1,d:l.getDate()}),style:{left:z,top:P,width:H},onMouseDown:x=>x.stopPropagation(),children:[r.jsxs("header",{children:[r.jsx("strong",{children:M("calview.dayHeading",{m:l.getMonth()+1,d:l.getDate()})}),r.jsx("button",{onClick:y,"aria-label":M("calview.closeAgenda"),children:"×"})]}),r.jsx("div",{className:"amx-cal-agenda-list",children:d.map(x=>r.jsxs("button",{style:Tt(x.color),onClick:j=>p(x.key,ut(j)),children:[r.jsx("span",{className:"amx-cal-agenda-time",children:x.allDay?M("calview.allDay"):tt(x.start)}),r.jsx("span",{children:x.title})]},x.key))})]})})}export{xa as CalendarView,Gn 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-YuejkHoJ.js";import{a8 as D,T as k,X as C,aj as A}from"./pageStore-D_fKLv-o.js";import"./client-DD5czSuF.js";import{aA as L,S}from"./appStore-BskcSDl6.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-YuejkHoJ.js";import{p as H,R as S,a6 as T}from"./pageStore-D_fKLv-o.js";import"./client-DD5czSuF.js";import{gZ as E,eV as $}from"./appStore-BskcSDl6.js";import{M as X}from"./magnet-BmVcZ9U4.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=(n,e)=>n.x<e.x+e.w&&n.x+n.w>e.x&&n.y<e.y+e.h&&n.y+n.h>e.y,V=(n,e)=>({x:n.x-e,y:n.y-e,w:n.w+e*2,h:n.h+e*2});function G(n,e,m={x:0,y:0},u=B,i){if(!n.length||!e.length)return{x:0,y:0};const x=e.map(o=>V(o,Math.max(0,u))),d=(o,a)=>n.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 n)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 J({hostRef:n,vp:e,items:m,onCenter:u}){const i=D.useRef(!1),{t:x}=P(),d=n.current;if(!d||!m.length)return null;const y=S(d)||1,c=d.getBoundingClientRect(),g={x:-e.x/e.z,y:-e.y/e.z,w:Math.max(1,c.width/y/e.z),h:Math.max(1,c.height/y/e.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 K({zoom:n,onZoomBy:e,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:()=>e(1/1.2),title:c("ckchrome.zoomOut"),children:r.jsx(E,{size:12})}),r.jsx("button",{type:"button",className:"amx-hud-zoom",onClick:()=>e(1/n),title:c("ckchrome.zoomReset"),children:r.jsxs("span",{children:[Math.round(n*100),"%"]})}),r.jsx("button",{type:"button",onClick:()=>e(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{J as C,b as M,K as a,G as r};
|