@forsion/unit 2.13.4 → 2.13.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/main.mjs +112 -9
- package/package.json +1 -1
- package/release.json +5 -5
- package/web/assets/ArtificialView-BD1yHz1N.js +1 -0
- package/web/assets/AutomationBuilder-B09c-5Bi.js +1 -0
- package/web/assets/CalendarConfigView-Bd-ZDGPO.js +1 -0
- package/web/assets/CalendarSide-B0RVbOsg.js +1 -0
- package/web/assets/CalendarView-BHio-n_r.js +3 -0
- package/web/assets/CalendarView-t91KpUG7.css +1 -0
- package/web/assets/CapabilityMenu-DyHTEYLr.js +1 -0
- package/web/assets/Chrome-C7F6fdDp.js +1 -0
- package/web/assets/{CodeView-GZ0BAgoW.js → CodeView-BGOnrGhB.js} +3 -3
- package/web/assets/CtxMenuButtons-BYjrbUKS.js +1 -0
- package/web/assets/DashboardGridView-CR-R_qV8.js +25 -0
- package/web/assets/DashboardGridView-RoVFSkNO.css +1 -0
- package/web/assets/EventCard-QyYorE1_.js +1 -0
- package/web/assets/ExcalidrawCanvas-BgcFPMpU.css +1 -0
- package/web/assets/ExcalidrawCanvas-lwJCN6uB.js +1 -0
- package/web/assets/FloatingToc-DO7SH8Ku.js +1 -0
- package/web/assets/GitCloneDialog-CbW-RJak.js +1 -0
- package/web/assets/{GitCloneDialog-Bj9G3o-n.css → GitCloneDialog-DOxZk2K0.css} +1 -1
- package/web/assets/HomepageView-Bx8FbWlY.css +1 -0
- package/web/assets/HomepageView-CHJEhf9c.js +4 -0
- package/web/assets/ImageStudioPanels-CgVf0wiq.js +3 -0
- package/web/assets/ImageStudioView-4WcX0_V4.js +1 -0
- package/web/assets/InlineAiPanel-CdIPINsA.js +1 -0
- package/web/assets/InlineFiles-CAIyTk1n.js +1 -0
- package/web/assets/{MarkdownBlock-DQTuoen3.css → MarkdownBlock-Cqfk5DhC.css} +1 -1
- package/web/assets/MarkdownBlock-DSItkLhu.js +58 -0
- package/web/assets/ModelPill--CU3XTIQ.js +2 -0
- package/web/assets/{ModelPill-CzdNh7Mt.css → ModelPill-BiUsuhy3.css} +1 -1
- package/web/assets/MuseLibraryView-PlS7HAlV.js +2 -0
- package/web/assets/MuseView-CvsO62Fo.js +7 -0
- package/web/assets/{PageHistoryPanel-Bn4-XmdK.js → PageHistoryPanel-CDh7nm78.js} +2 -2
- package/web/assets/{PdfAnnotator-Cq8cklTz.js → PdfAnnotator-DafvjP3U.js} +3 -3
- package/web/assets/PenRow-CEy-s6SF.js +1 -0
- package/web/assets/PluginToolCard-BmTRr5JT.css +1 -0
- package/web/assets/PluginToolCard-DCzLhsCA.js +2 -0
- package/web/assets/ProductView-AUqnTwmQ.js +1 -0
- package/web/assets/SettingsPage-B9mmkWaM.js +3 -0
- package/web/assets/StudioGuestSurface-OOhRA8nt.js +1 -0
- package/web/assets/TodoListView-BkgMe44I.js +1 -0
- package/web/assets/Tooltip-DOYi44eY.js +1 -0
- package/web/assets/UnifiedPage-CTmQpf2T.css +1 -0
- package/web/assets/UnifiedPage-s7-tDSwG.js +712 -0
- package/web/assets/ViewSelectionBar-WmSWMFsR.js +2 -0
- package/web/assets/appStore-DDOkzWDA.js +456 -0
- package/web/assets/appStore-iy8_Tmac.css +1 -0
- package/web/assets/arrow-up-right-BptN64d-.js +1 -0
- package/web/assets/{artificial-BzLFkChP.css → artificial-BubVxExB.css} +1 -1
- package/web/assets/astryxBridge-BL56QfEv.js +69 -0
- package/web/assets/astryxBridge-djzCiy4v.css +1 -0
- package/web/assets/automationListSource-B1jz6q0t.js +1 -0
- package/web/assets/boardSurface-CP4HNmcm.js +1 -0
- package/web/assets/calendarNavStore-DCi7VBmM.js +1 -0
- package/web/assets/canvasPrefs-ArsX3NFO.js +1 -0
- package/web/assets/chatBoxSurface-DRsDr-MT.js +1 -0
- package/web/assets/chevron-up-ChXNh14u.js +1 -0
- package/web/assets/{client-CaivGZFR.js → client-fKy9CWk0.js} +5 -5
- package/web/assets/code-xml-DCCD9eCS.js +1 -0
- package/web/assets/{codeStudioStore-DhyMazGT.js → codeStudioStore-BgLfCDK2.js} +8 -8
- package/web/assets/codingNavigation-BrkLENBZ.css +1 -0
- package/web/assets/contextMenuSurface-BF593l2M.js +1 -0
- package/web/assets/copy-plus-ClKrSgM7.js +1 -0
- package/web/assets/create-DYmVT68X.js +14 -0
- package/web/assets/dashboardSurface-C6cbR3oG.js +1 -0
- package/web/assets/dbStore-BIG5Mfh2.js +1 -0
- package/web/assets/deskCapture-q-jRDIcc.js +1 -0
- package/web/assets/{diff2html-Daje9Kkm.js → diff2html-Di8qIz6O.js} +2 -2
- package/web/assets/{docx-preview-CABR7n30.js → docx-preview-B-URZXdP.js} +1 -1
- package/web/assets/draft-CBSW5tHx.js +2 -0
- package/web/assets/drawingStore-CGvTqqYW.js +7 -0
- package/web/assets/file-down-Z913cCyQ.js +1 -0
- package/web/assets/floatingTocSurface-DGwTiqvU.js +1 -0
- package/web/assets/foldActions-DGIPTmE1.js +1 -0
- package/web/assets/folder-1OJQeDI1.js +1 -0
- package/web/assets/folder-minus-D_j1SwHu.js +1 -0
- package/web/assets/folder-plus-DP9sFr26.js +1 -0
- package/web/assets/gestures-ZhFAENNZ.js +1 -0
- package/web/assets/git-branch-BMajF2cu.js +1 -0
- package/web/assets/homeCardStatus-5R7XkxFL.js +1 -0
- package/web/assets/i18n-CAf4PT1o.css +1 -0
- package/web/assets/i18n.generated-DW_l6CkR.js +15 -0
- package/web/assets/imageStudio-CwG21Bat.css +1 -0
- package/web/assets/imageStudio-DC_syDtx.js +4 -0
- package/web/assets/index-B8A3nKeL.js +1 -0
- package/web/assets/{index-BGfvNj7R.js → index-BDZIQnEx.js} +2 -2
- package/web/assets/index-BYKR7EVg.js +1 -0
- package/web/assets/index-BeW45J9J.js +7 -0
- package/web/assets/index-BnJguNqI.js +1 -0
- package/web/assets/index-BniT-A2n.js +1 -0
- package/web/assets/index-C--E96Ul.js +1 -0
- package/web/assets/index-CI2esW1X.js +1 -0
- package/web/assets/index-CIKPZc3Q.js +1 -0
- package/web/assets/index-COzdD7mZ.js +13 -0
- package/web/assets/index-CPfmhZ3Z.js +1 -0
- package/web/assets/index-CVLDDD5Z.js +1 -0
- package/web/assets/index-CWXpOSI2.js +1 -0
- package/web/assets/index-Cg1FWM_p.js +1 -0
- package/web/assets/index-CmsN2Zm2.js +1 -0
- package/web/assets/index-CtCYv9bF.js +1 -0
- package/web/assets/index-CtRdzpNh.js +1 -0
- package/web/assets/index-D-ClOPbg.js +1 -0
- package/web/assets/{index-gt5JBIFf.js → index-DfhEDV2T.js} +2 -2
- package/web/assets/index-Dr6YmrrT.js +1 -0
- package/web/assets/index-SpegRFQV.js +1 -0
- package/web/assets/index-bF04pF8q.js +3 -0
- package/web/assets/index-fDB1l4d-.js +3398 -0
- package/web/assets/index-jzlU5luC.js +1 -0
- package/web/assets/{index-O05r2Ty6.js → index-uhvJ8AiJ.js} +1 -1
- package/web/assets/{invitePage-Bgveo6Hj.js → invitePage-iOT1zBvp.js} +1 -1
- package/web/assets/{ipc-B6hkgxQL.js → ipc-SAPDwyQ4.js} +1 -1
- package/web/assets/{jszip.min-eU-k-vEy.js → jszip.min-B3n1FGCb.js} +1 -1
- package/web/assets/launchpad-C9U9hpWJ.css +1 -0
- package/web/assets/launchpad-CcmSwlJl.js +2 -0
- package/web/assets/layout-grid-oIyIGbc5.js +1 -0
- package/web/assets/linkFollow-uke1Xtit.js +8 -0
- package/web/assets/listFold-BeNv2v6M.js +1 -0
- package/web/assets/lock-open-D2nMg0ga.js +1 -0
- package/web/assets/log-out-D70NCXC4.js +1 -0
- package/web/assets/magnet-Cqmm97W8.js +1 -0
- package/web/assets/main-B9aT0WXG.js +15 -0
- package/web/assets/main-BlVApHpj.css +1 -0
- package/web/assets/markdownEditorSurface-BiDH0__r.css +1 -0
- package/web/assets/markdownEditorSurface-zUzFity2.js +3 -0
- package/web/assets/mediaPlayer-DB4KUvua.js +1 -0
- package/web/assets/message-square-plus-BvUfAAZm.js +1 -0
- package/web/assets/{messages-CKtabOqy.js → messages-GQUjmbwW.js} +1 -1
- package/web/assets/minimize-2-CMhzL6ZW.js +1 -0
- package/web/assets/mobileEntry-6u7TYC4s.css +1 -0
- package/web/assets/mobileEntry-BnHzrdoC.js +13 -0
- package/web/assets/modelPickerSurface-Dtz40Ae2.js +1 -0
- package/web/assets/nativeDownload-DsGyUSJ5.js +1 -0
- package/web/assets/nativeSheetMenu--iihXNVd.js +1 -0
- package/web/assets/pageStore-CyvNZEYX.js +13 -0
- package/web/assets/pageStore-ys8L4rjF.css +1 -0
- package/web/assets/{pageTree-BYYPgZm_.js → pageTree-Ci2qzrs1.js} +3 -3
- package/web/assets/pen-line-DC3lbEY1.js +1 -0
- package/web/assets/pen-tool-DD5_N4lZ.js +1 -0
- package/web/assets/pencil--sWwxHdP.js +1 -0
- package/web/assets/phoneList-BpLxxdq6.css +1 -0
- package/web/assets/phoneList-DKRMxQHf.js +1 -0
- package/web/assets/pluginChat-82zZt47Y.js +2 -0
- package/web/assets/react-b7FrqRQR.js +1 -0
- package/web/assets/recordSurface-vUX25Z8R.js +1 -0
- package/web/assets/redo-2-CqlqhWrI.js +1 -0
- package/web/assets/rotate-ccw-D8kni6Ni.js +1 -0
- package/web/assets/selectionActions-DIq0xDm8.js +2 -0
- package/web/assets/selectionBarSurface-B94e5JW_.js +1 -0
- package/web/assets/sessionTitle-Ctp4iNKu.js +1 -0
- package/web/assets/settingsPageSurface-C9TA3mJg.js +1 -0
- package/web/assets/sharePage-CY04XCAf.js +2 -0
- package/web/assets/{shareViewer-BiMqIBxP.js → shareViewer-DweNF8Ch.js} +2 -2
- package/web/assets/star-B0sZEmbj.js +1 -0
- package/web/assets/tableSurface-CSBYBw5P.js +1 -0
- package/web/assets/tanguProbe-B8Qv2vcm.js +6 -0
- package/web/assets/{terminalView-lbcBgG0c.js → terminalView-BLGdmdl7.js} +3 -3
- package/web/assets/type-Dt7RNB9g.js +1 -0
- package/web/assets/undo-2-QimgpLBn.js +1 -0
- package/web/assets/{unitAccount-DGwGsmC3.js → unitAccount-DL3jfd84.js} +1 -1
- package/web/assets/{unitBridge-CE2yAvm0.js → unitBridge-BSsCy1zP.js} +1 -1
- package/web/assets/{unitCloudTransport-BGFwkaDM.js → unitCloudTransport-CI_6H0TU.js} +1 -1
- package/web/assets/unitOwnerAccess-CiQ7nD7E.js +1 -0
- package/web/assets/unitShim-Dl2ksNp-.js +5 -0
- package/web/assets/upload-Dy7svciS.js +1 -0
- package/web/assets/userSpaces-oMHIWgYe.js +1 -0
- package/web/assets/viewportLock-B0l1GU_k.css +1 -0
- package/web/assets/viewportLock-BZq5PTeN.js +738 -0
- package/web/assets/zoom-in-DDEtY_Go.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/ViewSelectionBar-35x8TiLA.js +0 -2
- 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/listFold-M8s5JYEC.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,3 @@
|
|
|
1
|
+
import{u as It,r as p,j as l,a as Gt,t as st}from"./index-fDB1l4d-.js";import{p as tn,am as en,F as nn,T as an,X as rn,av as sn,aE as ln,ad as qe,u as He,h as on,aj as Oe,R as ot,bt as cn,as as he,br as dn,aA as un,a7 as mn}from"./pageStore-CyvNZEYX.js";import"./client-fKy9CWk0.js";import{A as Ee}from"./astryxBridge-BL56QfEv.js";import{aW as fn,bb as pn,k$ as Ye,pQ as ve,qg as hn,pR as Be,pU as yn,pV as gn,oi as we,eT as K,qh as Jt,qi as Rt,qj as Mt,qk as Fe,ql as Xe,qm as le,pX as xn,p_ as vn,qn as B,qo as be,qp as wn,qq as Se,qr as bn,qs as kn,qt as Mn,qu as Dn,qv as Cn,qw as En,qx as $e,qy as Sn,qz as Ht,qA as G,qB as $t,qC as fe,qD as $n,qE as jn,qF as Ue,qG as Ot,qH as Tn,qI as zn,qJ as je,qK as Te,qL as ze,qM as We,qN as Rn,qO as ae}from"./appStore-DDOkzWDA.js";import{u as w,H as Nn}from"./calendarNavStore-DCi7VBmM.js";import{c as Pn,a as In,b as nt,d as Zt,s as Ve,r as ke,o as Ln,e as An,E as qn,f as Hn,u as On,g as Yn}from"./EventCard-QyYorE1_.js";import{R as Bn}from"./redo-2-CqlqhWrI.js";import{U as Fn}from"./undo-2-QimgpLBn.js";import{C as Xn,a as Un}from"./copy-plus-ClKrSgM7.js";import{n as ft}from"./nativeDownload-DsGyUSJ5.js";import{c as Wn}from"./react-b7FrqRQR.js";import{p as oe,d as ye,B as re,D as Vn,a as se,b as ce,T as pe}from"./draft-CBSW5tHx.js";import{Z as _n,a as Kn}from"./zoom-in-DDEtY_Go.js";import{R as Zn}from"./rotate-ccw-D8kni6Ni.js";import"./ipc-SAPDwyQ4.js";import"./dbStore-BIG5Mfh2.js";import"./drawingStore-CGvTqqYW.js";import"./chevron-up-ChXNh14u.js";const Jn=[["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M8.12 8.12 12 12",key:"1alkpv"}],["path",{d:"M20 4 8.12 15.88",key:"xgtan2"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M14.8 14.8 20 20",key:"ptml3r"}]],Gn=tn("scissors",Jn);Gt({"calevmenu.copy":{zh:"复制",en:"Copy"},"calevmenu.cut":{zh:"剪切",en:"Cut"},"calevmenu.clone":{zh:"克隆",en:"Clone"},"calevmenu.paste":{zh:"粘贴",en:"Paste"},"calevmenu.delete":{zh:"删除",en:"Delete"},"calevmenu.undo":{zh:"撤销",en:"Undo"},"calevmenu.redo":{zh:"重做",en:"Redo"},"calevmenu.summary":{zh:"复制摘要",en:"Copy summary"},"calevmenu.back":{zh:"返回详情",en:"Back to details"},"calevmenu.readonly":{zh:"此来源只支持查看和复制摘要。",en:"This source supports viewing and copying a summary."},"calevmenu.fixedTime":{zh:"系统时间属性不可移动。",en:"System time properties cannot be moved."},"calevmenu.note":{zh:"此事件关联笔记文件,删除时需确认。",en:"This event is a note file. Deletion requires confirmation."}});const Qn={copy:pn,cut:Gn,clone:Un,paste:Xn,delete:fn,undo:Fn,redo:Bn,summary:nn},Re={copy:"C",cut:"X",clone:"D",paste:"V",undo:"Z",redo:"⇧Z",delete:"Del"};function Ne({at:r,mobile:c,writable:i,note:o,hasClip:f,onRun:x,onClose:$,hasEvent:I=!0,canCut:Y=!0}){const{t:N}=It(),L=p.useRef(null);p.useEffect(()=>{L.current?.querySelector("button:not([disabled])")?.focus();const v=j=>{L.current?.contains(j.target)||$()};return c||window.addEventListener("pointerdown",v),()=>window.removeEventListener("pointerdown",v)},[]);const C=I?i?["copy","cut","clone","paste","summary","delete","undo","redo"]:["summary"]:["paste","undo","redo"],V=l.jsxs("div",{ref:L,className:`amx-cal-eventmenu${c?" phone":""}`,role:"menu",onKeyDown:v=>{if(v.key==="Escape"||c&&v.key==="ArrowLeft"){v.preventDefault(),v.stopPropagation(),$();return}const j=Array.from(L.current?.querySelectorAll("button:not([disabled])")??[]);if(["ArrowDown","ArrowUp","Home","End"].includes(v.key)){v.preventDefault();const q=j.indexOf(document.activeElement),F=v.key==="Home"?0:v.key==="End"?j.length-1:(q+(v.key==="ArrowDown"?1:-1)+j.length)%j.length;j[F]?.focus()}},children:[c&&l.jsxs("button",{role:"menuitem",onClick:$,children:[l.jsx(en,{size:16}),N("calevmenu.back")]}),I&&(!i||o)&&l.jsx("p",{children:N(o?"calevmenu.note":"calevmenu.readonly")}),C.map(v=>{const j=Qn[v];return l.jsxs("button",{role:"menuitem","aria-label":N(`calevmenu.${v}`),className:v==="delete"?"danger":"",title:v==="cut"&&!Y?N("calevmenu.fixedTime"):void 0,disabled:v==="cut"&&!Y||v==="paste"&&!f||v==="undo"&&!Pn()||v==="redo"&&!In(),onClick:()=>x(v),children:[l.jsx(j,{size:16}),l.jsx("span",{children:N(`calevmenu.${v}`)}),!c&&Re[v]&&l.jsx("kbd",{"aria-hidden":"true",children:v==="delete"?"Del":`${navigator.platform.includes("Mac")?"⌘":"Ctrl+"}${Re[v]}`})]},v)})]});return c?V:an.createPortal(l.jsx(rn,{x:r.x,y:r.y,className:"ctx-menu amx-cal-menu-position",children:V}),document.body)}Gt({"calclip.copied":{zh:"已复制事件",en:"Event copied"},"calclip.cut":{zh:"已剪切,选择时间格后粘贴",en:"Event cut. Choose a time slot and paste"},"calclip.created":{zh:"已创建事件副本",en:"Event duplicated"},"calclip.failed":{zh:"操作未完成,原事件已保留。",en:"The action could not finish. The original event was kept."},"calclip.scope":{zh:"请在原智库的同一日历中粘贴。",en:"Paste into the same calendar in the original vault."},"calclip.noteCopy":{zh:"笔记事件请在来源中复制文件,以保留完整正文。",en:"Duplicate the note in its source to preserve the complete document."}});const Pt=Wn(()=>({clip:null}));let ie=0;function _t(){++ie,Pt.setState({clip:null})}function Pe(r,c=!1){const i=++ie;if(r.db.readonly||c&&ve(r.db.columns.find(f=>f.id===r.colId)?.type??""))return!1;const o=Zt(r.db,r.row.rowId);if(!o)return!1;if(r.db.isNoteView&&!c){const f=nt();return(async()=>{try{if(await sn(!0),nt()!==f||i!==ie)return!1;const x=await ln.readTextFile(o.rowId);return x==null||nt()!==f||i!==ie?!1:(Pt.setState({clip:{scope:f,event:{...r,row:structuredClone(o),noteText:x},cut:c}}),ft({level:"info",text:st("calclip.copied")}),!0)}catch{return ft({level:"warning",text:st("calclip.failed")}),!1}})()}return Pt.setState({clip:{scope:nt(),event:{...r,row:structuredClone(o)},cut:c}}),ft({level:"info",text:st(c?"calclip.cut":"calclip.copied")}),!0}function Ie(r,c){const i=we(r);if(!i||!c)return r;const o=K(i.start),f=new Date(c);i.allDay&&f.setHours(0,0,0,0);const x=i.end?i.allDay?Jt(K(i.end),Rt(f,o)):new Date(f.getTime()+K(i.end).getTime()-o.getTime()):null;return`${Mt(f,i.allDay)}${x?`/${Mt(x,i.allDay)}`:""}`}async function Me(r,c=r.raw){const i=nt();if(r.db.readonly)return null;if(c!==r.raw&&ve(r.db.columns.find(f=>f.id===r.colId)?.type??""))return ft({level:"warning",text:st("calclip.failed")}),null;const o=Ye(r.db.path);if(!o||JSON.stringify(o.columns)!==JSON.stringify(r.db.columns))return ft({level:"warning",text:st("calclip.failed")}),null;try{const f=await hn({...r.db,rows:[r.row]},r.row.rowId,()=>nt()===i,r.noteText);if(!f||i!==nt())return null;if(c!==r.raw&&Be(r.db,f,r.colId,c),r.db.isNoteView)return ft({level:"info",text:st("calclip.created")}),f;const x=structuredClone(Zt(r.db,f));let $=[];return Ln(st("calclip.created"),()=>Ve(r.db,Zt(r.db,f),x)?($=yn(r.db,f,x),!0):!1,()=>Zt(r.db,f)?!1:(gn(r.db,x,$),!0)),f}catch{return ft({level:"error",text:st("calclip.failed")}),null}}async function _e(r,c){const i=Pt.getState().clip;if(!i)return null;const o=i.event;if(i.scope!==nt()||r&&r.path!==o.db.path||r?.readonly)return ft({level:"warning",text:st("calclip.scope")}),null;const f=Ye(o.db.path);if(!f||JSON.stringify(f.columns)!==JSON.stringify(o.db.columns))return ft({level:"warning",text:st("calclip.failed")}),null;if(i.cut){const $=Zt(o.db,o.row.rowId);if(!$||!Ve(o.db,$,o.row))return ft({level:"warning",text:st("calclip.failed")}),null;const I=Ie(o.raw,c);return ke(o.db,$,o.colId,o.raw,I,o.title),_t(),{db:o.db,id:$.rowId}}const x=await Me(o,Ie(o.raw,c));return x?{db:o.db,id:x}:null}Gt({"calside.newEvent":{zh:"新事件",en:"New event"},"calside.calendar":{zh:"日历",en:"Calendar"},"calside.save":{zh:"保存",en:"Save"},"calside.cancel":{zh:"取消",en:"Cancel"},"calside.discard":{zh:"放弃未保存的事件?",en:"Discard this unsaved event?"},"calside.paste":{zh:"在此粘贴事件",en:"Paste event here"},"calside.hint":{zh:"标题在格子里直接打。Enter 保存,Esc 取消;没写标题不会新建。",en:"Type the title right in the grid. Enter saves, Esc cancels; nothing is created without a title."}});const ta=300,ea=300;function na({rootRef:r,onPasted:c}){const{t:i}=It(),o=w(m=>m.draft),f=Pt(m=>m.clip),x=qe==="mobile"||!!window.tangu?.mobile,$=w(m=>m.draftApi),I=Fe(),Y=He(m=>m.vaultRoot)??"",N=Xe(m=>m.byVault),[L,C]=p.useState(null),V=o?`${o.day}|${o.endDay}|${o.startMin}|${o.endMin}`:"",v=()=>{(!o?.title.trim()||window.confirm(i("calside.discard")))&&$?.cancel()};if(on(x&&o?{mode:"page",title:i("calside.newEvent"),back:i("calside.cancel"),onBack:v}:null),p.useLayoutEffect(()=>{if(!x||!o)return;const m=k=>{k.preventDefault(),k.detail?.probe||v()};return window.addEventListener("forsion:mobile-back",m),()=>window.removeEventListener("forsion:mobile-back",m)},[x,o]),p.useLayoutEffect(()=>{if(!V||x){C(null);return}const m=()=>{const k=document.querySelector(".amx-cal-draft-input")?.closest(".amx-cal-draft"),S=k?.closest(".amx-cal-tscroll, .amx-cal-mscroll")?.getBoundingClientRect(),_=k?.getBoundingClientRect();if(!_||!S||_.bottom<S.top||_.top>S.bottom||_.right<S.left||_.left>S.right){C(null);return}C(An({left:_.left,top:_.top,right:_.right,bottom:_.bottom,zoom:ot(k)||1},{w:ta,h:ea,maxRight:r.current?.getBoundingClientRect().right}))};return m(),window.addEventListener("scroll",m,!0),window.addEventListener("resize",m),()=>{window.removeEventListener("scroll",m,!0),window.removeEventListener("resize",m)}},[V,r]),!o||!L&&!x)return null;const j=I.filter(m=>!m.db.readonly),q=oe(I,o.dbPath,le(Y,N))?.db.path,F=xn(ye(o)),O=m=>{const k=w.getState().draft;k&&w.getState().setDraft({...k,dbPath:m})},H=m=>m.preventDefault();return l.jsxs("section",{className:`amx-cal-cardwrap amx-cal-draftcard${x?" amx-cal-drawer":""}`,"data-kb-rise":x?"bar":void 0,style:x?void 0:L,role:"dialog","aria-modal":"false","aria-label":i("calside.newEvent"),onMouseDown:x?void 0:H,onPointerDown:m=>m.stopPropagation(),children:[x?l.jsxs(l.Fragment,{children:[l.jsx("button",{className:"amx-cal-drawer-grab","aria-label":i("calside.cancel"),onClick:v,children:l.jsx("span",{})}),l.jsx("input",{className:"amx-cal-card-title",value:o.title,placeholder:i("calside.newEvent"),"aria-label":i("calside.newEvent"),onChange:m=>w.getState().setDraft({...o,title:m.target.value})}),l.jsx(vn,{value:ye(o),onChange:m=>{const k=we(m);if(!k)return;const S=K(k.start),_=k.end?K(k.end):B(S,30);w.getState().setDraft({...o,day:k.start.slice(0,10),endDay:(k.end??k.start).slice(0,10),startMin:k.allDay?null:S.getHours()*60+S.getMinutes(),endMin:k.allDay?0:(_.getTime()-K(k.start.slice(0,10)).getTime())/6e4})}})]}):l.jsx("div",{className:"amx-cal-draft-title",children:o.title||l.jsx("span",{className:"ph",children:i("calside.newEvent")})}),F&&l.jsxs("div",{className:"amx-cal-draft-time",children:[l.jsxs("span",{className:"amx-cal-card-timehead",children:[F.head,F.badge&&l.jsx("span",{className:"amx-cal-card-badge",children:F.badge})]}),F.date&&l.jsx("span",{className:"amx-cal-card-timesub",children:F.date})]}),l.jsx("div",{className:"amx-cal-draft-label",children:i("calside.calendar")}),l.jsx("div",{className:"amx-cal-draft-cals",children:j.map(m=>l.jsxs("button",{className:`amx-cal-draft-cal${m.db.path===q?" on":""}`,onMouseDown:H,onClick:()=>O(m.db.path),children:[l.jsx("i",{style:{background:be(Y,N,m.db.path,I.indexOf(m))}}),l.jsx("span",{children:m.db.name}),m.db.path===q&&l.jsx(Oe,{size:13})]},m.db.path))}),!x&&l.jsx("p",{className:"amx-cal-draft-hint",children:i("calside.hint")}),x&&f&&l.jsx("button",{onClick:()=>{if(o.title.trim()&&!window.confirm(i("calside.discard")))return;const m=nt();_e(q?I.find(k=>k.db.path===q)?.db:void 0,B(K(o.day),o.startMin??0)).then(k=>{k&&nt()===m&&w.getState().draft===o&&($?.cancel(),c?.(`${k.db.path}::${k.id}`))})},children:i("calside.paste")}),l.jsxs("div",{className:"amx-cal-draft-actions",children:[l.jsx("button",{className:"amx-cal-draft-cancel",onMouseDown:x?void 0:H,onClick:x?v:()=>$?.cancel(),children:i("calside.cancel")}),l.jsx("button",{className:"amx-cal-draft-save",disabled:!o.title.trim(),onMouseDown:H,onClick:()=>$?.commit(),children:i("calside.save")})]})]})}Gt({"calkeys.modeDay":{zh:"日",en:"Day"},"calkeys.modeWeek":{zh:"周",en:"Week"},"calkeys.mode3day":{zh:"3 日",en:"3 days"},"calkeys.modeMonth":{zh:"月",en:"Month"}});const Ke=[{id:"day",get label(){return st("calkeys.modeDay")},key:"d"},{id:"week",get label(){return st("calkeys.modeWeek")},key:"w"},{id:"3day",get label(){return st("calkeys.mode3day")},key:"3"},{id:"month",get label(){return st("calkeys.modeMonth")},key:"m"}];function aa(r){const c=(r.metaKey||r.ctrlKey)&&!r.altKey;if(c&&(r.shiftKey&&r.key.toLowerCase()==="z"||r.key.toLowerCase()==="y"))return{kind:"redo"};if(c&&!r.shiftKey&&(r.key==="z"||r.key==="Z"))return{kind:"undo"};if(c&&r.key.toLowerCase()==="x")return{kind:"cut"};if(c&&(r.key==="d"||r.key==="D"))return{kind:"duplicate"};if(c&&(r.key==="c"||r.key==="C"))return{kind:"copy"};if(c&&(r.key==="v"||r.key==="V"))return{kind:"paste"};if(r.metaKey||r.ctrlKey||r.altKey)return null;if(r.key==="ContextMenu"||r.shiftKey&&r.key==="F10")return{kind:"menu"};if(r.key==="Delete"||r.key==="Backspace")return{kind:"delete"};if(r.key==="ArrowLeft")return{kind:"prev"};if(r.key==="ArrowRight")return{kind:"next"};if(r.key==="Escape")return{kind:"escape"};if(r.key==="Enter")return{kind:"rename"};if(r.key==="c"||r.key==="C")return{kind:"new"};if(r.key==="t"||r.key==="T")return{kind:"today"};const i=Ke.find(o=>o.key===r.key.toLowerCase());return i?{kind:"mode",mode:i.id}:null}const Wt=r=>r.end?.getTime()??r.start.getTime()+3600*1e3;function ra(r){const c=[...r].sort((o,f)=>o.start.getTime()-f.start.getTime()||Wt(o)-Wt(f)),i=new Map;for(let o=0;o<c.length;){let f=o+1,x=Wt(c[o]);for(;f<c.length&&c[f].start.getTime()<x;)x=Math.max(x,Wt(c[f])),f+=1;const $=c.slice(o,f),I=[],Y=$.map(L=>{let C=I.findIndex(V=>V<=L.start.getTime());return C<0&&(C=I.length),I[C]=Wt(L),{ev:L,lane:C}}),N=Math.max(1,I.length);for(const{ev:L,lane:C}of Y)i.set(L.key,{lane:C,laneCount:N,leftPct:C/N*100,widthPct:100/N});o=f}return i}Gt({"calview.untitled":{zh:"未命名",en:"Untitled"},"calview.newEventTitle":{zh:"新事件",en:"New event"},"calview.newEvent":{zh:"新建事件",en:"New event"},"calview.today":{zh:"今天",en:"Today"},"calview.prevPage":{zh:"上一页",en:"Previous"},"calview.nextPage":{zh:"下一页",en:"Next"},"calview.weekNo":{zh:"第 {n} 周",en:"Week {n}"},"calview.zoomOut":{zh:"缩小时间轴",en:"Zoom out timeline"},"calview.zoomIn":{zh:"放大时间轴",en:"Zoom in timeline"},"calview.densityReset":{zh:"恢复默认密度",en:"Reset to default density"},"calview.weekStart":{zh:"一周开始于",en:"Week starts on"},"calview.weekStartAuto":{zh:"跟随语言({day})",en:"Match language ({day})"},"calview.sunday":{zh:"周日",en:"Sunday"},"calview.monday":{zh:"周一",en:"Monday"},"calview.empty":{zh:"还没有日历事件。单击时间格新建,按住拖出时长,或按 C。",en:"No calendar events yet. Click a time slot to add one, drag to set its length, or press C."},"calview.emptyNoDb":{zh:"还没有日历。在左栏「日历」右边点 +,选一个含日期属性的多维表。",en:'No calendars yet. Use + next to "Calendars" in the left panel to pick a database with a date property.'},"calview.allDay":{zh:"全天",en:"All-day"},"calview.a11yAllDayEvent":{zh:"{title},全天事件",en:"{title}, all-day event"},"calview.allDayDragHint":{zh:"{title}(可拖入时间格设为定时)",en:"{title} (drag into a time slot to schedule it)"},"calview.a11yEvent":{zh:"{title},{time}",en:"{title}, {time}"},"calview.a11yEventRange":{zh:"{title},{start} 至 {end}",en:"{title}, {start} to {end}"},"calview.a11yDone":{zh:"标记完成:{title}",en:"Mark done: {title}"},"calview.monthFirst":{zh:"{m}月1",en:"{m}/1"},"calview.moreItems":{zh:"还有 {n} 项",en:"{n} more"},"calview.viewOptions":{zh:"显示选项",en:"Display options"},"calview.a11yMoreEvents":{zh:"查看 {m} 月 {d} 日全部 {n} 个事件",en:"View all {n} events on {m}/{d}"},"calview.a11yDayEvents":{zh:"{m} 月 {d} 日事件",en:"Events on {m}/{d}"},"calview.dayHeading":{zh:"{m} 月 {d} 日",en:"{m}/{d}"},"calview.closeAgenda":{zh:"关闭日程列表",en:"Close agenda list"},"calview.resizeStart":{zh:"调整开始时间",en:"Adjust start time"},"calview.resizeEnd":{zh:"调整结束时间",en:"Adjust end time"}});const kt=26,Le=8.4,ge=34,Vt=150,Ae=40,P=!(qe==="mobile"||typeof window<"u"&&window.tangu?.mobile);function sa(r,c,i){const o=[];return r.forEach(({db:f,dateCol:x,checkboxCol:$},I)=>{if(Tn(c,i,f.path))return;const Y=be(c,i,f.path,I);for(const N of f.rows){const L=typeof N.cells[x]=="string"?N.cells[x]:"",C=we(L);C&&o.push({key:`${f.path}::${N.rowId}`,color:Y,db:f,row:N,colId:x,title:N.name,raw:L,start:K(C.start),end:C.end?K(C.end):null,allDay:C.allDay,readonly:!!f.readonly&&!f.writeCell||ve(f.columns.find(V=>V.id===x)?.type??""),check:$,done:$?N.cells[$]===!0:void 0})}}),o}const la=r=>P&&!!r.check&&r.allDay&&!r.end,et=r=>`${String(r.getHours()).padStart(2,"0")}:${String(r.getMinutes()).padStart(2,"0")}`,xt=r=>`${String(Math.floor(r/60)).padStart(2,"0")}:${String(r%60).padStart(2,"0")}`,X=r=>Mt(r,!0),mt=r=>{const c=r.currentTarget,i=c.getBoundingClientRect();return{left:i.left,top:i.top,right:i.right,bottom:i.bottom,zoom:ot(c)||1}},Kt=(r,c,i)=>c?`${Mt(r,i)}/${Mt(c,i)}`:Mt(r,i),St=(r,c,i,o=r.allDay)=>ke(r.db,r.row,r.colId,r.raw,Kt(c,i,o),r.title),Nt=r=>({"--amx-event-color":r}),De=(r,c,i)=>{const o=G(i).getTime(),f=G(r).getTime()<o,x=G(c??r).getTime()>o;return`${f?" continues-left":""}${x?" continues-right":""}`};function xe(){const r=w.getState();r.draft&&(r.draft.title.trim()?r.draftApi?.commit():r.setDraft(null))}const Ze=r=>r.draft?`${r.draft.day}|${r.draft.endDay}|${r.draft.startMin}|${r.draft.endMin}`:"";function Ta({leafId:r}={}){const{t:c}=It(),i=wn(),o=Se(s=>s.pref),f=Fe(),x=bn(),$=kn(),I=Mn(),Y=Dn(),N=He(s=>s.vaultRoot)??"",L=Xe(s=>s.byVault),C=w(s=>s.mode),V=w(s=>s.setMode);cn(r,{modes:Ke.map(s=>({value:s.id,label:s.label,hotkey:s.key.toUpperCase()})),value:C,onChange:s=>V(s)});const v=w(s=>s.hourPx),j=w(s=>s.setHourPx),q=w(s=>s.jumpNonce),F=w(s=>s.selection),O=w(s=>!!s.draft),[H,m]=p.useState(null),[k,S]=p.useState(null),[_,T]=p.useState(!1),[vt,wt]=p.useState(null),[dt,ut]=p.useState(!1),[ct,A]=p.useState(!1),U=Pt(s=>s.clip),J=p.useRef(void 0),jt=p.useRef(null),at=p.useRef(null),Tt=p.useRef(null);p.useEffect(()=>{C!=="month"&&(Tt.current=null)},[C]);const pt=p.useRef(null),Q=p.useRef(null),tt=p.useRef(0);p.useEffect(()=>{if(!q)return;const s=w.getState().jumpDate;s&&at.current?.goto(K(s))},[q]),Cn();const ht=p.useMemo(()=>[...f.map(s=>({db:s.db,dateCol:s.dateCol,checkboxCol:s.checkboxCol})),...[...x,...$,...I,...Y].map(s=>({db:s,dateCol:En(s)?.id})).filter(s=>!!s.dateCol)],[f,x,$,I,Y]),W=p.useMemo(()=>sa(ht,N,L),[ht,N,L]),y=p.useRef(W);y.current=W;const d=p.useMemo(()=>W.map(s=>s.title?s:{...s,title:c("calview.untitled")}),[W,c]),M=H?.key??F?.key??null,z=M?W.find(s=>s.key===M)??null:null;pt.current=z;const rt=oe(f,null,le(N,L)),it=s=>{const u=oe(f,s,le(N,L));return u?be(N,L,u.db.path,f.indexOf(u)):"var(--accent)"},D=(s,u)=>{if(++tt.current,P)xe();else{if(w.getState().draft?.title.trim()&&!window.confirm(c("calside.discard")))return;w.getState().setDraft(null)}Q.current=null;const t=y.current.find(e=>e.key===s);t&&w.getState().setSelection({key:s,target:t}),S(null),T(!1),A(!1),J.current=void 0,m({key:s,at:u})},Z=s=>{const u=y.current.find(t=>t.key===s);if(!u){Q.current=s;return}if(w.getState().setSelection({key:s,target:u}),!P){const t=gt.current?.querySelector(`[data-key="${CSS.escape(s)}"]`);if(t){const e=t.getBoundingClientRect();T(!1),m({key:s,at:{left:e.left,top:e.top,right:e.right,bottom:e.bottom,zoom:ot(t)||1}})}}};p.useEffect(()=>{const s=w.getState();H&&!W.some(a=>a.key===H.key)&&(m(null),S(null));const u=Q.current;u&&W.some(a=>a.key===u)&&(Q.current=null,Z(u));const t=w.getState().selection;if(!t)return;const e=W.find(a=>a.key===t.key);e?e!==t.target&&s.setSelection({key:t.key,target:e}):s.setSelection(null)},[W]),p.useEffect(()=>(m(null),S(null),wt(null),_t(),w.getState().setSelection(null),()=>{_t()}),[N]);const yt=()=>{++tt.current;const s=w.getState(),u=!!s.draft||!!s.selection||!!H;if(P)xe();else if(s.draft){if(s.draft.title.trim()&&!window.confirm(c("calside.discard")))return!0;s.setDraft(null)}return s.selection&&s.setSelection(null),m(null),S(null),J.current=void 0,u},Dt=s=>{if(++tt.current,!rt)return;const u=w.getState();u.setSelection(null),m(null),J.current=B(K(s.day),s.startMin??0),u.setDraft({...s,title:"",dbPath:U&&f.some(t=>t.db.path===U.event.db.path)?U.event.db.path:null})},Lt=p.useRef(async()=>{});Lt.current=async()=>{const s=w.getState(),u=s.draft;if(!u)return;s.setDraft(null);const t=oe(f,u.dbPath,le(N,L));if(!t)return;const e=s.selection,a=tt.current,n=nt(),h=await $e(t.db,t.dateCol,ye(u),u.title.trim()||c("calview.newEventTitle"));he("calendar.event"),a===tt.current&&n===nt()&&!w.getState().draft&&w.getState().selection===e&&Z(`${t.db.path}::${h}`)},p.useEffect(()=>(w.getState().setDraftApi({commit:()=>{Lt.current()},cancel:()=>w.getState().setDraft(null)}),()=>{const u=w.getState();u.setDraftApi(null),u.setDraft(null),u.setSelection(null)}),[]);const Yt=async(s,u,t)=>{if(!rt)return;if(!P){const g=X(s);Dt({day:g,endDay:g,startMin:u,endMin:u===null?0:u+30});return}const{db:e,dateCol:a}=rt;let n;if(u===null)n=Mt(s,!0);else{const g=B(G(s),u);n=`${Mt(g,!1)}/${Mt(B(g,30),!1)}`}const h=await $e(e,a,n,c("calview.newEventTitle"));he("calendar.event"),m({key:`${e.path}::${h}`,at:t})},bt=()=>{const s=new Date,u=X(s);if(at.current?.today(),C==="month"){Dt({day:u,endDay:u,startMin:null,endMin:0});return}const[t,e]=ce(Math.ceil((s.getHours()*60+s.getMinutes())/15)*15,0,!0);Dt({day:u,endDay:u,startMin:t,endMin:e})},Bt=p.useRef(bt);Bt.current=bt;const Ct=p.useRef(yt);Ct.current=yt;const At=s=>{const u=pt.current;switch(S(null),gt.current?.focus({preventScroll:!0}),s){case"copy":u&&Pe(u);break;case"cut":u&&Pe(u,!0);break;case"clone":{const t=tt.current,e=nt();u&&Me(u).then(a=>{a&&t===tt.current&&e===nt()&&(m(null),Z(`${u.db.path}::${a}`))});break}case"paste":{const t=w.getState().draft;if(t?.title.trim()&&!window.confirm(c("calside.discard")))break;const e=tt.current,a=nt(),n=J.current??(t?B(K(t.day),t.startMin??0):void 0);_e(n?void 0:u?.db,n).then(h=>{!h||e!==tt.current||nt()!==a||w.getState().draft!==t||(w.getState().setDraft(null),m(null),Z(`${h.db.path}::${h.id}`))});break}case"delete":if(!u||u.db.readonly)break;Yn(u.db,u.row,u.title),w.getState().setSelection(null),m(null),U?.cut&&U.event.row.rowId===u.row.rowId&&U.event.db.path===u.db.path&&_t();break;case"undo":On();break;case"redo":Hn();break;case"summary":u&&navigator.clipboard?.writeText(`${u.title}
|
|
2
|
+
${u.raw}
|
|
3
|
+
${u.db.name}`).catch(()=>ft({level:"warning",text:c("calclip.failed")}));break}},Qt=p.useRef(At);Qt.current=At;const te=()=>{k?S(null):Ct.current()};p.useEffect(()=>{if(P||!H&&!k)return;const s=u=>{u.preventDefault(),u.detail?.probe||te()};return window.addEventListener("forsion:mobile-back",s),()=>window.removeEventListener("forsion:mobile-back",s)},[H,k]);const gt=p.useRef(null);p.useEffect(()=>{const s=u=>{const t=gt.current;if(!t||!t.getClientRects().length)return;const e=u.target;if(u.isComposing||e?.closest('[role="menu"]')||e&&e.closest("input, textarea, select, [contenteditable]"))return;const a=w.getState().sideEl,n=document.activeElement;if(n?.closest('[role="dialog"]')&&!n.closest(".amx-cal-cardcatch.calendar"))return;const h=!!n?.closest(".amx-calcfg");if(n&&n!==document.body&&!t.contains(n)&&!a?.contains(n)&&!h&&n.closest(".dv-react-part"))return;const g=aa(u);if(!g||h&&!["today","prev","next","mode"].includes(g.kind))return;const R=pt.current,E=w.getState();switch(g.kind){case"copy":case"cut":case"paste":case"duplicate":case"delete":case"undo":case"redo":Qt.current(g.kind==="duplicate"?"clone":g.kind);break;case"menu":{if(!R)return;const b=t.querySelector(`[data-key="${CSS.escape(R.key)}"]`)?.getBoundingClientRect();b&&S({x:b.left,y:b.bottom});break}case"new":if(!P)return;Bt.current();break;case"today":at.current?.today();break;case"rename":{if(e?.closest("button")&&!e.closest(".amx-cal-event, .amx-cal-chip-ev")||!R)return;if(A(!0),H)break;if(!E.selection)return;const b=t.querySelector(`[data-key="${CSS.escape(E.selection.key)}"]`)??t.querySelector(`.amx-cal-mcell[data-date="${X(R.start)}"], .amx-cal-daycol2[data-date="${X(R.start)}"]`);if(!b)return;const lt=b.getBoundingClientRect();m({key:E.selection.key,at:{left:lt.left,top:lt.top,right:lt.right,bottom:lt.bottom,zoom:ot(b)||1}}),E.setSelection(null);break}case"escape":if(Pt.getState().clip?.cut&&_t(),k){S(null);break}if(E.draft)E.setDraft(null);else if(E.selection||H)Ct.current();else return;break;case"prev":at.current?.prev();break;case"next":at.current?.next();break;case"mode":E.setMode(g.mode);break}u.preventDefault()};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[H,k]);const[de,ue]=p.useState(7);p.useLayoutEffect(()=>{const s=gt.current;if(!s)return;const u=()=>{if(!s.clientWidth)return;const e=s.clientWidth-52;ue(e>=588?7:e>=252?3:1)};u();const t=new ResizeObserver(u);return t.observe(s),()=>t.disconnect()},[]);const qt=Math.min(C==="week"?7:C==="3day"?3:1,de),Ft=s=>c(s===1?"calview.monday":"calview.sunday"),ee=[{value:"auto",label:c("calview.weekStartAuto",{day:Ft(zn())})},{value:0,label:Ft(0)},{value:1,label:Ft(1)}],Xt=(s,u)=>{const t=f.find(n=>n.db.path===s.dbPath),e=t?.db.rows.find(n=>n.rowId===s.rowId);if(!t||!e||t.db.readonly)return;const a=typeof e.cells[t.dateCol]=="string"?e.cells[t.dateCol]:"";ke(t.db,e,t.dateCol,a,u,e.name)},me=s=>s?l.jsx(Oe,{size:14}):l.jsx("span",{style:{display:"inline-block",width:14}}),ne={events:d,selectedKey:M,cutKey:U?.cut?`${U.event.db.path}::${U.event.row.rowId}`:null,onPick:D,canCreate:!!rt,onDismiss:yt,onDraft:Dt,colorOf:it,onTodoDrop:Xt,titleRef:jt,onGesture:s=>{ut(!!s),wt(u=>u?.key===s?.key&&u?.raw===s?.raw?u:s),s&&(w.getState().selection?.key!==s.key&&w.getState().setSelection({key:s.key,target:s}),T(!0))}};return l.jsxs("div",{className:`amx-cal${P?"":" mobile"}${!P&&(H||O)?` drawer-open${_&&H?" drawer-small":""}`:""}`,ref:gt,tabIndex:-1,"data-cut-key":U?.cut?`${U.event.db.path}::${U.event.row.rowId}`:void 0,onContextMenu:s=>{if(s.target.closest(".amx-cal-cardwrap, input, textarea"))return;const u=s.target.closest("[data-key]"),t=y.current.find(a=>a.key===u?.dataset.key);if(t){s.preventDefault(),s.stopPropagation();const a=u.getBoundingClientRect();P?(w.getState().setSelection({key:t.key,target:t}),m(null),J.current=void 0):D(t.key,{left:a.left,top:a.top,right:a.right,bottom:a.bottom,zoom:ot(u)||1}),S({x:s.clientX,y:s.clientY});return}const e=s.target.closest("[data-date]");if(e?.dataset.date){s.preventDefault(),s.stopPropagation(),yt();const a=e.classList.contains("amx-cal-daycol2")?Math.max(0,Math.min(1425,Ht((s.clientY-e.getBoundingClientRect().top)/(ot(e)||1)/v*60))):0;J.current=B(K(e.dataset.date),a),S({x:s.clientX,y:s.clientY})}},children:[l.jsx(Ee,{children:l.jsxs("header",{className:"amx-cal-bar",children:[l.jsxs("div",{className:"amx-cal-nav",children:[l.jsx(dn,{leafId:r}),l.jsx("span",{className:"amx-cal-title",ref:jt})]}),l.jsxs("div",{className:"amx-cal-modes",children:[l.jsx(re,{size:"sm",variant:"secondary",label:c("calview.today"),onClick:()=>at.current?.today()}),l.jsx(re,{size:"sm",variant:"ghost",isIconOnly:!0,icon:l.jsx(Sn,{size:14}),label:c("calview.prevPage"),onClick:()=>at.current?.prev()}),l.jsx(re,{size:"sm",variant:"ghost",isIconOnly:!0,icon:l.jsx(un,{size:14}),label:c("calview.nextPage"),onClick:()=>at.current?.next()}),l.jsxs(Vn,{button:{label:c("calview.viewOptions"),isIconOnly:!0,icon:l.jsx(mn,{size:14}),variant:"ghost",size:"sm"},menuWidth:208,children:[C!=="month"&&l.jsx(se,{icon:l.jsx(_n,{size:14}),label:c("calview.zoomOut"),onClick:()=>j(v-8)}),C!=="month"&&l.jsx(se,{icon:l.jsx(Kn,{size:14}),label:c("calview.zoomIn"),onClick:()=>j(v+8)}),C!=="month"&&l.jsx(se,{icon:l.jsx(Zn,{size:14}),label:c("calview.densityReset"),endContent:`${v}px`,onClick:()=>j(Nn)}),C!=="month"&&l.jsx("div",{className:"amx-cal-menusep",role:"separator"}),l.jsx("div",{className:"amx-cal-menulabel",children:c("calview.weekStart")}),ee.map(s=>l.jsx(se,{icon:me(o===s.value),label:s.label,onClick:()=>Se.getState().setPref(s.value)},String(s.value)))]})]})]})}),d.length===0&&l.jsxs("div",{className:"amx-cal-empty",children:[c(rt?"calview.empty":"calview.emptyNoDb"),rt&&P&&l.jsx(Ee,{children:l.jsx(re,{size:"sm",variant:"secondary",label:c("calview.newEvent"),onClick:bt})})]}),C==="month"?l.jsx(ia,{ref:at,anchorRef:Tt,...ne,onCreate:(s,u)=>{Yt(s,null,u)}},`dow${i}`):l.jsx(ca,{ref:at,n:qt,weekStartDow:C==="week"&&qt===7?i:null,...ne,onCreate:(s,u,t)=>{Yt(s,u,t)}}),z&&H&&(!P||!dt)&&l.jsx(qn,{calendar:!0,focusTitle:ct,ev:vt??z,at:H.at,collapsed:!P&&_,onExpand:()=>T(!1),maxRight:gt.current?.getBoundingClientRect().right,onClose:te,onActions:s=>{const u=s.currentTarget.getBoundingClientRect();S({x:u.left,y:u.bottom}),T(!1)},actions:!P&&k?l.jsx(Ne,{at:k,mobile:!0,canCut:!z.readonly,writable:!z.db.readonly,note:z.db.isNoteView,hasClip:!!U,onRun:At,onClose:()=>S(null)}):void 0},z.key),k&&(P||!H)&&l.jsx(Ne,{at:k,mobile:!1,hasEvent:!!z,canCut:!z?.readonly,writable:!z?.db.readonly,note:!!z?.db.isNoteView,hasClip:!!U,onRun:At,onClose:()=>S(null)}),l.jsx(na,{rootRef:gt,onPasted:Z})]})}function Je({first:r=!0}){const{t:c}=It(),i=w(o=>o.draft?.title??"");return!r||!P?l.jsx("span",{className:"amx-cal-event-title",children:i||c("calview.newEventTitle")}):l.jsx("input",{className:"amx-cal-draft-input",autoFocus:!0,value:i,placeholder:c("calview.newEventTitle"),"aria-label":c("calview.newEventTitle"),onChange:o=>{const f=w.getState();f.draft&&f.setDraft({...f.draft,title:o.target.value})},onKeyDown:o=>{if(!o.nativeEvent.isComposing)if(o.key==="Enter"){o.preventDefault();const f=w.getState();f.draft?.title.trim()?f.draftApi?.commit():f.setDraft(null)}else o.key==="Escape"&&(o.preventDefault(),w.getState().setDraft(null))},onBlur:o=>{o.relatedTarget instanceof Element&&o.relatedTarget.closest(".amx-cal-draftcard")||document.hasFocus()&&xe()}})}const Ge={onPointerDown:r=>r.stopPropagation(),onMouseDown:r=>{r.target instanceof HTMLInputElement||r.preventDefault()}};function Qe({day:r,colorOf:c}){const i=w(o=>o.draft);return i?l.jsxs("div",{className:`amx-cal-chip-ev amx-cal-draft selected${De(K(i.day),K(i.endDay),r)}`,style:Nt(c(i.dbPath)),...Ge,children:[i.startMin!==null&&l.jsx("span",{className:"amx-cal-chip-t",children:xt(i.startMin)}),l.jsx(Je,{first:X(r)===i.day})]}):null}function oa({hourPx:r,colorOf:c}){const i=w(f=>f.draft);if(!i||i.startMin===null)return null;const o=(i.endMin-i.startMin)/60*r;return l.jsxs("div",{className:`amx-cal-event amx-cal-draft selected${o<ge?" short":""}`,style:{...Nt(c(i.dbPath)),top:i.startMin/60*r,height:Math.max(14,o),left:2,width:"calc(100% - 4px)"},...Ge,children:[l.jsx(Je,{}),l.jsx("span",{className:"amx-cal-event-t",children:o<ge?xt(i.startMin):`${xt(i.startMin)}–${xt(i.endMin)}`})]})}const ca=p.forwardRef(function({n:c,weekStartDow:i,events:o,selectedKey:f,cutKey:x,onPick:$,canCreate:I,onDismiss:Y,onDraft:N,colorOf:L,onTodoDrop:C,onCreate:V,titleRef:v,onGesture:j},q){const{t:F}=It(),O=p.useRef(null),H=p.useRef(null),[m,k]=p.useState(0),[S,_]=p.useState(0),T=w(t=>t.hourPx),vt=w(t=>t.setVisibleRange),wt=w(Ze),dt=wt?wt.split("|"):null,ut=()=>{H.current&&O.current&&(H.current.style.transform=`translateY(${-O.current.scrollTop}px)`)},ct=p.useMemo(()=>G(new Date),[]),A=p.useMemo(()=>{const t=$t(ct,-Vt);return Array.from({length:Vt*2+1},(e,a)=>$t(t,a))},[ct]),U=t=>i==null?t:Math.max(0,t-(A[t].getDay()-i+7)%7),J=p.useRef(Vt),jt=p.useRef(void 0),at=p.useRef(!1),Tt=p.useRef(""),pt=p.useRef(-1),Q=p.useRef(null),tt=p.useRef(null),ht=()=>{tt.current&&(tt.current.style.display="none")},W=p.useRef(null),y=p.useRef(null),[d,M]=p.useState(()=>{const t=new Date;return t.getHours()*60+t.getMinutes()});p.useEffect(()=>{const t=setInterval(()=>{const e=new Date;M(e.getHours()*60+e.getMinutes())},3e4);return()=>clearInterval(t)},[]),p.useEffect(()=>()=>vt(null,null),[vt]);const z=B(ct,d).getTime(),rt=()=>{const t=O.current;if(!t||!m)return;const e=Math.max(0,Math.min(A.length-c,Math.round(t.scrollLeft/m)));J.current=e;const a=A[e+Math.floor((c-1)/2)],n=We(a),h=F("calview.weekNo",{n:Rn(a)});n+h!==Tt.current&&(Tt.current=n+h,v.current&&(v.current.textContent=n,v.current.dataset.week=h)),e*8+c!==pt.current&&(pt.current=e*8+c,vt(X(A[e]),X(A[Math.min(A.length-1,e+c-1)])),t.querySelector(".amx-cal-allday2.lead")?.classList.remove("lead"),t.querySelector(`.amx-cal-allday2[data-date="${X(A[e])}"]`)?.classList.add("lead"))},it=()=>{const t=O.current,e=t?.clientWidth?t.querySelector(".amx-cal-daycol2"):null;e&&_(Math.max(0,e.offsetTop-(kt+14)))};p.useLayoutEffect(()=>{const t=O.current;if(!t)return;const e=c>=3?84:180,a=()=>{t.clientWidth&&(k(Math.max(e,t.clientWidth/c)),it())};a();const n=new ResizeObserver(a);return n.observe(t),()=>n.disconnect()},[c]),p.useLayoutEffect(it,[o,m,c,wt]),p.useLayoutEffect(()=>{const t=O.current;if(!(!t||!m)){if(!at.current){J.current=Vt,at.current=!0;const e=t.querySelector(".amx-cal-daycol2"),a=e?e.offsetTop:kt+14;t.scrollTop=Math.max(0,a+d/60*T-t.clientHeight/2)}jt.current!==i&&(jt.current=i,J.current=U(J.current)),t.scrollLeft=J.current*m,rt(),ut()}},[m,i]);const D=p.useRef(T);p.useLayoutEffect(()=>{const t=O.current,e=D.current;if(D.current=T,!t||e===T)return;const a=t.querySelector(".amx-cal-daycol2"),n=a?a.offsetTop:kt+14,h=t.clientHeight/2,g=(t.scrollTop+h-n)/e;t.scrollTop=Math.max(0,n+g*T-h),ut()},[T]),p.useEffect(()=>{const t=O.current;if(!t)return;const e=a=>{if(!a.ctrlKey&&!a.metaKey)return;a.preventDefault();const n=w.getState();n.setHourPx(n.hourPx*(a.deltaY<0?1.12:1/1.12))};return t.addEventListener("wheel",e,{passive:!1}),()=>t.removeEventListener("wheel",e)},[]),p.useImperativeHandle(q,()=>({prev:()=>O.current?.scrollBy({left:-c*m,behavior:"smooth"}),next:()=>O.current?.scrollBy({left:c*m,behavior:"smooth"}),today:()=>O.current?.scrollTo({left:U(Vt)*m,behavior:"smooth"}),goto:t=>{if(!m)return;const e=Math.min(A.length-c,U(Math.max(0,Math.min(A.length-1,Rt(G(t),A[0])))));O.current?.scrollTo({left:e*m,behavior:"smooth"})}}),[c,m,A,i]);const Z=kt+14+S,yt=(t,e=0)=>{const a=O.current,n=a.getBoundingClientRect(),h=ot(a)||1,g=Math.max(0,Math.min(A.length-1,Math.floor(((t.clientX-n.left)/h+a.scrollLeft)/m))),R=((t.clientY-n.top)/h-e+a.scrollTop-Z)/T*60;return{col:g,raw:R,min:Math.max(0,Math.min(1425,Math.floor(R/15)*15))}},Dt=(t,e,a)=>{if(e.stopPropagation(),bt(),t.readonly||e.button!==0||!P&&f!==t.key)return;ht();const n=e.currentTarget.closest(".amx-cal-event"),h=n.getBoundingClientRect(),g=ot(n)||1,R=(e.clientY-h.top)/g,E=Math.min(Le,h.height/g/4),b=a??(P&&f===t.key?R<E?"start":h.height/g-R<E?"end":"move":"move"),lt=ze(t.start,t.end,T),zt=Math.max(14,lt.height),Et=n.querySelector(".amx-cal-event-t");n.setPointerCapture(e.pointerId),W.current={mode:b,ev:t,el:n,tEl:Et,t0:Et?.textContent??"",pid:e.pointerId,x0:e.clientX,y0:e.clientY,zoom:g,top0:lt.top,h0:zt,grabOffY:R,durMin:t.end?(t.end.getTime()-t.start.getTime())/6e4:60,msDur:t.end?t.end.getTime()-t.start.getTime():0,col0:Rt(G(t.start),A[0]),min0:t.start.getHours()*60+t.start.getMinutes(),dup:P&&b==="move"&&e.altKey&&!t.db.readonly,shadow:null,dyMin:0,moved:!1,target:null}},Lt=t=>{const e=W.current;if(!e||t.pointerId!==e.pid){if(P&&t.currentTarget.classList.contains("selected")){const E=t.currentTarget,b=E.getBoundingClientRect(),lt=(t.clientY-b.top)/(ot(E)||1),zt=Math.min(Le,b.height/(ot(E)||1)/4);E.style.cursor=lt<zt||b.height/(ot(E)||1)-lt<zt?"ns-resize":"grab"}return}if(e.last=t,t.pointerType==="mouse"&&t.buttons===0){Yt(e.ev,t);return}if(e.mode==="move"){if(!e.moved&&Math.hypot(t.clientX-e.x0,t.clientY-e.y0)<=3||!m||!O.current)return;if(!e.moved){e.moved=!0,e.el.classList.add("dragging"),j?.(e.ev);const Ut=e.el.cloneNode(!0);Ut.classList.remove("dragging","selected"),Ut.classList.add(e.dup?"dup-src":"drag-shadow"),Ut.removeAttribute("aria-label"),e.el.parentElement?.insertBefore(Ut,e.el),e.shadow=Ut}const E=yt(t,e.grabOffY),b=Math.max(0,Math.min(1440-Math.min(e.durMin,1440),Ht(E.raw))),lt=b===Ht(e.min0)&&E.col===e.col0,zt=lt?e.min0:b;e.target=lt?null:{iso:X(A[E.col]),topMin:b},e.el.style.transform=`translate(${(E.col-e.col0)*m}px, ${(zt-e.min0)/60*T}px)`;const Et=B(A[E.col],zt);j?.({...e.ev,raw:Kt(Et,e.ev.end?new Date(Et.getTime()+e.msDur):null,!1)});const Ce=e.msDur?`${et(Et)}–${et(new Date(Et.getTime()+e.msDur))}`:et(Et);e.tEl&&(e.tEl.textContent=lt?e.t0:E.col!==e.col0?`${Te(A[E.col].getDay())} ${Ce}`:Ce);return}const a=Ht((t.clientY-e.y0)/e.zoom/T*60),h=((e.ev.end??B(e.ev.start,60)).getTime()-e.ev.start.getTime())/6e4,g=e.mode==="start"?Math.max(-e.min0,Math.min(h-15,a)):Math.max(15-h,a);if(!e.moved&&Math.abs(t.clientY-e.y0)<5)return;e.moved||(e.moved=!0,e.el.classList.add("dragging")),e.dyMin=g;const R=g/60*T;if(e.mode==="end"?e.el.style.height=`${Math.max(14,e.h0+R)}px`:(e.el.style.top=`${e.top0+R}px`,e.el.style.height=`${Math.max(14,e.h0-R)}px`),g!==0&&e.tEl){const E=e.ev.end??B(e.ev.start,60);if(e.mode==="end"){let b=B(E,g);b.getTime()<=e.ev.start.getTime()&&(b=B(e.ev.start,15)),e.tEl.textContent=`${et(e.ev.start)}–${et(b)} · ${ae(Math.round((b.getTime()-e.ev.start.getTime())/6e4))}`,j?.({...e.ev,raw:Kt(e.ev.start,b,!1)})}else{let b=B(e.ev.start,g);b.getTime()>=E.getTime()&&(b=B(E,-15)),e.tEl.textContent=`${et(b)}–${et(E)} · ${ae(Math.round((E.getTime()-b.getTime())/6e4))}`,j?.({...e.ev,raw:Kt(b,E,!1)})}}},Yt=(t,e)=>{const a=W.current;if(a&&e.pointerId!==a.pid||(W.current=null,!a))return;if(j?.(null),a.el.classList.remove("dragging"),a.mode==="move"){if(a.el.style.transform="",a.shadow?.remove(),!a.target){a.tEl&&(a.tEl.textContent=a.t0),a.moved||$(t.key,mt(e));return}const h=B(G(K(a.target.iso)),a.target.topMin),g=t.end?new Date(h.getTime()+a.msDur):null;if(a.tEl&&(a.tEl.textContent=a.t0),a.dup){const R=Kt(h,g,t.allDay);Me(t,R);return}St(t,h,g);return}if(a.el.style.top=`${a.top0}px`,a.el.style.height=`${a.h0}px`,a.dyMin===0){a.tEl&&(a.tEl.textContent=a.t0),a.moved||$(t.key,mt(e));return}const n=t.end??B(t.start,60);if(a.mode==="end"){let h=B(n,a.dyMin);h.getTime()<=t.start.getTime()&&(h=B(t.start,15)),St(t,t.start,h)}else{let h=B(t.start,a.dyMin);h.getTime()>=n.getTime()&&(h=B(n,-15)),St(t,h,n)}},bt=()=>{const t=W.current;W.current=null,t&&(j?.(null),t.el.classList.remove("dragging"),t.el.style.transform="",t.el.style.top=`${t.top0}px`,t.el.style.height=`${t.h0}px`,t.shadow?.remove(),t.tEl&&(t.tEl.textContent=t.t0))},Bt=p.useRef(Lt);Bt.current=Lt,p.useEffect(()=>{const t=a=>{(a.type==="blur"||a.key==="Escape")&&bt()},e=window.setInterval(()=>{const a=W.current,n=O.current;if(!a?.moved||!a.last||!n)return;const h=n.getBoundingClientRect(),g=a.last.clientX,R=a.last.clientY,E=g<h.left+24?-12:g>h.right-24?12:0,b=R<h.top+Z+24?-12:R>h.bottom-24?12:0;(E||b)&&(n.scrollBy(E,b),Bt.current(a.last))},32);return window.addEventListener("blur",t),window.addEventListener("keydown",t),()=>{clearInterval(e),window.removeEventListener("blur",t),window.removeEventListener("keydown",t),bt()}},[]);const Ct=p.useRef(null),At=(t,e)=>{if(e.stopPropagation(),e.button!==0||t.readonly||!P&&f!==t.key)return;const a=e.currentTarget.getBoundingClientRect(),n=Math.min(8,a.width/4);Ct.current={x:e.clientX,y:e.clientY,mode:f===t.key&&P?e.clientX-a.left<n?"start":a.right-e.clientX<n?"end":"move":"move"},e.currentTarget.setPointerCapture(e.pointerId)},Qt=(t,e)=>{const a=Ct.current;if(Ct.current=null,!a)return;if(Math.hypot(e.clientX-a.x,e.clientY-a.y)<5){$(t.key,mt(e));return}const n=document.elementFromPoint(e.clientX,e.clientY)?.closest(".amx-cal-allday2");if(n?.dataset.date){const R=K(n.dataset.date);if(a.mode==="start")St(t,R>(t.end??t.start)?t.end??t.start:R,t.end,!0);else if(a.mode==="end")St(t,t.start,R<t.start?t.start:R,!0);else{const E=Rt(R,t.start);St(t,Jt(t.start,E),t.end?Jt(t.end,E):null,!0)}return}const h=document.elementFromPoint(e.clientX,e.clientY)?.closest(".amx-cal-daycol2"),g=h?.getAttribute("data-date");if(h&&g){const R=h.getBoundingClientRect(),E=Math.max(0,Math.min(1410,Ht((e.clientY-R.top)/(ot(h)||1)/T*60))),b=B(G(K(g)),E);St(t,b,B(b,30),!1);return}$(t.key,mt(e))},te=t=>{const e=tt.current;if(!e)return;const a=t.target,n=w.getState();if(!P||!I||t.pointerType==="touch"||W.current||n.draft||n.selection||!m||!a.closest(".amx-cal-daycol2")||a.closest(".amx-cal-event, .amx-cal-draft")){ht();return}const h=yt(t),[g,R]=ce(h.min,h.min,!0);e.style.display="block",e.style.left=`${h.col*m+2}px`,e.style.width=`${m-4}px`,e.style.top=`${Z+g/60*T}px`,e.style.height=`${(R-g)/60*T}px`},gt=t=>t.moved?ce(Math.min(t.min,t.cur.min),Math.max(t.min,t.cur.min)+15,!1):ce(t.min,t.min,!0),de=t=>{if(!P||t.button!==0||t.pointerType==="touch")return;const e=t.target;if(e.closest(".amx-cal-event, .amx-cal-chip-ev, .amx-cal-draft"))return;const a=e.closest(".amx-cal-allday2")?"all":e.closest(".amx-cal-daycol2")?"time":null;if(!a||!m)return;ht();const n=Y();if(O.current?.closest(".amx-cal")?.focus({preventScroll:!0}),n||!I)return;t.preventDefault();const h=yt(t);t.currentTarget.setPointerCapture(t.pointerId),y.current={pid:t.pointerId,zone:a,col:h.col,min:h.min,cur:h,x0:t.clientX,y0:t.clientY,moved:!1}},ue=t=>{const e=y.current;if(!e){te(t);return}if(t.pointerId!==e.pid)return;if(t.pointerType==="mouse"&&t.buttons===0){qt();return}if(!e.moved&&Math.hypot(t.clientX-e.x0,t.clientY-e.y0)<4)return;e.moved=!0,e.cur=yt(t);const a=Q.current;if(a)if(a.style.display="block",e.zone==="time"){const[n,h]=gt(e);a.style.left=`${e.col*m+2}px`,a.style.width=`${m-4}px`,a.style.top=`${Z+n/60*T}px`,a.style.height=`${(h-n)/60*T}px`,a.textContent=`${xt(n)}–${xt(h)} · ${ae(h-n)}`}else{const n=Math.min(e.col,e.cur.col),h=Math.max(e.col,e.cur.col);a.style.left=`${n*m+4}px`,a.style.width=`${(h-n+1)*m-8}px`,a.style.top=`${kt+14+3}px`,a.style.height="20px",a.textContent=h>n?ae((h-n+1)*1440):""}},qt=t=>{const e=y.current;if(!(e&&t&&t.pointerId!==e.pid)&&(y.current=null,Q.current&&(Q.current.style.display="none"),!!e))if(e.zone==="time"){const[a,n]=gt(e);N({day:X(A[e.col]),endDay:X(A[e.col]),startMin:a,endMin:n})}else{const[a,n]=e.moved?[Math.min(e.col,e.cur.col),Math.max(e.col,e.cur.col)]:[e.col,e.col];N({day:X(A[a]),endDay:X(A[n]),startMin:null,endMin:0})}},Ft=()=>{y.current=null,Q.current&&(Q.current.style.display="none")},ee=t=>{const e=t.target,a=e.closest(".amx-cal-allday2")?"all":e.closest(".amx-cal-daycol2")?"time":null;if(!a||!m)return null;const n=yt(t),h=X(A[n.col]),g=Math.min(n.min,1410);return{zone:a,col:n.col,s:g,value:a==="all"?h:`${h}T${xt(g)}/${h}T${xt(g+30)}`}},Xt=()=>{Q.current&&(Q.current.style.display="none")},me=t=>{if(!C||!t.dataTransfer.types.includes(pe))return;t.preventDefault(),t.dataTransfer.dropEffect="move";const e=ee(t),a=Q.current;if(a){if(!e){Xt();return}a.style.display="block",a.style.left=`${e.col*m+(e.zone==="all"?4:2)}px`,a.style.width=`${m-(e.zone==="all"?8:4)}px`,a.style.top=`${e.zone==="all"?kt+14+3:Z+e.s/60*T}px`,a.style.height=e.zone==="all"?"20px":`${30/60*T}px`,a.textContent=e.zone==="all"?"":`${xt(e.s)}–${xt(e.s+30)}`}},ne=t=>{if(!C||!t.dataTransfer.types.includes(pe))return;t.preventDefault(),Xt();const e=ee(t);if(e)try{C(JSON.parse(t.dataTransfer.getData(pe)),e.value)}catch{}},s=p.useMemo(()=>{const t=o.filter(n=>n.allDay&&!la(n)).sort((n,h)=>+G(n.start)-+G(h.start)||+G(h.end??h.start)-+G(n.end??n.start)),e=[],a=new Map;for(const n of t){const h=+G(n.start);let g=e.findIndex(R=>R<h);g<0&&(g=e.length),e[g]=+G(n.end??n.start),a.set(n.key,g)}return{list:t,lane:a}},[o]),u=t=>!!dt&&dt[2]==="null"&&X(t)>=dt[0]&&X(t)<=dt[1];return l.jsxs("div",{className:"amx-cal-timerow",style:{"--amx-hour-px":`${T}px`},children:[l.jsx("div",{className:"amx-cal-gutterfixed",children:l.jsxs("div",{className:"amx-cal-gutterinner",children:[l.jsx("div",{className:"amx-cal-gcorner",style:{height:kt+14}}),l.jsx("div",{className:"amx-cal-gallday",style:{height:S},children:F("calview.allDay")}),l.jsxs("div",{className:"amx-cal-ghours",ref:H,children:[je.map(t=>l.jsx("div",{className:"amx-cal-hour",style:{height:T},children:t===0?"":`${t}:00`},t)),l.jsxs("span",{className:"amx-cal-nowlabel",style:{top:d/60*T},children:[String(Math.floor(d/60)).padStart(2,"0"),":",String(d%60).padStart(2,"0")]})]})]})}),l.jsx("div",{className:"amx-cal-tscroll",ref:O,onScroll:()=>{rt(),ut()},onPointerLeave:ht,children:l.jsxs("div",{className:"amx-cal-tgrid2",style:{gridTemplateColumns:`repeat(${A.length}, ${m}px)`,gridTemplateRows:`${kt+14}px auto ${je.length*T}px`},onPointerDown:de,onPointerMove:ue,onPointerUp:qt,onPointerCancel:Ft,onLostPointerCapture:()=>{y.current&&qt()},onDragOver:me,onDragLeave:t=>{t.relatedTarget instanceof Node&&t.currentTarget.contains(t.relatedTarget)||Xt()},onDrop:ne,children:[A.map(t=>l.jsxs("div",{className:`amx-cal-thead2${Ot(t,ct)?" today":""}`,children:[l.jsx("span",{className:"amx-cal-tdow",children:Te(t.getDay())}),l.jsxs("span",{className:"amx-cal-tdate",children:[t.getMonth()+1,"/",t.getDate()]})]},+t)),A.map(t=>{const e=s.list.filter(n=>Ue(n.start,n.end,t)),a=[];for(const n of e)a[s.lane.get(n.key)??0]=n;return l.jsxs("div",{className:"amx-cal-allday2","data-date":X(t),onClick:P?void 0:n=>{n.target.closest(".amx-cal-chip-ev")||Y()||V(t,null,mt(n))},children:[Array.from(a,(n,h)=>n?l.jsx("button",{"data-key":n.key,className:`amx-cal-chip-ev amx-cal-alldrag${n.readonly?" readonly":""}${x===n.key?" cut":""}${f===n.key?" selected":""}${+G(n.end??n.start)<+ct?" past":""}${De(n.start,n.end,t)}`,style:Nt(n.color),"aria-label":F("calview.a11yAllDayEvent",{title:n.title}),title:n.readonly?n.title:F("calview.allDayDragHint",{title:n.title}),onPointerDown:g=>At(n,g),onPointerUp:g=>Qt(n,g),onPointerCancel:()=>{Ct.current=null},onClick:g=>{(n.readonly||!P&&f!==n.key||g.detail===0)&&$(n.key,mt(g))},children:n.title},n.key):l.jsx("span",{className:"amx-cal-chip-gap"},`gap${h}`)),u(t)&&l.jsx(Qe,{day:t,colorOf:L})]},+t)}),A.map(t=>l.jsxs("div",{className:"amx-cal-daycol2","data-date":X(t),onClick:P?void 0:e=>{if(e.target.closest(".amx-cal-event")||Y())return;const a=e.currentTarget.getBoundingClientRect(),n=ot(e.currentTarget)||1,h=Math.max(0,Math.min(1410,Ht((e.clientY-a.top)/n/T*60)));V(t,h,{left:e.clientX,top:e.clientY,right:e.clientX,bottom:e.clientY,zoom:n})},children:[(()=>{const e=o.filter(n=>!n.allDay&&Ot(n.start,t)),a=ra(e);return e.map(n=>{const h=ze(n.start,n.end,T),g=a.get(n.key)??{leftPct:0,widthPct:100},R=h.height<ge,E=(n.end??n.start).getTime()<z;return l.jsxs("button",{"data-key":n.key,className:`amx-cal-event${n.readonly?" readonly":""}${x===n.key?" cut":""}${f===n.key?" selected":""}${R?" short":""}${E?" past":""}${n.check?" todo":""}${n.done?" done":""}`,style:{...Nt(n.color),top:h.top,height:Math.max(14,h.height),left:`calc(${g.leftPct}% + 2px)`,width:`calc(${g.widthPct}% - 4px)`},"aria-label":n.end?F("calview.a11yEventRange",{title:n.title,start:et(n.start),end:et(n.end)}):F("calview.a11yEvent",{title:n.title,time:et(n.start)}),title:n.title,onPointerDown:b=>Dt(n,b),onPointerMove:Lt,onPointerUp:b=>Yt(n,b),onPointerCancel:bt,onLostPointerCapture:bt,onClick:b=>{(n.readonly||!P&&f!==n.key||b.detail===0)&&$(n.key,mt(b))},children:[n.check&&l.jsx("span",{className:"amx-cal-event-check",role:"checkbox","aria-checked":!!n.done,"aria-label":F("calview.a11yDone",{title:n.title}),onPointerDown:b=>b.stopPropagation(),onClick:b=>{b.stopPropagation(),n.db.readonly||(Be(n.db,n.row.rowId,n.check,n.done?void 0:!0),n.done||he("todo.done"))}}),l.jsx("span",{className:"amx-cal-event-title",children:n.title}),l.jsx("span",{className:"amx-cal-event-t",children:R||!n.end?et(n.start):`${et(n.start)}–${et(n.end)}`}),!P&&f===n.key&&!n.readonly&&m*g.widthPct/100>=88&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"amx-cal-handle start","aria-label":F("calview.resizeStart"),onPointerDown:b=>Dt(n,b,"start")}),l.jsx("span",{className:"amx-cal-handle end","aria-label":F("calview.resizeEnd"),onPointerDown:b=>Dt(n,b,"end")})]})]},n.key)})})(),dt&&dt[2]!=="null"&&dt[0]===X(t)&&l.jsx(oa,{hourPx:T,colorOf:L}),l.jsx("div",{className:`amx-cal-nowline${Ot(t,ct)?" today":""}`,style:{top:d/60*T}})]},+t)),l.jsx("div",{className:"amx-cal-hoverslot",ref:tt}),l.jsx("div",{className:"amx-cal-making",ref:Q,style:Nt(L(null))})]})})]})}),ia=p.forwardRef(function({anchorRef:c,events:i,selectedKey:o,cutKey:f,onPick:x,canCreate:$,onDismiss:I,onDraft:Y,colorOf:N,onCreate:L,titleRef:C},V){const{t:v}=It(),j=p.useRef(null),[q,F]=p.useState(0),O=w(y=>y.setVisibleRange),H=w(Ze),m=H?H.split("|"):null,k=p.useMemo(()=>G(new Date),[]),S=p.useMemo(()=>{const y=$t(fe(k),-Ae*7);return Array.from({length:Ae*2+1},(d,M)=>$t(y,M*7))},[k]),_=p.useRef(!1),[T,vt]=p.useState(null),wt=p.useRef(""),dt=p.useRef(-1),ut=p.useRef(null);p.useEffect(()=>()=>O(null,null),[O]);const ct=(y,d)=>Math.round(Rt(fe(new Date(y,d,1)),S[0])/7),A=()=>{const y=j.current;if(!y||!q)return;const d=Math.max(0,Math.min(S.length-1,Math.round(y.scrollTop/q))),M=$t(S[d],3),z=We(M);if(c&&(c.current={y:M.getFullYear(),m:M.getMonth()}),z!==wt.current&&(wt.current=z,C.current&&(C.current.textContent=z,delete C.current.dataset.week)),d!==dt.current){dt.current=d;const rt=Math.max(1,Math.round(y.clientHeight/q)),it=S[Math.min(S.length-1,d+rt-1)];O(X(S[d]),X($t(it,6)))}};p.useLayoutEffect(()=>{const y=j.current;if(!y)return;const d=()=>{y.clientHeight&&F(Math.max(64,(y.clientHeight-kt)/6))};d();const M=new ResizeObserver(d);return M.observe(y),()=>M.disconnect()},[]),p.useLayoutEffect(()=>{const y=j.current;if(!y||!q||_.current)return;_.current=!0;const d=c?.current;if(d){let M=Math.max(0,Math.min(S.length-1,ct(d.y,d.m)));$t(S[M],3).getMonth()!==d.m&&M+1<S.length&&(M+=1),y.scrollTop=M*q}else y.scrollTop=ct(k.getFullYear(),k.getMonth())*q;A()},[q]),p.useImperativeHandle(V,()=>({prev:()=>U(-1),next:()=>U(1),today:()=>j.current?.scrollTo({top:ct(k.getFullYear(),k.getMonth())*q,behavior:"smooth"}),goto:y=>{if(!q)return;const d=Math.max(0,Math.min(S.length-1,Math.round(Rt(fe(y),S[0])/7)));j.current?.scrollTo({top:d*q,behavior:"smooth"})}}),[q]);const U=y=>{const d=j.current;if(!d||!q)return;const M=Math.max(0,Math.min(S.length-1,Math.round(d.scrollTop/q))),z=$t(S[M],3);d.scrollTo({top:Math.max(0,ct(z.getFullYear(),z.getMonth()+y))*q,behavior:"smooth"})},J=p.useRef(null),jt=(y,d)=>{d.stopPropagation(),!(d.button!==0||y.readonly||!P&&o!==y.key)&&(J.current={x:d.clientX,y:d.clientY},d.currentTarget.setPointerCapture(d.pointerId))},at=(y,d)=>{const M=J.current;if(J.current=null,!M)return;const z=mt(d);if(Math.hypot(d.clientX-M.x,d.clientY-M.y)<5){x(y.key,z);return}if(y.readonly){x(y.key,z);return}const it=document.elementFromPoint(d.clientX,d.clientY)?.closest(".amx-cal-mcell")?.getAttribute("data-date");if(it){const D=Rt(K(it),y.start);if(D!==0){St(y,Jt(y.start,D),y.end?Jt(y.end,D):null);return}}x(y.key,z)},Tt=y=>document.elementFromPoint(y.clientX,y.clientY)?.closest(".amx-cal-mcell")?.getAttribute("data-date")??null,pt=(y,d)=>{j.current?.querySelectorAll(".amx-cal-mcell").forEach(M=>{const z=M.dataset.date??"";M.classList.toggle("making",!!y&&!!d&&z>=y&&z<=d)})},Q=y=>{if(!P||y.button!==0||y.pointerType==="touch")return;const d=y.target;if(d.closest(".amx-cal-chip-ev, .amx-cal-more, .amx-cal-draft"))return;const M=d.closest(".amx-cal-mcell")?.getAttribute("data-date");if(!M)return;const z=I();j.current?.closest(".amx-cal")?.focus({preventScroll:!0}),!(z||!$)&&(y.preventDefault(),y.currentTarget.setPointerCapture(y.pointerId),ut.current={pid:y.pointerId,a:M,b:M,moved:!1})},tt=y=>{const d=ut.current;if(!d||y.pointerId!==d.pid)return;if(y.pointerType==="mouse"&&y.buttons===0){ht();return}const M=Tt(y);!M||M===d.b||(d.b=M,d.moved=!0,pt(d.a<M?d.a:M,d.a<M?M:d.a))},ht=y=>{const d=ut.current;if(d&&y&&y.pointerId!==d.pid||(ut.current=null,!d))return;d.moved&&pt(null,null);const[M,z]=d.a<d.b?[d.a,d.b]:[d.b,d.a];Y({day:M,endDay:z,startMin:null,endMin:0})},W=()=>{ut.current?.moved&&pt(null,null),ut.current=null};return l.jsxs("div",{className:"amx-cal-mscroll",ref:j,onScroll:A,children:[l.jsx("div",{className:"amx-cal-weekhead2",children:$n().map(y=>l.jsx("div",{children:y},y))}),l.jsx("div",{className:"amx-cal-mweeks",onPointerDown:Q,onPointerMove:tt,onPointerUp:ht,onPointerCancel:W,children:S.map(y=>l.jsx("div",{className:"amx-cal-mweek",style:{height:q},children:jn(y,7).map(d=>{const M=X(d),z=i.filter(D=>Ue(D.start,D.end,d)),rt=!!m&&M>=m[0]&&M<=m[1],it=rt?2:3;return l.jsxs("div",{className:`amx-cal-mcell${Ot(d,k)?" today":""}`,"data-date":M,onClick:P?void 0:D=>{D.target.closest(".amx-cal-chip-ev")||I()||L(d,{left:D.clientX,top:D.clientY,right:D.clientX,bottom:D.clientY,zoom:ot(D.currentTarget)||1})},children:[l.jsx("div",{className:"amx-cal-mnum",children:d.getDate()===1?v("calview.monthFirst",{m:d.getMonth()+1}):d.getDate()}),rt&&l.jsx(Qe,{day:d,colorOf:N}),z.slice(0,it).map(D=>l.jsxs("button",{"data-key":D.key,className:`amx-cal-chip-ev${D.readonly?" readonly":""}${o===D.key?" selected":""}${De(D.start,D.end,d)}`,style:Nt(D.color),title:D.title,"aria-label":!D.allDay&&Ot(D.start,d)?v("calview.a11yEvent",{title:D.title,time:et(D.start)}):D.title,onPointerDown:Z=>jt(D,Z),onPointerUp:Z=>at(D,Z),onPointerCancel:()=>{J.current=null},onClick:Z=>{(D.readonly||!P&&o!==D.key||Z.detail===0)&&x(D.key,mt(Z))},children:[!D.allDay&&Ot(D.start,d)&&l.jsx("span",{className:"amx-cal-chip-t",children:et(D.start)})," ",D.title]},D.key)),z.length>it&&l.jsx("button",{className:"amx-cal-more","aria-label":v("calview.a11yMoreEvents",{m:d.getMonth()+1,d:d.getDate(),n:z.length}),onClick:D=>vt({day:d,events:z,at:mt(D)}),children:v("calview.moreItems",{n:z.length-it})})]},+d)})},+y))}),T&&l.jsx(da,{day:T.day,events:T.events,at:T.at,onPick:(y,d)=>{vt(null),x(y,d)},onClose:()=>vt(null)})]})});function da({day:r,events:c,at:i,onPick:o,onClose:f}){const{t:x}=It(),$=292,I=i.zoom||1,Y=12*I,N=Math.max(Y,Math.min(i.left,window.innerWidth-$*I-Y))/I,L=Math.max(Y,Math.min(i.bottom+6*I,window.innerHeight-356*I-Y))/I,C=p.useRef(null),V=p.useRef(f);return V.current=f,p.useEffect(()=>{const v=document.activeElement instanceof HTMLElement?document.activeElement:null;C.current?.querySelector(".amx-cal-agenda-list > button")?.focus();const j=q=>{q.key==="Escape"&&(q.preventDefault(),V.current())};return window.addEventListener("keydown",j),()=>{window.removeEventListener("keydown",j),v?.focus()}},[]),l.jsx("div",{className:"amx-cal-agenda-overlay",onMouseDown:f,children:l.jsxs("section",{className:"amx-cal-agenda",ref:C,role:"dialog","aria-modal":"true","aria-label":x("calview.a11yDayEvents",{m:r.getMonth()+1,d:r.getDate()}),style:{left:N,top:L,width:$},onMouseDown:v=>v.stopPropagation(),children:[l.jsxs("header",{children:[l.jsx("strong",{children:x("calview.dayHeading",{m:r.getMonth()+1,d:r.getDate()})}),l.jsx("button",{onClick:f,"aria-label":x("calview.closeAgenda"),children:"×"})]}),l.jsx("div",{className:"amx-cal-agenda-list",children:c.map(v=>l.jsxs("button",{style:Nt(v.color),onClick:j=>o(v.key,mt(j)),children:[l.jsx("span",{className:"amx-cal-agenda-time",children:v.allDay?x("calview.allDay"):et(v.start)}),l.jsx("span",{children:v.title})]},v.key))})]})})}export{Ta as CalendarView,ia as MonthScroll};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.amx-cal-cardcatch.calendar{pointer-events:none}.amx-cal-cardcatch.calendar>.amx-cal-cardwrap{pointer-events:auto}.amx-cal-card-buttons{display:inline-flex}.amx-cal-event:before,.amx-cal-event:after{display:none}.amx-cal-eventmenu{color:var(--text);font-family:var(--font-ui);font-size:var(--menu-text-size);line-height:var(--menu-line-height);min-width:0;padding:3px;box-sizing:border-box}.amx-cal-eventmenu>button{display:flex;align-items:center;gap:9px;width:100%;min-height:var(--menu-row-height, 30px);border:0;background:transparent;color:inherit;font:inherit;text-align:left;padding:5px 8px;border-radius:var(--radius-sm);cursor:pointer}.amx-cal-eventmenu>button:hover,.amx-cal-eventmenu>button:focus-visible{background:var(--menu-hover)}.amx-cal-eventmenu>button:disabled{opacity:.4;cursor:default}.amx-cal-eventmenu .danger{color:var(--danger, #d64b4b)}.amx-cal-eventmenu kbd{margin-left:auto;padding-left:24px;font:inherit;font-size:var(--ui-font-caption);color:var(--text-muted)}.amx-cal-eventmenu p{max-width:250px;margin:6px 8px;color:var(--text-muted);font-size:var(--ui-font-meta)}.amx-cal-menu-position{z-index:90;width:240px;max-width:calc(100vw - 16px)}.amx-cal-event.cut,.amx-cal-chip-ev.cut{opacity:.4}.amx-cal.mobile .amx-cal-event:not(.selected),.amx-cal.mobile .amx-cal-chip-ev:not(.selected){touch-action:pan-x pan-y}.amx-cal.mobile .amx-cal-event.selected{overflow:visible;touch-action:none;outline:2px solid var(--amx-event-color);outline-offset:1px}.amx-cal.mobile .amx-cal-event-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.amx-cal-handle{position:absolute;width:44px;height:44px;touch-action:none;z-index:5;display:grid;place-items:center}.amx-cal-handle:after{content:"";width:13px;height:13px;border:2px solid var(--bg-card);border-radius:50%;background:var(--amx-event-color);box-shadow:0 0 0 1px var(--amx-event-color)}.amx-cal-handle.start{top:-22px;left:0}.amx-cal-handle.end{bottom:-22px;right:0}.amx-cal.mobile.drawer-open{padding-bottom:min(350px,46dvh);box-sizing:border-box}.amx-cal.mobile.drawer-open.drawer-small{padding-bottom:116px}.amx-cal-cardwrap.amx-cal-drawer{inset:auto 0 0;width:auto;height:min(350px,46dvh);max-height:72dvh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding-bottom:env(safe-area-inset-bottom,0px);box-sizing:border-box;background:var(--bg);transform-origin:bottom center;animation:ui-menu-enter var(--menu-enter-duration, .14s) var(--menu-enter-easing, ease-out)}.amx-cal-cardwrap.amx-cal-drawer.collapsed{height:116px;overflow:hidden}.amx-cal-drawer-grab{display:grid;place-items:center;width:100%;height:22px;background:transparent;border:0;padding:0;touch-action:none}.amx-cal-drawer-grab span{width:34px;height:4px;border-radius:var(--radius-pill);background:var(--text-faint)}.amx-cal-drawer .amx-cal-card-x{width:44px;height:44px}.amx-cal-drawer .amx-cal-cardin{padding:0 14px 16px}.amx-cal-drawer-summary{display:flex;align-items:center;gap:8px;padding:2px 10px 12px}.amx-cal-drawer-summary>div{display:flex;flex:1;min-width:0;flex-direction:column;gap:6px}.amx-cal-drawer-summary strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ui-font-body)}.amx-cal-drawer-summary span{font-size:var(--ui-font-heading);font-variant-numeric:tabular-nums}.amx-cal-eventmenu.phone{padding:0 14px 16px}.amx-cal-eventmenu.phone>button{min-height:44px}.amx-cal.mobile .amx-cal-chip-ev.selected{touch-action:none}.amx-cal-draftcard.amx-cal-drawer{padding:0 18px 16px}.amx-cal-draftcard.amx-cal-drawer input{min-height:36px}@media(prefers-reduced-motion:reduce){.amx-cal-cardwrap.amx-cal-drawer{animation:none}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as s,j as r}from"./index-fDB1l4d-.js";import{a8 as D,T as k,X as C,aj as A}from"./pageStore-CyvNZEYX.js";import"./client-fKy9CWk0.js";import{aG as L,S}from"./appStore-DDOkzWDA.js";function O({label:u,children:g,items:w,className:E="capability-menu-trigger",searchLabel:d,selection:p=!1,disabled:j=!1,acceptsDrag:y}){const b=s.useId(),a=s.useRef(null),l=s.useRef(null),[n,f]=s.useState(null),[h,x]=s.useState(""),i=(e=!0)=>{f(null),x(""),e&&a.current?.isConnected&&a.current.focus()},m=()=>{const e=a.current?.getBoundingClientRect();e&&f({x:e.left,y:e.bottom+4,top:e.top})};s.useEffect(()=>{if(!n)return;const e=c=>{!l.current?.contains(c.target)&&!a.current?.contains(c.target)&&i(!1)},t=c=>{if(l.current?.contains(c.target))return;const o=a.current?.getBoundingClientRect();if(!o||!a.current?.isConnected){i(!1);return}(Math.abs(o.left-n.x)>1||Math.abs(o.bottom+4-n.y)>1)&&f({x:o.left,y:o.bottom+4,top:o.top})};return document.addEventListener("pointerdown",e),window.addEventListener("resize",t),document.addEventListener("scroll",t,!0),()=>{document.removeEventListener("pointerdown",e),window.removeEventListener("resize",t),document.removeEventListener("scroll",t,!0)}},[n]),s.useEffect(()=>{if(!n||L())return;const e=l.current;(e?.querySelector("input")||e?.querySelector('[aria-checked="true"]:not(:disabled), button:not(:disabled)'))?.focus({preventScroll:!0})},[!!n]);const v=w.filter(e=>e.label.toLowerCase().includes(h.trim().toLowerCase()));return r.jsxs(r.Fragment,{children:[r.jsx("button",{ref:a,type:"button",className:E,"aria-label":u,title:u,"aria-haspopup":"menu","aria-expanded":!!n,"aria-controls":n?b:void 0,disabled:j,onDragEnter:e=>{y?.(e.dataTransfer)&&(e.preventDefault(),n||m())},onDragOver:e=>{y?.(e.dataTransfer)&&e.preventDefault()},onClick:()=>n?i():m(),onKeyDown:e=>{(e.key==="ArrowDown"||e.key==="ArrowUp")&&(e.preventDefault(),m())},children:g||r.jsxs(r.Fragment,{children:[r.jsx("span",{children:u}),r.jsx(D,{size:13})]})}),n&&k.createPortal(r.jsx("div",{className:"ui-popover-backdrop",style:{pointerEvents:"none"},children:r.jsxs(C,{style:{pointerEvents:"auto"},x:n.x,y:n.y,anchorTop:n.top,innerRef:e=>{l.current=e},id:b,className:`ui-popover capability-menu${p?" capability-menu-selection":""}`,role:"menu","aria-label":u,onKeyDown:e=>{if(e.key==="Escape"){e.preventDefault(),e.stopPropagation(),i();return}if(e.key==="Tab"){i();return}if(!["ArrowDown","ArrowUp","Home","End"].includes(e.key)||e.target instanceof HTMLInputElement&&["Home","End"].includes(e.key))return;e.preventDefault(),e.stopPropagation();const t=Array.from(l.current?.querySelectorAll("button:not(:disabled)")||[]),c=t.indexOf(document.activeElement),o=e.key==="Home"?0:e.key==="End"?t.length-1:(c+(e.key==="ArrowDown"?1:-1)+t.length)%t.length;t[o]?.focus()},children:[d&&r.jsxs("label",{className:"capability-menu-search",children:[r.jsx(S,{size:14}),r.jsx("input",{"aria-label":d,placeholder:d,value:h,onChange:e=>x(e.target.value)})]}),r.jsx("div",{className:"capability-menu-items",children:v.map(e=>r.jsxs("button",{type:"button",role:p?"menuitemradio":"menuitem","aria-label":e.label,"aria-checked":p?!!e.selected:void 0,disabled:e.disabled,className:`${e.danger?"danger":""}${e.dropActive?" capability-menu-drop":""}`,onDragOver:e.onDragOver,onDragLeave:e.onDragLeave,onDrop:e.onDrop,onClick:()=>{i(),e.onSelect()},children:[r.jsx("span",{className:"capability-menu-icon",children:e.icon}),r.jsx("span",{children:e.label}),e.hint&&r.jsx("small",{className:"capability-menu-hint",children:e.hint}),e.selected&&r.jsx(A,{size:14})]},e.id))})]})}),document.body)]})}export{O as C};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as D,u as P,j as r,a as O}from"./index-fDB1l4d-.js";import{p as H,R as S,a6 as T}from"./pageStore-CyvNZEYX.js";import"./client-fKy9CWk0.js";import{hx as E,f4 as $}from"./appStore-DDOkzWDA.js";import{M as X}from"./magnet-Cqmm97W8.js";const Y=[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]],b=H("map",Y),B=18,L=(e,n)=>e.x<n.x+n.w&&e.x+e.w>n.x&&e.y<n.y+n.h&&e.y+e.h>n.y,W=(e,n)=>({x:e.x-n,y:e.y-n,w:e.w+n*2,h:e.h+n*2});function J(e,n,m={x:0,y:0},u=B,i){if(!e.length||!n.length)return{x:0,y:0};const x=n.map(o=>W(o,Math.max(0,u))),d=(o,a)=>e.every(f=>{const h={...f,x:f.x+o,y:f.y+a};return i&&(h.x<i.x||h.y<i.y||h.x+h.w>i.x+i.w||h.y+h.h>i.y+i.h)?!1:x.every(M=>!L(h,M))});if(d(0,0))return{x:0,y:0};const y=new Set([0]),c=new Set([0]);for(const o of e)for(const a of x)y.add(Math.floor(a.x-(o.x+o.w))),y.add(Math.ceil(a.x+a.w-o.x)),c.add(Math.floor(a.y-(o.y+o.h))),c.add(Math.ceil(a.y+a.h-o.y));const g=Math.hypot(m.x,m.y);let s=null;for(const o of y)for(const a of c){if(!d(o,a))continue;const f=g?(o*m.x+a*m.y)/g:0,h=o!==0&&a!==0?.1:0,M=o*o+a*a+h-f*.001;(!s||M<s.score)&&(s={x:o,y:a,score:M})}return s?{x:s.x,y:s.y}:{x:0,y:0}}O({"cvminimap.aria":{zh:"画布缩略图",en:"Canvas minimap"},"cvminimap.hint":{zh:"画布缩略图:点击或拖动以导航",en:"Canvas minimap: click or drag to navigate"}});const w=184,z=112,R=7;function K({hostRef:e,vp:n,items:m,onCenter:u}){const i=D.useRef(!1),{t:x}=P(),d=e.current;if(!d||!m.length)return null;const y=S(d)||1,c=d.getBoundingClientRect(),g={x:-n.x/n.z,y:-n.y/n.z,w:Math.max(1,c.width/y/n.z),h:Math.max(1,c.height/y/n.z)},s=[...m.map(t=>t.box),g],o=Math.min(...s.map(t=>t.x)),a=Math.min(...s.map(t=>t.y)),f=Math.max(...s.map(t=>t.x+t.w)),h=Math.max(...s.map(t=>t.y+t.h)),M=Math.max(1,f-o),v=Math.max(1,h-a),l=Math.min((w-R*2)/M,(z-R*2)/v),C=(w-M*l)/2-o*l,j=(z-v*l)/2-a*l,I=t=>({x:C+t.x*l,y:j+t.y*l,w:Math.max(1.5,t.w*l),h:Math.max(1.5,t.h*l)}),N=t=>{const p=t.currentTarget.getBoundingClientRect(),A=(t.clientX-p.left)/Math.max(1,p.width)*w,_=(t.clientY-p.top)/Math.max(1,p.height)*z;u((A-C)/l,(_-j)/l)},k=I(g);return r.jsx("div",{className:"amx-stage-minimap",role:"navigation","aria-label":x("cvminimap.aria"),title:x("cvminimap.hint"),onPointerDown:t=>{t.preventDefault(),t.stopPropagation(),i.current=!0;try{t.currentTarget.setPointerCapture(t.pointerId)}catch{}N(t)},onPointerMove:t=>{i.current&&(t.preventDefault(),t.stopPropagation(),N(t))},onPointerUp:t=>{i.current=!1;try{t.currentTarget.releasePointerCapture(t.pointerId)}catch{}},onPointerCancel:()=>{i.current=!1},children:r.jsxs("svg",{viewBox:`0 0 ${w} ${z}`,"aria-hidden":"true",children:[m.map(t=>{const p=I(t.box);return r.jsx("rect",{className:`amx-mini-item is-${t.kind}`,"data-mini-key":t.key,x:p.x,y:p.y,width:p.w,height:p.h,rx:t.kind==="frame"?2:1.5},t.key)}),r.jsx("rect",{className:"amx-mini-viewport",x:k.x,y:k.y,width:k.w,height:k.h,rx:"2"})]})})}O({"ckchrome.zoomOut":{zh:"缩小",en:"Zoom out"},"ckchrome.zoomIn":{zh:"放大",en:"Zoom in"},"ckchrome.zoomReset":{zh:"重置为 100%",en:"Reset to 100%"},"ckchrome.fit":{zh:"适应内容",en:"Fit to content"},"ckchrome.snap":{zh:"点阵吸附",en:"Snap to grid"},"ckchrome.snapOff":{zh:"关闭点阵吸附",en:"Turn off snap to grid"},"ckchrome.snapOn":{zh:"开启点阵吸附",en:"Turn on snap to grid"},"ckchrome.miniHide":{zh:"隐藏缩略图",en:"Hide minimap"},"ckchrome.miniShow":{zh:"显示缩略图",en:"Show minimap"}});function Q({zoom:e,onZoomBy:n,onFit:m,snap:u,onSnap:i,mini:x,onMini:d,extra:y}){const{t:c}=P();return r.jsxs("div",{className:"amx-stage-hud",children:[r.jsx("button",{type:"button",onClick:()=>n(1/1.2),title:c("ckchrome.zoomOut"),children:r.jsx(E,{size:12})}),r.jsx("button",{type:"button",className:"amx-hud-zoom",onClick:()=>n(1/e),title:c("ckchrome.zoomReset"),children:r.jsxs("span",{children:[Math.round(e*100),"%"]})}),r.jsx("button",{type:"button",onClick:()=>n(1.2),title:c("ckchrome.zoomIn"),children:r.jsx(T,{size:12})}),r.jsx("button",{type:"button",onClick:m,title:c("ckchrome.fit"),children:r.jsx($,{size:12})}),y,i&&r.jsx("button",{type:"button",className:`amx-snap-toggle${u?" is-on":""}`,"aria-pressed":!!u,"aria-label":c("ckchrome.snap"),title:c(u?"ckchrome.snapOff":"ckchrome.snapOn"),onClick:()=>i(!u),children:r.jsx(X,{size:12})}),r.jsx("button",{type:"button",className:x?"is-on":"","aria-pressed":x,title:c(x?"ckchrome.miniHide":"ckchrome.miniShow"),onClick:()=>d(!x),children:r.jsx(b,{size:12})})]})}export{K as C,b as M,Q as a,J as r};
|