@forsion/unit 2.13.2 → 2.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/main.mjs +3 -3
  2. package/package.json +1 -1
  3. package/release.json +5 -5
  4. package/web/assets/{ArtificialView-Bs_6B211.js → ArtificialView-DS97zlMg.js} +1 -1
  5. package/web/assets/{AutomationBuilder-C-IFaaBp.js → AutomationBuilder-BsJc8wuC.js} +1 -1
  6. package/web/assets/{CalendarConfigView-DEsNvVkD.js → CalendarConfigView-BN8mraSo.js} +1 -1
  7. package/web/assets/{CalendarView-D7ZUE_dr.js → CalendarView-D55PA1vn.js} +1 -1
  8. package/web/assets/{CapabilityMenu-CrsaTtDe.js → CapabilityMenu-BVrokPpT.js} +1 -1
  9. package/web/assets/{CheckboxInput-DVO2-1J7.js → CheckboxInput-BuJ3HPm_.js} +1 -1
  10. package/web/assets/{Chrome-BvpbCvo1.js → Chrome-amTcZNE4.js} +1 -1
  11. package/web/assets/{CodeView-CB4kG7Y6.js → CodeView-DRVh13k9.js} +3 -3
  12. package/web/assets/DashboardGridView-D9s9pez_.css +1 -0
  13. package/web/assets/{DashboardGridView-tgaj9-SM.js → DashboardGridView-DlFyYfUh.js} +2 -2
  14. package/web/assets/{EventCard-c6s4uGBu.js → EventCard-DUrn2krw.js} +1 -1
  15. package/web/assets/{ExcalidrawCanvas-NdV86AR3.js → ExcalidrawCanvas-TpbzBF-J.js} +1 -1
  16. package/web/assets/{FloatingToc-ldOYWe2C.js → FloatingToc-B1d4-5EL.js} +1 -1
  17. package/web/assets/HomepageView-DnQ_5Obe.css +1 -0
  18. package/web/assets/{HomepageView-4joJWYlg.js → HomepageView-nzKfbHM-.js} +1 -1
  19. package/web/assets/{ImageStudioPanels-DgMYAsHj.js → ImageStudioPanels-B2PTq6Yb.js} +1 -1
  20. package/web/assets/{ImageStudioView-_CYHoOoG.js → ImageStudioView-Cawr6pGW.js} +1 -1
  21. package/web/assets/{InlineFiles-BIfsx3R-.js → InlineFiles-DKPH5JHz.js} +1 -1
  22. package/web/assets/{MarkdownBlock-wYEaBBOr.js → MarkdownBlock-BHpDy2qQ.js} +1 -1
  23. package/web/assets/{ModelPill-DveHcLqq.js → ModelPill-ChzAM3z1.js} +1 -1
  24. package/web/assets/{MuseLibraryView-Do9RnKiq.js → MuseLibraryView-DLuQ_jyV.js} +2 -2
  25. package/web/assets/{MuseView-3GL4Ltoj.js → MuseView-CDDwV6SR.js} +2 -2
  26. package/web/assets/{PageHistoryPanel-BMQC-V_l.js → PageHistoryPanel-BbdXpjJM.js} +2 -2
  27. package/web/assets/{PdfAnnotator-CyAw8sgq.js → PdfAnnotator-CW0wPWRB.js} +1 -1
  28. package/web/assets/{PenRow-BSB-h5Pb.js → PenRow-BY-MZLDQ.js} +1 -1
  29. package/web/assets/{ProductView-B96OeHOP.js → ProductView-0ieVL3rY.js} +1 -1
  30. package/web/assets/{RightPanel-BgSeCLnw.js → RightPanel-BRexwQ3W.js} +1 -1
  31. package/web/assets/RunLocationPicker-BrDfOu8-.css +1 -0
  32. package/web/assets/RunLocationPicker-CadYiE7C.js +43 -0
  33. package/web/assets/{SketchCard-DAD0jR0i.js → SketchCard-BcXCdBAs.js} +1 -1
  34. package/web/assets/{StudioGuestSurface-DlUKXBXv.js → StudioGuestSurface-ZJFKnNYF.js} +1 -1
  35. package/web/assets/{TodoListView-_yFkPUrw.js → TodoListView-DuRdVFgB.js} +1 -1
  36. package/web/assets/{Tooltip-DXuy9-1_.js → Tooltip-DtDUL18W.js} +1 -1
  37. package/web/assets/{UnifiedPage-EJNWKzxN.js → UnifiedPage-D7JTfABH.js} +3 -3
  38. package/web/assets/{amadeus-manual.en-DzRWr4BL.js → amadeus-manual.en-B8J-svqq.js} +1 -1
  39. package/web/assets/{amadeus-manual.zh-DW32DkL7.js → amadeus-manual.zh-CkCOFnrg.js} +1 -1
  40. package/web/assets/appStore-ClD7vq5L.css +1 -0
  41. package/web/assets/{appStore-CidPWYa0.js → appStore-affnJoin.js} +155 -117
  42. package/web/assets/{arrow-up-right-KPFbRA41.js → arrow-up-right-R4P9Mmxz.js} +1 -1
  43. package/web/assets/{astryxBridge-Bupzouso.js → astryxBridge-CT2wZJXs.js} +3 -3
  44. package/web/assets/{automationListSource-1aOVKBLw.js → automationListSource-JVBMsMbC.js} +1 -1
  45. package/web/assets/{boardSurface-BHuMoQN-.js → boardSurface-Ce0_vf9f.js} +1 -1
  46. package/web/assets/{book-open-CBeNsIpo.js → book-open-CcXCToyx.js} +1 -1
  47. package/web/assets/{calendarNavStore-Duyhbmm_.js → calendarNavStore-tQJRVpum.js} +1 -1
  48. package/web/assets/{canvasPrefs-CxfyDTMT.js → canvasPrefs-CSuX9aLF.js} +1 -1
  49. package/web/assets/{chatBoxSurface-OBzO1Z5E.js → chatBoxSurface-IG6Vu4Dz.js} +1 -1
  50. package/web/assets/{circle-question-mark-M8QUJJYk.js → circle-question-mark-O8AhUz35.js} +1 -1
  51. package/web/assets/{circle-x-Szwop5L_.js → circle-x-AV2ZWulM.js} +1 -1
  52. package/web/assets/{client-CPUljePZ.js → client-BqhpYbYL.js} +1 -1
  53. package/web/assets/{code-xml-n9mgGgkv.js → code-xml-DdR58F83.js} +1 -1
  54. package/web/assets/{codeStudioStore-DXMQwRzG.js → codeStudioStore-Dq5i8nbE.js} +1 -1
  55. package/web/assets/codingNavigation-CxdCK78-.js +53 -0
  56. package/web/assets/codingNavigation-_tOR0ell.css +1 -0
  57. package/web/assets/{create-C19zqt5N.js → create-BgJN5qsj.js} +2 -2
  58. package/web/assets/{dashboardSurface-BwcH16Qc.js → dashboardSurface-BY-AFB-r.js} +1 -1
  59. package/web/assets/{deskCapture-B_LKZSPt.js → deskCapture-BD2qD6NI.js} +1 -1
  60. package/web/assets/{diff2html-DrCCWvpR.js → diff2html-OoRdHZ_O.js} +1 -1
  61. package/web/assets/{docx-preview-Bi7wekSM.js → docx-preview-B43XC8Cn.js} +1 -1
  62. package/web/assets/{emoji-DczIG8SO.js → emoji-BPdA62d7.js} +1 -1
  63. package/web/assets/{floatingTocSurface-rc1ZC7-I.js → floatingTocSurface-BM2SYE_u.js} +1 -1
  64. package/web/assets/{foldActions-BGocXE-o.js → foldActions-BcyvNVBs.js} +1 -1
  65. package/web/assets/{folder-CoOsfQ64.js → folder-CCZqnwRc.js} +1 -1
  66. package/web/assets/{folder-plus-d5MwIMlf.js → folder-plus-BJKT1Pqg.js} +1 -1
  67. package/web/assets/{gestures-CXFaEydn.js → gestures-BwPbZDkU.js} +1 -1
  68. package/web/assets/{hand-fuehbnkI.js → hand-DRu7IJdU.js} +1 -1
  69. package/web/assets/{hard-drive-Bh1DmZg0.js → hard-drive-CXNJUCXw.js} +1 -1
  70. package/web/assets/i18n-BMo19xaR.css +1 -0
  71. package/web/assets/i18n.generated-DvY59Zq3.js +15 -0
  72. package/web/assets/{imageStudio-Dgl1wZNB.js → imageStudio-Axwmd4GW.js} +2 -2
  73. package/web/assets/imageStudio-DZ0qGU2s.css +1 -0
  74. package/web/assets/{index-e-MxdHFO.js → index-B1rE_NwA.js} +1 -1
  75. package/web/assets/{index-lfow5R3O.js → index-BFTY79aq.js} +1 -1
  76. package/web/assets/{index-38xsQSS9.js → index-BGEkZBs2.js} +1 -1
  77. package/web/assets/{index-YRWOePBS.js → index-BO2XJc36.js} +1 -1
  78. package/web/assets/{index-B5UW6SaE.js → index-BYUntVIZ.js} +2 -2
  79. package/web/assets/{index-2tD0kijW.js → index-C65u4fXd.js} +1 -1
  80. package/web/assets/{index-BCG8Wnc4.js → index-C_Ohi-I3.js} +1 -1
  81. package/web/assets/{index-Dff-DL1v.js → index-CkMhazev.js} +1 -1
  82. package/web/assets/{index-Dc8iMctf.js → index-CobUnTcv.js} +1 -1
  83. package/web/assets/{index-Dy07SBfH.js → index-D102FOuM.js} +1 -1
  84. package/web/assets/{index-B8Co6KG3.js → index-D3CYvMpl.js} +1 -1
  85. package/web/assets/{index-QjVOA7QM.js → index-D78izbLA.js} +1 -1
  86. package/web/assets/{index-BPqoEOV_.js → index-DDMXVG0h.js} +1 -1
  87. package/web/assets/{index-CPLtf9Vc.js → index-DY0M_dpd.js} +1 -1
  88. package/web/assets/{index-7kdR1oL8.js → index-DcbZwhpE.js} +1 -1
  89. package/web/assets/{index-D4CSH-v1.js → index-Dlkq7gkE.js} +1 -1
  90. package/web/assets/{index-Ch0FIsJX.js → index-HqmJW2np.js} +1 -1
  91. package/web/assets/{index-DcRyQ3eU.js → index-LxlyPm0_.js} +1 -1
  92. package/web/assets/{index-Ce1sNSS8.js → index-Uq4J2aoW.js} +1 -1
  93. package/web/assets/{index-DvOrTnw2.js → index-WbVt2P8R.js} +1 -1
  94. package/web/assets/{index-Df9jregv.js → index-XyjIhkPw.js} +1 -1
  95. package/web/assets/{index-BqGpbntz.js → index-Y2kzYlZq.js} +1 -1
  96. package/web/assets/{index-CnDAYLti.js → index-mB0EQkyZ.js} +1 -1
  97. package/web/assets/{index-fViJsYjM.js → index-pJh7JN7_.js} +1 -1
  98. package/web/assets/{index-Dx9aIoyo.js → index-taRxNsbp.js} +1 -1
  99. package/web/assets/{invitePage-Dgl3-c_m.js → invitePage-BW0BH8Ac.js} +1 -1
  100. package/web/assets/{ipc-CNlIRMtU.js → ipc-D7yENkjV.js} +1 -1
  101. package/web/assets/{jszip.min-tyV0GaJg.js → jszip.min-UE5d5vPJ.js} +1 -1
  102. package/web/assets/{layout-grid-DFmwM9NU.js → layout-grid-Hs3eDA07.js} +1 -1
  103. package/web/assets/{linkFollow-iP2zfbA3.js → linkFollow-Msu1XH9v.js} +4 -4
  104. package/web/assets/{list-tree-i07HsP3D.js → list-tree-DmuRb-p9.js} +1 -1
  105. package/web/assets/{listFold-Aea6I0Sa.js → listFold-CKxjyY5_.js} +1 -1
  106. package/web/assets/{lock-TSDKuCod.js → lock-kffGfeHt.js} +1 -1
  107. package/web/assets/{log-out-DK84lW5n.js → log-out-B5gEP0tF.js} +1 -1
  108. package/web/assets/main-DIyFlyfK.js +20 -0
  109. package/web/assets/markdownEditorSurface-Cx2rqFAY.js +3 -0
  110. package/web/assets/{message-square-plus-3wFslIMY.js → message-square-plus-DxBPIhPS.js} +1 -1
  111. package/web/assets/{messages-DEAGRsC3.js → messages-4w1Khzm1.js} +1 -1
  112. package/web/assets/minus-CfoZ4oxr.js +1 -0
  113. package/web/assets/{mobileEntry-5UaAITwY.js → mobileEntry-B8JwR53-.js} +1 -1
  114. package/web/assets/{nativeDownload-B3JGkABw.js → nativeDownload-Udrv_tmU.js} +1 -1
  115. package/web/assets/{pageChrome-DFi9zs6F.js → pageChrome-D-9npbUE.js} +1 -1
  116. package/web/assets/{pageChrome-BDHHmRnt.css → pageChrome-eO9pb2fH.css} +1 -1
  117. package/web/assets/{pageTree-DZ7Eiro-.js → pageTree-CIXFRCLk.js} +2 -2
  118. package/web/assets/{pen-tool-ChGmX6g_.js → pen-tool-D_Y9We9x.js} +1 -1
  119. package/web/assets/{pencil-CJsJD7M_.js → pencil-DGiTRzW1.js} +1 -1
  120. package/web/assets/phoneList-BQfCJwKF.css +1 -0
  121. package/web/assets/{phoneList-DrxIwJxQ.js → phoneList-DHUia6HT.js} +1 -1
  122. package/web/assets/{pluginChat-0QI9a8Q1.js → pluginChat-BXuJiMYi.js} +1 -1
  123. package/web/assets/{redo-2-CI57sDFr.js → redo-2-QgiKEg9T.js} +1 -1
  124. package/web/assets/{rotate-ccw-xgT_0UN9.js → rotate-ccw-BLoH5er1.js} +1 -1
  125. package/web/assets/{sharePage-C2Yqx0NQ.js → sharePage-DYYN5usb.js} +2 -2
  126. package/web/assets/{shareViewer-DKPWhTJv.js → shareViewer-BzuSyJv_.js} +1 -1
  127. package/web/assets/{star-C9KTji9N.js → star-BmywYD3u.js} +1 -1
  128. package/web/assets/{tableSurface-cYs6dX6B.js → tableSurface-21LDYY_G.js} +1 -1
  129. package/web/assets/{terminal-DPZazOQ2.js → terminal-BlmA_Z1C.js} +1 -1
  130. package/web/assets/{terminalView-CsJmxE_m.js → terminalView-SAxITnRW.js} +1 -1
  131. package/web/assets/{type-C5J875vb.js → type-DmIL6FB-.js} +1 -1
  132. package/web/assets/{undo-2-BOUt5qks.js → undo-2-yMeXc8Wi.js} +1 -1
  133. package/web/assets/{unitAccount-BIAIxKNp.js → unitAccount-BPYRAa3m.js} +1 -1
  134. package/web/assets/{unitBridge-b2C6zb3a.js → unitBridge-BNVzai6X.js} +1 -1
  135. package/web/assets/{unitCloudTransport-NGtDDKWo.js → unitCloudTransport-iFweA1xk.js} +1 -1
  136. package/web/assets/{unitOwnerAccess-CwH9ApZT.js → unitOwnerAccess-Bggl7bDP.js} +1 -1
  137. package/web/assets/{unitShim-CY8EVkKD.js → unitShim-BP2nBO_k.js} +3 -3
  138. package/web/assets/{upload-CrbEAW8C.js → upload-D20PZHXc.js} +1 -1
  139. package/web/assets/userSpaces-CrLrKklx.js +1 -0
  140. package/web/assets/{viewportLock-Bi3orrUs.css → viewportLock-DO1lzA2N.css} +1 -1
  141. package/web/assets/viewportLock-tlT6H_Hc.js +629 -0
  142. package/web/assets/{workflow-DY2Cnaei.js → workflow-Bd6xBHiT.js} +1 -1
  143. package/web/assets/{zoom-in-BcuPvIYd.js → zoom-in-_TgFOpyv.js} +1 -1
  144. package/web/index.html +2 -2
  145. package/web/assets/DashboardGridView-hpRmBr9B.css +0 -1
  146. package/web/assets/HomepageView-Cxf3AWBu.css +0 -1
  147. package/web/assets/RunLocationPicker-CEmFio4n.css +0 -1
  148. package/web/assets/RunLocationPicker-M1UoJyjf.js +0 -38
  149. package/web/assets/appStore-DeaC1U32.css +0 -1
  150. package/web/assets/codingNavigation-CCjs1kon.js +0 -53
  151. package/web/assets/codingNavigation-yp19w6uu.css +0 -1
  152. package/web/assets/i18n-DjziAw8r.css +0 -1
  153. package/web/assets/i18n.generated-BiQFRL2U.js +0 -15
  154. package/web/assets/imageStudio--KF9gwHA.css +0 -1
  155. package/web/assets/main-D7CEGndC.js +0 -20
  156. package/web/assets/markdownEditorSurface-DISu_twy.js +0 -3
  157. package/web/assets/minus-BBdfT_sc.js +0 -1
  158. package/web/assets/phoneList-DvpzD3zT.css +0 -1
  159. package/web/assets/userSpaces-B_Njvel_.js +0 -1
  160. package/web/assets/viewportLock-DZ927PNz.js +0 -629
@@ -0,0 +1 @@
1
+ .dash-stat{gap:4px}.dash-stat-value{font-size:var(--ui-font-display, 20px);font-weight:620;line-height:1.02;color:var(--text);font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:4px}.dash-stat-unit{font-size:.42em;font-weight:500;color:var(--text-muted)}.dash-stat-label{font-size:var(--ui-font-meta, 12px);color:var(--text-muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-stat-sub{font-size:var(--ui-font-caption, 11px);color:var(--text-faint, var(--text-muted))}.dash-chart{height:100%;display:flex;flex-direction:column;min-height:0;padding:10px 12px;gap:8px}.dash-chart-title{flex:0 0 auto;font-size:var(--ui-font-meta, 12px);font-weight:550;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-chart-body{flex:1 1 auto;min-height:0;display:flex}.dash-filterbar{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:6px 12px;border-bottom:var(--border-width, 1px) solid var(--border);background:var(--bg-card, var(--bg));font-size:var(--ui-font-meta, 12px)}.dash-filterbar-label{color:var(--text-faint, var(--text-muted));margin-right:2px}.dash-filter-chip{display:inline-flex;align-items:center;gap:5px;padding:2px 6px 2px 8px;border:var(--border-width, 1px) solid color-mix(in srgb,var(--primary) 32%,var(--border));border-radius:var(--radius-pill, 999px);background:color-mix(in srgb,var(--primary) 8%,transparent);color:var(--text)}.dash-filter-chip b{font-weight:550}.dash-filter-chip button{border:none;background:transparent;cursor:pointer;padding:0;display:inline-flex;color:var(--text-faint, var(--text-muted))}.dash-filter-chip button:hover{color:var(--danger, #e5484d)}.dash-filter-add{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-pill, 999px);cursor:pointer;border:var(--border-width, 1px) solid transparent;background:transparent;color:var(--text-muted)}.dash-filter-add:hover{border-color:color-mix(in srgb,var(--primary) 45%,var(--border));color:var(--text)}.dash-filter-editor{display:flex;flex-direction:column;gap:6px;padding:8px;min-width:200px}.dash-filter-editor select,.dash-filter-editor input{width:100%;font:inherit;font-size:var(--ui-font-meta, 12px);padding:4px 6px;border:var(--border-width, 1px) solid var(--border);border-radius:var(--radius-sm, 6px);background:var(--bg);color:var(--text)}.dash-filter-editor select:focus-visible,.dash-filter-editor input:focus-visible{outline:var(--focus-ring) solid var(--primary);outline-offset:1px}.dash-filter-commit{border:none;border-radius:var(--radius-sm, 6px);cursor:pointer;padding:5px 8px;font-size:var(--ui-font-meta, 12px);font-weight:550;background:var(--primary);color:var(--bg)}.dash-router-page{display:flex;flex-direction:column;width:100%;height:100%;min-height:0}.dash-router-page>.dash2,.dash-router-page>.dash3{flex:1 1 auto;min-height:0}.dash3{--dash3-page-pad-block-start: 18px;--dash3-page-pad-block-end: 28px;display:flex;flex-direction:column;min-height:0}.dash3-mode-btn{padding-inline:8px;font-weight:550}.dash3-host{position:relative;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;background:var(--bg-card, var(--bg));transition:background-color var(--dur-normal, .25s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1))}.dash3-host:not([data-locked]){background:color-mix(in srgb,var(--primary) 2.5%,var(--bg-card, var(--bg)))}.dash3-grid{width:min(100%,1180px);margin-inline:auto;display:grid;grid-template-columns:repeat(var(--dash3-cols, 12),minmax(0,1fr));grid-auto-rows:var(--dash3-row, 72px);gap:var(--dash3-gap, 12px);padding-block-start:var(--dash3-page-pad-block-start);padding-block-end:var(--dash3-page-pad-block-end);padding-inline:var(--dash3-gap, 12px);align-content:start}.dash3-card-slot{position:relative;min-width:0;min-height:0}.dash3-card-slot:has(.dash3-card[data-dragging]),.dash3-card-slot:has(.dash3-card[data-sizing]){z-index:5}.dash3-card{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;border:var(--border-width, 1px) solid transparent;border-radius:var(--radius-md, 12px);background:var(--bg);box-shadow:var(--card-shadow);container-type:inline-size;width:100%;height:100%;transition:background-color var(--dur-normal, .25s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)),border-color var(--dur-fast, .18s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)),box-shadow var(--dur-normal, .25s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)),opacity var(--dur-fast, .18s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1))}.dash3-card[data-surface=metric]{background:color-mix(in srgb,var(--primary) 6%,var(--bg));box-shadow:none}.dash3-card[data-surface=summary]{background:var(--bg);box-shadow:var(--card-shadow)}.dash3-card[data-surface=workspace]{background:var(--bg-card, var(--bg));box-shadow:none}.dash3-card[data-surface=note]{background:color-mix(in srgb,var(--bg) 82%,var(--bg-card));box-shadow:none}.dash3-card--chrome{border-color:transparent;background:transparent;box-shadow:none;overflow:visible;align-self:end}.dash3-card-head{flex:0 0 auto;display:flex;align-items:center;min-height:34px;gap:7px;padding-inline:12px 8px;border-bottom:var(--border-width, 1px) solid transparent;background:transparent;font-size:var(--ui-font-meta, 12px);font-weight:600;color:var(--text-muted);min-width:0}.dash3-card-icon{flex:0 0 auto;opacity:.72}.dash3-card-title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash3-card-open{flex:0 0 auto;width:24px;height:24px;border:var(--border-width, 1px) solid transparent;background:transparent;cursor:pointer;color:var(--text-faint, var(--text-muted));padding:0;border-radius:var(--radius-sm, 6px);display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .12s ease,color .12s ease,background-color .12s ease}.dash3-card:hover .dash3-card-open{opacity:1}.dash3-card-open:hover{color:var(--text);background:var(--overlay-light)}.dash3-card-open:focus-visible{opacity:1;outline:var(--focus-ring) solid var(--primary);outline-offset:1px}.dash3-card-body{flex:1 1 auto;min-width:0;min-height:0;overflow:hidden}.dash3-card[data-surface=workspace]>.dash3-card-body{overflow:auto}.dash3-card[data-kind=view]>.dash3-card-body{overflow:hidden}.dash3-card[data-kind=text]>.dash3-card-body{padding:10px 12px}.dash3-card--chrome>.dash3-card-body{padding:0}.dash-widget.dash-section{display:flex;align-items:baseline;justify-content:flex-start;gap:8px;min-width:0;height:100%;padding:10px 2px 2px;text-align:left}.dash-section-title{color:var(--text);font-size:var(--ui-font-body, 13px);font-weight:650;letter-spacing:.02em}.dash-section-note{overflow:hidden;color:var(--text-muted);font-size:var(--ui-font-meta, 12px);text-overflow:ellipsis;white-space:nowrap}.dash-viewcard--compact{overflow:hidden}.dash-viewcard--interactive{width:100%;height:100%;min-height:0;overflow:hidden}.dash-viewcard--interactive>.am-app{width:100%;height:100%;min-height:0}.dash3-shield{position:absolute;inset:0;z-index:2;cursor:grab;touch-action:none;background:transparent;border-radius:inherit;transition:background-color var(--dur-fast, .18s) var(--ease-apple, ease)}.dash3-shield:hover{background:color-mix(in srgb,var(--overlay-light, rgba(127, 127, 127, .06)) 50%,transparent)}.dash3-shield:focus-visible{outline:var(--focus-ring) solid var(--primary);outline-offset:-2px}.dash3-card[data-interact]{outline:1.5px solid var(--primary);outline-offset:1px}.dash3-card[data-dragging]{opacity:.35;outline:1.5px solid color-mix(in srgb,var(--primary) 35%,transparent);outline-offset:-1.5px}.dash3-card[data-dragging] .dash3-shield{cursor:grabbing}.dash3-card[data-dragging] .dash3-card-btn,.dash3-card[data-dragging] .dash3-grip{opacity:0!important}.dash3-card--lift{cursor:grabbing;box-shadow:0 1px 2px #00000014,0 16px 40px #0000002e;transform:scale(1.02)}.dash3-overlay-ghost{background:linear-gradient(180deg,color-mix(in srgb,var(--primary) 4%,transparent),transparent 62%)}.dash3 .dash-add-menu{animation:dash3-menu-in var(--dur-fast, .18s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)) both}.dash3 .dash-menu-scrim{animation:dash3-scrim-in var(--dur-fast, .18s) ease both}@keyframes dash3-menu-in{0%{opacity:0;transform:translateY(-5px) scale(.98)}to{opacity:1;transform:none}}@keyframes dash3-scrim-in{0%{opacity:0}to{opacity:1}}.dash3-card-btn{position:absolute;z-index:4;top:6px;width:24px;height:24px;align-items:center;justify-content:center;border:var(--border-width, 1px) solid color-mix(in srgb,var(--border) 72%,transparent);background:var(--bg);color:var(--text-faint, var(--text-muted));cursor:pointer;padding:0;border-radius:var(--radius-sm, 6px);display:inline-flex;opacity:0;transition:opacity .12s ease,color .12s ease,background-color .12s ease}.dash3-card-more{right:36px}.dash3-card-del{right:6px}.dash3-card:hover .dash3-card-btn{opacity:1}.dash3-card-more:hover{color:var(--text);background:var(--overlay-light)}.dash3-card-del:hover{color:var(--danger);background:var(--overlay-light)}.dash3-card-btn:focus-visible{opacity:1;outline:var(--focus-ring) solid var(--primary);outline-offset:1px}.dash3-grip{position:absolute;right:0;bottom:0;width:22px;height:22px;z-index:4;cursor:nwse-resize;touch-action:none;opacity:0;border-radius:var(--radius-sm, 6px) 0 0 0;background:color-mix(in srgb,var(--bg) 76%,transparent);transition:opacity .12s ease,background-color .12s ease}.dash3-host:not([data-locked]) .dash3-grip{opacity:.5}.dash3-card:hover .dash3-grip{opacity:1}.dash3-grip:after{content:"";position:absolute;right:5px;bottom:5px;width:8px;height:8px;border-right:2px solid color-mix(in srgb,var(--primary) 72%,var(--text-muted));border-bottom:2px solid color-mix(in srgb,var(--primary) 72%,var(--text-muted));border-bottom-right-radius:3px}.dash3-card[data-sizing]{outline:1.5px solid var(--primary);outline-offset:1px}.dash3-card[data-sizing] .dash3-grip{opacity:1}@starting-style{.dash3-host:not([data-locked]) .dash3-grip{opacity:0}}.dash3-empty{width:min(100%,680px);min-height:clamp(360px,64vh,560px);margin-inline:auto;padding-block:44px;padding-inline:24px;display:grid;place-items:center}.dash3-empty-panel{width:min(100%,460px)}.dash3-empty-mark{width:42px;height:42px;display:grid;place-items:center;border:var(--border-width, 1px) solid color-mix(in srgb,var(--primary) 24%,var(--border));border-radius:var(--radius-md, 12px);background:color-mix(in srgb,var(--primary) 8%,var(--bg));color:var(--primary)}.dash3-empty-copy{margin-top:16px}.dash3-empty-title{font-size:var(--ui-font-heading, 14px);line-height:1.3;font-weight:650;color:var(--text)}.dash3-empty-sub{margin-top:6px;max-width:38ch;font-size:var(--ui-font-body, 13px);line-height:1.55;color:var(--text-muted)}.dash3-templates{margin-top:20px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.dash3-template{min-width:0;min-height:76px;display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;align-items:center;padding-block:12px;padding-inline:12px;border:var(--border-width, 1px) solid transparent;border-radius:var(--radius-md, 12px);background:var(--bg);box-shadow:var(--card-shadow);cursor:pointer;text-align:left;transition:transform .14s ease,border-color .14s ease,background-color .14s ease}.dash3-template:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--primary) 48%,var(--border));background:color-mix(in srgb,var(--primary) 3%,var(--bg))}.dash3-template:active{transform:translateY(0)}.dash3-template:focus-visible{outline:var(--focus-ring) solid var(--primary);outline-offset:2px}.dash3-template-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:var(--radius-sm, 8px);background:color-mix(in srgb,var(--primary) 8%,var(--bg-card, var(--bg)));color:var(--primary)}.dash3-template-copy{min-width:0;display:flex;flex-direction:column;gap:3px}.dash3-template-name{font-size:var(--ui-font-body, 13px);line-height:1.25;font-weight:650;color:var(--text)}.dash3-template-hint{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ui-font-caption, 11px);color:var(--text-muted)}.dash3-size-dim{margin-left:auto;color:var(--text-faint, var(--text-muted));font-variant-numeric:tabular-nums}.dash3-card--chrome .dash-section{padding-inline:4px}.dash3-card--chrome .dash-section-title{font-size:var(--ui-font-body, 13px);line-height:1.35;font-weight:650;letter-spacing:0}@media(max-width:560px){.dash3-empty{padding-inline:16px}.dash3-templates{grid-template-columns:minmax(0,1fr)}}@media(prefers-reduced-motion:reduce){.dash3-host,.dash3-card,.dash-compact-row,.dash3-template,.dash3-card-open,.dash3-card-btn,.dash3-grip,.dash3-shield{transition-duration:.01ms}.dash3 .dash-add-menu,.dash3 .dash-menu-scrim{animation:none}}
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./PageHistoryPanel-BMQC-V_l.js","./index-B5UW6SaE.js","./appStore-CidPWYa0.js","./nativeDownload-B3JGkABw.js","./ipc-CNlIRMtU.js","./client-CPUljePZ.js","./appStore-DeaC1U32.css","./create-C19zqt5N.js","./create-BgE3edmZ.css","./UnifiedPage-EJNWKzxN.js","./MarkdownBlock-wYEaBBOr.js","./index-BqGpbntz.js","./linkFollow-iP2zfbA3.js","./emoji-DczIG8SO.js","./listFold-Aea6I0Sa.js","./book-open-CBeNsIpo.js","./MarkdownBlock--__nPQGh.css","./pageChrome-DFi9zs6F.js","./upload-CrbEAW8C.js","./pageChrome-BDHHmRnt.css","./SketchCard-DAD0jR0i.js","./arrow-up-right-KPFbRA41.js","./Chrome-BvpbCvo1.js","./minus-BBdfT_sc.js","./canvasPrefs-CxfyDTMT.js","./hand-fuehbnkI.js","./type-C5J875vb.js","./foldActions-BGocXE-o.js","./lock-TSDKuCod.js","./undo-2-BOUt5qks.js","./code-xml-n9mgGgkv.js","./message-square-plus-3wFslIMY.js","./UnifiedPage-CWXc_mo1.css","./FloatingToc-ldOYWe2C.js","./pageTree-DZ7Eiro-.js","./pluginExt-Byb64tQO.js","./phoneList-DrxIwJxQ.js","./phoneList-DvpzD3zT.css","./list-tree-i07HsP3D.js","./pen-tool-ChGmX6g_.js","./pencil-CJsJD7M_.js","./star-C9KTji9N.js","./folder-plus-d5MwIMlf.js","./redo-2-CI57sDFr.js","./folder-CoOsfQ64.js","./layout-grid-DFmwM9NU.js","./PageHistoryPanel-DFjh0pWs.css"])))=>i.map(i=>d[i]);
2
- import{ch as Ea,ci as $n,r as Ne,j as e,u as he,d as c,cj as Da,bD as Ci,ck as Pi,m as Ti,bO as Fa,t as _,_ as Ei,P as Di,c2 as Fi,ar as Ri,J as Nt,n as As,ad as ln,cl as ds,c0 as Mi,c1 as $i,aT as Oi,aD as Ii,b4 as Li,aI as Bs,aL as Ai}from"./index-B5UW6SaE.js";import{G as ct,cs as Gt,_ as Yt,iG as fn,u as Ve,b as L,dm as te,T as js,fV as ot,fC as Pe,fi as Me,qn as Ra,fj as Bi,q as $e,m7 as Vi,qo as _i,gl as Wi,cq as qi,qp as Ui,qq as Hi,qr as Ki,qs as Gi,aK as vt,ow as Yi,fd as Ma,lA as Xi,kL as ks,kB as $a,qt as Ji,g3 as Oa,ga as Ss,oy as Wn,qu as Ia,fB as Ft,qv as La,fO as Aa,kx as us,kA as Zi,qw as Qi,fS as Ba,qx as Va,kD as _a,qi as eo,kK as Wa,qy as to,a5 as gt,aF as Ns,U as qa,e1 as zs,bV as Wt,bK as Ye,ai as Tt,dF as no,hx as so,qz as qt,j8 as Ua,gg as Bt,b2 as ao,bo as Cs,gu as Ha,fA as Ps,qA as io,hq as oo,m as ro,hF as lo,h as co,gk as uo,cW as hs,c6 as Ut,bt as Ka,ar as Et,qB as un,ct as xt,fh as Fn,aE as It,fm as Jn,gf as pt,fk as Vs,iA as _s,fl as Ws,K as jn,hP as Zn,oe as qs,ah as ho,as as Xt,of as mo,Z as po,fc as kn,o7 as fo,o6 as xo,ay as go,g7 as vo,fF as Ht,qC as wo,g8 as Ga,cr as Qn,qD as Us,qE as Hs,cL as Ks,qF as bo,qG as yo,fo as zt,qH as Sn,hH as jo,gp as Gs,mU as ko,hR as es,iy as So,iB as No,nM as zo,cO as Co,f8 as Po,iz as To,qI as Eo,qJ as Do,j as Ya,lB as Xa,qK as Fo,qL as Ro,qM as Mo,qN as $o,qO as Oo,b6 as Io,oq as Lo,or as Ao,p as ms,qP as Bo,qQ as Vo,fx as Kt,qR as _o,qS as Wo,qT as qo,qU as Uo,qV as Ho,qW as Ys,kd as Ja,qX as Xs,f_ as Za,iN as Ko,iO as Go,az as Yo,fZ as ze,aC as hn,fD as Rn,qY as ts,R as Xo,qZ as Js,q_ as Zs,fE as ns,f$ as ss,q$ as Jo,r0 as Qs,r1 as Zo,r2 as ea,r3 as Qo,g0 as as,r4 as is,r5 as er,r6 as tr,bg as nr,ap as ta,r7 as sr,g2 as Ct,r8 as ps,r9 as sn,ra as an,rb as st,gr as ar,fQ as ir,rc as or,rd as rr,re as lr,rf as cr,fN as na,rg as dr,rh as ur,ri as hr,rj as mr,rk as pr,rl as fr,rm as xr,kM as gr,fU as vr,rn as Nn,ro as wr,rp as br,rq as yr}from"./appStore-CidPWYa0.js";import"./client-CPUljePZ.js";import{e as Qa,g as Ts,h as jr,M as ei,C as kr,S as Sr,U as Nr,A as zr,d as Cr,i as Pr}from"./UnifiedPage-EJNWKzxN.js";import{F as Tr}from"./FloatingToc-ldOYWe2C.js";import{ab as Er,ac as Dr,a8 as ti,ad as Fr,h as Rr}from"./MarkdownBlock-wYEaBBOr.js";import{u as Mr,S as $r,r as Or,a as Ir,C as Lr,N as Ar,U as Br}from"./pageChrome-DFi9zs6F.js";import{m as Vr,b as _r,r as sa}from"./pageTree-DZ7Eiro-.js";import{normalizePluginRename as Wr}from"./pluginExt-Byb64tQO.js";import{h as qn,i as qr,l as Ur,a as Hr,b as Kr,p as Gr,q as Yr,c as Xr,w as Jr,v as Zr,S as Lt,L as Qr,d as el,P as fs,t as aa,f as tl,g as nl,x as sl,e as ia,j as al,s as il,u as ol,A as oa,m as xs,C as ni}from"./phoneList-DrxIwJxQ.js";import{c as Zt}from"./nativeDownload-B3JGkABw.js";import{L as rl}from"./list-tree-i07HsP3D.js";import{P as on}from"./pen-tool-ChGmX6g_.js";import{P as cn}from"./pencil-CJsJD7M_.js";import{S as On}from"./star-C9KTji9N.js";import{B as si}from"./book-open-CBeNsIpo.js";import{F as ra}from"./folder-plus-d5MwIMlf.js";import{U as gs}from"./upload-CrbEAW8C.js";import{F as ll,T as ai}from"./type-C5J875vb.js";import{U as cl}from"./undo-2-BOUt5qks.js";import{R as dl,F as zn}from"./redo-2-CI57sDFr.js";import{C as os}from"./code-xml-n9mgGgkv.js";import{L as la}from"./lock-TSDKuCod.js";import{F as Es}from"./folder-CoOsfQ64.js";import{L as At}from"./layout-grid-DFmwM9NU.js";const ul=[["path",{d:"m15 16 2.536-7.328a1.02 1.02 1 0 1 1.928 0L22 16",key:"xik6mr"}],["path",{d:"M15.697 14h5.606",key:"1stdlc"}],["path",{d:"m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16",key:"d5nyq2"}],["path",{d:"M3.304 13h6.392",key:"1q3zxz"}]],ii=ct("a-large-small",ul);const hl=[["path",{d:"M10 2v8l3-3 3 3V2",key:"sqw3rj"}],["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]],ml=ct("book-marked",hl);const pl=[["path",{d:"M10.94 5.274A7 7 0 0 1 15.71 10h1.79a4.5 4.5 0 0 1 4.222 6.057",key:"1uxyv8"}],["path",{d:"M18.796 18.81A4.5 4.5 0 0 1 17.5 19H9A7 7 0 0 1 5.79 5.78",key:"99tcn7"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],vs=ct("cloud-off",pl);const fl=[["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}],["path",{d:"M15.947 12.65a4 4 0 0 0-5.925-4.128",key:"dpwdj0"}],["path",{d:"M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z",key:"s09mg5"}]],xl=ct("cloud-sun",fl);const gl=[["path",{d:"M6 12h12",key:"8npq4p"}],["path",{d:"M6 20V4",key:"1w1bmo"}],["path",{d:"M18 20V4",key:"o2hl4u"}]],vl=ct("heading",gl);const wl=[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]],Cn=ct("layout-dashboard",wl);const bl=[["path",{d:"M21 5H11",key:"us1j55"}],["path",{d:"M21 12H11",key:"wd7e0v"}],["path",{d:"M21 19H11",key:"saa85w"}],["path",{d:"m7 8-4 4 4 4",key:"o5hrat"}]],yl=ct("list-indent-decrease",bl);const jl=[["path",{d:"M21 5H11",key:"us1j55"}],["path",{d:"M21 12H11",key:"wd7e0v"}],["path",{d:"M21 19H11",key:"saa85w"}],["path",{d:"m3 8 4 4-4 4",key:"1a3j6y"}]],kl=ct("list-indent-increase",jl);const Sl=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],In=ct("share-2",Sl);const Nl=[["path",{d:"m10.344 4.688 1.181-2.393a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.237 3.152",key:"19ctli"}],["path",{d:"m17.945 17.945.43 2.505a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a8 8 0 0 0 .4-.099",key:"ptqqvy"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],zl=ct("star-off",Nl);let ca=0;const Oe=Zt(t=>({vaults:[],activeRoot:null,mirrorVaults:[],status:{},async refresh(){const n=++ca,s=window.amadeusSync;if(s?.entrySyncGet)try{const i=await s.entrySyncGet();if(n!==ca)return;t({vaults:i.vaults,activeRoot:i.activeRoot,mirrorVaults:i.mirrorVaults??[]})}catch{}}}));let da=!1;function oi(){if(da)return;da=!0;const t=window.amadeusSync;Oe.getState().refresh(),t?.onEntrySyncChange?.(()=>{Oe.getState().refresh()}),t?.onStatus?.(n=>{const s=n.binding;s&&Oe.setState(i=>({status:{...i.status,[s]:n}}))})}function xn(t,n){if(!t)return!1;const s=Oe.getState().vaults.find(i=>i.vaultRoot===t);return!!s&&Ea(s.entries,s.exclude,n)}function Ds(t,n,s,i){if(!window.amadeusSync||s==="cloud")return $n(i);if(!n)return null;const l=t.find(o=>o.vaultRoot===n);return!l||!Ea(l.entries,l.exclude,i)?null:`${l.cloudName}/${$n(i)}`}function Cl(t,n){const s=t?Oe.getState().vaults.find(l=>l.vaultRoot===t):null;if(!s?.exclude?.length)return!1;const i=$n(n);return s.exclude.some(l=>{const o=$n(l);return!!o&&(i===o||i.startsWith(`${o}/`)||i.startsWith(`${o.replace(/\.md$/i,"")}.fd/`))})}let dn=null;function ws(){return dn===null&&(dn=!0,window.tangu?.getConfig?.().then(t=>{dn=t?.notesUpgradeV4!==!1}).catch(()=>{})),dn}function nu(t){dn=t}ws();Ne({"csd.title":{zh:"开启云同步",en:"Turn on cloud sync"},"csd.failed":{zh:"开启云同步失败",en:"Could not turn on cloud sync"},"csd.enabled":{zh:"已开启云同步:云端「{name}」",en:"Cloud sync is on — cloud folder “{name}”"},"csd.selectAll":{zh:"全选",en:"Select all"},"csd.selectNone":{zh:"全不选",en:"Deselect all"},"csd.conflictMsg":{zh:"云端智库根目录已有「{name}」。可以换一个云端文件夹名,或把本智库的同步内容合并进现有文件夹(换机后重新开启同步时选「合并」)。",en:"The cloud workspace root already has a folder called “{name}”. Pick a different name for the cloud folder, or merge this vault’s synced content into the existing one (choose Merge when you turn sync back on after switching machines)."},"csd.newNamePlaceholder":{zh:"新的云端文件夹名",en:"New cloud folder name"},"csd.cancel":{zh:"取消",en:"Cancel"},"csd.mergeInto":{zh:"合并进「{name}」",en:"Merge into “{name}”"},"csd.useNewName":{zh:"用新名字开启",en:"Use new name"},"csd.intro":{zh:"「{name}」将带完整相对路径同步到云端智库(双向)。子页面与库内关联默认一并纳入,保留智库里的相对位置;取消勾选即不同步:",en:"“{name}” will sync to the cloud workspace with its full relative path (two-way). Subpages and in-vault links are included by default and keep their position in the vault; uncheck anything you do not want synced:"},"csd.analyzing":{zh:"正在分析关联…",en:"Analyzing links…"},"csd.groupSubPages":{zh:"子页面",en:"Subpages"},"csd.groupLinkedPages":{zh:"关联笔记",en:"Linked notes"},"csd.groupAssets":{zh:"附件",en:"Attachments"},"csd.nothingElse":{zh:"没有子页面与库内关联,仅同步此条目。",en:"No subpages or in-vault links — only this item will sync."},"csd.enabling":{zh:"开启中…",en:"Turning on…"},"csd.enable":{zh:"开启同步",en:"Turn on sync"}});const bs=Zt(t=>({req:null,open:n=>t({req:n}),close:()=>t({req:null})}));function Dt(t,n){bs.getState().open({path:t,kind:n})}const ua=t=>(t.split(/[\\/]/).pop()??t).replace(/\.md$/i,"");function su(){const t=bs(n=>n.req);return t?e.jsx("div",{className:"am-app tangu-lovable",style:{display:"contents"},children:e.jsx(Pl,{req:t,onClose:()=>bs.getState().close()},`${t.kind}:${t.path}`)}):null}function Pl({req:t,onClose:n}){const{t:s}=he(),[i,l]=c.useState(null),[o,r]=c.useState(new Set),[u,f]=c.useState(new Set),[h,j]=c.useState(new Set),[m,y]=c.useState(!1),[p,b]=c.useState(null),[O,E]=c.useState("");c.useEffect(()=>{let z=!0;if(t.kind==="asset"){l({pages:[],files:[],subPages:[]});return}return window.amadeusSync?.entrySyncClosure?.(t.path,t.kind).then(M=>{if(!z)return;l({...M,subPages:M.subPages??[]}),r(new Set(M.pages)),f(new Set(M.files));const D=Oe.getState().activeRoot;j(new Set((M.subPages??[]).filter(H=>!Cl(D,H))))}).catch(()=>z&&l({pages:[],files:[],subPages:[]})),()=>{z=!1}},[t.path,t.kind]);const G=async z=>{const M=window.amadeusSync;if(!M?.entrySyncEnable||m)return;y(!0);const D=[{path:t.path,kind:t.kind},...[...o].map(re=>({path:re,kind:"page"})),...[...u].map(re=>({path:re,kind:"asset"}))],H=i?.subPages??[],Z=H.filter(re=>!h.has(re)),ce=H.filter(re=>h.has(re)),q=await M.entrySyncEnable({entries:D,exclude:Z,include:ce,...z}).catch(re=>({error:String(re)}));if(y(!1),q?.conflict){b(q.conflict),E(`${q.conflict} 2`);return}if(q?.error||!q?.ok){Ve.getState().toast(q?.error||s("csd.failed"),!0);return}Ve.getState().toast(s("csd.enabled",{name:q.cloudName??""})),Oe.getState().refresh(),n()},k=z=>{const M=[];for(let D=z;;){const H=D.lastIndexOf(".fd/");if(H<0)return M;D=`${D.slice(0,H)}.md`,M.push(D)}},$=z=>j(M=>{const D=!M.has(z),H=i?.subPages??[],Z=`${z.replace(/\.md$/i,"")}.fd/`,ce=new Set(M);for(const q of H)q!==z&&!q.startsWith(Z)||(D?ce.add(q):ce.delete(q));if(D)for(const q of k(z))H.includes(q)&&ce.add(q);return ce}),F=(z,M)=>{const D=new Set(z);return D.has(M)?D.delete(M):D.add(M),D},N=(z,M,D,H,Z,ce)=>D.length>0&&e.jsxs("div",{className:"amx-csd-group",children:[e.jsxs("div",{className:"amx-csd-head",children:[z,e.jsxs("span",{children:[M,"(",H.size,"/",D.length,")"]}),e.jsx("button",{className:"amx-csd-all",onClick:()=>ce(H.size<D.length),children:H.size<D.length?s("csd.selectAll"):s("csd.selectNone")})]}),e.jsx("div",{className:"amx-csd-list",children:D.map(q=>e.jsxs("label",{className:"amx-csd-item",title:q,children:[e.jsx("input",{type:"checkbox",checked:H.has(q),onChange:()=>Z(q)}),e.jsx("span",{children:ua(q)}),e.jsx("span",{className:"amx-csd-path",children:q})]},q))})]});return e.jsx("div",{className:"dialog-overlay",onMouseDown:n,children:e.jsxs("div",{className:"dialog amx-csd",onMouseDown:z=>z.stopPropagation(),children:[e.jsxs("div",{className:"dialog-title",children:[e.jsx(Gt,{size:15,style:{verticalAlign:-2,marginRight:6}}),s("csd.title")]}),p?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"dialog-msg",children:s("csd.conflictMsg",{name:p})}),e.jsx("input",{className:"dialog-input",value:O,onChange:z=>E(z.target.value),placeholder:s("csd.newNamePlaceholder"),onKeyDown:z=>{z.key==="Enter"&&O.trim()&&G({cloudName:O.trim()}),z.key==="Escape"&&n()}}),e.jsxs("div",{className:"dialog-actions",children:[e.jsx("button",{className:"dialog-btn",onClick:n,children:s("csd.cancel")}),e.jsx("button",{className:"dialog-btn",disabled:m,onClick:()=>{G({cloudName:p,merge:!0})},children:s("csd.mergeInto",{name:p})}),e.jsx("button",{className:"dialog-btn","data-primary":!0,disabled:m||!O.trim(),onClick:()=>{G({cloudName:O.trim()})},children:s("csd.useNewName")})]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"dialog-msg",children:s("csd.intro",{name:ua(t.path)})}),i===null?e.jsx("div",{className:"dialog-msg",children:s("csd.analyzing")}):e.jsxs(e.Fragment,{children:[N(e.jsx(rl,{size:12}),s("csd.groupSubPages"),i.subPages,h,$,z=>j(z?new Set(i.subPages):new Set)),N(e.jsx(Yt,{size:12}),s("csd.groupLinkedPages"),i.pages,o,z=>r(M=>F(M,z)),z=>r(z?new Set(i.pages):new Set)),N(e.jsx(fn,{size:12}),s("csd.groupAssets"),i.files,u,z=>f(M=>F(M,z)),z=>f(z?new Set(i.files):new Set)),!i.pages.length&&!i.files.length&&!i.subPages.length&&e.jsx("div",{className:"dialog-msg",style:{opacity:.6},children:s("csd.nothingElse")})]}),e.jsxs("div",{className:"dialog-actions",children:[e.jsx("button",{className:"dialog-btn",onClick:n,children:s("csd.cancel")}),e.jsx("button",{className:"dialog-btn","data-primary":!0,disabled:m||i===null,onClick:()=>{G()},children:s(m?"csd.enabling":"csd.enable")})]})]})]})})}function ha(t,n){const s=o=>`${o.ghost?"g:":""}${o.path}`,i=t.map(s).sort(),l=n.map(o=>{const r=s(t[o.a]),u=s(t[o.b]);return r<u?`${r}>${u}`:`${u}>${r}`}).sort();return`${i.join("|")}::${l.join("|")}`}Ne({"amxpanel.searchHead":{zh:"全文搜索",en:"Full-text search"},"amxpanel.searchPlaceholder":{zh:"搜索全部笔记…",en:"Search all notes…"},"amxpanel.saveCollection":{zh:"存为集合",en:"Save as collection"},"amxpanel.saveCollectionTip":{zh:"存为集合(左栏可一键回放这次搜索)",en:"Save as a collection (replay this search from the sidebar in one click)"},"amxpanel.saveCollectionHint":{zh:"集合会出现在左栏,点击即重放这次搜索。",en:"The collection shows up in the sidebar — click it to replay this search."},"amxpanel.noVault":{zh:"先打开一个智库。",en:"Open a vault first."},"amxpanel.searchEmpty":{zh:"输入关键词,搜遍全部笔记内容。",en:"Type a keyword to search the contents of every note."},"amxpanel.noResults":{zh:"无结果",en:"No results"},"amxpanel.tagsHead":{zh:"标签 · {n}",en:"Tags · {n}"},"amxpanel.tagsEmpty":{zh:"还没有 #标签。在笔记里写 #灵感 这样的行内标签即可出现在这里。",en:"No #tags yet. Write an inline tag like #idea in a note and it will show up here."},"amxpanel.graphHead":{zh:"关系图 · 当前笔记",en:"Graph · current note"},"amxpanel.graphNoNote":{zh:"未打开笔记",en:"No note open"},"amxpanel.graphEmpty":{zh:"这篇笔记还没有链接(出链 [[…]] 或反链)。",en:"This note has no links yet — no outgoing [[…]] links and no backlinks."}});const Ln=()=>L.getState(),ys=t=>(t.split(/[\\/]/).pop()??t).replace(/\.md$/i,""),ri=Zt(t=>({seed:null,request:n=>t(s=>({seed:{q:n,n:(s.seed?.n??0)+1}}))}));function au(){const{t}=he(),n=L(h=>h.vaultRoot),[s,i]=c.useState(""),l=ri(h=>h.seed);c.useEffect(()=>{l&&i(l.q)},[l]);const[o,r]=c.useState([]),u=c.useRef(0);c.useEffect(()=>{Ln().flushSave()},[]),c.useEffect(()=>{const h=s.trim();if(!h){r([]);return}const j=++u.current,m=setTimeout(()=>{te.search(h).then(y=>{j===u.current&&r(y)})},120);return()=>clearTimeout(m)},[s]);const f=h=>{const j=s.trim().toLowerCase();Me(h.path).then(()=>{if(!j)return;const m=Object.values(Ln().blocks).find(y=>Da(y.content).toLowerCase().includes(j));requestAnimationFrame(()=>{const y=m?document.querySelector(`[data-block-id="${m.id}"]`):null;if(y){y.scrollIntoView({behavior:"smooth",block:"center"}),y.classList.add("amx-block-flash"),setTimeout(()=>y.classList.remove("amx-block-flash"),1300);return}const p=j.split(/[\s\-_/.]+/).filter(Boolean);Ra(h.path,p.length>1?[j,...p]:[j])})})};return e.jsxs("div",{className:"amx-panel",children:[e.jsx("div",{className:"amx-panel-head",children:t("amxpanel.searchHead")}),e.jsxs("div",{className:"t2s-search amx-search-box",children:[e.jsx(js,{size:13,className:"t2s-dim"}),e.jsx("input",{autoFocus:!0,value:s,placeholder:t("amxpanel.searchPlaceholder"),onChange:h=>i(h.target.value)}),s.trim()&&e.jsx("button",{className:"amx-search-save",title:t("amxpanel.saveCollectionTip"),onClick:()=>{ot(t("amxpanel.saveCollection"),s.trim(),{label:t("amxpanel.saveCollectionHint")}).then(h=>{const j=h?.trim();j&&Pe.getState().saveCollection(j,s.trim())})},children:t("amxpanel.saveCollection")})]}),n?s.trim()?o.length===0?e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.noResults")}):e.jsx("div",{className:"amx-list",children:o.map(h=>e.jsxs("button",{className:"amx-list-item",onClick:()=>f(h),title:h.path,children:[h.title,h.snippet&&e.jsx("span",{className:"amx-backlink-snippet amx-search-snippet",children:Tl(h.snippet,s.trim())})]},h.path))}):e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.searchEmpty")}):e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.noVault")})]})}function Tl(t,n){if(!n)return t;const s=t.toLowerCase().indexOf(n.toLowerCase());return s<0?t:e.jsxs(e.Fragment,{children:[t.slice(0,s),e.jsx("mark",{children:t.slice(s,s+n.length)}),t.slice(s+n.length)]})}const li=Zt(t=>({seed:null,request:n=>t(s=>({seed:{tag:n,n:(s.seed?.n??0)+1}}))}));function iu(t){li.getState().request(t.replace(/^#/,""));const n=$e.getState();n.showSideView("left","amadeus-tags");const s=$e.getState(),i=s.api;s.leftVisible&&!i?.panels.some(l=>l.params?.__type==="amadeus-tags")&&n.openView("amadeus-tags",{},"left")}function ou(){const{t}=he(),n=L(m=>m.vaultRoot),s=L(m=>m.linkGraphVersion),[i,l]=c.useState([]),[o,r]=c.useState(null),[u,f]=c.useState([]),h=li(m=>m.seed);c.useEffect(()=>{h&&r(h.tag)},[h]);const j=o&&!i.some(m=>m.tag.toLowerCase()===o.toLowerCase())?[{tag:o,count:u.length},...i]:i;return c.useEffect(()=>{let m=!0;if(!n){l([]);return}return te.listTags().then(y=>{m&&l(y)}),()=>{m=!1}},[n,s]),c.useEffect(()=>{let m=!0;if(!o){f([]);return}return te.pagesByTag(o).then(y=>{m&&f(y)}),()=>{m=!1}},[o,s]),e.jsxs("div",{className:"amx-panel",children:[e.jsx("div",{className:"amx-panel-head",children:t("amxpanel.tagsHead",{n:i.length})}),n?j.length===0?e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.tagsEmpty")}):e.jsx("div",{className:"amx-list",children:j.map(m=>e.jsxs("div",{children:[e.jsxs("button",{className:`amx-list-item amx-tag${o===m.tag?" active":""}`,ref:o===m.tag&&h?y=>y?.scrollIntoView({block:"nearest"}):void 0,onClick:()=>r(y=>y===m.tag?null:m.tag),children:[e.jsxs("span",{className:"amx-tag-name",children:["#",m.tag]}),e.jsx("span",{className:"amx-tag-count",children:m.count})]}),o===m.tag&&u.map(y=>e.jsx("button",{className:"amx-list-item amx-tag-page",onClick:()=>{Me(y).then(()=>Ra(y,[`#${m.tag}`],{tag:!0}))},title:y,children:ys(y)},y))]},m.tag))}):e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.noVault")})]})}const Vt=320,_t=280,mn=(t,n,s)=>Math.min(s,Math.max(n,t));function El(t,n,s){const i=Vt/2,l=_t/2;for(let o=0;o<t.length;o++){const r=t[o];if(r.pinned)continue;let u=(i-r.x)*.005,f=(l-r.y)*.005;for(let h=0;h<t.length;h++){if(o===h)continue;const j=t[h],m=r.x-j.x,y=r.y-j.y,p=Math.max(64,m*m+y*y),b=1400/p;u+=m/Math.sqrt(p)*b,f+=y/Math.sqrt(p)*b}for(const h of n){if(h.a!==o&&h.b!==o)continue;const j=t[h.a===o?h.b:h.a],m=j.x-r.x,y=j.y-r.y,p=Math.max(1,Math.hypot(m,y)),b=(p-86)*.02;u+=m/p*b,f+=y/p*b}r.vx=(r.vx+u*s*2)*.82,r.vy=(r.vy+f*s*2)*.82,r.x=mn(r.x+r.vx,16,Vt-16),r.y=mn(r.y+r.vy,16,_t-16)}}function ru(){const{t}=he(),n=L(N=>N.activePage??N.activeNotePath),s=L(N=>N.linkGraphVersion),[i,l]=c.useState(null),[,o]=c.useState(0),[r,u]=c.useState(null),[f,h]=c.useState({x:0,y:0,k:1}),j=c.useRef(null),m=c.useRef(i);m.current=i;const y=c.useRef(f);y.current=f;const p=c.useRef({alpha:0,raf:0,dragging:!1}),b=c.useRef(!1),O=()=>{if(p.current.raf)return;const N=()=>{const z=m.current,M=p.current;if(!z){M.raf=0;return}El(z.nodes,z.edges,M.alpha),M.dragging||(M.alpha-=.006),o(D=>D+1),M.alpha>.02||M.dragging?M.raf=requestAnimationFrame(N):M.raf=0};p.current.raf=requestAnimationFrame(N)};c.useEffect(()=>()=>{p.current.raf&&cancelAnimationFrame(p.current.raf)},[]);const E=(N,z)=>{const M=j.current?.getScreenCTM();if(!M)return null;const D=new DOMPoint(N,z).matrixTransform(M.inverse());return{x:D.x,y:D.y}},G=(N,z)=>{const M=E(N,z);if(!M)return null;const D=y.current;return{x:(M.x-D.x)/D.k,y:(M.y-D.y)/D.k}};c.useEffect(()=>{let N=!0;if(!n){l(null),m.current=null;return}return m.current?.nodes[0]?.path!==n&&(m.current=null,l(null)),(async()=>{const z=await te.backlinks(n).catch(()=>[]);if(!N)return;const M=Ln(),D=await te.readTextFile(n).catch(()=>null);if(!N)return;const H=Da(Ci(D??"")),Z=[],ce=[],q=new Set;for(const ie of Pi(H)){const ne=Ti(ie,M.pages,n);ne?ne!==n&&!Z.includes(ne)&&Z.push(ne):q.has(ie.toLowerCase())||(q.add(ie.toLowerCase()),Bi(ie,M.files,n)||ce.push(ie))}const re=[...new Set([...Z,...z.map(ie=>ie.path).filter(ie=>ie!==n)])],we=[...re,...ce],Re=[{path:n,label:ys(n),center:!0,x:Vt/2,y:_t/2,vx:0,vy:0,pinned:!0},...we.map((ie,ne)=>{const ge=ne/Math.max(1,we.length)*Math.PI*2,ke=ne>=re.length;return{path:ie,label:ke?ie:ys(ie),center:!1,ghost:ke,x:Vt/2+Math.cos(ge)*90,y:_t/2+Math.sin(ge)*90,vx:0,vy:0,pinned:!1}})],xe=new Map(Re.slice(0,1+re.length).map((ie,ne)=>[ie.path,ne])),X=[],pe=new Set;for(const ie of[...Z,...z.map(ne=>ne.path)]){const ne=xe.get(ie);ne===void 0||pe.has(ie)||(pe.add(ie),X.push({a:0,b:ne}))}for(let ie=0;ie<ce.length;ie++)X.push({a:0,b:1+re.length+ie});if(!N)return;const ue={nodes:Re,edges:X},S=m.current;if(!(S&&ha(S.nodes,S.edges)===ha(ue.nodes,ue.edges))){if(S?.nodes[0]?.path===n){const ie=new Map(S.nodes.map(ne=>[`${ne.ghost?"g:":""}${ne.path}`,ne]));for(const ne of ue.nodes){const ge=ie.get(`${ne.ghost?"g:":""}${ne.path}`);ge&&(ne.x=ge.x,ne.y=ge.y,ne.vx=ge.vx,ne.vy=ge.vy)}}m.current=ue,l(ue),u(null),p.current.alpha=S?.38:1,O()}})(),()=>{N=!1}},[n,s]);const k=N=>z=>{if(z.button!==0)return;z.stopPropagation();const M=m.current;if(!M)return;const D=M.nodes[N],H=D.pinned;D.pinned=!0,b.current=!1,p.current.dragging=!0,p.current.alpha=Math.max(p.current.alpha,.6),O();const Z=q=>{const re=G(q.clientX,q.clientY);re&&(b.current=!0,D.x=mn(re.x,16,Vt-16),D.y=mn(re.y,16,_t-16),D.vx=0,D.vy=0,p.current.alpha=Math.max(p.current.alpha,.6))},ce=()=>{window.removeEventListener("pointermove",Z),window.removeEventListener("pointerup",ce),D.pinned=H,p.current.dragging=!1,p.current.alpha=Math.max(p.current.alpha,.5),O()};window.addEventListener("pointermove",Z),window.addEventListener("pointerup",ce)},$=N=>{if(N.button!==0||N.target!==N.currentTarget)return;const z=E(N.clientX,N.clientY);if(!z)return;const M=y.current,D=Z=>{const ce=E(Z.clientX,Z.clientY);ce&&h({k:M.k,x:M.x+(ce.x-z.x),y:M.y+(ce.y-z.y)})},H=()=>{window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",H)};window.addEventListener("pointermove",D),window.addEventListener("pointerup",H)},F=!!i&&i.nodes.length>1;return c.useEffect(()=>{const N=j.current;if(!N||!F)return;const z=M=>{M.preventDefault();const D=E(M.clientX,M.clientY);if(!D)return;const H=y.current,Z=mn(H.k*Math.exp(-M.deltaY*.0022),.4,3),ce=(D.x-H.x)/H.k,q=(D.y-H.y)/H.k;h({k:Z,x:D.x-ce*Z,y:D.y-q*Z})};return N.addEventListener("wheel",z,{passive:!1}),()=>N.removeEventListener("wheel",z)},[F]),e.jsxs("div",{className:"amx-panel",children:[e.jsx("div",{className:"amx-panel-head",children:t("amxpanel.graphHead")}),n?!i||!F?e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.graphEmpty")}):e.jsx("svg",{ref:j,className:"amx-graph",viewBox:`0 0 ${Vt} ${_t}`,onPointerDown:$,onDoubleClick:()=>h({x:0,y:0,k:1}),children:e.jsxs("g",{transform:`translate(${f.x} ${f.y}) scale(${f.k})`,children:[i.edges.map((N,z)=>e.jsx("line",{x1:i.nodes[N.a].x,y1:i.nodes[N.a].y,x2:i.nodes[N.b].x,y2:i.nodes[N.b].y,className:`amx-graph-edge${r!==null?N.a===r||N.b===r?" hl":" dim":""}`},z)),i.nodes.map((N,z)=>{const M=r===null||z===r||i.edges.some(D=>D.a===r&&D.b===z||D.b===r&&D.a===z);return e.jsxs("g",{className:`amx-graph-node${N.center?" center":""}${N.ghost?" ghost":""}${r!==null?M?" hl":" dim":""}`,onPointerDown:k(z),onPointerEnter:()=>u(z),onPointerLeave:()=>u(null),onClick:()=>{b.current||N.center||(N.ghost?Ln().openWikiLink(N.path):Me(N.path))},children:[e.jsx("circle",{cx:N.x,cy:N.y,r:N.center?8:5.5}),e.jsx("text",{x:N.x,y:N.y+(N.center?20:16),textAnchor:"middle",children:N.label.length>12?`${N.label.slice(0,12)}…`:N.label})]},N.ghost?`g:${N.path}`:N.path)})]})}):e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.graphNoNote")})]})}const Dl=t=>/\.md$/i.test(t);function Fl(t){const n=t.replace(/\.md$/i,""),s=n.split(/[\\/]/).pop()||n;return n===s?n:`${n}|${s}`}function Rl(t){return Vi(t).filter(n=>n.kind==="note").map(n=>Dl(n.path)?`[[${Fl(n.path)}]]`:`![[${n.path}]]`)}const Ml=/[^./\\]\.[^./\\]+\.md$/;function $l(t,n){if(!t||!Ml.test(t)||n.pages.includes(t))return"note";if(n.filesPendingFor!=null&&n.filesPendingFor===n.vaultRoot)return"pending";const s=t.replace(/\\/g,"/");return n.files.some(i=>i.replace(/\\/g,"/")===s)?"plugin":"note"}Ne({"unilock.failed.lock":{zh:"没能锁定「{name}」:{reason}。页面保持原样,内容没有丢。",en:'Couldn’t lock "{name}": {reason}. The page is unchanged and nothing was lost.'},"unilock.failed.unlock":{zh:"没能解锁「{name}」:{reason}。页面保持锁定。",en:'Couldn’t unlock "{name}": {reason}. The page stays locked.'},"unilock.failed.save":{zh:"还有改动没保存下来({err})",en:"some changes couldn’t be saved ({err})"},"unilock.failed.read":{zh:"读不到这篇笔记的最新内容",en:"the latest version of the note couldn’t be read"},"unilock.retry":{zh:"重试",en:"Retry"}});async function Fs(t){try{await Fa(t,!0)}catch(s){return{ok:!1,reason:_("unilock.failed.save",{err:Qa(s)})}}const n=await te.readTextFile(t).catch(()=>null);return n==null?{ok:!1,reason:_("unilock.failed.read")}:{ok:!0,raw:n}}const Ol=t=>(t.split("/").pop()??t).replace(/\.md$/i,"");function ci(t,n,s,i){Ts({level:"error",dedupeKey:`amx-lock:${t}`,text:_(n?"unilock.failed.lock":"unilock.failed.unlock",{name:Ol(t),reason:s}),action:{label:_("unilock.retry"),run:i}})}async function di(t,n,s){const i=await Fs(n);return i.ok?(_i(t,n,s),!0):(ci(n,s,i.reason,()=>{di(t,n,s)}),!1)}Ne({"pghist.menu":{zh:"版本历史",en:"Version history"},"pghist.close":{zh:"关闭",en:"Close"},"pghist.listLabel":{zh:"历史版本",en:"Saved versions"},"pghist.loading":{zh:"正在读取…",en:"Loading…"},"pghist.loadFailed":{zh:"读不到版本历史:{reason}",en:"Couldn’t load version history: {reason}"},"pghist.empty":{zh:"还没有历史版本。编辑这篇笔记后,大约每 5 分钟会自动留一份。",en:"No saved versions yet. While you edit this note, a version is kept about every 5 minutes."},"pghist.tab.content":{zh:"内容",en:"Content"},"pghist.tab.diff":{zh:"与当前对比",en:"Compare with current"},"pghist.diff.current":{zh:"当前",en:"Current"},"pghist.diff.version":{zh:"此版本",en:"This version"},"pghist.same":{zh:"与当前内容相同。",en:"Same as the current content."},"pghist.tooLarge":{zh:"内容太大,无法对比。",en:"Too large to compare."},"pghist.previewFailed":{zh:"读不到这个版本。",en:"This version couldn’t be read."},"pghist.restore":{zh:"恢复此版本",en:"Restore this version"},"pghist.restoreHint":{zh:"恢复前会先把当前内容存进版本历史。",en:"The current content is saved to version history before restoring."},"pghist.lockedHint":{zh:"页面已锁定,解锁后才能恢复。",en:"This page is locked. Unlock it to restore a version."},"pghist.confirm.title":{zh:"恢复到 {time} 的版本?",en:"Restore the version from {time}?"},"pghist.confirm.msg":{zh:"笔记会换成这个版本的内容。当前内容会先存进版本历史,之后还能恢复回来。",en:"The note will be replaced with this version. The current content is saved to version history first, so you can switch back later."},"pghist.confirm.ok":{zh:"恢复",en:"Restore"},"pghist.done":{zh:"已恢复到 {time} 的版本",en:"Restored the version from {time}"},"pghist.failed":{zh:"没能恢复「{name}」:{reason}。笔记保持原样。",en:'Couldn’t restore "{name}": {reason}. The note is unchanged.'},"pghist.failed.conflict":{zh:"这篇笔记刚被别处改动了",en:"the note was just changed elsewhere"},"pghist.failed.gone":{zh:"这篇笔记已经不在了",en:"the note no longer exists"},"pghist.retry":{zh:"重试",en:"Retry"}});const Il=t=>(t.split("/").pop()??t).replace(/\.md$/i,"");function Pn(t,n,s){Ts({level:"error",dedupeKey:`amx-hist-restore:${t}`,text:_("pghist.failed",{name:Il(t),reason:n}),...s?{action:{label:_("pghist.retry"),run:s}}:{}})}async function Ll(t,n){const s=te.restorePageHistory;if(!s)return!1;const i=()=>{Ll(t,n)},l=await Fs(t);if(!l.ok)return Pn(t,l.reason,i),!1;let o;try{o=await s(t,n.id,Di(l.raw))}catch(r){return Pn(t,Qa(r),i),!1}return o.ok?(Fi(t,{}),Ts({level:"success",text:_("pghist.done",{time:qi(n.at)})}),!0):(o.current==null?Pn(t,_("pghist.failed.gone")):Pn(t,_("pghist.failed.conflict"),i),!1)}const Al=Wi(()=>Ei(()=>import("./PageHistoryPanel-BMQC-V_l.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46]),import.meta.url));function Bl({path:t,locked:n,onClose:s}){return e.jsx(c.Suspense,{fallback:null,children:e.jsx(Al,{path:t,locked:n,onClose:s})})}async function Vl(t){await Fa(t);const n=Ri(t);if(n!=null)return n;const s=await te.readTextFile(t).catch(()=>null);return s==null?null:jr(s).body}Ne({"amxpage.font":{zh:"页面字体",en:"Page font"},"amxpage.font.default":{zh:"默认",en:"Default"},"amxpage.font.serif":{zh:"衬线",en:"Serif"},"amxpage.font.mono":{zh:"等宽",en:"Mono"},"amxpage.wide":{zh:"全宽",en:"Full width"},"amxpage.small":{zh:"小字号",en:"Small text"}});const _l=["default","serif","mono"];function Wl(t,n,s=_){return[{kind:"choice",id:"font",label:s("amxpage.font"),options:_l.map(i=>({id:i,label:s(`amxpage.font.${i}`),on:t.font===i,run:()=>n({font:i})}))},{kind:"toggle",id:"wide",label:s("amxpage.wide"),on:t.wide,run:()=>n({wide:!t.wide})},{kind:"toggle",id:"small",label:s("amxpage.small"),on:t.small,run:()=>n({small:!t.small})}]}function ql(t,n){const[,s]=c.useState(0);return c.useEffect(()=>Ui(()=>s(i=>i+1)),[]),n?Ki(t,n):Hi}function Ul(t,n,s){Gi(t,n,s)}function Hl(t){return{...t.wide?{"data-page-wide":""}:{},...t.small?{"data-page-small":""}:{},...t.font!=="default"?{"data-page-font":t.font}:{}}}const Kl={wide:ei,small:ii};function Gl({entries:t}){return e.jsx("div",{className:"amx-pagestyle","data-pagestyle-menu":"",children:t.map(n=>n.kind==="choice"?e.jsxs("div",{className:"amx-pagefont",role:"group","aria-label":n.label,children:[e.jsx("div",{className:"ctx-head",children:n.label}),e.jsx("div",{className:"amx-pagefont-row",children:n.options.map(s=>e.jsxs("button",{type:"button",role:"menuitemradio","aria-checked":s.on,className:`amx-pagefont-opt${s.on?" on":""}`,"data-font":s.id,onClick:s.run,children:[e.jsx("span",{className:"amx-pagefont-aa","aria-hidden":!0,children:"Aa"}),e.jsx("span",{className:"amx-pagefont-name",children:s.label})]},s.id))})]},n.id):e.jsx(Yl,{entry:n},n.id))})}function Yl({entry:t}){const n=Kl[t.id];return e.jsxs("button",{type:"button",role:"menuitemcheckbox","aria-checked":t.on,"data-pagestyle":t.id,onClick:t.run,children:[e.jsx(n,{size:13}),e.jsx("span",{className:"amx-pagestyle-label",children:t.label}),t.on&&e.jsx(vt,{size:13,className:"amx-pagestyle-check"})]})}function Xl({host:t,label:n,scanTrigger:s}){return e.jsx(Tr,{scrollContainer:t,contentRoot:t,selector:".page-view h1, .page-view h2, .page-view h3",label:n,scanTrigger:s,placement:"sticky",topOffset:Dr,topInset:Er})}Ne({"fileimport.tooLargeCloud":{zh:"超过云端单文件上限",en:"Over the cloud file size limit"},"fileimport.vaultFull":{zh:"云端智库容量已满",en:"The cloud vault is full"},"fileimport.unknownError":{zh:"未知错误",en:"Unknown error"},"fileimport.overCloudLimit":{zh:"超过云端单文件上限 {limit}",en:"over the {limit} cloud file limit"},"fileimport.over50mb":{zh:"超 50MB",en:"over 50 MB"},"fileimport.unreadable":{zh:"读不到",en:"unreadable"},"fileimport.withReason":{zh:"{name}({reason})",en:"{name} ({reason})"},"fileimport.uploading":{zh:"正在上传 {name}… {pct}%",en:"Uploading {name}… {pct}%"},"fileimport.placeholder":{zh:"⏳ 正在上传 {name}…",en:"⏳ Uploading {name}…"},"fileimport.placeholderFailed":{zh:"⚠️ 上传失败:{name}",en:"⚠️ Upload failed: {name}"},"fileimport.notImportedOne":{zh:"{n} 个文件未导入:{first}",en:"{n} file was not imported: {first}"},"fileimport.notImportedMany":{zh:"{n} 个文件未导入:{first}",en:"{n} files were not imported: {first}"},"fileimport.movedAway":{zh:"文件已存入原笔记(已切换页,占位行未替换)",en:"The file was saved to the original note (you switched pages, so the placeholder line was left as is)"},"fileimport.imageMovedAway":{zh:"图片已存入原笔记(已切换页,占位行未替换)",en:"The image was saved to the original note (you switched pages, so the placeholder line was left as is)"},"fileimport.importedOne":{zh:"已导入 {n} 个文件",en:"Imported {n} file"},"fileimport.importedMany":{zh:"已导入 {n} 个文件",en:"Imported {n} files"},"fileimport.uploadedOne":{zh:"已上传 {name}",en:"Uploaded {name}"},"fileimport.vaultRoot":{zh:"库根目录",en:"Vault root"},"fileimport.importedToOne":{zh:"已导入 {n} 个文件到「{where}」",en:"Imported {n} file to “{where}”"},"fileimport.importedToMany":{zh:"已导入 {n} 个文件到「{where}」",en:"Imported {n} files to “{where}”"},"fileimport.unreadableOne":{zh:"{n} 个文件读不了:{first}",en:"Could not read {n} file: {first}"},"fileimport.unreadableMany":{zh:"{n} 个文件读不了:{first}",en:"Could not read {n} files: {first}"},"fileimport.imageOverCloudLimit":{zh:"图片超过云端单文件上限 {limit}",en:"Image is over the {limit} cloud file limit"},"fileimport.pasteFailed":{zh:"粘贴图片:{first}",en:"Could not paste image: {first}"}});const Jt=(t,n)=>_("fileimport.withReason",{name:t,reason:n}),rt=()=>L.getState(),lt=t=>Ma.getState().notify(t);function Jl(){return window.amadeusSync?rt().vaultSide==="cloud":!!window.amadeusCloudVaults}function Zl(t,n){const s=/[ ()<>]/.test(n)?`<${n}>`:n;return`[${t.replace(/[[\]]/g,"")}](${s})`}function Ql(t,n,s,i){return i&&!/[[\]|#]/.test(t)?`![[${t}]]`:Zl(n,s)}function Un(t){const n=t instanceof Error?t.message:String(t);return/TOO_LARGE|\b413\b/.test(n)?_("fileimport.tooLargeCloud"):/VAULT_FULL/.test(n)?_("fileimport.vaultFull"):n||_("fileimport.unknownError")}async function ec(){const t=window.amadeusSync?(await window.amadeusSync.get().catch(()=>null))?.maxFileBytes:window.amadeusCloudMaxFileBytes;return typeof t=="number"&&t>0?t:null}const tc=t=>`${+(t/1048576).toFixed(1)} MB`;async function Rs(t){if(!Jl())return null;const n=await ec();return n!==null&&t.size>n?tc(n):null}async function Ms(){try{await rt().refreshStructure?.()}catch{}}function $s(t){let n=-1;return(s,i)=>{const l=i>0?Math.min(100,Math.floor(s/i*100)):0;l!==n&&(n=l,lt(_("fileimport.uploading",{name:t,pct:l})))}}function ui(t,n){const s=_("fileimport.placeholder",{name:n}),i=rt().activePage===t?rt().insertBlockAfter(null,void 0,s):null,l=()=>!!i&&rt().activePage===t&&rt().blocks[i]?.content===s;return{done:o=>l()?(rt().setBlockContent(i,o),!0):!1,fail:()=>{l()&&rt().setBlockContent(i,_("fileimport.placeholderFailed",{name:n}))}}}async function An(t,n){if(!t.length||!n)return;const{opts:s,preview:i}=await Yi();let l=0,o=0;const r=[];for(const u of t){const f=await Rs(u);if(f){r.push(Jt(u.name,_("fileimport.overCloudLimit",{limit:f})));continue}const h=ui(n,u.name);try{const j=new Uint8Array(await u.arrayBuffer()),{pageRel:m,base:y}=await te.saveAttachment(n,u.name,j,s,$s(u.name));h.done(Ql(y,u.name,m,i))||rt().activePage===n?l++:o++}catch(j){h.fail(),r.push(Jt(u.name,Un(j)))}}await Ms(),r.length?lt(_(r.length===1?"fileimport.notImportedOne":"fileimport.notImportedMany",{n:r.length,first:r[0]})):o?lt(_("fileimport.movedAway")):t.length>1?lt(_(l===1?"fileimport.importedOne":"fileimport.importedMany",{n:l})):lt(_("fileimport.uploadedOne",{name:t[0].name}))}async function ma(t,n){if(!t.length)return;let s=0;const i=[];for(const o of t){const r=await Rs(o);if(r){i.push(Jt(o.name,_("fileimport.overCloudLimit",{limit:r})));continue}try{const u=new Uint8Array(await o.arrayBuffer());await te.saveAttachment("",o.name,u,{mode:"vault",folder:n},$s(o.name)),s++}catch(u){i.push(Jt(o.name,Un(u)))}}await Ms();const l=n?n.split("/").pop()||n:_("fileimport.vaultRoot");i.length?lt(_(i.length===1?"fileimport.notImportedOne":"fileimport.notImportedMany",{n:i.length,first:i[0]})):lt(_(s===1?"fileimport.importedToOne":"fileimport.importedToMany",{n:s,where:l}))}async function nc(t){const n=window.tangu?.readHostFile;if(!n)return[];const s=[],i=[];for(const l of t){const o=l.split(/[\\/]/).pop()||l;try{const r=await n(l);if(!r||r.tooLarge){i.push(Jt(o,_(r?.tooLarge?"fileimport.over50mb":"fileimport.unreadable")));continue}s.push(new File([Xi(r.content)],o,{type:r.mimeType}))}catch(r){i.push(Jt(o,Un(r)))}}return i.length&&lt(_(i.length===1?"fileimport.unreadableOne":"fileimport.unreadableMany",{n:i.length,first:i[0]})),s}async function sc(t,n){if(!t.length||!n)return;let s=0;const i=[];for(const l of t){const o=await Rs(l);if(o){i.push(_("fileimport.imageOverCloudLimit",{limit:o}));continue}const r=(l.name||"pasted.png").replace(/\s+/g,"_"),u=ui(n,r);try{const f=new Uint8Array(await l.arrayBuffer()),h=await te.saveAsset(n,r,f,$s(r));!u.done(`![](${h})`)&&rt().activePage!==n&&s++}catch(f){u.fail(),i.push(Un(f))}}await Ms(),i.length?lt(_("fileimport.pasteFailed",{first:i[0]})):s&&lt(_("fileimport.imageMovedAway"))}function pa(t,n,s=!1){return!!t&&!n&&!s}function ac(t){const n=t.cloneNode(!0),s=[...t.querySelectorAll("input.amx-title-input, textarea.amx-title-input")];return n.querySelectorAll("input.amx-title-input, textarea.amx-title-input").forEach((i,l)=>{const o=s[l],r=document.createElement("h1");r.className="amx-title-input amx-title-static",r.textContent=o?.value||o?.placeholder||"",i.replaceWith(r)}),n}const fa="amx.sec.";function ic(t,n){return t==="1"?!0:t==="0"?!1:n}function Bn(t,n=!1){const[s,i]=c.useState(()=>{try{return ic(localStorage.getItem(fa+t),n)}catch{return n}});return[s,()=>i(o=>{const r=!o;try{localStorage.setItem(fa+t,r?"1":"0")}catch{}return r})]}function hi(t,n){const s=n==="first",i=s?t.children[0]:t.children.at(-1),l=s?i?.columns[0]:i?.columns.at(-1);return(s?l?.children[0]:l?.children.at(-1))?.ref??null}const mi="amadeus.heading.fold";function oc(t){const n=(t??"").split(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./PageHistoryPanel-BbdXpjJM.js","./index-BYUntVIZ.js","./appStore-affnJoin.js","./nativeDownload-Udrv_tmU.js","./ipc-D7yENkjV.js","./client-BqhpYbYL.js","./appStore-ClD7vq5L.css","./create-BgJN5qsj.js","./create-BgE3edmZ.css","./UnifiedPage-D7JTfABH.js","./MarkdownBlock-BHpDy2qQ.js","./index-Y2kzYlZq.js","./linkFollow-Msu1XH9v.js","./emoji-BPdA62d7.js","./listFold-CKxjyY5_.js","./book-open-CcXCToyx.js","./MarkdownBlock--__nPQGh.css","./pageChrome-D-9npbUE.js","./upload-D20PZHXc.js","./pageChrome-eO9pb2fH.css","./SketchCard-BcXCdBAs.js","./arrow-up-right-R4P9Mmxz.js","./Chrome-amTcZNE4.js","./minus-CfoZ4oxr.js","./canvasPrefs-CSuX9aLF.js","./hand-DRu7IJdU.js","./type-DmIL6FB-.js","./foldActions-BcyvNVBs.js","./lock-kffGfeHt.js","./undo-2-yMeXc8Wi.js","./code-xml-DdR58F83.js","./message-square-plus-DxBPIhPS.js","./UnifiedPage-CWXc_mo1.css","./FloatingToc-B1d4-5EL.js","./pageTree-CIXFRCLk.js","./pluginExt-Byb64tQO.js","./phoneList-DHUia6HT.js","./phoneList-BQfCJwKF.css","./list-tree-DmuRb-p9.js","./pen-tool-D_Y9We9x.js","./pencil-DGiTRzW1.js","./star-BmywYD3u.js","./folder-plus-BJKT1Pqg.js","./redo-2-QgiKEg9T.js","./folder-CCZqnwRc.js","./layout-grid-Hs3eDA07.js","./PageHistoryPanel-DFjh0pWs.css"])))=>i.map(i=>d[i]);
2
+ import{ch as Ea,ci as $n,r as Ne,j as e,u as he,d as c,cj as Da,bD as Ci,ck as Pi,m as Ti,bO as Fa,t as _,_ as Ei,P as Di,c2 as Fi,ar as Ri,J as Nt,n as As,ad as ln,cl as ds,c0 as Mi,c1 as $i,aT as Oi,aD as Ii,b4 as Li,aI as Bs,aL as Ai}from"./index-BYUntVIZ.js";import{G as ct,cs as Gt,_ as Yt,iF as fn,u as Ve,b as L,dm as te,T as js,fV as ot,fC as Pe,fi as Me,qn as Ra,fj as Bi,q as $e,m7 as Vi,qo as _i,gl as Wi,cq as qi,qp as Ui,qq as Hi,qr as Ki,qs as Gi,aK as vt,ox as Yi,fd as Ma,lA as Xi,kL as ks,kB as $a,qt as Ji,g3 as Oa,ga as Ss,oz as Wn,qu as Ia,fB as Ft,qv as La,fO as Aa,kx as us,kA as Zi,qw as Qi,fS as Ba,qx as Va,kD as _a,qi as eo,kK as Wa,qy as to,a5 as gt,aF as Ns,U as qa,e1 as zs,bV as Wt,bK as Ye,ai as Tt,dF as no,hx as so,qz as qt,j7 as Ua,gg as Bt,b2 as ao,bo as Cs,gu as Ha,fA as Ps,qA as io,hq as oo,m as ro,hF as lo,h as co,gk as uo,cW as hs,c6 as Ut,bt as Ka,ar as Et,qB as un,ct as xt,fh as Fn,aE as It,fk as Jn,gf as pt,qC as Vs,iz as _s,fl as Ws,K as jn,hP as Zn,of as qs,ah as ho,as as Xt,og as mo,Z as po,fc as kn,o8 as fo,o7 as xo,ay as go,g7 as vo,fF as Ht,qD as wo,g8 as Ga,cr as Qn,qE as Us,qF as Hs,cL as Ks,qG as bo,qH as yo,fn as zt,qI as Sn,hH as jo,gp as Gs,mV as ko,hR as es,ix as So,iA as No,nN as zo,cO as Co,f8 as Po,iy as To,qJ as Eo,qK as Do,j as Ya,lB as Xa,qL as Fo,qM as Ro,qN as Mo,qO as $o,qP as Oo,b6 as Io,or as Lo,os as Ao,p as ms,qQ as Bo,qR as Vo,fx as Kt,qS as _o,qT as Wo,qU as qo,qV as Uo,qW as Ho,qX as Ys,kd as Ja,qY as Xs,f_ as Za,iM as Ko,iN as Go,az as Yo,fZ as ze,aC as hn,fD as Rn,qZ as ts,R as Xo,q_ as Js,q$ as Zs,fE as ns,f$ as ss,r0 as Jo,r1 as Qs,r2 as Zo,r3 as ea,r4 as Qo,g0 as as,r5 as is,r6 as er,r7 as tr,bg as nr,ap as ta,r8 as sr,g2 as Ct,r9 as ps,ra as sn,rb as an,rc as st,gr as ar,fQ as ir,rd as or,re as rr,rf as lr,rg as cr,fN as na,rh as dr,ri as ur,rj as hr,rk as mr,rl as pr,rm as fr,rn as xr,kM as gr,fU as vr,ro as Nn,rp as wr,rq as br,rr as yr}from"./appStore-affnJoin.js";import"./client-BqhpYbYL.js";import{e as Qa,g as Ts,h as jr,M as ei,C as kr,S as Sr,U as Nr,A as zr,d as Cr,i as Pr}from"./UnifiedPage-D7JTfABH.js";import{F as Tr}from"./FloatingToc-B1d4-5EL.js";import{ab as Er,ac as Dr,a8 as ti,ad as Fr,h as Rr}from"./MarkdownBlock-BHpDy2qQ.js";import{u as Mr,S as $r,r as Or,a as Ir,C as Lr,N as Ar,U as Br}from"./pageChrome-D-9npbUE.js";import{m as Vr,b as _r,r as sa}from"./pageTree-CIXFRCLk.js";import{normalizePluginRename as Wr}from"./pluginExt-Byb64tQO.js";import{h as qn,i as qr,l as Ur,a as Hr,b as Kr,p as Gr,q as Yr,c as Xr,w as Jr,v as Zr,S as Lt,L as Qr,d as el,P as fs,t as aa,f as tl,g as nl,x as sl,e as ia,j as al,s as il,u as ol,A as oa,m as xs,C as ni}from"./phoneList-DHUia6HT.js";import{c as Zt}from"./nativeDownload-Udrv_tmU.js";import{L as rl}from"./list-tree-DmuRb-p9.js";import{P as on}from"./pen-tool-D_Y9We9x.js";import{P as cn}from"./pencil-DGiTRzW1.js";import{S as On}from"./star-BmywYD3u.js";import{B as si}from"./book-open-CcXCToyx.js";import{F as ra}from"./folder-plus-BJKT1Pqg.js";import{U as gs}from"./upload-D20PZHXc.js";import{F as ll,T as ai}from"./type-DmIL6FB-.js";import{U as cl}from"./undo-2-yMeXc8Wi.js";import{R as dl,F as zn}from"./redo-2-QgiKEg9T.js";import{C as os}from"./code-xml-DdR58F83.js";import{L as la}from"./lock-kffGfeHt.js";import{F as Es}from"./folder-CCZqnwRc.js";import{L as At}from"./layout-grid-Hs3eDA07.js";const ul=[["path",{d:"m15 16 2.536-7.328a1.02 1.02 1 0 1 1.928 0L22 16",key:"xik6mr"}],["path",{d:"M15.697 14h5.606",key:"1stdlc"}],["path",{d:"m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16",key:"d5nyq2"}],["path",{d:"M3.304 13h6.392",key:"1q3zxz"}]],ii=ct("a-large-small",ul);const hl=[["path",{d:"M10 2v8l3-3 3 3V2",key:"sqw3rj"}],["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]],ml=ct("book-marked",hl);const pl=[["path",{d:"M10.94 5.274A7 7 0 0 1 15.71 10h1.79a4.5 4.5 0 0 1 4.222 6.057",key:"1uxyv8"}],["path",{d:"M18.796 18.81A4.5 4.5 0 0 1 17.5 19H9A7 7 0 0 1 5.79 5.78",key:"99tcn7"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],vs=ct("cloud-off",pl);const fl=[["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}],["path",{d:"M15.947 12.65a4 4 0 0 0-5.925-4.128",key:"dpwdj0"}],["path",{d:"M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z",key:"s09mg5"}]],xl=ct("cloud-sun",fl);const gl=[["path",{d:"M6 12h12",key:"8npq4p"}],["path",{d:"M6 20V4",key:"1w1bmo"}],["path",{d:"M18 20V4",key:"o2hl4u"}]],vl=ct("heading",gl);const wl=[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]],Cn=ct("layout-dashboard",wl);const bl=[["path",{d:"M21 5H11",key:"us1j55"}],["path",{d:"M21 12H11",key:"wd7e0v"}],["path",{d:"M21 19H11",key:"saa85w"}],["path",{d:"m7 8-4 4 4 4",key:"o5hrat"}]],yl=ct("list-indent-decrease",bl);const jl=[["path",{d:"M21 5H11",key:"us1j55"}],["path",{d:"M21 12H11",key:"wd7e0v"}],["path",{d:"M21 19H11",key:"saa85w"}],["path",{d:"m3 8 4 4-4 4",key:"1a3j6y"}]],kl=ct("list-indent-increase",jl);const Sl=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],In=ct("share-2",Sl);const Nl=[["path",{d:"m10.344 4.688 1.181-2.393a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.237 3.152",key:"19ctli"}],["path",{d:"m17.945 17.945.43 2.505a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a8 8 0 0 0 .4-.099",key:"ptqqvy"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],zl=ct("star-off",Nl);let ca=0;const Oe=Zt(t=>({vaults:[],activeRoot:null,mirrorVaults:[],status:{},async refresh(){const n=++ca,s=window.amadeusSync;if(s?.entrySyncGet)try{const i=await s.entrySyncGet();if(n!==ca)return;t({vaults:i.vaults,activeRoot:i.activeRoot,mirrorVaults:i.mirrorVaults??[]})}catch{}}}));let da=!1;function oi(){if(da)return;da=!0;const t=window.amadeusSync;Oe.getState().refresh(),t?.onEntrySyncChange?.(()=>{Oe.getState().refresh()}),t?.onStatus?.(n=>{const s=n.binding;s&&Oe.setState(i=>({status:{...i.status,[s]:n}}))})}function xn(t,n){if(!t)return!1;const s=Oe.getState().vaults.find(i=>i.vaultRoot===t);return!!s&&Ea(s.entries,s.exclude,n)}function Ds(t,n,s,i){if(!window.amadeusSync||s==="cloud")return $n(i);if(!n)return null;const l=t.find(o=>o.vaultRoot===n);return!l||!Ea(l.entries,l.exclude,i)?null:`${l.cloudName}/${$n(i)}`}function Cl(t,n){const s=t?Oe.getState().vaults.find(l=>l.vaultRoot===t):null;if(!s?.exclude?.length)return!1;const i=$n(n);return s.exclude.some(l=>{const o=$n(l);return!!o&&(i===o||i.startsWith(`${o}/`)||i.startsWith(`${o.replace(/\.md$/i,"")}.fd/`))})}let dn=null;function ws(){return dn===null&&(dn=!0,window.tangu?.getConfig?.().then(t=>{dn=t?.notesUpgradeV4!==!1}).catch(()=>{})),dn}function nu(t){dn=t}ws();Ne({"csd.title":{zh:"开启云同步",en:"Turn on cloud sync"},"csd.failed":{zh:"开启云同步失败",en:"Could not turn on cloud sync"},"csd.enabled":{zh:"已开启云同步:云端「{name}」",en:"Cloud sync is on — cloud folder “{name}”"},"csd.selectAll":{zh:"全选",en:"Select all"},"csd.selectNone":{zh:"全不选",en:"Deselect all"},"csd.conflictMsg":{zh:"云端智库根目录已有「{name}」。可以换一个云端文件夹名,或把本智库的同步内容合并进现有文件夹(换机后重新开启同步时选「合并」)。",en:"The cloud workspace root already has a folder called “{name}”. Pick a different name for the cloud folder, or merge this vault’s synced content into the existing one (choose Merge when you turn sync back on after switching machines)."},"csd.newNamePlaceholder":{zh:"新的云端文件夹名",en:"New cloud folder name"},"csd.cancel":{zh:"取消",en:"Cancel"},"csd.mergeInto":{zh:"合并进「{name}」",en:"Merge into “{name}”"},"csd.useNewName":{zh:"用新名字开启",en:"Use new name"},"csd.intro":{zh:"「{name}」将带完整相对路径同步到云端智库(双向)。子页面与库内关联默认一并纳入,保留智库里的相对位置;取消勾选即不同步:",en:"“{name}” will sync to the cloud workspace with its full relative path (two-way). Subpages and in-vault links are included by default and keep their position in the vault; uncheck anything you do not want synced:"},"csd.analyzing":{zh:"正在分析关联…",en:"Analyzing links…"},"csd.groupSubPages":{zh:"子页面",en:"Subpages"},"csd.groupLinkedPages":{zh:"关联笔记",en:"Linked notes"},"csd.groupAssets":{zh:"附件",en:"Attachments"},"csd.nothingElse":{zh:"没有子页面与库内关联,仅同步此条目。",en:"No subpages or in-vault links — only this item will sync."},"csd.enabling":{zh:"开启中…",en:"Turning on…"},"csd.enable":{zh:"开启同步",en:"Turn on sync"}});const bs=Zt(t=>({req:null,open:n=>t({req:n}),close:()=>t({req:null})}));function Dt(t,n){bs.getState().open({path:t,kind:n})}const ua=t=>(t.split(/[\\/]/).pop()??t).replace(/\.md$/i,"");function su(){const t=bs(n=>n.req);return t?e.jsx("div",{className:"am-app tangu-lovable",style:{display:"contents"},children:e.jsx(Pl,{req:t,onClose:()=>bs.getState().close()},`${t.kind}:${t.path}`)}):null}function Pl({req:t,onClose:n}){const{t:s}=he(),[i,l]=c.useState(null),[o,r]=c.useState(new Set),[u,f]=c.useState(new Set),[h,j]=c.useState(new Set),[m,y]=c.useState(!1),[p,b]=c.useState(null),[O,E]=c.useState("");c.useEffect(()=>{let z=!0;if(t.kind==="asset"){l({pages:[],files:[],subPages:[]});return}return window.amadeusSync?.entrySyncClosure?.(t.path,t.kind).then(M=>{if(!z)return;l({...M,subPages:M.subPages??[]}),r(new Set(M.pages)),f(new Set(M.files));const D=Oe.getState().activeRoot;j(new Set((M.subPages??[]).filter(H=>!Cl(D,H))))}).catch(()=>z&&l({pages:[],files:[],subPages:[]})),()=>{z=!1}},[t.path,t.kind]);const G=async z=>{const M=window.amadeusSync;if(!M?.entrySyncEnable||m)return;y(!0);const D=[{path:t.path,kind:t.kind},...[...o].map(re=>({path:re,kind:"page"})),...[...u].map(re=>({path:re,kind:"asset"}))],H=i?.subPages??[],Z=H.filter(re=>!h.has(re)),ce=H.filter(re=>h.has(re)),q=await M.entrySyncEnable({entries:D,exclude:Z,include:ce,...z}).catch(re=>({error:String(re)}));if(y(!1),q?.conflict){b(q.conflict),E(`${q.conflict} 2`);return}if(q?.error||!q?.ok){Ve.getState().toast(q?.error||s("csd.failed"),!0);return}Ve.getState().toast(s("csd.enabled",{name:q.cloudName??""})),Oe.getState().refresh(),n()},k=z=>{const M=[];for(let D=z;;){const H=D.lastIndexOf(".fd/");if(H<0)return M;D=`${D.slice(0,H)}.md`,M.push(D)}},$=z=>j(M=>{const D=!M.has(z),H=i?.subPages??[],Z=`${z.replace(/\.md$/i,"")}.fd/`,ce=new Set(M);for(const q of H)q!==z&&!q.startsWith(Z)||(D?ce.add(q):ce.delete(q));if(D)for(const q of k(z))H.includes(q)&&ce.add(q);return ce}),F=(z,M)=>{const D=new Set(z);return D.has(M)?D.delete(M):D.add(M),D},N=(z,M,D,H,Z,ce)=>D.length>0&&e.jsxs("div",{className:"amx-csd-group",children:[e.jsxs("div",{className:"amx-csd-head",children:[z,e.jsxs("span",{children:[M,"(",H.size,"/",D.length,")"]}),e.jsx("button",{className:"amx-csd-all",onClick:()=>ce(H.size<D.length),children:H.size<D.length?s("csd.selectAll"):s("csd.selectNone")})]}),e.jsx("div",{className:"amx-csd-list",children:D.map(q=>e.jsxs("label",{className:"amx-csd-item",title:q,children:[e.jsx("input",{type:"checkbox",checked:H.has(q),onChange:()=>Z(q)}),e.jsx("span",{children:ua(q)}),e.jsx("span",{className:"amx-csd-path",children:q})]},q))})]});return e.jsx("div",{className:"dialog-overlay",onMouseDown:n,children:e.jsxs("div",{className:"dialog amx-csd",onMouseDown:z=>z.stopPropagation(),children:[e.jsxs("div",{className:"dialog-title",children:[e.jsx(Gt,{size:15,style:{verticalAlign:-2,marginRight:6}}),s("csd.title")]}),p?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"dialog-msg",children:s("csd.conflictMsg",{name:p})}),e.jsx("input",{className:"dialog-input",value:O,onChange:z=>E(z.target.value),placeholder:s("csd.newNamePlaceholder"),onKeyDown:z=>{z.key==="Enter"&&O.trim()&&G({cloudName:O.trim()}),z.key==="Escape"&&n()}}),e.jsxs("div",{className:"dialog-actions",children:[e.jsx("button",{className:"dialog-btn",onClick:n,children:s("csd.cancel")}),e.jsx("button",{className:"dialog-btn",disabled:m,onClick:()=>{G({cloudName:p,merge:!0})},children:s("csd.mergeInto",{name:p})}),e.jsx("button",{className:"dialog-btn","data-primary":!0,disabled:m||!O.trim(),onClick:()=>{G({cloudName:O.trim()})},children:s("csd.useNewName")})]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"dialog-msg",children:s("csd.intro",{name:ua(t.path)})}),i===null?e.jsx("div",{className:"dialog-msg",children:s("csd.analyzing")}):e.jsxs(e.Fragment,{children:[N(e.jsx(rl,{size:12}),s("csd.groupSubPages"),i.subPages,h,$,z=>j(z?new Set(i.subPages):new Set)),N(e.jsx(Yt,{size:12}),s("csd.groupLinkedPages"),i.pages,o,z=>r(M=>F(M,z)),z=>r(z?new Set(i.pages):new Set)),N(e.jsx(fn,{size:12}),s("csd.groupAssets"),i.files,u,z=>f(M=>F(M,z)),z=>f(z?new Set(i.files):new Set)),!i.pages.length&&!i.files.length&&!i.subPages.length&&e.jsx("div",{className:"dialog-msg",style:{opacity:.6},children:s("csd.nothingElse")})]}),e.jsxs("div",{className:"dialog-actions",children:[e.jsx("button",{className:"dialog-btn",onClick:n,children:s("csd.cancel")}),e.jsx("button",{className:"dialog-btn","data-primary":!0,disabled:m||i===null,onClick:()=>{G()},children:s(m?"csd.enabling":"csd.enable")})]})]})]})})}function ha(t,n){const s=o=>`${o.ghost?"g:":""}${o.path}`,i=t.map(s).sort(),l=n.map(o=>{const r=s(t[o.a]),u=s(t[o.b]);return r<u?`${r}>${u}`:`${u}>${r}`}).sort();return`${i.join("|")}::${l.join("|")}`}Ne({"amxpanel.searchHead":{zh:"全文搜索",en:"Full-text search"},"amxpanel.searchPlaceholder":{zh:"搜索全部笔记…",en:"Search all notes…"},"amxpanel.saveCollection":{zh:"存为集合",en:"Save as collection"},"amxpanel.saveCollectionTip":{zh:"存为集合(左栏可一键回放这次搜索)",en:"Save as a collection (replay this search from the sidebar in one click)"},"amxpanel.saveCollectionHint":{zh:"集合会出现在左栏,点击即重放这次搜索。",en:"The collection shows up in the sidebar — click it to replay this search."},"amxpanel.noVault":{zh:"先打开一个智库。",en:"Open a vault first."},"amxpanel.searchEmpty":{zh:"输入关键词,搜遍全部笔记内容。",en:"Type a keyword to search the contents of every note."},"amxpanel.noResults":{zh:"无结果",en:"No results"},"amxpanel.tagsHead":{zh:"标签 · {n}",en:"Tags · {n}"},"amxpanel.tagsEmpty":{zh:"还没有 #标签。在笔记里写 #灵感 这样的行内标签即可出现在这里。",en:"No #tags yet. Write an inline tag like #idea in a note and it will show up here."},"amxpanel.graphHead":{zh:"关系图 · 当前笔记",en:"Graph · current note"},"amxpanel.graphNoNote":{zh:"未打开笔记",en:"No note open"},"amxpanel.graphEmpty":{zh:"这篇笔记还没有链接(出链 [[…]] 或反链)。",en:"This note has no links yet — no outgoing [[…]] links and no backlinks."}});const Ln=()=>L.getState(),ys=t=>(t.split(/[\\/]/).pop()??t).replace(/\.md$/i,""),ri=Zt(t=>({seed:null,request:n=>t(s=>({seed:{q:n,n:(s.seed?.n??0)+1}}))}));function au(){const{t}=he(),n=L(h=>h.vaultRoot),[s,i]=c.useState(""),l=ri(h=>h.seed);c.useEffect(()=>{l&&i(l.q)},[l]);const[o,r]=c.useState([]),u=c.useRef(0);c.useEffect(()=>{Ln().flushSave()},[]),c.useEffect(()=>{const h=s.trim();if(!h){r([]);return}const j=++u.current,m=setTimeout(()=>{te.search(h).then(y=>{j===u.current&&r(y)})},120);return()=>clearTimeout(m)},[s]);const f=h=>{const j=s.trim().toLowerCase();Me(h.path).then(()=>{if(!j)return;const m=Object.values(Ln().blocks).find(y=>Da(y.content).toLowerCase().includes(j));requestAnimationFrame(()=>{const y=m?document.querySelector(`[data-block-id="${m.id}"]`):null;if(y){y.scrollIntoView({behavior:"smooth",block:"center"}),y.classList.add("amx-block-flash"),setTimeout(()=>y.classList.remove("amx-block-flash"),1300);return}const p=j.split(/[\s\-_/.]+/).filter(Boolean);Ra(h.path,p.length>1?[j,...p]:[j])})})};return e.jsxs("div",{className:"amx-panel",children:[e.jsx("div",{className:"amx-panel-head",children:t("amxpanel.searchHead")}),e.jsxs("div",{className:"t2s-search amx-search-box",children:[e.jsx(js,{size:13,className:"t2s-dim"}),e.jsx("input",{autoFocus:!0,value:s,placeholder:t("amxpanel.searchPlaceholder"),onChange:h=>i(h.target.value)}),s.trim()&&e.jsx("button",{className:"amx-search-save",title:t("amxpanel.saveCollectionTip"),onClick:()=>{ot(t("amxpanel.saveCollection"),s.trim(),{label:t("amxpanel.saveCollectionHint")}).then(h=>{const j=h?.trim();j&&Pe.getState().saveCollection(j,s.trim())})},children:t("amxpanel.saveCollection")})]}),n?s.trim()?o.length===0?e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.noResults")}):e.jsx("div",{className:"amx-list",children:o.map(h=>e.jsxs("button",{className:"amx-list-item",onClick:()=>f(h),title:h.path,children:[h.title,h.snippet&&e.jsx("span",{className:"amx-backlink-snippet amx-search-snippet",children:Tl(h.snippet,s.trim())})]},h.path))}):e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.searchEmpty")}):e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.noVault")})]})}function Tl(t,n){if(!n)return t;const s=t.toLowerCase().indexOf(n.toLowerCase());return s<0?t:e.jsxs(e.Fragment,{children:[t.slice(0,s),e.jsx("mark",{children:t.slice(s,s+n.length)}),t.slice(s+n.length)]})}const li=Zt(t=>({seed:null,request:n=>t(s=>({seed:{tag:n,n:(s.seed?.n??0)+1}}))}));function iu(t){li.getState().request(t.replace(/^#/,""));const n=$e.getState();n.showSideView("left","amadeus-tags");const s=$e.getState(),i=s.api;s.leftVisible&&!i?.panels.some(l=>l.params?.__type==="amadeus-tags")&&n.openView("amadeus-tags",{},"left")}function ou(){const{t}=he(),n=L(m=>m.vaultRoot),s=L(m=>m.linkGraphVersion),[i,l]=c.useState([]),[o,r]=c.useState(null),[u,f]=c.useState([]),h=li(m=>m.seed);c.useEffect(()=>{h&&r(h.tag)},[h]);const j=o&&!i.some(m=>m.tag.toLowerCase()===o.toLowerCase())?[{tag:o,count:u.length},...i]:i;return c.useEffect(()=>{let m=!0;if(!n){l([]);return}return te.listTags().then(y=>{m&&l(y)}),()=>{m=!1}},[n,s]),c.useEffect(()=>{let m=!0;if(!o){f([]);return}return te.pagesByTag(o).then(y=>{m&&f(y)}),()=>{m=!1}},[o,s]),e.jsxs("div",{className:"amx-panel",children:[e.jsx("div",{className:"amx-panel-head",children:t("amxpanel.tagsHead",{n:i.length})}),n?j.length===0?e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.tagsEmpty")}):e.jsx("div",{className:"amx-list",children:j.map(m=>e.jsxs("div",{children:[e.jsxs("button",{className:`amx-list-item amx-tag${o===m.tag?" active":""}`,ref:o===m.tag&&h?y=>y?.scrollIntoView({block:"nearest"}):void 0,onClick:()=>r(y=>y===m.tag?null:m.tag),children:[e.jsxs("span",{className:"amx-tag-name",children:["#",m.tag]}),e.jsx("span",{className:"amx-tag-count",children:m.count})]}),o===m.tag&&u.map(y=>e.jsx("button",{className:"amx-list-item amx-tag-page",onClick:()=>{Me(y).then(()=>Ra(y,[`#${m.tag}`],{tag:!0}))},title:y,children:ys(y)},y))]},m.tag))}):e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.noVault")})]})}const Vt=320,_t=280,mn=(t,n,s)=>Math.min(s,Math.max(n,t));function El(t,n,s){const i=Vt/2,l=_t/2;for(let o=0;o<t.length;o++){const r=t[o];if(r.pinned)continue;let u=(i-r.x)*.005,f=(l-r.y)*.005;for(let h=0;h<t.length;h++){if(o===h)continue;const j=t[h],m=r.x-j.x,y=r.y-j.y,p=Math.max(64,m*m+y*y),b=1400/p;u+=m/Math.sqrt(p)*b,f+=y/Math.sqrt(p)*b}for(const h of n){if(h.a!==o&&h.b!==o)continue;const j=t[h.a===o?h.b:h.a],m=j.x-r.x,y=j.y-r.y,p=Math.max(1,Math.hypot(m,y)),b=(p-86)*.02;u+=m/p*b,f+=y/p*b}r.vx=(r.vx+u*s*2)*.82,r.vy=(r.vy+f*s*2)*.82,r.x=mn(r.x+r.vx,16,Vt-16),r.y=mn(r.y+r.vy,16,_t-16)}}function ru(){const{t}=he(),n=L(N=>N.activePage??N.activeNotePath),s=L(N=>N.linkGraphVersion),[i,l]=c.useState(null),[,o]=c.useState(0),[r,u]=c.useState(null),[f,h]=c.useState({x:0,y:0,k:1}),j=c.useRef(null),m=c.useRef(i);m.current=i;const y=c.useRef(f);y.current=f;const p=c.useRef({alpha:0,raf:0,dragging:!1}),b=c.useRef(!1),O=()=>{if(p.current.raf)return;const N=()=>{const z=m.current,M=p.current;if(!z){M.raf=0;return}El(z.nodes,z.edges,M.alpha),M.dragging||(M.alpha-=.006),o(D=>D+1),M.alpha>.02||M.dragging?M.raf=requestAnimationFrame(N):M.raf=0};p.current.raf=requestAnimationFrame(N)};c.useEffect(()=>()=>{p.current.raf&&cancelAnimationFrame(p.current.raf)},[]);const E=(N,z)=>{const M=j.current?.getScreenCTM();if(!M)return null;const D=new DOMPoint(N,z).matrixTransform(M.inverse());return{x:D.x,y:D.y}},G=(N,z)=>{const M=E(N,z);if(!M)return null;const D=y.current;return{x:(M.x-D.x)/D.k,y:(M.y-D.y)/D.k}};c.useEffect(()=>{let N=!0;if(!n){l(null),m.current=null;return}return m.current?.nodes[0]?.path!==n&&(m.current=null,l(null)),(async()=>{const z=await te.backlinks(n).catch(()=>[]);if(!N)return;const M=Ln(),D=await te.readTextFile(n).catch(()=>null);if(!N)return;const H=Da(Ci(D??"")),Z=[],ce=[],q=new Set;for(const ie of Pi(H)){const ne=Ti(ie,M.pages,n);ne?ne!==n&&!Z.includes(ne)&&Z.push(ne):q.has(ie.toLowerCase())||(q.add(ie.toLowerCase()),Bi(ie,M.files,n)||ce.push(ie))}const re=[...new Set([...Z,...z.map(ie=>ie.path).filter(ie=>ie!==n)])],we=[...re,...ce],Re=[{path:n,label:ys(n),center:!0,x:Vt/2,y:_t/2,vx:0,vy:0,pinned:!0},...we.map((ie,ne)=>{const ge=ne/Math.max(1,we.length)*Math.PI*2,ke=ne>=re.length;return{path:ie,label:ke?ie:ys(ie),center:!1,ghost:ke,x:Vt/2+Math.cos(ge)*90,y:_t/2+Math.sin(ge)*90,vx:0,vy:0,pinned:!1}})],xe=new Map(Re.slice(0,1+re.length).map((ie,ne)=>[ie.path,ne])),X=[],pe=new Set;for(const ie of[...Z,...z.map(ne=>ne.path)]){const ne=xe.get(ie);ne===void 0||pe.has(ie)||(pe.add(ie),X.push({a:0,b:ne}))}for(let ie=0;ie<ce.length;ie++)X.push({a:0,b:1+re.length+ie});if(!N)return;const ue={nodes:Re,edges:X},S=m.current;if(!(S&&ha(S.nodes,S.edges)===ha(ue.nodes,ue.edges))){if(S?.nodes[0]?.path===n){const ie=new Map(S.nodes.map(ne=>[`${ne.ghost?"g:":""}${ne.path}`,ne]));for(const ne of ue.nodes){const ge=ie.get(`${ne.ghost?"g:":""}${ne.path}`);ge&&(ne.x=ge.x,ne.y=ge.y,ne.vx=ge.vx,ne.vy=ge.vy)}}m.current=ue,l(ue),u(null),p.current.alpha=S?.38:1,O()}})(),()=>{N=!1}},[n,s]);const k=N=>z=>{if(z.button!==0)return;z.stopPropagation();const M=m.current;if(!M)return;const D=M.nodes[N],H=D.pinned;D.pinned=!0,b.current=!1,p.current.dragging=!0,p.current.alpha=Math.max(p.current.alpha,.6),O();const Z=q=>{const re=G(q.clientX,q.clientY);re&&(b.current=!0,D.x=mn(re.x,16,Vt-16),D.y=mn(re.y,16,_t-16),D.vx=0,D.vy=0,p.current.alpha=Math.max(p.current.alpha,.6))},ce=()=>{window.removeEventListener("pointermove",Z),window.removeEventListener("pointerup",ce),D.pinned=H,p.current.dragging=!1,p.current.alpha=Math.max(p.current.alpha,.5),O()};window.addEventListener("pointermove",Z),window.addEventListener("pointerup",ce)},$=N=>{if(N.button!==0||N.target!==N.currentTarget)return;const z=E(N.clientX,N.clientY);if(!z)return;const M=y.current,D=Z=>{const ce=E(Z.clientX,Z.clientY);ce&&h({k:M.k,x:M.x+(ce.x-z.x),y:M.y+(ce.y-z.y)})},H=()=>{window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",H)};window.addEventListener("pointermove",D),window.addEventListener("pointerup",H)},F=!!i&&i.nodes.length>1;return c.useEffect(()=>{const N=j.current;if(!N||!F)return;const z=M=>{M.preventDefault();const D=E(M.clientX,M.clientY);if(!D)return;const H=y.current,Z=mn(H.k*Math.exp(-M.deltaY*.0022),.4,3),ce=(D.x-H.x)/H.k,q=(D.y-H.y)/H.k;h({k:Z,x:D.x-ce*Z,y:D.y-q*Z})};return N.addEventListener("wheel",z,{passive:!1}),()=>N.removeEventListener("wheel",z)},[F]),e.jsxs("div",{className:"amx-panel",children:[e.jsx("div",{className:"amx-panel-head",children:t("amxpanel.graphHead")}),n?!i||!F?e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.graphEmpty")}):e.jsx("svg",{ref:j,className:"amx-graph",viewBox:`0 0 ${Vt} ${_t}`,onPointerDown:$,onDoubleClick:()=>h({x:0,y:0,k:1}),children:e.jsxs("g",{transform:`translate(${f.x} ${f.y}) scale(${f.k})`,children:[i.edges.map((N,z)=>e.jsx("line",{x1:i.nodes[N.a].x,y1:i.nodes[N.a].y,x2:i.nodes[N.b].x,y2:i.nodes[N.b].y,className:`amx-graph-edge${r!==null?N.a===r||N.b===r?" hl":" dim":""}`},z)),i.nodes.map((N,z)=>{const M=r===null||z===r||i.edges.some(D=>D.a===r&&D.b===z||D.b===r&&D.a===z);return e.jsxs("g",{className:`amx-graph-node${N.center?" center":""}${N.ghost?" ghost":""}${r!==null?M?" hl":" dim":""}`,onPointerDown:k(z),onPointerEnter:()=>u(z),onPointerLeave:()=>u(null),onClick:()=>{b.current||N.center||(N.ghost?Ln().openWikiLink(N.path):Me(N.path))},children:[e.jsx("circle",{cx:N.x,cy:N.y,r:N.center?8:5.5}),e.jsx("text",{x:N.x,y:N.y+(N.center?20:16),textAnchor:"middle",children:N.label.length>12?`${N.label.slice(0,12)}…`:N.label})]},N.ghost?`g:${N.path}`:N.path)})]})}):e.jsx("div",{className:"amx-panel-empty",children:t("amxpanel.graphNoNote")})]})}const Dl=t=>/\.md$/i.test(t);function Fl(t){const n=t.replace(/\.md$/i,""),s=n.split(/[\\/]/).pop()||n;return n===s?n:`${n}|${s}`}function Rl(t){return Vi(t).filter(n=>n.kind==="note").map(n=>Dl(n.path)?`[[${Fl(n.path)}]]`:`![[${n.path}]]`)}const Ml=/[^./\\]\.[^./\\]+\.md$/;function $l(t,n){if(!t||!Ml.test(t)||n.pages.includes(t))return"note";if(n.filesPendingFor!=null&&n.filesPendingFor===n.vaultRoot)return"pending";const s=t.replace(/\\/g,"/");return n.files.some(i=>i.replace(/\\/g,"/")===s)?"plugin":"note"}Ne({"unilock.failed.lock":{zh:"没能锁定「{name}」:{reason}。页面保持原样,内容没有丢。",en:'Couldn’t lock "{name}": {reason}. The page is unchanged and nothing was lost.'},"unilock.failed.unlock":{zh:"没能解锁「{name}」:{reason}。页面保持锁定。",en:'Couldn’t unlock "{name}": {reason}. The page stays locked.'},"unilock.failed.save":{zh:"还有改动没保存下来({err})",en:"some changes couldn’t be saved ({err})"},"unilock.failed.read":{zh:"读不到这篇笔记的最新内容",en:"the latest version of the note couldn’t be read"},"unilock.retry":{zh:"重试",en:"Retry"}});async function Fs(t){try{await Fa(t,!0)}catch(s){return{ok:!1,reason:_("unilock.failed.save",{err:Qa(s)})}}const n=await te.readTextFile(t).catch(()=>null);return n==null?{ok:!1,reason:_("unilock.failed.read")}:{ok:!0,raw:n}}const Ol=t=>(t.split("/").pop()??t).replace(/\.md$/i,"");function ci(t,n,s,i){Ts({level:"error",dedupeKey:`amx-lock:${t}`,text:_(n?"unilock.failed.lock":"unilock.failed.unlock",{name:Ol(t),reason:s}),action:{label:_("unilock.retry"),run:i}})}async function di(t,n,s){const i=await Fs(n);return i.ok?(_i(t,n,s),!0):(ci(n,s,i.reason,()=>{di(t,n,s)}),!1)}Ne({"pghist.menu":{zh:"版本历史",en:"Version history"},"pghist.close":{zh:"关闭",en:"Close"},"pghist.listLabel":{zh:"历史版本",en:"Saved versions"},"pghist.loading":{zh:"正在读取…",en:"Loading…"},"pghist.loadFailed":{zh:"读不到版本历史:{reason}",en:"Couldn’t load version history: {reason}"},"pghist.empty":{zh:"还没有历史版本。编辑这篇笔记后,大约每 5 分钟会自动留一份。",en:"No saved versions yet. While you edit this note, a version is kept about every 5 minutes."},"pghist.tab.content":{zh:"内容",en:"Content"},"pghist.tab.diff":{zh:"与当前对比",en:"Compare with current"},"pghist.diff.current":{zh:"当前",en:"Current"},"pghist.diff.version":{zh:"此版本",en:"This version"},"pghist.same":{zh:"与当前内容相同。",en:"Same as the current content."},"pghist.tooLarge":{zh:"内容太大,无法对比。",en:"Too large to compare."},"pghist.previewFailed":{zh:"读不到这个版本。",en:"This version couldn’t be read."},"pghist.restore":{zh:"恢复此版本",en:"Restore this version"},"pghist.restoreHint":{zh:"恢复前会先把当前内容存进版本历史。",en:"The current content is saved to version history before restoring."},"pghist.lockedHint":{zh:"页面已锁定,解锁后才能恢复。",en:"This page is locked. Unlock it to restore a version."},"pghist.confirm.title":{zh:"恢复到 {time} 的版本?",en:"Restore the version from {time}?"},"pghist.confirm.msg":{zh:"笔记会换成这个版本的内容。当前内容会先存进版本历史,之后还能恢复回来。",en:"The note will be replaced with this version. The current content is saved to version history first, so you can switch back later."},"pghist.confirm.ok":{zh:"恢复",en:"Restore"},"pghist.done":{zh:"已恢复到 {time} 的版本",en:"Restored the version from {time}"},"pghist.failed":{zh:"没能恢复「{name}」:{reason}。笔记保持原样。",en:'Couldn’t restore "{name}": {reason}. The note is unchanged.'},"pghist.failed.conflict":{zh:"这篇笔记刚被别处改动了",en:"the note was just changed elsewhere"},"pghist.failed.gone":{zh:"这篇笔记已经不在了",en:"the note no longer exists"},"pghist.retry":{zh:"重试",en:"Retry"}});const Il=t=>(t.split("/").pop()??t).replace(/\.md$/i,"");function Pn(t,n,s){Ts({level:"error",dedupeKey:`amx-hist-restore:${t}`,text:_("pghist.failed",{name:Il(t),reason:n}),...s?{action:{label:_("pghist.retry"),run:s}}:{}})}async function Ll(t,n){const s=te.restorePageHistory;if(!s)return!1;const i=()=>{Ll(t,n)},l=await Fs(t);if(!l.ok)return Pn(t,l.reason,i),!1;let o;try{o=await s(t,n.id,Di(l.raw))}catch(r){return Pn(t,Qa(r),i),!1}return o.ok?(Fi(t,{}),Ts({level:"success",text:_("pghist.done",{time:qi(n.at)})}),!0):(o.current==null?Pn(t,_("pghist.failed.gone")):Pn(t,_("pghist.failed.conflict"),i),!1)}const Al=Wi(()=>Ei(()=>import("./PageHistoryPanel-BbdXpjJM.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46]),import.meta.url));function Bl({path:t,locked:n,onClose:s}){return e.jsx(c.Suspense,{fallback:null,children:e.jsx(Al,{path:t,locked:n,onClose:s})})}async function Vl(t){await Fa(t);const n=Ri(t);if(n!=null)return n;const s=await te.readTextFile(t).catch(()=>null);return s==null?null:jr(s).body}Ne({"amxpage.font":{zh:"页面字体",en:"Page font"},"amxpage.font.default":{zh:"默认",en:"Default"},"amxpage.font.serif":{zh:"衬线",en:"Serif"},"amxpage.font.mono":{zh:"等宽",en:"Mono"},"amxpage.wide":{zh:"全宽",en:"Full width"},"amxpage.small":{zh:"小字号",en:"Small text"}});const _l=["default","serif","mono"];function Wl(t,n,s=_){return[{kind:"choice",id:"font",label:s("amxpage.font"),options:_l.map(i=>({id:i,label:s(`amxpage.font.${i}`),on:t.font===i,run:()=>n({font:i})}))},{kind:"toggle",id:"wide",label:s("amxpage.wide"),on:t.wide,run:()=>n({wide:!t.wide})},{kind:"toggle",id:"small",label:s("amxpage.small"),on:t.small,run:()=>n({small:!t.small})}]}function ql(t,n){const[,s]=c.useState(0);return c.useEffect(()=>Ui(()=>s(i=>i+1)),[]),n?Ki(t,n):Hi}function Ul(t,n,s){Gi(t,n,s)}function Hl(t){return{...t.wide?{"data-page-wide":""}:{},...t.small?{"data-page-small":""}:{},...t.font!=="default"?{"data-page-font":t.font}:{}}}const Kl={wide:ei,small:ii};function Gl({entries:t}){return e.jsx("div",{className:"amx-pagestyle","data-pagestyle-menu":"",children:t.map(n=>n.kind==="choice"?e.jsxs("div",{className:"amx-pagefont",role:"group","aria-label":n.label,children:[e.jsx("div",{className:"ctx-head",children:n.label}),e.jsx("div",{className:"amx-pagefont-row",children:n.options.map(s=>e.jsxs("button",{type:"button",role:"menuitemradio","aria-checked":s.on,className:`amx-pagefont-opt${s.on?" on":""}`,"data-font":s.id,onClick:s.run,children:[e.jsx("span",{className:"amx-pagefont-aa","aria-hidden":!0,children:"Aa"}),e.jsx("span",{className:"amx-pagefont-name",children:s.label})]},s.id))})]},n.id):e.jsx(Yl,{entry:n},n.id))})}function Yl({entry:t}){const n=Kl[t.id];return e.jsxs("button",{type:"button",role:"menuitemcheckbox","aria-checked":t.on,"data-pagestyle":t.id,onClick:t.run,children:[e.jsx(n,{size:13}),e.jsx("span",{className:"amx-pagestyle-label",children:t.label}),t.on&&e.jsx(vt,{size:13,className:"amx-pagestyle-check"})]})}function Xl({host:t,label:n,scanTrigger:s}){return e.jsx(Tr,{scrollContainer:t,contentRoot:t,selector:".page-view h1, .page-view h2, .page-view h3",label:n,scanTrigger:s,placement:"sticky",topOffset:Dr,topInset:Er})}Ne({"fileimport.tooLargeCloud":{zh:"超过云端单文件上限",en:"Over the cloud file size limit"},"fileimport.vaultFull":{zh:"云端智库容量已满",en:"The cloud vault is full"},"fileimport.unknownError":{zh:"未知错误",en:"Unknown error"},"fileimport.overCloudLimit":{zh:"超过云端单文件上限 {limit}",en:"over the {limit} cloud file limit"},"fileimport.over50mb":{zh:"超 50MB",en:"over 50 MB"},"fileimport.unreadable":{zh:"读不到",en:"unreadable"},"fileimport.withReason":{zh:"{name}({reason})",en:"{name} ({reason})"},"fileimport.uploading":{zh:"正在上传 {name}… {pct}%",en:"Uploading {name}… {pct}%"},"fileimport.placeholder":{zh:"⏳ 正在上传 {name}…",en:"⏳ Uploading {name}…"},"fileimport.placeholderFailed":{zh:"⚠️ 上传失败:{name}",en:"⚠️ Upload failed: {name}"},"fileimport.notImportedOne":{zh:"{n} 个文件未导入:{first}",en:"{n} file was not imported: {first}"},"fileimport.notImportedMany":{zh:"{n} 个文件未导入:{first}",en:"{n} files were not imported: {first}"},"fileimport.movedAway":{zh:"文件已存入原笔记(已切换页,占位行未替换)",en:"The file was saved to the original note (you switched pages, so the placeholder line was left as is)"},"fileimport.imageMovedAway":{zh:"图片已存入原笔记(已切换页,占位行未替换)",en:"The image was saved to the original note (you switched pages, so the placeholder line was left as is)"},"fileimport.importedOne":{zh:"已导入 {n} 个文件",en:"Imported {n} file"},"fileimport.importedMany":{zh:"已导入 {n} 个文件",en:"Imported {n} files"},"fileimport.uploadedOne":{zh:"已上传 {name}",en:"Uploaded {name}"},"fileimport.vaultRoot":{zh:"库根目录",en:"Vault root"},"fileimport.importedToOne":{zh:"已导入 {n} 个文件到「{where}」",en:"Imported {n} file to “{where}”"},"fileimport.importedToMany":{zh:"已导入 {n} 个文件到「{where}」",en:"Imported {n} files to “{where}”"},"fileimport.unreadableOne":{zh:"{n} 个文件读不了:{first}",en:"Could not read {n} file: {first}"},"fileimport.unreadableMany":{zh:"{n} 个文件读不了:{first}",en:"Could not read {n} files: {first}"},"fileimport.imageOverCloudLimit":{zh:"图片超过云端单文件上限 {limit}",en:"Image is over the {limit} cloud file limit"},"fileimport.pasteFailed":{zh:"粘贴图片:{first}",en:"Could not paste image: {first}"}});const Jt=(t,n)=>_("fileimport.withReason",{name:t,reason:n}),rt=()=>L.getState(),lt=t=>Ma.getState().notify(t);function Jl(){return window.amadeusSync?rt().vaultSide==="cloud":!!window.amadeusCloudVaults}function Zl(t,n){const s=/[ ()<>]/.test(n)?`<${n}>`:n;return`[${t.replace(/[[\]]/g,"")}](${s})`}function Ql(t,n,s,i){return i&&!/[[\]|#]/.test(t)?`![[${t}]]`:Zl(n,s)}function Un(t){const n=t instanceof Error?t.message:String(t);return/TOO_LARGE|\b413\b/.test(n)?_("fileimport.tooLargeCloud"):/VAULT_FULL/.test(n)?_("fileimport.vaultFull"):n||_("fileimport.unknownError")}async function ec(){const t=window.amadeusSync?(await window.amadeusSync.get().catch(()=>null))?.maxFileBytes:window.amadeusCloudMaxFileBytes;return typeof t=="number"&&t>0?t:null}const tc=t=>`${+(t/1048576).toFixed(1)} MB`;async function Rs(t){if(!Jl())return null;const n=await ec();return n!==null&&t.size>n?tc(n):null}async function Ms(){try{await rt().refreshStructure?.()}catch{}}function $s(t){let n=-1;return(s,i)=>{const l=i>0?Math.min(100,Math.floor(s/i*100)):0;l!==n&&(n=l,lt(_("fileimport.uploading",{name:t,pct:l})))}}function ui(t,n){const s=_("fileimport.placeholder",{name:n}),i=rt().activePage===t?rt().insertBlockAfter(null,void 0,s):null,l=()=>!!i&&rt().activePage===t&&rt().blocks[i]?.content===s;return{done:o=>l()?(rt().setBlockContent(i,o),!0):!1,fail:()=>{l()&&rt().setBlockContent(i,_("fileimport.placeholderFailed",{name:n}))}}}async function An(t,n){if(!t.length||!n)return;const{opts:s,preview:i}=await Yi();let l=0,o=0;const r=[];for(const u of t){const f=await Rs(u);if(f){r.push(Jt(u.name,_("fileimport.overCloudLimit",{limit:f})));continue}const h=ui(n,u.name);try{const j=new Uint8Array(await u.arrayBuffer()),{pageRel:m,base:y}=await te.saveAttachment(n,u.name,j,s,$s(u.name));h.done(Ql(y,u.name,m,i))||rt().activePage===n?l++:o++}catch(j){h.fail(),r.push(Jt(u.name,Un(j)))}}await Ms(),r.length?lt(_(r.length===1?"fileimport.notImportedOne":"fileimport.notImportedMany",{n:r.length,first:r[0]})):o?lt(_("fileimport.movedAway")):t.length>1?lt(_(l===1?"fileimport.importedOne":"fileimport.importedMany",{n:l})):lt(_("fileimport.uploadedOne",{name:t[0].name}))}async function ma(t,n){if(!t.length)return;let s=0;const i=[];for(const o of t){const r=await Rs(o);if(r){i.push(Jt(o.name,_("fileimport.overCloudLimit",{limit:r})));continue}try{const u=new Uint8Array(await o.arrayBuffer());await te.saveAttachment("",o.name,u,{mode:"vault",folder:n},$s(o.name)),s++}catch(u){i.push(Jt(o.name,Un(u)))}}await Ms();const l=n?n.split("/").pop()||n:_("fileimport.vaultRoot");i.length?lt(_(i.length===1?"fileimport.notImportedOne":"fileimport.notImportedMany",{n:i.length,first:i[0]})):lt(_(s===1?"fileimport.importedToOne":"fileimport.importedToMany",{n:s,where:l}))}async function nc(t){const n=window.tangu?.readHostFile;if(!n)return[];const s=[],i=[];for(const l of t){const o=l.split(/[\\/]/).pop()||l;try{const r=await n(l);if(!r||r.tooLarge){i.push(Jt(o,_(r?.tooLarge?"fileimport.over50mb":"fileimport.unreadable")));continue}s.push(new File([Xi(r.content)],o,{type:r.mimeType}))}catch(r){i.push(Jt(o,Un(r)))}}return i.length&&lt(_(i.length===1?"fileimport.unreadableOne":"fileimport.unreadableMany",{n:i.length,first:i[0]})),s}async function sc(t,n){if(!t.length||!n)return;let s=0;const i=[];for(const l of t){const o=await Rs(l);if(o){i.push(_("fileimport.imageOverCloudLimit",{limit:o}));continue}const r=(l.name||"pasted.png").replace(/\s+/g,"_"),u=ui(n,r);try{const f=new Uint8Array(await l.arrayBuffer()),h=await te.saveAsset(n,r,f,$s(r));!u.done(`![](${h})`)&&rt().activePage!==n&&s++}catch(f){u.fail(),i.push(Un(f))}}await Ms(),i.length?lt(_("fileimport.pasteFailed",{first:i[0]})):s&&lt(_("fileimport.imageMovedAway"))}function pa(t,n,s=!1){return!!t&&!n&&!s}function ac(t){const n=t.cloneNode(!0),s=[...t.querySelectorAll("input.amx-title-input, textarea.amx-title-input")];return n.querySelectorAll("input.amx-title-input, textarea.amx-title-input").forEach((i,l)=>{const o=s[l],r=document.createElement("h1");r.className="amx-title-input amx-title-static",r.textContent=o?.value||o?.placeholder||"",i.replaceWith(r)}),n}const fa="amx.sec.";function ic(t,n){return t==="1"?!0:t==="0"?!1:n}function Bn(t,n=!1){const[s,i]=c.useState(()=>{try{return ic(localStorage.getItem(fa+t),n)}catch{return n}});return[s,()=>i(o=>{const r=!o;try{localStorage.setItem(fa+t,r?"1":"0")}catch{}return r})]}function hi(t,n){const s=n==="first",i=s?t.children[0]:t.children.at(-1),l=s?i?.columns[0]:i?.columns.at(-1);return(s?l?.children[0]:l?.children.at(-1))?.ref??null}const mi="amadeus.heading.fold";function oc(t){const n=(t??"").split(`
3
3
  `,1)[0]??"",s=/^ {0,3}(#{1,6})\s/.exec(n);return s?s[1].length:0}function xa(t){const n=t??"";if(!n.includes("#"))return 0;let s=0,i=!1;for(const l of n.split(`
4
4
  `)){if(/^ {0,3}(```|~~~)/.test(l)){i=!i;continue}if(i)continue;const o=/^ {0,3}(#{1,6})\s/.exec(l);if(o&&((!s||o[1].length<s)&&(s=o[1].length),s===1))break}return s}const rc=()=>{try{const t=JSON.parse(localStorage.getItem(mi)||"{}");return t&&typeof t=="object"?t:{}}catch{return{}}},ga=Zt(t=>({byPage:rc(),toggle:(n,s)=>t(i=>{const l=i.byPage[n]??[],o=l.includes(s)?l.filter(u=>u!==s):[...l,s],r={...i.byPage};o.length?r[n]=o:delete r[n];try{localStorage.setItem(mi,JSON.stringify(r))}catch{}return{byPage:r}})}));function lc(t,n){return new Set(t[n]??[])}function cc({col:t,gutterLead:n}){const s=L(r=>r.insertBlockAfter),{setNodeRef:i,isOver:l}=ks({id:`col:${t.id}`}),o=t.children.map(r=>r.ref);return e.jsxs("div",{ref:i,className:"column","data-col":t.id,"data-over":l||void 0,style:{flexGrow:t.width,flexBasis:0},children:[e.jsx($a,{items:o,strategy:Ji,children:o.map((r,u)=>e.jsx(Oa,{blockId:r,gutterLead:u===0?n:void 0},r))}),e.jsx("button",{className:"col-add",onClick:()=>s(null,t.id),children:"+ 块"})]})}Ne({"colresizer.dragHint":{zh:"拖动调整列宽",en:"Drag to resize columns"}});function dc({rowId:t,leftColId:n,rightColId:s}){const i=L(u=>u.resizeColumns),{t:l}=he(),o=c.useRef(null),r=u=>{u.preventDefault();const f=o.current?.closest(".row-cols");if(!f)return;const h=m=>{const y=f.querySelector(`[data-col="${n}"]`),p=f.querySelector(`[data-col="${s}"]`);if(!y||!p)return;const b=y.getBoundingClientRect().left,O=p.getBoundingClientRect().right;O<=b||i(t,n,s,(m.clientX-b)/(O-b))},j=()=>{window.removeEventListener("pointermove",h),window.removeEventListener("pointerup",j)};window.addEventListener("pointermove",h),window.addEventListener("pointerup",j)};return e.jsx("div",{ref:o,className:"col-resizer",onPointerDown:r,title:l("colresizer.dragHint")})}function uc({row:t,gutterLead:n}){const s=t.columns.length===1&&t.columns[0].children.length>1;return e.jsxs("div",{className:"row",children:[!s&&e.jsx(va,{rowId:t.id,side:"left"}),e.jsx("div",{className:"row-cols",children:t.columns.map((i,l)=>e.jsxs(c.Fragment,{children:[l>0&&e.jsx(dc,{rowId:t.id,leftColId:t.columns[l-1].id,rightColId:i.id}),e.jsx(cc,{col:i,gutterLead:l===0?n:void 0})]},i.id))}),!s&&e.jsx(va,{rowId:t.id,side:"right"})]})}function va({rowId:t,side:n}){const{setNodeRef:s,isOver:i}=ks({id:`edge:${t}:${n}`});return e.jsx("div",{ref:s,className:"edge-zone","data-side":n,"data-over":i||void 0})}function hc(){const t=L(u=>u.activePage),n=L(u=>u.linkGraphVersion),s=L(u=>u.loadPage),[i,l]=c.useState([]),[o,r]=c.useState(!1);return c.useEffect(()=>{let u=!0;if(!t){l([]);return}return te.backlinks(t).then(f=>{u&&l(f)}),()=>{u=!1}},[t,n]),t?e.jsxs("section",{className:"backlinks",children:[e.jsxs("button",{className:"backlinks-head",onClick:()=>r(u=>!u),children:[e.jsx("span",{className:"backlinks-chevron",children:o?"▸":"▾"}),"链接到本页 · ",i.length]}),!o&&e.jsxs("div",{className:"backlinks-list",children:[i.length===0&&e.jsx("div",{className:"backlinks-empty",children:"还没有其它页面链接到这里"}),i.map(u=>e.jsxs("button",{className:"page-item backlink-item",onClick:()=>{s(u.path)},title:u.path,children:[e.jsx("span",{className:"backlink-title",children:u.title}),u.snippet&&e.jsx("span",{className:"backlink-snippet",children:u.snippet})]},u.path))]})]}):null}Ne({"amxpv.statusSaving":{zh:"保存中…",en:"Saving…"},"amxpv.statusLoading":{zh:"加载中…",en:"Loading…"},"amxpv.statusReady":{zh:"已保存",en:"Saved"},"amxpv.emptyBlock":{zh:"空块",en:"Empty block"},"amxpv.openVault":{zh:"打开一个智库,或新建页面开始。",en:"Open a vault, or create a page to get started."},"amxpv.renameTitle":{zh:"点击重命名页面",en:"Click to rename the page"},"amxpv.expandSection":{zh:"展开小节({n} 行)",en:"Expand section ({n} rows)"},"amxpv.foldSection":{zh:"折叠小节",en:"Collapse section"},"amxpv.addBlock":{zh:"+ 新块",en:"+ New block"},"amxpv.dndHint":{zh:"拖动 ⠿ 到列边缘可分栏 · 拖到行间可新建行",en:"Drag ⠿ to a column edge to split into columns · drop between rows to add a row"},"amxpv.dragBlocks":{zh:"{n} 个块",en:"{n} blocks"}});function mc(t,n){return t==="saving"?n("amxpv.statusSaving"):t==="loading"?n("amxpv.statusLoading"):t==="ready"?n("amxpv.statusReady"):""}function pc(t,n){if(!t)return n("amxpv.emptyBlock");const s=t.replace(/[#>*_`\-[\]]/g,"").trim().split(`
5
5
  `)[0];return s.length>48?s.slice(0,48)+"…":s||n("amxpv.emptyBlock")}function wa({index:t}){const{setNodeRef:n,isOver:s}=ks({id:`gap:${t}`});return e.jsx("div",{ref:n,className:"row-gap","data-over":s||void 0})}function Vn(t){const n=(t??Ss(Wn())).getState(),s=n.manifest?hi(n.manifest.root,"first"):null;s?n.requestFocus(s,"start"):n.insertBlockAfter(null)}const fc=t=>{const n=Wa(t);return n.length?n:to(t)};function xc(t){const n=t.getState(),s=n.manifest?hi(n.manifest.root,"last"):null;s&&!n.blocks[s]?.content?n.requestFocus(s,"end"):n.insertBlockAfter(null)}const rs=24,gc=16,vc=typeof requestIdleCallback=="function"?t=>requestIdleCallback(t,{timeout:200}):t=>window.setTimeout(t,16),wc=typeof cancelIdleCallback=="function"?cancelIdleCallback:clearTimeout;function bc({bare:t=!1}={}){const{t:n}=he(),s=L(P=>P.manifest),i=L(P=>P.blocks),l=L(P=>P.status),o=L(P=>P.activePage),r=L(P=>P.moveBlock),u=L(P=>P.addColumnWithBlock),f=L(P=>P.addRowWithBlock),h=L(P=>P.insertBlockAfter),j=L(P=>P.renamePage),m=L(P=>P.setDnd),y=Ia(),p=Ft();c.useEffect(()=>{const P=La(y);P&&p.getState().requestFocusAt(P.blockId,P.anchor)},[]);const[b,O]=c.useState([]),E=c.useRef([]),G=b[0]??null,[k,$]=c.useState(!1),[F,N]=c.useState(""),z=Aa(us(Zi,{activationConstraint:{distance:5}})),M=ga(P=>P.byPage);c.useEffect(()=>{const P=A=>{if(!(A.metaKey||A.ctrlKey))return;const U=A.key.toLowerCase();if(U!=="z"&&U!=="y")return;const Y=A.target;if(Y&&(Y.tagName==="INPUT"||Y.tagName==="TEXTAREA"||Y.isContentEditable)||A.defaultPrevented||Wn()!==y)return;A.preventDefault();const fe=p.getState();U==="y"||A.shiftKey?fe.redo():fe.undo()};return window.addEventListener("keydown",P),()=>window.removeEventListener("keydown",P)},[]);const D=s?.root.children.length??0,[H,Z]=c.useState({page:o,n:rs});H.page!==o&&Z({page:o,n:rs});const ce=H.page===o?H.n:rs;if(c.useEffect(()=>{if(ce>=D)return;const P=vc(()=>Z(A=>({...A,n:A.n+gc})));return()=>wc(P)},[ce,D]),!s)return e.jsx("div",{className:"empty-state",children:n("amxpv.openVault")});const q=s.root,re=P=>{const A=(P??"").indexOf(`
@@ -1 +1 @@
1
- import{t as g,r as A,u as S,d as b,j as e,D as U}from"./index-B5UW6SaE.js";import{j_ as _,j$ as K,k0 as V,k1 as T,k2 as W,k3 as L,k4 as $,jQ as F,k5 as w,aE as Q,fh as X,k6 as M,k7 as Y,k8 as G,k9 as J,ka as Z,kb as ee,kc as O,kd as P,fx as ae,ke as te,kf as ne}from"./appStore-CidPWYa0.js";import{n as ce}from"./nativeDownload-B3JGkABw.js";A({"calevtact.deleted":{zh:"已删除「{title}」",en:"Deleted “{title}”"},"calevtact.untitled":{zh:"未命名",en:"Untitled"},"calevtact.undo":{zh:"撤销",en:"Undo"}});function se(s,c,a){const l=_(s,c.rowId);s.isNoteView||ce({text:g("calevtact.deleted",{title:a||g("calevtact.untitled")}),level:"info",action:{label:g("calevtact.undo"),run:()=>K(s,c,l)}})}A({"evcard.editEvent":{zh:"编辑事件:{title}",en:"Edit event: {title}"},"evcard.untitled":{zh:"未命名",en:"Untitled"},"evcard.close":{zh:"关闭",en:"Close"},"evcard.name":{zh:"名称",en:"Name"},"evcard.done":{zh:"完成",en:"Done"},"evcard.openNote":{zh:"打开笔记",en:"Open note"},"evcard.openDb":{zh:"打开多维表",en:"Open database"},"evcard.delete":{zh:"删除",en:"Delete"},"evcard.rowlinkReadonly":{zh:"关联表列请在表格里编辑",en:"Edit related rows in the table"},"evcard.noOptions":{zh:"(无选项,请在表格里添加)",en:"(No options — add them in the table)"}});function le(s){const c=s.zoom||1,a=360,l=380,n=8*c;let d=s.right+n;d+a*c>window.innerWidth&&(d=Math.max(n,s.left-a*c-n));const i=Math.max(n,Math.min(s.top,window.innerHeight-l*c-n));return{left:d/c,top:i/c}}const re={text:O,number:ee,checkbox:Z,date:L,select:J,multiselect:G,url:Y,page:T};function ie({col:s}){const c=M(s.type);if(c?.icon)return e.jsx(e.Fragment,{children:c.icon});const a=re[P(s.type)]??O;return e.jsx(a,{})}function pe({ev:s,at:c,onClose:a}){const{t:l}=S(),{db:n,row:d,colId:i,title:o}=s,h=!!n.readonly&&!n.writeCell,t=!n.readonly,m=!n.readonly,u=n.columns[0],v=m&&!(n.isNoteView&&u?.type==="page"),f=n.columns.filter(r=>r.id!==u?.id&&r.id!==i),q=le(c),x=i?V(s.raw):null,[k,y]=b.useState(!1),B=s.color??"var(--accent, #6c5ce7)",j=b.useRef(null),E=b.useRef(null),C=b.useRef(a);C.current=a;const I=!n.readonly||!!n.openRow;return b.useEffect(()=>{const r=document.activeElement instanceof HTMLElement?document.activeElement:null,H=window.requestAnimationFrame(()=>{(j.current?.querySelector(".amx-cal-card-title:not(.amx-cal-card-title-ro)")??E.current)?.focus()}),D=p=>{if(p.key==="Escape"){p.preventDefault(),C.current();return}if(p.key!=="Tab"||!j.current)return;const N=Array.from(j.current.querySelectorAll('button:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])'));if(!N.length)return;const R=N[0],z=N[N.length-1];p.shiftKey&&document.activeElement===R?(p.preventDefault(),z.focus()):!p.shiftKey&&document.activeElement===z&&(p.preventDefault(),R.focus())};return window.addEventListener("keydown",D),()=>{window.cancelAnimationFrame(H),window.removeEventListener("keydown",D),r?.focus()}},[]),e.jsx("div",{className:"amx-cal-cardcatch",onMouseDown:a,children:e.jsx("div",{className:"amx-cal-cardwrap",ref:j,role:"dialog","aria-modal":"true","aria-label":l("evcard.editEvent",{title:o||l("evcard.untitled")}),style:q,onMouseDown:r=>r.stopPropagation(),children:e.jsxs("div",{className:"amx-cal-cardin",children:[e.jsxs("div",{className:"amx-cal-card-top",children:[e.jsxs("span",{className:"amx-cal-card-src",children:[e.jsx("span",{className:"amx-cal-card-dot",style:{background:B}}),n.name]}),e.jsx("button",{className:"amx-cal-card-x",ref:E,onClick:a,"aria-label":l("evcard.close"),children:"×"})]}),e.jsxs("div",{className:"amx-cal-card-head",children:[e.jsx("span",{className:"amx-cal-card-ico amx-cal-card-headico",children:e.jsx(T,{})}),v?e.jsx("input",{className:"amx-cal-card-title","aria-label":l("evcard.name"),value:o,placeholder:l("evcard.untitled"),onChange:r=>W(n,d.rowId,r.target.value)}):e.jsx("div",{className:"amx-cal-card-title amx-cal-card-title-ro",children:o||l("evcard.untitled")})]}),i&&e.jsxs("div",{className:"amx-cal-card-row amx-cal-card-timerow",children:[e.jsx("span",{className:"amx-cal-card-ico",children:e.jsx(L,{})}),e.jsxs("div",{className:"amx-cal-card-timebody",children:[x&&!(k&&!h)&&e.jsxs("button",{type:"button",className:"amx-cal-card-timebtn",disabled:h,onClick:()=>y(!0),children:[e.jsxs("span",{className:"amx-cal-card-timehead",children:[x.head,x.badge&&e.jsx("span",{className:"amx-cal-card-badge",children:x.badge})]}),x.date&&e.jsx("span",{className:"amx-cal-card-timesub",children:x.date})]}),!h&&(k||!x)&&e.jsxs("div",{className:"amx-cal-card-timeedit",children:[e.jsx($,{value:s.raw,onChange:r=>F(n,d.rowId,i,r),autoFocus:k}),x&&e.jsx("button",{type:"button",className:"amx-cal-card-timedone",onClick:()=>y(!1),children:l("evcard.done")})]})]})]}),f.length>0&&e.jsx("div",{className:"amx-cal-card-props",children:f.map(r=>e.jsxs("div",{className:"amx-cal-card-row amx-cal-card-prop",children:[e.jsxs("span",{className:"amx-cal-card-key",children:[e.jsx("span",{className:"amx-cal-card-ico",children:e.jsx(ie,{col:r})}),e.jsx("span",{className:"amx-cal-card-keyt",children:r.name})]}),e.jsx("div",{className:"amx-cal-card-ctl",children:m?e.jsx(oe,{db:n,row:d,col:r}):e.jsx("span",{className:"amx-cal-card-val",children:w(d.cells[r.id])||"—"})})]},r.id))}),(I||t)&&e.jsxs("div",{className:"amx-cal-card-foot",children:[I&&e.jsxs("button",{className:"amx-cal-card-open",onClick:()=>{n.openRow?n.openRow(d.rowId):X(n.path),a()},children:[e.jsx(Q,{size:13})," ",n.openRow?l("evcard.openNote"):l("evcard.openDb")]}),t&&e.jsx("button",{className:"amx-cal-card-del",onClick:()=>{se(n,d,o),a()},children:l("evcard.delete")})]})]})})})}const de=new Set(["rowlink","lookup","formula","file"]);function oe({db:s,row:c,col:a}){const{t:l}=S(),n=M(a.type),d=P(a.type),i=U(c.cells[a.id],d),o=t=>F(s,c.rowId,a.id,t),h=ae(t=>a.type==="rowlink"&&a.refDb?t.entries[a.refDb]?.data??null:null);if(n){const t=n.Cell;return e.jsx(t,{value:i,column:a,onChange:o})}if(de.has(a.type)){const t=c.cells[a.id];let m=w(t);return a.type==="rowlink"&&h&&(m=te(t).map(u=>{const v=h.rows.find(f=>f.id===u);return v?ne(h,v,a.titleCol):"已失联"}).join(", ")),e.jsx("span",{className:"amx-cal-card-val",title:a.type==="rowlink"?l("evcard.rowlinkReadonly"):void 0,children:m||"—"})}switch(d){case"checkbox":return e.jsx("input",{"aria-label":a.name,className:"amx-cal-card-check",type:"checkbox",checked:i===!0,onChange:t=>o(t.target.checked?!0:void 0)});case"number":return e.jsx("input",{className:"amx-cal-card-input","aria-label":a.name,type:"number",value:i??"",onChange:t=>t.target.value===""?o(void 0):Number.isFinite(Number(t.target.value))&&o(Number(t.target.value))});case"date":return e.jsx("input",{"aria-label":a.name,className:"amx-cal-card-input",type:"date",value:i,onChange:t=>o(t.target.value||void 0)});case"select":return e.jsxs("select",{"aria-label":a.name,className:"amx-cal-card-input amx-cal-card-select",value:i,onChange:t=>o(t.target.value||void 0),children:[e.jsx("option",{value:"",children:"—"}),(a.options??[]).map(t=>e.jsx("option",{value:t,children:t},t))]});case"multiselect":{const t=i??[];return e.jsxs("div",{className:"amx-cal-card-chips",children:[(a.options??[]).map(m=>{const u=t.includes(m);return e.jsx("button",{className:`amx-cal-card-chip${u?" on":""}`,"aria-pressed":u,onClick:()=>{const v=u?t.filter(f=>f!==m):[...t,m];o(v.length?v:void 0)},children:m},m)}),(a.options??[]).length===0&&e.jsx("span",{className:"amx-cal-card-key",children:l("evcard.noOptions")})]})}case"page":return e.jsx("span",{className:"amx-cal-card-val",children:w(c.cells[a.id])||"—"});default:return e.jsx("input",{"aria-label":a.name,className:"amx-cal-card-input",value:i,onChange:t=>o(t.target.value||void 0)})}}export{pe as E,se as d};
1
+ import{t as g,r as A,u as S,d as b,j as e,D as U}from"./index-BYUntVIZ.js";import{j_ as _,j$ as K,k0 as V,k1 as T,k2 as W,k3 as L,k4 as $,jQ as F,k5 as w,aE as Q,fh as X,k6 as M,k7 as Y,k8 as G,k9 as J,ka as Z,kb as ee,kc as O,kd as P,fx as ae,ke as te,kf as ne}from"./appStore-affnJoin.js";import{n as ce}from"./nativeDownload-Udrv_tmU.js";A({"calevtact.deleted":{zh:"已删除「{title}」",en:"Deleted “{title}”"},"calevtact.untitled":{zh:"未命名",en:"Untitled"},"calevtact.undo":{zh:"撤销",en:"Undo"}});function se(s,c,a){const l=_(s,c.rowId);s.isNoteView||ce({text:g("calevtact.deleted",{title:a||g("calevtact.untitled")}),level:"info",action:{label:g("calevtact.undo"),run:()=>K(s,c,l)}})}A({"evcard.editEvent":{zh:"编辑事件:{title}",en:"Edit event: {title}"},"evcard.untitled":{zh:"未命名",en:"Untitled"},"evcard.close":{zh:"关闭",en:"Close"},"evcard.name":{zh:"名称",en:"Name"},"evcard.done":{zh:"完成",en:"Done"},"evcard.openNote":{zh:"打开笔记",en:"Open note"},"evcard.openDb":{zh:"打开多维表",en:"Open database"},"evcard.delete":{zh:"删除",en:"Delete"},"evcard.rowlinkReadonly":{zh:"关联表列请在表格里编辑",en:"Edit related rows in the table"},"evcard.noOptions":{zh:"(无选项,请在表格里添加)",en:"(No options — add them in the table)"}});function le(s){const c=s.zoom||1,a=360,l=380,n=8*c;let d=s.right+n;d+a*c>window.innerWidth&&(d=Math.max(n,s.left-a*c-n));const i=Math.max(n,Math.min(s.top,window.innerHeight-l*c-n));return{left:d/c,top:i/c}}const re={text:O,number:ee,checkbox:Z,date:L,select:J,multiselect:G,url:Y,page:T};function ie({col:s}){const c=M(s.type);if(c?.icon)return e.jsx(e.Fragment,{children:c.icon});const a=re[P(s.type)]??O;return e.jsx(a,{})}function pe({ev:s,at:c,onClose:a}){const{t:l}=S(),{db:n,row:d,colId:i,title:o}=s,h=!!n.readonly&&!n.writeCell,t=!n.readonly,m=!n.readonly,u=n.columns[0],v=m&&!(n.isNoteView&&u?.type==="page"),f=n.columns.filter(r=>r.id!==u?.id&&r.id!==i),q=le(c),x=i?V(s.raw):null,[k,y]=b.useState(!1),B=s.color??"var(--accent, #6c5ce7)",j=b.useRef(null),E=b.useRef(null),C=b.useRef(a);C.current=a;const I=!n.readonly||!!n.openRow;return b.useEffect(()=>{const r=document.activeElement instanceof HTMLElement?document.activeElement:null,H=window.requestAnimationFrame(()=>{(j.current?.querySelector(".amx-cal-card-title:not(.amx-cal-card-title-ro)")??E.current)?.focus()}),D=p=>{if(p.key==="Escape"){p.preventDefault(),C.current();return}if(p.key!=="Tab"||!j.current)return;const N=Array.from(j.current.querySelectorAll('button:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])'));if(!N.length)return;const R=N[0],z=N[N.length-1];p.shiftKey&&document.activeElement===R?(p.preventDefault(),z.focus()):!p.shiftKey&&document.activeElement===z&&(p.preventDefault(),R.focus())};return window.addEventListener("keydown",D),()=>{window.cancelAnimationFrame(H),window.removeEventListener("keydown",D),r?.focus()}},[]),e.jsx("div",{className:"amx-cal-cardcatch",onMouseDown:a,children:e.jsx("div",{className:"amx-cal-cardwrap",ref:j,role:"dialog","aria-modal":"true","aria-label":l("evcard.editEvent",{title:o||l("evcard.untitled")}),style:q,onMouseDown:r=>r.stopPropagation(),children:e.jsxs("div",{className:"amx-cal-cardin",children:[e.jsxs("div",{className:"amx-cal-card-top",children:[e.jsxs("span",{className:"amx-cal-card-src",children:[e.jsx("span",{className:"amx-cal-card-dot",style:{background:B}}),n.name]}),e.jsx("button",{className:"amx-cal-card-x",ref:E,onClick:a,"aria-label":l("evcard.close"),children:"×"})]}),e.jsxs("div",{className:"amx-cal-card-head",children:[e.jsx("span",{className:"amx-cal-card-ico amx-cal-card-headico",children:e.jsx(T,{})}),v?e.jsx("input",{className:"amx-cal-card-title","aria-label":l("evcard.name"),value:o,placeholder:l("evcard.untitled"),onChange:r=>W(n,d.rowId,r.target.value)}):e.jsx("div",{className:"amx-cal-card-title amx-cal-card-title-ro",children:o||l("evcard.untitled")})]}),i&&e.jsxs("div",{className:"amx-cal-card-row amx-cal-card-timerow",children:[e.jsx("span",{className:"amx-cal-card-ico",children:e.jsx(L,{})}),e.jsxs("div",{className:"amx-cal-card-timebody",children:[x&&!(k&&!h)&&e.jsxs("button",{type:"button",className:"amx-cal-card-timebtn",disabled:h,onClick:()=>y(!0),children:[e.jsxs("span",{className:"amx-cal-card-timehead",children:[x.head,x.badge&&e.jsx("span",{className:"amx-cal-card-badge",children:x.badge})]}),x.date&&e.jsx("span",{className:"amx-cal-card-timesub",children:x.date})]}),!h&&(k||!x)&&e.jsxs("div",{className:"amx-cal-card-timeedit",children:[e.jsx($,{value:s.raw,onChange:r=>F(n,d.rowId,i,r),autoFocus:k}),x&&e.jsx("button",{type:"button",className:"amx-cal-card-timedone",onClick:()=>y(!1),children:l("evcard.done")})]})]})]}),f.length>0&&e.jsx("div",{className:"amx-cal-card-props",children:f.map(r=>e.jsxs("div",{className:"amx-cal-card-row amx-cal-card-prop",children:[e.jsxs("span",{className:"amx-cal-card-key",children:[e.jsx("span",{className:"amx-cal-card-ico",children:e.jsx(ie,{col:r})}),e.jsx("span",{className:"amx-cal-card-keyt",children:r.name})]}),e.jsx("div",{className:"amx-cal-card-ctl",children:m?e.jsx(oe,{db:n,row:d,col:r}):e.jsx("span",{className:"amx-cal-card-val",children:w(d.cells[r.id])||"—"})})]},r.id))}),(I||t)&&e.jsxs("div",{className:"amx-cal-card-foot",children:[I&&e.jsxs("button",{className:"amx-cal-card-open",onClick:()=>{n.openRow?n.openRow(d.rowId):X(n.path),a()},children:[e.jsx(Q,{size:13})," ",n.openRow?l("evcard.openNote"):l("evcard.openDb")]}),t&&e.jsx("button",{className:"amx-cal-card-del",onClick:()=>{se(n,d,o),a()},children:l("evcard.delete")})]})]})})})}const de=new Set(["rowlink","lookup","formula","file"]);function oe({db:s,row:c,col:a}){const{t:l}=S(),n=M(a.type),d=P(a.type),i=U(c.cells[a.id],d),o=t=>F(s,c.rowId,a.id,t),h=ae(t=>a.type==="rowlink"&&a.refDb?t.entries[a.refDb]?.data??null:null);if(n){const t=n.Cell;return e.jsx(t,{value:i,column:a,onChange:o})}if(de.has(a.type)){const t=c.cells[a.id];let m=w(t);return a.type==="rowlink"&&h&&(m=te(t).map(u=>{const v=h.rows.find(f=>f.id===u);return v?ne(h,v,a.titleCol):"已失联"}).join(", ")),e.jsx("span",{className:"amx-cal-card-val",title:a.type==="rowlink"?l("evcard.rowlinkReadonly"):void 0,children:m||"—"})}switch(d){case"checkbox":return e.jsx("input",{"aria-label":a.name,className:"amx-cal-card-check",type:"checkbox",checked:i===!0,onChange:t=>o(t.target.checked?!0:void 0)});case"number":return e.jsx("input",{className:"amx-cal-card-input","aria-label":a.name,type:"number",value:i??"",onChange:t=>t.target.value===""?o(void 0):Number.isFinite(Number(t.target.value))&&o(Number(t.target.value))});case"date":return e.jsx("input",{"aria-label":a.name,className:"amx-cal-card-input",type:"date",value:i,onChange:t=>o(t.target.value||void 0)});case"select":return e.jsxs("select",{"aria-label":a.name,className:"amx-cal-card-input amx-cal-card-select",value:i,onChange:t=>o(t.target.value||void 0),children:[e.jsx("option",{value:"",children:"—"}),(a.options??[]).map(t=>e.jsx("option",{value:t,children:t},t))]});case"multiselect":{const t=i??[];return e.jsxs("div",{className:"amx-cal-card-chips",children:[(a.options??[]).map(m=>{const u=t.includes(m);return e.jsx("button",{className:`amx-cal-card-chip${u?" on":""}`,"aria-pressed":u,onClick:()=>{const v=u?t.filter(f=>f!==m):[...t,m];o(v.length?v:void 0)},children:m},m)}),(a.options??[]).length===0&&e.jsx("span",{className:"amx-cal-card-key",children:l("evcard.noOptions")})]})}case"page":return e.jsx("span",{className:"amx-cal-card-val",children:w(c.cells[a.id])||"—"});default:return e.jsx("input",{"aria-label":a.name,className:"amx-cal-card-input",value:i,onChange:t=>o(t.target.value||void 0)})}}export{pe as E,se as d};
@@ -1 +1 @@
1
- import{u as U,d as i,j as t,t as K,r as xe,cs as Ge,ct as We}from"./index-B5UW6SaE.js";import{H as Je,p as Qe,c as et,d as tt,s as at,f as ot,h as ke,n as nt,u as rt,C as ue,r as st,i as lt,E as ct,M as N,j as it,k as dt}from"./PenRow-BSB-h5Pb.js";import{G as ut,a3 as ht,fw as pt,bm as He,kT as De,cP as Fe,d$ as mt,s6 as he,s7 as Le,s8 as pe,s9 as ft,sa as xt,sb as bt,ej as ze,bq as me,sc as gt,sd as fe}from"./appStore-CidPWYa0.js";import{F as vt,T as yt}from"./type-C5J875vb.js";import{P as wt}from"./pencil-CJsJD7M_.js";import{M as Be}from"./minus-BBdfT_sc.js";import{H as jt}from"./hand-fuehbnkI.js";import{L as St}from"./lock-TSDKuCod.js";import"./client-CPUljePZ.js";import"./pen-tool-ChGmX6g_.js";import"./nativeDownload-B3JGkABw.js";import"./ipc-CNlIRMtU.js";const Et=[["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z",key:"1f1r0c"}]],Oe=ut("diamond",Et),oe=["left","mid","right"],M={left:["lock","hand"],mid:["selection","shape","line","freedraw","highlighter","text","eraser"],right:["frame","laser"]},Nt=[...M.left,...M.mid,...M.right],se="amx.boardToolbar",X=new Set;let C=null;const kt=e=>e<9?String(e+1):e===9?"0":null;function $e(e){const a=new Set,d={left:[],mid:[],right:[]},n=e??{};for(const s of oe)for(const o of Array.isArray(n[s])?n[s]:[])typeof o!="string"||!Nt.includes(o)||a.has(o)||(a.add(o),d[s].push(o));for(const s of oe)for(const o of M[s])a.has(o)||d[s].push(o);return d}const q=()=>{if(C)return C;try{const e=localStorage.getItem(se);if(e)return C=$e(JSON.parse(e))}catch{}return C=M},Lt=e=>{C=$e(e);try{localStorage.setItem(se,JSON.stringify(C))}catch{}for(const a of X)a()},zt=()=>{C=M;try{localStorage.removeItem(se)}catch{}for(const e of X)e()},Rt=e=>oe.every(a=>e[a].length===M[a].length&&e[a].every((d,n)=>d===M[a][n])),_e=e=>(X.add(e),()=>X.delete(e));function Ct(e,a,d,n){const s={left:[...e.left],mid:[...e.mid],right:[...e.right]};for(const o of oe){const r=s[o].indexOf(a);r>=0&&s[o].splice(r,1)}return s[d].splice(Math.max(0,Math.min(n,s[d].length)),0,a),s}typeof window<"u"&&window.addEventListener("storage",e=>{if(e.key===se){C=null;for(const a of X)a()}});xe({"boardtoolbar.shapeRectangle":{zh:"矩形",en:"Rectangle"},"boardtoolbar.shapeDiamond":{zh:"菱形",en:"Diamond"},"boardtoolbar.shapeEllipse":{zh:"椭圆",en:"Ellipse"},"boardtoolbar.lineArrow":{zh:"箭头",en:"Arrow"},"boardtoolbar.lineSegment":{zh:"线段",en:"Line"},"boardtoolbar.toolLock":{zh:"保持工具选中",en:"Keep tool selected"},"boardtoolbar.toolHand":{zh:"抓手",en:"Hand"},"boardtoolbar.toolSelection":{zh:"选择",en:"Selection"},"boardtoolbar.toolShape":{zh:"形状",en:"Shape"},"boardtoolbar.toolLine":{zh:"线",en:"Line"},"boardtoolbar.toolFreedraw":{zh:"画笔",en:"Draw"},"boardtoolbar.toolHighlighter":{zh:"荧光笔",en:"Highlighter"},"boardtoolbar.toolText":{zh:"文字",en:"Text"},"boardtoolbar.toolEraser":{zh:"橡皮",en:"Eraser"},"boardtoolbar.toolFrame":{zh:"画框",en:"Frame"},"boardtoolbar.toolLaser":{zh:"激光笔",en:"Laser pointer"}});const ne=["rectangle","diamond","ellipse"],re=["arrow","line"],Mt=()=>({shape:"rectangle",line:"arrow"}),Pt={rectangle:Fe,diamond:Oe,ellipse:De},At={arrow:He,line:Be},Re={get rectangle(){return K("boardtoolbar.shapeRectangle")},get diamond(){return K("boardtoolbar.shapeDiamond")},get ellipse(){return K("boardtoolbar.shapeEllipse")}},Ce={get arrow(){return K("boardtoolbar.lineArrow")},get line(){return K("boardtoolbar.lineSegment")}},It={lock:"boardtoolbar.toolLock",hand:"boardtoolbar.toolHand",selection:"boardtoolbar.toolSelection",shape:"boardtoolbar.toolShape",line:"boardtoolbar.toolLine",freedraw:"boardtoolbar.toolFreedraw",highlighter:"boardtoolbar.toolHighlighter",text:"boardtoolbar.toolText",eraser:"boardtoolbar.toolEraser",frame:"boardtoolbar.toolFrame",laser:"boardtoolbar.toolLaser"};function Ye(e,a,d){const n=a.getAppState();switch(e){case"lock":a.setActiveTool({...n.activeTool,locked:!n.activeTool.locked});return;case"shape":a.setActiveTool({type:d.group.current.shape});return;case"line":a.setActiveTool({type:d.group.current.line});return;case"freedraw":et(a,d.pen),a.setActiveTool({type:"freedraw"});return;case"highlighter":Qe(a,d.pen,"highlighter");return;default:a.setActiveTool({type:e})}}function Tt(e,a){switch(e){case"lock":return St;case"hand":return jt;case"selection":return mt;case"shape":return Pt[a.shape];case"line":return At[a.line];case"freedraw":return wt;case"highlighter":return Je;case"text":return yt;case"eraser":return pt;case"frame":return vt;case"laser":return ht}}function Ht(e,a,d){const n=a.tool;switch(e){case"lock":return a.locked;case"shape":return ne.includes(n);case"line":return re.includes(n);case"freedraw":return n==="freedraw"&&d.active!=="highlighter";case"highlighter":return n==="freedraw"&&d.active==="highlighter";default:return n===e}}const Me=["left","mid","right"];function Dt({api:e,ui:a,refs:d}){const{t:n}=U(),s=i.useSyncExternalStore(_e,q,q),[o,r]=i.useState(null),m=i.useRef(null),b=i.useRef(null),u=o?.layout??s;if(!e)return null;const le=d.group.current,P=d.pen.current,Z=(f,x)=>{const g=b.current;if(!g)return null;let y=null,B=1/0;for(const v of Me){const R=g.querySelector(`[data-seg="${v}"]`);if(!R)continue;const j=R.getBoundingClientRect();if(f>=j.left&&f<=j.right){y=v;break}const J=f<j.left?j.left-f:f-j.right;J<B&&(B=J,y=v)}if(!y)return null;const L=[...g.querySelectorAll(`[data-seg="${y}"] [data-tool]`)];let E=L.length;for(let v=0;v<L.length;v++){const R=L[v].getBoundingClientRect();if(f<R.left+R.width/2){E=v;break}}const z=L.findIndex(v=>v.dataset.tool===x);return z>=0&&z<E&&E--,{seg:y,index:E}},G=(f,x)=>{f.button===0&&(m.current={x:f.clientX,y:f.clientY,id:x,moved:!1},f.currentTarget.setPointerCapture(f.pointerId))},W=f=>{const x=m.current;if(!x||!x.moved&&Math.hypot(f.clientX-x.x,f.clientY-x.y)<5)return;x.moved=!0;const g=Z(f.clientX,x.id);g&&r({id:x.id,layout:Ct(s,x.id,g.seg,g.index)})},A=i.useRef(0),V=f=>{const x=m.current;m.current=null,f.currentTarget.releasePointerCapture?.(f.pointerId),A.current=x?.moved?Date.now():0,x?.moved&&o&&Lt(o.layout),r(null)},F=f=>{if(Date.now()-A.current<400){A.current=0;return}Ye(f,e,d)};return t.jsx("div",{className:"amx-toolbar",ref:b,"data-dragging":o?"":void 0,children:Me.map((f,x)=>t.jsxs("div",{className:"amx-toolbar-seg","data-seg":f,children:[x>0&&t.jsx("span",{className:"amx-toolbar-sep","aria-hidden":!0}),u[f].map((g,y)=>{const B=Tt(g,le),L=Ht(g,a,P),E=f==="mid"?kt(y):null,z=n(It[g]);return t.jsxs("button",{type:"button","data-tool":g,"data-on":L||void 0,"data-drag":o?.id===g||void 0,className:"amx-tool",title:E?`${z} — ${E}`:z,"aria-label":z,"aria-pressed":L,onPointerDown:v=>G(v,g),onPointerMove:W,onPointerUp:V,onClick:()=>F(g),onPointerCancel:()=>{m.current=null,A.current=0,r(null)},children:[t.jsx(B,{size:17}),E&&t.jsx("span",{className:"amx-tool-key",children:E})]},g)})]},f))})}xe({"panelextras.secPen":{zh:"笔",en:"Pen"},"panelextras.secStroke":{zh:"笔触",en:"Stroke"},"panelextras.capRound":{zh:"圆头",en:"Round cap"},"panelextras.capButt":{zh:"方头",en:"Flat cap"},"panelextras.secShape":{zh:"形状",en:"Shape"},"panelextras.secLine":{zh:"线",en:"Line"}});const Ft={rectangle:Fe,diamond:Oe,ellipse:De},Bt={arrow:He,line:Be};function te({title:e,children:a}){return t.jsxs("fieldset",{className:"amx-panelsec",children:[t.jsx("legend",{children:e}),a]})}function Ot({api:e,ui:a,pen:d,group:n}){const{t:s}=U();if(!e)return null;const o=a.tool;if(o==="freedraw"){const r=d.current.active==="highlighter";return t.jsxs(t.Fragment,{children:[t.jsx(te,{title:s("panelextras.secPen"),children:t.jsx(tt,{api:e,ui:a,state:d})}),r&&t.jsx(te,{title:s("panelextras.secStroke"),children:t.jsx("div",{className:"amx-panelrow buttonList",children:[!1,!0].map(m=>{const b=a.capRound===m,u=s(m?"panelextras.capRound":"panelextras.capButt");return t.jsx("label",{className:b?"active":"",title:u,"data-on":b||void 0,onClick:()=>at(e,m),children:t.jsx("svg",{width:"18",height:"18",viewBox:"0 0 18 18","aria-label":u,children:t.jsx("line",{x1:"4",y1:"9",x2:"14",y2:"9",stroke:"currentColor",strokeWidth:"7",strokeLinecap:m?"round":"butt"})})},String(m))})})})]})}return ne.includes(o)?t.jsx(te,{title:s("panelextras.secShape"),children:t.jsx("div",{className:"amx-panelrow buttonList",children:ne.map(r=>{const m=Ft[r],b=o===r;return t.jsx("label",{className:b?"active":"",title:Re[r],"data-on":b||void 0,onClick:()=>{n.current.shape=r,e.setActiveTool({type:r})},children:t.jsx(m,{size:16,"aria-label":Re[r]})},r)})})}):re.includes(o)?t.jsx(te,{title:s("panelextras.secLine"),children:t.jsx("div",{className:"amx-panelrow buttonList",children:re.map(r=>{const m=Bt[r],b=o===r;return t.jsx("label",{className:b?"active":"",title:Ce[r],"data-on":b||void 0,onClick:()=>{n.current.line=r,e.setActiveTool({type:r})},children:t.jsx(m,{size:16,"aria-label":Ce[r]})},r)})})}):null}const $t=()=>({tool:"selection",locked:!1,snapshot:null,capRound:null}),_t=(e,a)=>e.tool===a.tool&&e.locked===a.locked&&e.snapshot===a.snapshot&&e.capRound===a.capRound;xe({"excalicanvas.addPage":{zh:"+ 新建页面",en:"+ New page"},"excalicanvas.delBlankPage":{zh:"删掉这张空白页",en:"Delete this blank page"},"excalicanvas.modeFull":{zh:"常规",en:"Standard"},"excalicanvas.modeCompact":{zh:"紧凑",en:"Compact"},"excalicanvas.paper":{zh:"纸张",en:"Paper"},"excalicanvas.paperNone":{zh:"无限",en:"Infinite"},"excalicanvas.portrait":{zh:"纵向",en:"Portrait"},"excalicanvas.landscape":{zh:"横向",en:"Landscape"},"excalicanvas.flow":{zh:"页面排布",en:"Page layout"},"excalicanvas.flowV":{zh:"上下",en:"Top to bottom"},"excalicanvas.flowH":{zh:"左右",en:"Left to right"},"excalicanvas.grid":{zh:"网格",en:"Grid"},"excalicanvas.gridH":{zh:"横线",en:"Horizontal"},"excalicanvas.gridV":{zh:"竖线",en:"Vertical"},"excalicanvas.opacity":{zh:"淡浓",en:"Opacity"},"excalicanvas.uiMode":{zh:"属性面板",en:"Properties panel"},"excalicanvas.allBoards":{zh:"所有白板",en:"All boards"},"excalicanvas.toolbar":{zh:"工具栏",en:"Toolbar"},"excalicanvas.resetOrder":{zh:"恢复默认顺序",en:"Reset to default order"}});const ae=4,Yt="linear-gradient(90deg, var(--amx-grid-line) 0 1px, transparent 1px)",Ut="linear-gradient(180deg, var(--amx-grid-line) 0 1px, transparent 1px)",Pe=(e,a,d)=>Math.min(Math.max(e,a),d),Ae=(e,a)=>(e%a+a)%a;function Ie(e,a,d){const[n,s]=i.useState(null);return i.useEffect(()=>{if(!e)return;let o=null;const r=()=>{const b=e.querySelector(a);if(!b){o&&(o.remove(),o=null,s(null));return}if(o&&o.parentElement===b)return;o?.remove();const u=document.createElement("div");u.className=d,b.insertBefore(u,b.firstChild),o=u,s(u)};r();const m=new MutationObserver(r);return m.observe(e,{childList:!0,subtree:!0}),()=>{m.disconnect(),o?.remove(),s(null)}},[e,a,d]),n}function Vt(e){i.useEffect(()=>{const a=new Map,d=o=>{o.classList.contains("amx-board-portal")||o.classList.add("amx-board-portal"),o.style.zoom!==e&&(o.style.zoom=e)},n=o=>{if(!(o instanceof HTMLElement)||!o.classList.contains("excalidraw")||o.closest(".amx-boardhost")||(d(o),a.has(o)))return;const r=new MutationObserver(()=>d(o));r.observe(o,{attributes:!0,attributeFilter:["class","style"]}),a.set(o,r)};for(const o of[...document.body.children])n(o);const s=new MutationObserver(o=>{for(const r of o){for(const m of r.addedNodes)n(m);for(const m of r.removedNodes)m instanceof HTMLElement&&a.has(m)&&(a.get(m)?.disconnect(),a.delete(m))}});return s.observe(document.body,{childList:!0}),()=>{s.disconnect();for(const o of a.values())o.disconnect()}},[e])}function ia({initialData:e,theme:a,langCode:d,settings:n,onSettings:s,onSceneChange:o,registerApplier:r,viewMode:m=!1}){const{t:b}=U(),[u,le]=i.useState(null),P=i.useRef(null),Z=i.useRef([]),G=i.useRef(null),W=i.useRef(null),A=i.useRef(null),V=i.useRef(!1),[F,f]=i.useState(null),[x,g]=i.useState(null),y=i.useMemo(()=>he(n)?Le(n,x):{min:0,max:0},[n,x]),B=i.useMemo(()=>Array.from({length:y.max-y.min+1},(c,l)=>y.min+l),[y]),L=i.useMemo(()=>Le({...n,pageFirst:0,pageLast:0},x),[n,x]),E=i.useSyncExternalStore(ot,ke,ke),z=i.useRef(nt()),v=i.useRef(Mt()),R=i.useMemo(()=>({pen:z,group:v}),[]),[j,J]=i.useState($t),[Ue,Ve]=i.useState(""),[be,ge]=i.useState(null),ve=Ie(be,".App-toolbar","amx-toolbar-slot"),ye=Ie(be,".Island > .selected-shape-actions, .Island > .compact-shape-actions, .Island.compact-shape-actions","amx-panel-slot");Vt(Ue),rt(u,j.tool,j.snapshot,z),i.useEffect(()=>{ne.includes(j.tool)&&(v.current.shape=j.tool),re.includes(j.tool)&&(v.current.line=j.tool)},[j.tool]),i.useEffect(()=>{if(!u)return;const c=l=>{if(l.metaKey||l.ctrlKey||l.altKey||!/^[0-9]$/.test(l.key))return;const h=P.current?.querySelector(".excalidraw"),p=l.target;if(!h||!p||!h.contains(p)||p.isContentEditable||p.tagName==="INPUT"||p.tagName==="TEXTAREA")return;const S=q().mid[l.key==="0"?9:Number(l.key)-1];S&&(l.preventDefault(),l.stopImmediatePropagation(),Ye(S,u,R))};return window.addEventListener("keydown",c,!0),()=>window.removeEventListener("keydown",c,!0)},[u,R]),i.useEffect(()=>{u?.setDesktopUIMode(E)},[u,E]),i.useEffect(()=>{if(!(!u||!r))return r(c=>{const l=u.getSceneElementsIncludingDeleted(),h=Ge(l,c.elements??[]);if(We(h,l))return;u.updateScene({elements:st(h,null),captureUpdate:ue.NEVER});const p=Object.values(c.files??{});p.length&&u.addFiles(p)})},[u,r]),i.useEffect(()=>{const c=u&&P.current?.querySelector(".excalidraw");if(!c)return;const l=document.createElement("div");return l.style.display="contents",c.insertBefore(l,c.firstChild),f(l),ge(c),()=>{l.remove(),f(null),ge(null)}},[u]);const O=i.useCallback(c=>{const l=G.current,h=Z.current.filter(w=>!!w);if(!l||!h.length)return;const p=c.zoom.value,S=he(n),I=n.gridV*p,Q=n.gridH*p,ee=[],ie=[],de=[],Ke=S||I<ae?0:Ae(c.scrollX*p,I),Xe=S||Q<ae?0:Ae(c.scrollY*p,Q);I>=ae&&(ee.push(Yt),ie.push(`${I}px 100%`),de.push(`${Ke}px 0px`)),Q>=ae&&(ee.push(Ut),ie.push(`100% ${Q}px`),de.push(`0px ${Xe}px`));for(const w of h)w.style.backgroundImage=ee.join(", "),w.style.backgroundSize=ie.join(", "),w.style.backgroundPosition=de.join(", "),w.style.opacity=n.gridOpacity>=100?"":String(n.gridOpacity/100),w.style.display=ee.length||S?"":"none";if(!S){Object.assign(h[0].style,{left:"0px",top:"0px",width:"100%",height:"100%"}),l.style.display="none";return}const je=(w,k,T)=>{if(!w)return;const H=(k.x+c.scrollX)*p,Y=(k.y+c.scrollY)*p,D=22,qe=n.flow==="h"?T?H+k.w*p+D:H-D:H+k.w*p/2,Ze=n.flow==="h"?Y+k.h*p/2:T?Y+k.h*p+D:Y-D;w.style.left=`${qe}px`,w.style.top=`${Ze}px`},Se=[];for(let w=0;w<h.length;w++){const k=pe(n,y.min+w);if(!k)continue;const T=(k.x+c.scrollX)*p,H=(k.y+c.scrollY)*p,Y=k.w*p,D=k.h*p;Object.assign(h[w].style,{left:`${T}px`,top:`${H}px`,width:`${Y}px`,height:`${D}px`}),Se.push(`M${T.toFixed(1)} ${H.toFixed(1)}H${(T+Y).toFixed(1)}V${(H+D).toFixed(1)}H${T.toFixed(1)}Z`)}const Ee=pe(n,y.min),Ne=pe(n,y.max);Ee&&je(W.current,Ee,!1),Ne&&je(A.current,Ne,!0),l.style.display="",l.style.clipPath=`path(evenodd,"M0 0H${l.offsetWidth}V${l.offsetHeight}H0Z ${Se.join(" ")}")`},[n,y]),$=i.useCallback(c=>{if(!u||V.current)return c;const l=u.getAppState();if(l.cursorButton==="down")return c;const h=ft(n,{scrollX:c.scrollX,scrollY:c.scrollY,zoom:c.zoom.value,width:l.width,height:l.height},x);if(!h)return c;V.current=!0;try{u.updateScene({appState:{scrollX:h.scrollX,scrollY:h.scrollY,zoom:{value:h.zoom}},captureUpdate:ue.NEVER})}finally{V.current=!1}return{scrollX:h.scrollX,scrollY:h.scrollY,zoom:{value:h.zoom}}},[u,n,x]),ce=i.useCallback(c=>{const l=xt(c);g(h=>h&&l&&h.minX===l.minX&&h.minY===l.minY&&h.maxX===l.maxX&&h.maxY===l.maxY?h:l)},[]),we=i.useRef(n.flow);i.useEffect(()=>{const c=we.current,l=n.flow;if(we.current=l,c===l||!u||!n.paper)return;const h=u.getSceneElements();h.length&&u.updateScene({elements:h.map(p=>{const S=bt(n,c,l,p.x,p.y);return S.x===p.x&&S.y===p.y?p:lt(p,{x:S.x,y:S.y})}),captureUpdate:ue.IMMEDIATELY})},[u,n]),i.useEffect(()=>{!u||!F||(ce(u.getSceneElements()),O($(u.getAppState())))},[u,F,O,$,ce]);const _=i.useCallback(()=>{const c=P.current;if(!c)return;const l=c.parentElement?.currentCSSZoom??1,h=Math.abs(l-1)>1e-6?String(1/l):"";c.style.zoom!==h&&(c.style.zoom=h),Ve(p=>p===h?p:h)},[]);return i.useEffect(()=>(_(),window.addEventListener(ze,_),()=>window.removeEventListener(ze,_)),[_]),i.useEffect(()=>{const c=P.current;if(!c||!u||typeof ResizeObserver>"u")return;const l=new ResizeObserver(()=>{_(),O($(u.getAppState()))});return l.observe(c),()=>l.disconnect()},[u,O,$,_]),t.jsxs("div",{className:"amx-boardhost",ref:P,children:[t.jsx(ct,{onExcalidrawAPI:le,initialData:e,theme:a,langCode:d,viewModeEnabled:m,onScrollChange:(c,l,h)=>O($({scrollX:c,scrollY:l,zoom:h})),onChange:(c,l,h)=>{ce(c),O($(l));const p=l.currentStrokeOptions,S={tool:l.activeTool.type,locked:!!l.activeTool.locked,snapshot:l.resetCustomPen??null,capRound:p?!!p.options?.start?.cap:null};J(I=>_t(I,S)?I:S),o(dt(c,l,h,"local"))},children:t.jsxs(N,{children:[t.jsx(N.DefaultItems.LoadScene,{}),t.jsx(N.DefaultItems.SaveToActiveFile,{}),t.jsx(N.DefaultItems.Export,{}),t.jsx(N.DefaultItems.SaveAsImage,{}),t.jsx(N.DefaultItems.SearchMenu,{}),t.jsx(N.DefaultItems.Help,{}),t.jsx(N.DefaultItems.ClearCanvas,{}),t.jsx(N.Separator,{}),t.jsx(N.DefaultItems.ToggleTheme,{allowSystemTheme:!1}),t.jsx(N.DefaultItems.ChangeCanvasBackground,{}),t.jsx(N.Separator,{}),t.jsx(N.ItemCustom,{children:t.jsx(qt,{settings:n,onSettings:s,uiMode:E,onUiMode:it})})]})}),ve&&me.createPortal(t.jsx(Dt,{api:u,ui:j,refs:R}),ve),ye&&me.createPortal(t.jsx(Ot,{api:u,ui:j,pen:z,group:v}),ye),F&&me.createPortal(t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"amx-matte",ref:G,onWheel:Kt}),B.map((c,l)=>t.jsx("div",{className:"amx-grid","data-page":c,ref:h=>{Z.current[l]=h}},c)),!!he(n)&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"amx-pageadd","data-end":"before","data-flow":n.flow,ref:W,children:[t.jsx("button",{onClick:()=>s({pageFirst:n.pageFirst-1}),children:b("excalicanvas.addPage")}),n.pageFirst<L.min&&t.jsx("button",{className:"amx-pageadd-del",title:b("excalicanvas.delBlankPage"),onClick:()=>s({pageFirst:n.pageFirst+1}),children:"−"})]}),t.jsxs("div",{className:"amx-pageadd","data-end":"after","data-flow":n.flow,ref:A,children:[t.jsx("button",{onClick:()=>s({pageLast:n.pageLast+1}),children:b("excalicanvas.addPage")}),n.pageLast>L.max&&t.jsx("button",{className:"amx-pageadd-del",title:b("excalicanvas.delBlankPage"),onClick:()=>s({pageLast:n.pageLast-1}),children:"−"})]})]})]}),F)]})}function Kt(e){const a=e.currentTarget.closest(".excalidraw")?.querySelector("canvas.excalidraw__canvas.interactive");a&&(e.preventDefault(),a.dispatchEvent(new WheelEvent("wheel",{deltaX:e.deltaX,deltaY:e.deltaY,deltaMode:e.deltaMode,clientX:e.clientX,clientY:e.clientY,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey,bubbles:!0,cancelable:!0})))}const Xt=[{id:"full",labelKey:"excalicanvas.modeFull"},{id:"compact",labelKey:"excalicanvas.modeCompact"}];function qt({settings:e,onSettings:a,uiMode:d,onUiMode:n}){const{t:s}=U(),o=a;return t.jsxs("div",{className:"amx-bs",children:[t.jsx("div",{className:"amx-bs-h",children:s("excalicanvas.paper")}),t.jsxs("div",{className:"amx-bs-row",children:[t.jsx("button",{className:"amx-bs-chip","data-on":!e.paper||void 0,onClick:()=>o({paper:null}),children:s("excalicanvas.paperNone")}),gt.map(r=>t.jsx("button",{className:"amx-bs-chip","data-on":e.paper===r||void 0,onClick:()=>o({paper:r}),children:r},r))]}),e.paper&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"amx-bs-row",children:[t.jsx("button",{className:"amx-bs-chip","data-on":!e.landscape||void 0,onClick:()=>o({landscape:!1}),children:s("excalicanvas.portrait")}),t.jsx("button",{className:"amx-bs-chip","data-on":e.landscape||void 0,onClick:()=>o({landscape:!0}),children:s("excalicanvas.landscape")})]}),t.jsx("div",{className:"amx-bs-h",children:s("excalicanvas.flow")}),t.jsxs("div",{className:"amx-bs-row",children:[t.jsx("button",{className:"amx-bs-chip","data-on":e.flow==="v"||void 0,onClick:()=>o({flow:"v"}),children:s("excalicanvas.flowV")}),t.jsx("button",{className:"amx-bs-chip","data-on":e.flow==="h"||void 0,onClick:()=>o({flow:"h"}),children:s("excalicanvas.flowH")})]})]}),t.jsx("div",{className:"amx-bs-h",children:s("excalicanvas.grid")}),t.jsx(Te,{label:s("excalicanvas.gridH"),value:e.gridH,onChange:r=>o({gridH:r})}),t.jsx(Te,{label:s("excalicanvas.gridV"),value:e.gridV,onChange:r=>o({gridV:r})}),t.jsx(Gt,{value:e.gridOpacity,disabled:e.gridH<=0&&e.gridV<=0,onCommit:r=>o({gridOpacity:r})}),t.jsxs("div",{className:"amx-bs-h",children:[s("excalicanvas.uiMode")," ",t.jsx("span",{className:"amx-bs-note",children:s("excalicanvas.allBoards")})]}),t.jsx("div",{className:"amx-bs-row",children:Xt.map(r=>t.jsx("button",{className:"amx-bs-chip","data-on":d===r.id||void 0,onClick:()=>n(r.id),children:s(r.labelKey)},r.id))}),t.jsx(Zt,{})]})}function Zt(){const{t:e}=U(),a=i.useSyncExternalStore(_e,q,q);return Rt(a)?null:t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"amx-bs-h",children:[e("excalicanvas.toolbar")," ",t.jsx("span",{className:"amx-bs-note",children:e("excalicanvas.allBoards")})]}),t.jsx("div",{className:"amx-bs-row",children:t.jsx("button",{className:"amx-bs-chip",onClick:()=>zt(),children:e("excalicanvas.resetOrder")})})]})}function Gt({value:e,disabled:a,onCommit:d}){const{t:n}=U(),[s,o]=i.useState(e);return i.useEffect(()=>o(e),[e]),t.jsxs("label",{className:"amx-bs-check",children:[t.jsx("span",{className:"amx-bs-lbl",children:n("excalicanvas.opacity")}),t.jsx("input",{className:"amx-bs-range",type:"range",min:10,max:100,step:5,disabled:a,value:s,onChange:r=>{const m=Number(r.target.value);o(m);for(const b of r.currentTarget.closest(".excalidraw")?.querySelectorAll(".amx-grid")??[])b.style.opacity=m>=100?"":String(m/100)},onPointerUp:()=>d(s),onKeyUp:()=>d(s)}),t.jsxs("span",{className:"amx-bs-note",children:[s,"%"]})]})}function Te({label:e,value:a,onChange:d}){const[n,s]=i.useState(String(a||fe));i.useEffect(()=>{a>0&&s(String(a))},[a]);const o=()=>{const r=Math.round(Number(n)),m=Number.isFinite(r)&&r>0?Pe(r,4,400):fe;s(String(m)),a>0&&m!==a&&d(m)};return t.jsxs("label",{className:"amx-bs-check",children:[t.jsx("input",{type:"checkbox",checked:a>0,onChange:r=>d(r.target.checked?Pe(Math.round(Number(n))||fe,4,400):0)}),t.jsx("span",{className:"amx-bs-lbl",children:e}),t.jsx("input",{className:"amx-bs-num",type:"number",min:4,max:400,disabled:a<=0,value:n,onChange:r=>s(r.target.value),onBlur:o,onKeyDown:r=>{r.key==="Enter"&&o()}}),t.jsx("span",{className:"amx-bs-note",children:"px"})]})}export{ia as default};
1
+ import{u as U,d as i,j as t,t as K,r as xe,cs as Ge,ct as We}from"./index-BYUntVIZ.js";import{H as Je,p as Qe,c as et,d as tt,s as at,f as ot,h as ke,n as nt,u as rt,C as ue,r as st,i as lt,E as ct,M as N,j as it,k as dt}from"./PenRow-BY-MZLDQ.js";import{G as ut,a3 as ht,fw as pt,bm as He,kT as De,cP as Fe,d$ as mt,s7 as he,s8 as Le,s9 as pe,sa as ft,sb as xt,sc as bt,ej as ze,bq as me,sd as gt,se as fe}from"./appStore-affnJoin.js";import{F as vt,T as yt}from"./type-DmIL6FB-.js";import{P as wt}from"./pencil-DGiTRzW1.js";import{M as Be}from"./minus-CfoZ4oxr.js";import{H as jt}from"./hand-DRu7IJdU.js";import{L as St}from"./lock-kffGfeHt.js";import"./client-BqhpYbYL.js";import"./pen-tool-D_Y9We9x.js";import"./nativeDownload-Udrv_tmU.js";import"./ipc-D7yENkjV.js";const Et=[["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z",key:"1f1r0c"}]],Oe=ut("diamond",Et),oe=["left","mid","right"],M={left:["lock","hand"],mid:["selection","shape","line","freedraw","highlighter","text","eraser"],right:["frame","laser"]},Nt=[...M.left,...M.mid,...M.right],se="amx.boardToolbar",X=new Set;let C=null;const kt=e=>e<9?String(e+1):e===9?"0":null;function $e(e){const a=new Set,d={left:[],mid:[],right:[]},n=e??{};for(const s of oe)for(const o of Array.isArray(n[s])?n[s]:[])typeof o!="string"||!Nt.includes(o)||a.has(o)||(a.add(o),d[s].push(o));for(const s of oe)for(const o of M[s])a.has(o)||d[s].push(o);return d}const q=()=>{if(C)return C;try{const e=localStorage.getItem(se);if(e)return C=$e(JSON.parse(e))}catch{}return C=M},Lt=e=>{C=$e(e);try{localStorage.setItem(se,JSON.stringify(C))}catch{}for(const a of X)a()},zt=()=>{C=M;try{localStorage.removeItem(se)}catch{}for(const e of X)e()},Rt=e=>oe.every(a=>e[a].length===M[a].length&&e[a].every((d,n)=>d===M[a][n])),_e=e=>(X.add(e),()=>X.delete(e));function Ct(e,a,d,n){const s={left:[...e.left],mid:[...e.mid],right:[...e.right]};for(const o of oe){const r=s[o].indexOf(a);r>=0&&s[o].splice(r,1)}return s[d].splice(Math.max(0,Math.min(n,s[d].length)),0,a),s}typeof window<"u"&&window.addEventListener("storage",e=>{if(e.key===se){C=null;for(const a of X)a()}});xe({"boardtoolbar.shapeRectangle":{zh:"矩形",en:"Rectangle"},"boardtoolbar.shapeDiamond":{zh:"菱形",en:"Diamond"},"boardtoolbar.shapeEllipse":{zh:"椭圆",en:"Ellipse"},"boardtoolbar.lineArrow":{zh:"箭头",en:"Arrow"},"boardtoolbar.lineSegment":{zh:"线段",en:"Line"},"boardtoolbar.toolLock":{zh:"保持工具选中",en:"Keep tool selected"},"boardtoolbar.toolHand":{zh:"抓手",en:"Hand"},"boardtoolbar.toolSelection":{zh:"选择",en:"Selection"},"boardtoolbar.toolShape":{zh:"形状",en:"Shape"},"boardtoolbar.toolLine":{zh:"线",en:"Line"},"boardtoolbar.toolFreedraw":{zh:"画笔",en:"Draw"},"boardtoolbar.toolHighlighter":{zh:"荧光笔",en:"Highlighter"},"boardtoolbar.toolText":{zh:"文字",en:"Text"},"boardtoolbar.toolEraser":{zh:"橡皮",en:"Eraser"},"boardtoolbar.toolFrame":{zh:"画框",en:"Frame"},"boardtoolbar.toolLaser":{zh:"激光笔",en:"Laser pointer"}});const ne=["rectangle","diamond","ellipse"],re=["arrow","line"],Mt=()=>({shape:"rectangle",line:"arrow"}),Pt={rectangle:Fe,diamond:Oe,ellipse:De},At={arrow:He,line:Be},Re={get rectangle(){return K("boardtoolbar.shapeRectangle")},get diamond(){return K("boardtoolbar.shapeDiamond")},get ellipse(){return K("boardtoolbar.shapeEllipse")}},Ce={get arrow(){return K("boardtoolbar.lineArrow")},get line(){return K("boardtoolbar.lineSegment")}},It={lock:"boardtoolbar.toolLock",hand:"boardtoolbar.toolHand",selection:"boardtoolbar.toolSelection",shape:"boardtoolbar.toolShape",line:"boardtoolbar.toolLine",freedraw:"boardtoolbar.toolFreedraw",highlighter:"boardtoolbar.toolHighlighter",text:"boardtoolbar.toolText",eraser:"boardtoolbar.toolEraser",frame:"boardtoolbar.toolFrame",laser:"boardtoolbar.toolLaser"};function Ye(e,a,d){const n=a.getAppState();switch(e){case"lock":a.setActiveTool({...n.activeTool,locked:!n.activeTool.locked});return;case"shape":a.setActiveTool({type:d.group.current.shape});return;case"line":a.setActiveTool({type:d.group.current.line});return;case"freedraw":et(a,d.pen),a.setActiveTool({type:"freedraw"});return;case"highlighter":Qe(a,d.pen,"highlighter");return;default:a.setActiveTool({type:e})}}function Tt(e,a){switch(e){case"lock":return St;case"hand":return jt;case"selection":return mt;case"shape":return Pt[a.shape];case"line":return At[a.line];case"freedraw":return wt;case"highlighter":return Je;case"text":return yt;case"eraser":return pt;case"frame":return vt;case"laser":return ht}}function Ht(e,a,d){const n=a.tool;switch(e){case"lock":return a.locked;case"shape":return ne.includes(n);case"line":return re.includes(n);case"freedraw":return n==="freedraw"&&d.active!=="highlighter";case"highlighter":return n==="freedraw"&&d.active==="highlighter";default:return n===e}}const Me=["left","mid","right"];function Dt({api:e,ui:a,refs:d}){const{t:n}=U(),s=i.useSyncExternalStore(_e,q,q),[o,r]=i.useState(null),m=i.useRef(null),b=i.useRef(null),u=o?.layout??s;if(!e)return null;const le=d.group.current,P=d.pen.current,Z=(f,x)=>{const g=b.current;if(!g)return null;let y=null,B=1/0;for(const v of Me){const R=g.querySelector(`[data-seg="${v}"]`);if(!R)continue;const j=R.getBoundingClientRect();if(f>=j.left&&f<=j.right){y=v;break}const J=f<j.left?j.left-f:f-j.right;J<B&&(B=J,y=v)}if(!y)return null;const L=[...g.querySelectorAll(`[data-seg="${y}"] [data-tool]`)];let E=L.length;for(let v=0;v<L.length;v++){const R=L[v].getBoundingClientRect();if(f<R.left+R.width/2){E=v;break}}const z=L.findIndex(v=>v.dataset.tool===x);return z>=0&&z<E&&E--,{seg:y,index:E}},G=(f,x)=>{f.button===0&&(m.current={x:f.clientX,y:f.clientY,id:x,moved:!1},f.currentTarget.setPointerCapture(f.pointerId))},W=f=>{const x=m.current;if(!x||!x.moved&&Math.hypot(f.clientX-x.x,f.clientY-x.y)<5)return;x.moved=!0;const g=Z(f.clientX,x.id);g&&r({id:x.id,layout:Ct(s,x.id,g.seg,g.index)})},A=i.useRef(0),V=f=>{const x=m.current;m.current=null,f.currentTarget.releasePointerCapture?.(f.pointerId),A.current=x?.moved?Date.now():0,x?.moved&&o&&Lt(o.layout),r(null)},F=f=>{if(Date.now()-A.current<400){A.current=0;return}Ye(f,e,d)};return t.jsx("div",{className:"amx-toolbar",ref:b,"data-dragging":o?"":void 0,children:Me.map((f,x)=>t.jsxs("div",{className:"amx-toolbar-seg","data-seg":f,children:[x>0&&t.jsx("span",{className:"amx-toolbar-sep","aria-hidden":!0}),u[f].map((g,y)=>{const B=Tt(g,le),L=Ht(g,a,P),E=f==="mid"?kt(y):null,z=n(It[g]);return t.jsxs("button",{type:"button","data-tool":g,"data-on":L||void 0,"data-drag":o?.id===g||void 0,className:"amx-tool",title:E?`${z} — ${E}`:z,"aria-label":z,"aria-pressed":L,onPointerDown:v=>G(v,g),onPointerMove:W,onPointerUp:V,onClick:()=>F(g),onPointerCancel:()=>{m.current=null,A.current=0,r(null)},children:[t.jsx(B,{size:17}),E&&t.jsx("span",{className:"amx-tool-key",children:E})]},g)})]},f))})}xe({"panelextras.secPen":{zh:"笔",en:"Pen"},"panelextras.secStroke":{zh:"笔触",en:"Stroke"},"panelextras.capRound":{zh:"圆头",en:"Round cap"},"panelextras.capButt":{zh:"方头",en:"Flat cap"},"panelextras.secShape":{zh:"形状",en:"Shape"},"panelextras.secLine":{zh:"线",en:"Line"}});const Ft={rectangle:Fe,diamond:Oe,ellipse:De},Bt={arrow:He,line:Be};function te({title:e,children:a}){return t.jsxs("fieldset",{className:"amx-panelsec",children:[t.jsx("legend",{children:e}),a]})}function Ot({api:e,ui:a,pen:d,group:n}){const{t:s}=U();if(!e)return null;const o=a.tool;if(o==="freedraw"){const r=d.current.active==="highlighter";return t.jsxs(t.Fragment,{children:[t.jsx(te,{title:s("panelextras.secPen"),children:t.jsx(tt,{api:e,ui:a,state:d})}),r&&t.jsx(te,{title:s("panelextras.secStroke"),children:t.jsx("div",{className:"amx-panelrow buttonList",children:[!1,!0].map(m=>{const b=a.capRound===m,u=s(m?"panelextras.capRound":"panelextras.capButt");return t.jsx("label",{className:b?"active":"",title:u,"data-on":b||void 0,onClick:()=>at(e,m),children:t.jsx("svg",{width:"18",height:"18",viewBox:"0 0 18 18","aria-label":u,children:t.jsx("line",{x1:"4",y1:"9",x2:"14",y2:"9",stroke:"currentColor",strokeWidth:"7",strokeLinecap:m?"round":"butt"})})},String(m))})})})]})}return ne.includes(o)?t.jsx(te,{title:s("panelextras.secShape"),children:t.jsx("div",{className:"amx-panelrow buttonList",children:ne.map(r=>{const m=Ft[r],b=o===r;return t.jsx("label",{className:b?"active":"",title:Re[r],"data-on":b||void 0,onClick:()=>{n.current.shape=r,e.setActiveTool({type:r})},children:t.jsx(m,{size:16,"aria-label":Re[r]})},r)})})}):re.includes(o)?t.jsx(te,{title:s("panelextras.secLine"),children:t.jsx("div",{className:"amx-panelrow buttonList",children:re.map(r=>{const m=Bt[r],b=o===r;return t.jsx("label",{className:b?"active":"",title:Ce[r],"data-on":b||void 0,onClick:()=>{n.current.line=r,e.setActiveTool({type:r})},children:t.jsx(m,{size:16,"aria-label":Ce[r]})},r)})})}):null}const $t=()=>({tool:"selection",locked:!1,snapshot:null,capRound:null}),_t=(e,a)=>e.tool===a.tool&&e.locked===a.locked&&e.snapshot===a.snapshot&&e.capRound===a.capRound;xe({"excalicanvas.addPage":{zh:"+ 新建页面",en:"+ New page"},"excalicanvas.delBlankPage":{zh:"删掉这张空白页",en:"Delete this blank page"},"excalicanvas.modeFull":{zh:"常规",en:"Standard"},"excalicanvas.modeCompact":{zh:"紧凑",en:"Compact"},"excalicanvas.paper":{zh:"纸张",en:"Paper"},"excalicanvas.paperNone":{zh:"无限",en:"Infinite"},"excalicanvas.portrait":{zh:"纵向",en:"Portrait"},"excalicanvas.landscape":{zh:"横向",en:"Landscape"},"excalicanvas.flow":{zh:"页面排布",en:"Page layout"},"excalicanvas.flowV":{zh:"上下",en:"Top to bottom"},"excalicanvas.flowH":{zh:"左右",en:"Left to right"},"excalicanvas.grid":{zh:"网格",en:"Grid"},"excalicanvas.gridH":{zh:"横线",en:"Horizontal"},"excalicanvas.gridV":{zh:"竖线",en:"Vertical"},"excalicanvas.opacity":{zh:"淡浓",en:"Opacity"},"excalicanvas.uiMode":{zh:"属性面板",en:"Properties panel"},"excalicanvas.allBoards":{zh:"所有白板",en:"All boards"},"excalicanvas.toolbar":{zh:"工具栏",en:"Toolbar"},"excalicanvas.resetOrder":{zh:"恢复默认顺序",en:"Reset to default order"}});const ae=4,Yt="linear-gradient(90deg, var(--amx-grid-line) 0 1px, transparent 1px)",Ut="linear-gradient(180deg, var(--amx-grid-line) 0 1px, transparent 1px)",Pe=(e,a,d)=>Math.min(Math.max(e,a),d),Ae=(e,a)=>(e%a+a)%a;function Ie(e,a,d){const[n,s]=i.useState(null);return i.useEffect(()=>{if(!e)return;let o=null;const r=()=>{const b=e.querySelector(a);if(!b){o&&(o.remove(),o=null,s(null));return}if(o&&o.parentElement===b)return;o?.remove();const u=document.createElement("div");u.className=d,b.insertBefore(u,b.firstChild),o=u,s(u)};r();const m=new MutationObserver(r);return m.observe(e,{childList:!0,subtree:!0}),()=>{m.disconnect(),o?.remove(),s(null)}},[e,a,d]),n}function Vt(e){i.useEffect(()=>{const a=new Map,d=o=>{o.classList.contains("amx-board-portal")||o.classList.add("amx-board-portal"),o.style.zoom!==e&&(o.style.zoom=e)},n=o=>{if(!(o instanceof HTMLElement)||!o.classList.contains("excalidraw")||o.closest(".amx-boardhost")||(d(o),a.has(o)))return;const r=new MutationObserver(()=>d(o));r.observe(o,{attributes:!0,attributeFilter:["class","style"]}),a.set(o,r)};for(const o of[...document.body.children])n(o);const s=new MutationObserver(o=>{for(const r of o){for(const m of r.addedNodes)n(m);for(const m of r.removedNodes)m instanceof HTMLElement&&a.has(m)&&(a.get(m)?.disconnect(),a.delete(m))}});return s.observe(document.body,{childList:!0}),()=>{s.disconnect();for(const o of a.values())o.disconnect()}},[e])}function ia({initialData:e,theme:a,langCode:d,settings:n,onSettings:s,onSceneChange:o,registerApplier:r,viewMode:m=!1}){const{t:b}=U(),[u,le]=i.useState(null),P=i.useRef(null),Z=i.useRef([]),G=i.useRef(null),W=i.useRef(null),A=i.useRef(null),V=i.useRef(!1),[F,f]=i.useState(null),[x,g]=i.useState(null),y=i.useMemo(()=>he(n)?Le(n,x):{min:0,max:0},[n,x]),B=i.useMemo(()=>Array.from({length:y.max-y.min+1},(c,l)=>y.min+l),[y]),L=i.useMemo(()=>Le({...n,pageFirst:0,pageLast:0},x),[n,x]),E=i.useSyncExternalStore(ot,ke,ke),z=i.useRef(nt()),v=i.useRef(Mt()),R=i.useMemo(()=>({pen:z,group:v}),[]),[j,J]=i.useState($t),[Ue,Ve]=i.useState(""),[be,ge]=i.useState(null),ve=Ie(be,".App-toolbar","amx-toolbar-slot"),ye=Ie(be,".Island > .selected-shape-actions, .Island > .compact-shape-actions, .Island.compact-shape-actions","amx-panel-slot");Vt(Ue),rt(u,j.tool,j.snapshot,z),i.useEffect(()=>{ne.includes(j.tool)&&(v.current.shape=j.tool),re.includes(j.tool)&&(v.current.line=j.tool)},[j.tool]),i.useEffect(()=>{if(!u)return;const c=l=>{if(l.metaKey||l.ctrlKey||l.altKey||!/^[0-9]$/.test(l.key))return;const h=P.current?.querySelector(".excalidraw"),p=l.target;if(!h||!p||!h.contains(p)||p.isContentEditable||p.tagName==="INPUT"||p.tagName==="TEXTAREA")return;const S=q().mid[l.key==="0"?9:Number(l.key)-1];S&&(l.preventDefault(),l.stopImmediatePropagation(),Ye(S,u,R))};return window.addEventListener("keydown",c,!0),()=>window.removeEventListener("keydown",c,!0)},[u,R]),i.useEffect(()=>{u?.setDesktopUIMode(E)},[u,E]),i.useEffect(()=>{if(!(!u||!r))return r(c=>{const l=u.getSceneElementsIncludingDeleted(),h=Ge(l,c.elements??[]);if(We(h,l))return;u.updateScene({elements:st(h,null),captureUpdate:ue.NEVER});const p=Object.values(c.files??{});p.length&&u.addFiles(p)})},[u,r]),i.useEffect(()=>{const c=u&&P.current?.querySelector(".excalidraw");if(!c)return;const l=document.createElement("div");return l.style.display="contents",c.insertBefore(l,c.firstChild),f(l),ge(c),()=>{l.remove(),f(null),ge(null)}},[u]);const O=i.useCallback(c=>{const l=G.current,h=Z.current.filter(w=>!!w);if(!l||!h.length)return;const p=c.zoom.value,S=he(n),I=n.gridV*p,Q=n.gridH*p,ee=[],ie=[],de=[],Ke=S||I<ae?0:Ae(c.scrollX*p,I),Xe=S||Q<ae?0:Ae(c.scrollY*p,Q);I>=ae&&(ee.push(Yt),ie.push(`${I}px 100%`),de.push(`${Ke}px 0px`)),Q>=ae&&(ee.push(Ut),ie.push(`100% ${Q}px`),de.push(`0px ${Xe}px`));for(const w of h)w.style.backgroundImage=ee.join(", "),w.style.backgroundSize=ie.join(", "),w.style.backgroundPosition=de.join(", "),w.style.opacity=n.gridOpacity>=100?"":String(n.gridOpacity/100),w.style.display=ee.length||S?"":"none";if(!S){Object.assign(h[0].style,{left:"0px",top:"0px",width:"100%",height:"100%"}),l.style.display="none";return}const je=(w,k,T)=>{if(!w)return;const H=(k.x+c.scrollX)*p,Y=(k.y+c.scrollY)*p,D=22,qe=n.flow==="h"?T?H+k.w*p+D:H-D:H+k.w*p/2,Ze=n.flow==="h"?Y+k.h*p/2:T?Y+k.h*p+D:Y-D;w.style.left=`${qe}px`,w.style.top=`${Ze}px`},Se=[];for(let w=0;w<h.length;w++){const k=pe(n,y.min+w);if(!k)continue;const T=(k.x+c.scrollX)*p,H=(k.y+c.scrollY)*p,Y=k.w*p,D=k.h*p;Object.assign(h[w].style,{left:`${T}px`,top:`${H}px`,width:`${Y}px`,height:`${D}px`}),Se.push(`M${T.toFixed(1)} ${H.toFixed(1)}H${(T+Y).toFixed(1)}V${(H+D).toFixed(1)}H${T.toFixed(1)}Z`)}const Ee=pe(n,y.min),Ne=pe(n,y.max);Ee&&je(W.current,Ee,!1),Ne&&je(A.current,Ne,!0),l.style.display="",l.style.clipPath=`path(evenodd,"M0 0H${l.offsetWidth}V${l.offsetHeight}H0Z ${Se.join(" ")}")`},[n,y]),$=i.useCallback(c=>{if(!u||V.current)return c;const l=u.getAppState();if(l.cursorButton==="down")return c;const h=ft(n,{scrollX:c.scrollX,scrollY:c.scrollY,zoom:c.zoom.value,width:l.width,height:l.height},x);if(!h)return c;V.current=!0;try{u.updateScene({appState:{scrollX:h.scrollX,scrollY:h.scrollY,zoom:{value:h.zoom}},captureUpdate:ue.NEVER})}finally{V.current=!1}return{scrollX:h.scrollX,scrollY:h.scrollY,zoom:{value:h.zoom}}},[u,n,x]),ce=i.useCallback(c=>{const l=xt(c);g(h=>h&&l&&h.minX===l.minX&&h.minY===l.minY&&h.maxX===l.maxX&&h.maxY===l.maxY?h:l)},[]),we=i.useRef(n.flow);i.useEffect(()=>{const c=we.current,l=n.flow;if(we.current=l,c===l||!u||!n.paper)return;const h=u.getSceneElements();h.length&&u.updateScene({elements:h.map(p=>{const S=bt(n,c,l,p.x,p.y);return S.x===p.x&&S.y===p.y?p:lt(p,{x:S.x,y:S.y})}),captureUpdate:ue.IMMEDIATELY})},[u,n]),i.useEffect(()=>{!u||!F||(ce(u.getSceneElements()),O($(u.getAppState())))},[u,F,O,$,ce]);const _=i.useCallback(()=>{const c=P.current;if(!c)return;const l=c.parentElement?.currentCSSZoom??1,h=Math.abs(l-1)>1e-6?String(1/l):"";c.style.zoom!==h&&(c.style.zoom=h),Ve(p=>p===h?p:h)},[]);return i.useEffect(()=>(_(),window.addEventListener(ze,_),()=>window.removeEventListener(ze,_)),[_]),i.useEffect(()=>{const c=P.current;if(!c||!u||typeof ResizeObserver>"u")return;const l=new ResizeObserver(()=>{_(),O($(u.getAppState()))});return l.observe(c),()=>l.disconnect()},[u,O,$,_]),t.jsxs("div",{className:"amx-boardhost",ref:P,children:[t.jsx(ct,{onExcalidrawAPI:le,initialData:e,theme:a,langCode:d,viewModeEnabled:m,onScrollChange:(c,l,h)=>O($({scrollX:c,scrollY:l,zoom:h})),onChange:(c,l,h)=>{ce(c),O($(l));const p=l.currentStrokeOptions,S={tool:l.activeTool.type,locked:!!l.activeTool.locked,snapshot:l.resetCustomPen??null,capRound:p?!!p.options?.start?.cap:null};J(I=>_t(I,S)?I:S),o(dt(c,l,h,"local"))},children:t.jsxs(N,{children:[t.jsx(N.DefaultItems.LoadScene,{}),t.jsx(N.DefaultItems.SaveToActiveFile,{}),t.jsx(N.DefaultItems.Export,{}),t.jsx(N.DefaultItems.SaveAsImage,{}),t.jsx(N.DefaultItems.SearchMenu,{}),t.jsx(N.DefaultItems.Help,{}),t.jsx(N.DefaultItems.ClearCanvas,{}),t.jsx(N.Separator,{}),t.jsx(N.DefaultItems.ToggleTheme,{allowSystemTheme:!1}),t.jsx(N.DefaultItems.ChangeCanvasBackground,{}),t.jsx(N.Separator,{}),t.jsx(N.ItemCustom,{children:t.jsx(qt,{settings:n,onSettings:s,uiMode:E,onUiMode:it})})]})}),ve&&me.createPortal(t.jsx(Dt,{api:u,ui:j,refs:R}),ve),ye&&me.createPortal(t.jsx(Ot,{api:u,ui:j,pen:z,group:v}),ye),F&&me.createPortal(t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"amx-matte",ref:G,onWheel:Kt}),B.map((c,l)=>t.jsx("div",{className:"amx-grid","data-page":c,ref:h=>{Z.current[l]=h}},c)),!!he(n)&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"amx-pageadd","data-end":"before","data-flow":n.flow,ref:W,children:[t.jsx("button",{onClick:()=>s({pageFirst:n.pageFirst-1}),children:b("excalicanvas.addPage")}),n.pageFirst<L.min&&t.jsx("button",{className:"amx-pageadd-del",title:b("excalicanvas.delBlankPage"),onClick:()=>s({pageFirst:n.pageFirst+1}),children:"−"})]}),t.jsxs("div",{className:"amx-pageadd","data-end":"after","data-flow":n.flow,ref:A,children:[t.jsx("button",{onClick:()=>s({pageLast:n.pageLast+1}),children:b("excalicanvas.addPage")}),n.pageLast>L.max&&t.jsx("button",{className:"amx-pageadd-del",title:b("excalicanvas.delBlankPage"),onClick:()=>s({pageLast:n.pageLast-1}),children:"−"})]})]})]}),F)]})}function Kt(e){const a=e.currentTarget.closest(".excalidraw")?.querySelector("canvas.excalidraw__canvas.interactive");a&&(e.preventDefault(),a.dispatchEvent(new WheelEvent("wheel",{deltaX:e.deltaX,deltaY:e.deltaY,deltaMode:e.deltaMode,clientX:e.clientX,clientY:e.clientY,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey,bubbles:!0,cancelable:!0})))}const Xt=[{id:"full",labelKey:"excalicanvas.modeFull"},{id:"compact",labelKey:"excalicanvas.modeCompact"}];function qt({settings:e,onSettings:a,uiMode:d,onUiMode:n}){const{t:s}=U(),o=a;return t.jsxs("div",{className:"amx-bs",children:[t.jsx("div",{className:"amx-bs-h",children:s("excalicanvas.paper")}),t.jsxs("div",{className:"amx-bs-row",children:[t.jsx("button",{className:"amx-bs-chip","data-on":!e.paper||void 0,onClick:()=>o({paper:null}),children:s("excalicanvas.paperNone")}),gt.map(r=>t.jsx("button",{className:"amx-bs-chip","data-on":e.paper===r||void 0,onClick:()=>o({paper:r}),children:r},r))]}),e.paper&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"amx-bs-row",children:[t.jsx("button",{className:"amx-bs-chip","data-on":!e.landscape||void 0,onClick:()=>o({landscape:!1}),children:s("excalicanvas.portrait")}),t.jsx("button",{className:"amx-bs-chip","data-on":e.landscape||void 0,onClick:()=>o({landscape:!0}),children:s("excalicanvas.landscape")})]}),t.jsx("div",{className:"amx-bs-h",children:s("excalicanvas.flow")}),t.jsxs("div",{className:"amx-bs-row",children:[t.jsx("button",{className:"amx-bs-chip","data-on":e.flow==="v"||void 0,onClick:()=>o({flow:"v"}),children:s("excalicanvas.flowV")}),t.jsx("button",{className:"amx-bs-chip","data-on":e.flow==="h"||void 0,onClick:()=>o({flow:"h"}),children:s("excalicanvas.flowH")})]})]}),t.jsx("div",{className:"amx-bs-h",children:s("excalicanvas.grid")}),t.jsx(Te,{label:s("excalicanvas.gridH"),value:e.gridH,onChange:r=>o({gridH:r})}),t.jsx(Te,{label:s("excalicanvas.gridV"),value:e.gridV,onChange:r=>o({gridV:r})}),t.jsx(Gt,{value:e.gridOpacity,disabled:e.gridH<=0&&e.gridV<=0,onCommit:r=>o({gridOpacity:r})}),t.jsxs("div",{className:"amx-bs-h",children:[s("excalicanvas.uiMode")," ",t.jsx("span",{className:"amx-bs-note",children:s("excalicanvas.allBoards")})]}),t.jsx("div",{className:"amx-bs-row",children:Xt.map(r=>t.jsx("button",{className:"amx-bs-chip","data-on":d===r.id||void 0,onClick:()=>n(r.id),children:s(r.labelKey)},r.id))}),t.jsx(Zt,{})]})}function Zt(){const{t:e}=U(),a=i.useSyncExternalStore(_e,q,q);return Rt(a)?null:t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"amx-bs-h",children:[e("excalicanvas.toolbar")," ",t.jsx("span",{className:"amx-bs-note",children:e("excalicanvas.allBoards")})]}),t.jsx("div",{className:"amx-bs-row",children:t.jsx("button",{className:"amx-bs-chip",onClick:()=>zt(),children:e("excalicanvas.resetOrder")})})]})}function Gt({value:e,disabled:a,onCommit:d}){const{t:n}=U(),[s,o]=i.useState(e);return i.useEffect(()=>o(e),[e]),t.jsxs("label",{className:"amx-bs-check",children:[t.jsx("span",{className:"amx-bs-lbl",children:n("excalicanvas.opacity")}),t.jsx("input",{className:"amx-bs-range",type:"range",min:10,max:100,step:5,disabled:a,value:s,onChange:r=>{const m=Number(r.target.value);o(m);for(const b of r.currentTarget.closest(".excalidraw")?.querySelectorAll(".amx-grid")??[])b.style.opacity=m>=100?"":String(m/100)},onPointerUp:()=>d(s),onKeyUp:()=>d(s)}),t.jsxs("span",{className:"amx-bs-note",children:[s,"%"]})]})}function Te({label:e,value:a,onChange:d}){const[n,s]=i.useState(String(a||fe));i.useEffect(()=>{a>0&&s(String(a))},[a]);const o=()=>{const r=Math.round(Number(n)),m=Number.isFinite(r)&&r>0?Pe(r,4,400):fe;s(String(m)),a>0&&m!==a&&d(m)};return t.jsxs("label",{className:"amx-bs-check",children:[t.jsx("input",{type:"checkbox",checked:a>0,onChange:r=>d(r.target.checked?Pe(Math.round(Number(n))||fe,4,400):0)}),t.jsx("span",{className:"amx-bs-lbl",children:e}),t.jsx("input",{className:"amx-bs-num",type:"number",min:4,max:400,disabled:a<=0,value:n,onChange:r=>s(r.target.value),onBlur:o,onKeyDown:r=>{r.key==="Enter"&&o()}}),t.jsx("span",{className:"amx-bs-note",children:"px"})]})}export{ia as default};
@@ -1 +1 @@
1
- import{d as l,j as m}from"./index-B5UW6SaE.js";import"./appStore-CidPWYa0.js";const U="h1, h2, h3, [data-lcl-toc-title]";function h(t){return t?typeof t=="function"?t():"current"in t?t.current:t:null}const W=t=>{const u=/^H([1-6])$/.exec(t.tagName)?.[1],c=t.dataset.lclTocLevel??u??"1",d=Number(c),s=(t.dataset.lclTocTitle??t.textContent??"").trim();return s?{text:s,level:Number.isFinite(d)?Math.max(0,Math.min(6,Math.round(d))):1,primary:t.hasAttribute("data-lcl-toc-primary")||t.dataset.lclTocKind==="primary"}:null};function _(t,u){return t.length===u.length&&t.every((c,d)=>{const s=u[d];return c.target===s.target&&c.text===s.text&&c.level===s.level&&c.primary===s.primary&&c.onSelect===s.onSelect})}function P({scrollContainer:t,contentRoot:u,selector:c=U,itemFromElement:d=W,label:s="Table of contents",minItems:$=2,hideBelow:T=520,topOffset:y=24,topInset:p,side:A="left",scanTrigger:R,placement:j="overlay"}){const[v,w]=l.useState([]),[K,E]=l.useState(null),[z,F]=l.useState(!1),[B,M]=l.useState(!1),[C,X]=l.useState(!1),f=l.useRef(null),k=l.useRef(new WeakMap),q=l.useRef(0),S=l.useCallback(()=>{const e=h(t),r=h(u)??e;if(!r){w(a=>a.length?[]:a);return}let n;try{n=r.querySelectorAll(c)}catch(a){console.error(`[lcl] FloatingToc ignored invalid selector "${c}"`,a),w(g=>g.length?[]:g);return}const o=[];n.forEach((a,g)=>{let i=null;try{i=d(a,g)}catch(I){console.error("[lcl] FloatingToc item reader failed",I)}const L=String(i?.text??"").trim();if(!i||!L)return;let b=k.current.get(a);b||(b=`lcl-ftoc-${++q.current}`,k.current.set(a,b));const N=Number(i.level);o.push({...i,key:b,target:a,text:L,level:Number.isFinite(N)?Math.max(0,Math.min(6,Math.round(N))):1})}),w(a=>_(a,o)?a:o)},[u,d,t,c]);l.useEffect(()=>{S();const e=h(t),r=h(u)??e;if(!r||typeof MutationObserver>"u")return;let n=0;const o=new MutationObserver(()=>{cancelAnimationFrame(n),n=requestAnimationFrame(S)});return o.observe(r,{childList:!0,subtree:!0,characterData:!0}),()=>{cancelAnimationFrame(n),o.disconnect()}},[u,S,R,t]),l.useEffect(()=>{const e=h(t);if(!e)return;const r=()=>X(T>0&&e.getBoundingClientRect().width<=T);if(r(),typeof ResizeObserver>"u")return;const n=new ResizeObserver(r);return n.observe(e),()=>n.disconnect()},[T,t]),l.useEffect(()=>{const e=h(t);if(!e||!v.length){E(null);return}let r=0;const n=()=>{r=0;const a=e.getBoundingClientRect().top+y+(p?.(e)??0)+1;let g=v[0];for(const i of v)if(!(!i.target.isConnected||!e.contains(i.target)))if(i.target.getBoundingClientRect().top<=a)g=i;else break;E(g?.key??null)},o=()=>{r||(r=requestAnimationFrame(n))};return n(),e.addEventListener("scroll",o,{passive:!0}),window.addEventListener("resize",o),()=>{cancelAnimationFrame(r),e.removeEventListener("scroll",o),window.removeEventListener("resize",o)}},[v,t,y,p]),l.useEffect(()=>()=>{f.current!=null&&window.clearTimeout(f.current)},[]);const D=l.useCallback(e=>{const r=h(t);if(r){if(e.onSelect)try{e.onSelect()}catch(n){console.error("[lcl] FloatingToc navigation failed",n)}else if(r.contains(e.target)){const n=e.target.getBoundingClientRect().top-r.getBoundingClientRect().top+r.scrollTop;r.scrollTo({top:Math.max(0,n-y-(p?.(r)??0)),behavior:"smooth"})}E(e.key)}},[t,y,p]),H=()=>{f.current!=null&&window.clearTimeout(f.current),f.current=null,F(!0)},O=()=>{f.current!=null&&window.clearTimeout(f.current),f.current=window.setTimeout(()=>F(!1),150)};if(v.length<Math.max(1,$)||C)return null;const x=z||B;return m.jsx("div",{className:`lcl-ftoc-frame is-${j}`,"data-side":A,children:m.jsx("nav",{className:`lcl-ftoc${x?" open":""}`,style:x?void 0:{height:`min(44vh, ${v.length*6+12}px)`},onMouseEnter:H,onMouseLeave:O,onFocusCapture:()=>M(!0),onBlurCapture:e=>{e.currentTarget.contains(e.relatedTarget)||M(!1)},onKeyDown:e=>{e.key==="Escape"&&(F(!1),M(!1),e.target?.blur?.())},"aria-label":s,children:v.map(e=>{const r=K===e.key,n=(e.level===0?18:e.level===1?14:e.level===2?11:8)+(r?6:0);return m.jsxs("button",{type:"button",className:`lcl-ftoc-item${r?" active":""}${e.primary?" primary":""}`,onClick:()=>D(e),title:e.text,"aria-current":r?"location":void 0,style:{paddingInlineStart:x?8+e.level*10:0},children:[m.jsx("span",{className:"lcl-ftoc-bar",style:{transform:x?"translateX(0) scaleX(1)":`translateX(${e.level*3}px) scaleX(${n/4})`}}),m.jsx("span",{className:"lcl-ftoc-text",children:e.text})]},e.key)})})})}export{P as F};
1
+ import{d as l,j as m}from"./index-BYUntVIZ.js";import"./appStore-affnJoin.js";const U="h1, h2, h3, [data-lcl-toc-title]";function h(t){return t?typeof t=="function"?t():"current"in t?t.current:t:null}const W=t=>{const u=/^H([1-6])$/.exec(t.tagName)?.[1],c=t.dataset.lclTocLevel??u??"1",d=Number(c),s=(t.dataset.lclTocTitle??t.textContent??"").trim();return s?{text:s,level:Number.isFinite(d)?Math.max(0,Math.min(6,Math.round(d))):1,primary:t.hasAttribute("data-lcl-toc-primary")||t.dataset.lclTocKind==="primary"}:null};function _(t,u){return t.length===u.length&&t.every((c,d)=>{const s=u[d];return c.target===s.target&&c.text===s.text&&c.level===s.level&&c.primary===s.primary&&c.onSelect===s.onSelect})}function P({scrollContainer:t,contentRoot:u,selector:c=U,itemFromElement:d=W,label:s="Table of contents",minItems:$=2,hideBelow:T=520,topOffset:y=24,topInset:p,side:A="left",scanTrigger:R,placement:j="overlay"}){const[v,w]=l.useState([]),[K,E]=l.useState(null),[z,F]=l.useState(!1),[B,M]=l.useState(!1),[C,X]=l.useState(!1),f=l.useRef(null),k=l.useRef(new WeakMap),q=l.useRef(0),S=l.useCallback(()=>{const e=h(t),r=h(u)??e;if(!r){w(a=>a.length?[]:a);return}let n;try{n=r.querySelectorAll(c)}catch(a){console.error(`[lcl] FloatingToc ignored invalid selector "${c}"`,a),w(g=>g.length?[]:g);return}const o=[];n.forEach((a,g)=>{let i=null;try{i=d(a,g)}catch(I){console.error("[lcl] FloatingToc item reader failed",I)}const L=String(i?.text??"").trim();if(!i||!L)return;let b=k.current.get(a);b||(b=`lcl-ftoc-${++q.current}`,k.current.set(a,b));const N=Number(i.level);o.push({...i,key:b,target:a,text:L,level:Number.isFinite(N)?Math.max(0,Math.min(6,Math.round(N))):1})}),w(a=>_(a,o)?a:o)},[u,d,t,c]);l.useEffect(()=>{S();const e=h(t),r=h(u)??e;if(!r||typeof MutationObserver>"u")return;let n=0;const o=new MutationObserver(()=>{cancelAnimationFrame(n),n=requestAnimationFrame(S)});return o.observe(r,{childList:!0,subtree:!0,characterData:!0}),()=>{cancelAnimationFrame(n),o.disconnect()}},[u,S,R,t]),l.useEffect(()=>{const e=h(t);if(!e)return;const r=()=>X(T>0&&e.getBoundingClientRect().width<=T);if(r(),typeof ResizeObserver>"u")return;const n=new ResizeObserver(r);return n.observe(e),()=>n.disconnect()},[T,t]),l.useEffect(()=>{const e=h(t);if(!e||!v.length){E(null);return}let r=0;const n=()=>{r=0;const a=e.getBoundingClientRect().top+y+(p?.(e)??0)+1;let g=v[0];for(const i of v)if(!(!i.target.isConnected||!e.contains(i.target)))if(i.target.getBoundingClientRect().top<=a)g=i;else break;E(g?.key??null)},o=()=>{r||(r=requestAnimationFrame(n))};return n(),e.addEventListener("scroll",o,{passive:!0}),window.addEventListener("resize",o),()=>{cancelAnimationFrame(r),e.removeEventListener("scroll",o),window.removeEventListener("resize",o)}},[v,t,y,p]),l.useEffect(()=>()=>{f.current!=null&&window.clearTimeout(f.current)},[]);const D=l.useCallback(e=>{const r=h(t);if(r){if(e.onSelect)try{e.onSelect()}catch(n){console.error("[lcl] FloatingToc navigation failed",n)}else if(r.contains(e.target)){const n=e.target.getBoundingClientRect().top-r.getBoundingClientRect().top+r.scrollTop;r.scrollTo({top:Math.max(0,n-y-(p?.(r)??0)),behavior:"smooth"})}E(e.key)}},[t,y,p]),H=()=>{f.current!=null&&window.clearTimeout(f.current),f.current=null,F(!0)},O=()=>{f.current!=null&&window.clearTimeout(f.current),f.current=window.setTimeout(()=>F(!1),150)};if(v.length<Math.max(1,$)||C)return null;const x=z||B;return m.jsx("div",{className:`lcl-ftoc-frame is-${j}`,"data-side":A,children:m.jsx("nav",{className:`lcl-ftoc${x?" open":""}`,style:x?void 0:{height:`min(44vh, ${v.length*6+12}px)`},onMouseEnter:H,onMouseLeave:O,onFocusCapture:()=>M(!0),onBlurCapture:e=>{e.currentTarget.contains(e.relatedTarget)||M(!1)},onKeyDown:e=>{e.key==="Escape"&&(F(!1),M(!1),e.target?.blur?.())},"aria-label":s,children:v.map(e=>{const r=K===e.key,n=(e.level===0?18:e.level===1?14:e.level===2?11:8)+(r?6:0);return m.jsxs("button",{type:"button",className:`lcl-ftoc-item${r?" active":""}${e.primary?" primary":""}`,onClick:()=>D(e),title:e.text,"aria-current":r?"location":void 0,style:{paddingInlineStart:x?8+e.level*10:0},children:[m.jsx("span",{className:"lcl-ftoc-bar",style:{transform:x?"translateX(0) scaleX(1)":`translateX(${e.level*3}px) scaleX(${n/4})`}}),m.jsx("span",{className:"lcl-ftoc-text",children:e.text})]},e.key)})})})}export{P as F};
@@ -0,0 +1 @@
1
+ @font-face{font-family:Dancing Script;font-style:normal;font-weight:600;font-display:swap;src:url(./DancingScript-Bold-latin-CWNX0RqN.woff2) format("woff2")}.hp-root{position:relative;box-sizing:border-box;height:100%;overflow:clip;display:flex;--hp-padding-block: clamp(24px, 5vh, 48px);padding:calc(var(--hp-chrome-top, 0px) + var(--hp-padding-block)) 24px calc(var(--hp-chrome-bottom, 0px) + var(--hp-padding-block));isolation:isolate;background:var(--bg);--hp-glass-tint: color-mix(in srgb, var(--bg-card) 46%, transparent);--hp-glass-thick-tint: color-mix(in srgb, var(--bg-card) 58%, transparent);--hp-glass-sheen: var(--gl-sheen, linear-gradient(145deg, color-mix(in srgb, var(--bg-card) 20%, transparent), transparent 48%, color-mix(in srgb, var(--accent-ink) 4%, transparent)));--hp-glass-filter: var(--gl-blur-float, blur(40px) saturate(160%))}.hp-wallpaper,.hp-wallpaper-art,.hp-wallpaper-edge,.hp-wallpaper-tone,.hp-glow{position:absolute;inset:0;pointer-events:none}.hp-wallpaper{z-index:-5;background-position:center;background-size:cover;transform:scale(1.001);transition:transform .52s var(--ease-spring),filter .42s var(--ease-out)}.hp-root:not([data-wallpaper=true]) .hp-wallpaper{background:radial-gradient(ellipse 72% 58% at 12% 4%,color-mix(in srgb,var(--accent-ink) 11%,transparent),transparent 72%),radial-gradient(ellipse 62% 68% at 92% 92%,color-mix(in srgb,var(--accent-ink) 7%,var(--bg-card)),transparent 76%),linear-gradient(145deg,color-mix(in srgb,var(--bg) 94%,var(--accent-ink) 6%),var(--bg) 48%,color-mix(in srgb,var(--bg) 96%,var(--bg-card) 4%))}.hp-wallpaper-art{z-index:-4;overflow:hidden;opacity:.78;transition:opacity var(--duration-slow) var(--ease-out),transform .52s var(--ease-spring),filter .42s var(--ease-out)}.hp-wallpaper-art:before,.hp-wallpaper-art:after,.hp-theme-preview:before,.hp-theme-preview:after{content:"";position:absolute;pointer-events:none}.hp-root[data-wallpaper=true] .hp-wallpaper-art{opacity:0}.hp-root[data-theme-preset=rings] .hp-wallpaper-art,.hp-theme-preview[data-preset=rings]{background:radial-gradient(circle at 76% 27%,color-mix(in srgb,var(--accent-ink) 13%,transparent) 0 7%,transparent 7.4%),repeating-radial-gradient(circle at 76% 27%,transparent 0 54px,color-mix(in srgb,var(--accent-ink) 16%,transparent) 55px 56px,transparent 57px 94px)}.hp-root[data-theme-preset=rings] .hp-wallpaper-art{-webkit-mask-image:linear-gradient(115deg,transparent 8%,#000 48%,transparent 94%);mask-image:linear-gradient(115deg,transparent 8%,#000 48%,transparent 94%)}.hp-root[data-theme-preset=rings] .hp-wallpaper-art:before,.hp-theme-preview[data-preset=rings]:before{width:54%;height:70%;right:-9%;top:-16%;border:1px solid color-mix(in srgb,var(--accent-ink) 28%,transparent);border-radius:50%;transform:rotate(-24deg)}.hp-root[data-theme-preset=topography] .hp-wallpaper-art,.hp-theme-preview[data-preset=topography]{background:repeating-radial-gradient(ellipse at 9% 92%,transparent 0 34px,color-mix(in srgb,var(--accent-ink) 15%,transparent) 35px 36px,transparent 37px 66px)}.hp-root[data-theme-preset=topography] .hp-wallpaper-art{-webkit-mask-image:linear-gradient(35deg,#000 2%,rgba(0,0,0,.78) 48%,transparent 88%);mask-image:linear-gradient(35deg,#000 2%,rgba(0,0,0,.78) 48%,transparent 88%)}.hp-root[data-theme-preset=topography] .hp-wallpaper-art:after,.hp-theme-preview[data-preset=topography]:after{width:46%;height:38%;left:3%;bottom:5%;border:1px solid color-mix(in srgb,var(--accent-ink) 26%,transparent);border-radius:48% 58% 44% 62%;transform:rotate(-9deg)}.hp-root[data-theme-preset=weave] .hp-wallpaper-art,.hp-theme-preview[data-preset=weave]{background:repeating-linear-gradient(31deg,transparent 0 47px,color-mix(in srgb,var(--accent-ink) 12%,transparent) 48px 49px,transparent 50px 96px),repeating-linear-gradient(-31deg,transparent 0 63px,color-mix(in srgb,var(--border) 52%,transparent) 64px 65px,transparent 66px 128px)}.hp-root[data-theme-preset=weave] .hp-wallpaper-art{-webkit-mask-image:radial-gradient(ellipse 68% 72% at 50% 48%,#000 8%,rgba(0,0,0,.74) 58%,transparent 100%);mask-image:radial-gradient(ellipse 68% 72% at 50% 48%,#000 8%,rgba(0,0,0,.74) 58%,transparent 100%)}.hp-root[data-theme-preset=hack2gate] .hp-wallpaper,.hp-theme-preview[data-preset=hack2gate]{background-image:url(./hack2gate-light-DRKq9tyS.jpg)}html.dark .hp-root[data-theme-preset=hack2gate] .hp-wallpaper,html.dark .hp-theme-preview[data-preset=hack2gate]{background-image:url(./hack2gate-dark-Dx2RtDRI.jpg)}.hp-theme-preview[data-preset=hack2gate]{background-size:cover;background-position:center}.hp-wallpaper-edge{z-index:-3;opacity:.46;background:linear-gradient(to right,color-mix(in srgb,var(--bg) 92%,transparent),transparent 18%,transparent 82%,color-mix(in srgb,var(--bg) 92%,transparent)),linear-gradient(to bottom,color-mix(in srgb,var(--bg) 82%,transparent),transparent 20%,transparent 72%,color-mix(in srgb,var(--bg) 94%,transparent));mask-image:radial-gradient(ellipse 74% 76% at center,transparent 39%,rgba(0,0,0,.58) 74%,#000 100%);-webkit-mask-image:radial-gradient(ellipse 74% 76% at center,transparent 39%,rgba(0,0,0,.58) 74%,#000 100%);backdrop-filter:blur(14px) saturate(118%);-webkit-backdrop-filter:blur(14px) saturate(118%);transition:opacity var(--duration-slow) var(--ease-out)}.hp-root[data-wallpaper=true] .hp-wallpaper-edge{opacity:1;backdrop-filter:blur(24px) saturate(128%);-webkit-backdrop-filter:blur(24px) saturate(128%)}.hp-root[data-wallpaper=true][data-vignette=false] .hp-wallpaper-edge{opacity:.64}.hp-wallpaper-tone{z-index:-2;opacity:0;background:var(--hp-center-scrim, linear-gradient(transparent, transparent)),linear-gradient(to bottom,color-mix(in srgb,var(--bg) 24%,transparent),transparent 34%),linear-gradient(to right,color-mix(in srgb,var(--bg) 24%,transparent),transparent 15%,transparent 85%,color-mix(in srgb,var(--bg) 24%,transparent)),radial-gradient(ellipse at center,transparent 36%,color-mix(in srgb,var(--bg) 64%,transparent) 100%);transition:opacity var(--duration-slow) var(--ease-out)}.hp-root[data-wallpaper=true] .hp-wallpaper-tone{opacity:1}.hp-root[data-wallpaper=true][data-vignette=false] .hp-wallpaper-tone{opacity:.36}.hp-root[data-vignette=true]{--hp-center-scrim: radial-gradient(ellipse 46% 40% at 50% 56%, color-mix(in srgb, var(--bg) 40%, transparent), transparent 78%)}.hp-glow{z-index:-1;background:var(--glow, none)}.hp-root[data-focus-blur=true].hp-composer-focused .hp-wallpaper,.hp-root[data-focus-blur=true].hp-composer-focused .hp-wallpaper-art,.hp-root[data-focus-blur=true].hp-layer-focused .hp-wallpaper,.hp-root[data-focus-blur=true].hp-layer-focused .hp-wallpaper-art,.hp-root[data-focus-blur=true].hp-secondary-open .hp-wallpaper{filter:blur(8px) brightness(.86);transform:scale(1.045)}.hp-root[data-focus-blur=true].hp-secondary-open .hp-wallpaper{filter:blur(15px) brightness(.8) saturate(.9);transform:scale(1.065)}.hp-root[data-focus-blur=true].hp-secondary-open .hp-wallpaper-art{filter:blur(8px) brightness(.82) saturate(.9);transform:scale(1.045)}.hp-wallpaper-button{position:absolute;z-index:5;top:calc(var(--hp-chrome-top, 0px) + 16px);right:16px;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border:var(--border-width) solid var(--border);border-radius:50%;background:var(--bg-card);color:var(--text-muted);box-shadow:var(--icon-shadow);cursor:pointer;transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-spring)}.hp-wallpaper-button:hover,.hp-wallpaper-button.on{color:var(--text);background:var(--bg-hover);transform:scale(1.05)}.hp-root .hp-wallpaper-button{background:color-mix(in srgb,var(--bg-card) 64%,transparent);backdrop-filter:blur(22px) saturate(145%);-webkit-backdrop-filter:blur(22px) saturate(145%)}.hp-wallpaper-file{display:none}.hp-wallpaper-credit{position:absolute;z-index:2;right:18px;bottom:12px;max-width:min(420px,54%);overflow:hidden;color:var(--text-light);font-size:var(--ui-font-caption, 11px);line-height:1.3;opacity:.58;text-overflow:ellipsis;white-space:nowrap}.hp-stack{position:relative;width:min(840px,100%);margin:auto;display:flex;flex-direction:column;align-items:center;gap:22px;transition:opacity var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.hp-title,.hp-composer,.hp-spaces{transition:opacity .32s var(--ease-out),transform .36s var(--ease-spring)}.hp-composer-focused .hp-title{opacity:.58;transform:translateY(-5px) scale(.985)}.hp-composer-focused .hp-composer{transform:translateY(-2px) scale(1.012)}.hp-composer-focused .hp-spaces{opacity:.74;transform:translateY(5px) scale(.988)}.hp-layer-focused .hp-stack{opacity:.18;transform:scale(.965)}.hp-secondary-open .hp-stack{opacity:0;transform:scale(.955);pointer-events:none}.hp-stack.leaving{opacity:0;transform:scale(.985)}@keyframes hp-rise{0%{transform:translateY(10px)}to{transform:none}}.hp-title,.hp-composer,.hp-spaces{animation:hp-rise var(--duration-slow) var(--ease-out) backwards}.hp-composer{animation-delay:60ms}.hp-spaces{animation-delay:.12s}.hp-title{text-align:center;-webkit-user-select:none;user-select:none}.hp-brand{margin-bottom:3px;color:var(--text);opacity:.38;font-family:Dancing Script,Snell Roundhand,Segoe Script,cursive;font-size:clamp(30px,4vw,42px);font-weight:700;line-height:1.2}.hp-clock{color:var(--text);font-size:clamp(48px,6vw,58px);font-weight:300;font-variant-numeric:tabular-nums;letter-spacing:-.035em;line-height:1}.hp-date{margin-top:9px;color:var(--text-muted);font-size:var(--ui-font-meta, 12px)}.hp-greet{margin-top:3px;color:var(--text-light);font-size:var(--ui-font-body, 13px)}.hp-root[data-wallpaper=true] .hp-brand{opacity:.62}.hp-root[data-wallpaper=true] .hp-date,.hp-root[data-wallpaper=true] .hp-greet{color:var(--text);opacity:.7}.hp-composer{width:100%}.hp-projectbar{display:flex;align-items:center;padding:0 4px 6px}.hp-composer .t2c-inner{width:100%;max-width:none;padding:0}.hp-composer .t2c-card{box-shadow:var(--card-shadow)}.hp-spaces{box-sizing:border-box;width:100%;padding:10px;border:var(--border-width) solid transparent;border-radius:var(--radius-lg);background:transparent}.hp-root .hp-composer .t2c-card{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;isolation:isolate}.hp-root .hp-composer .t2c-card:before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:var(--hp-glass-sheen),var(--hp-glass-tint);backdrop-filter:var(--hp-glass-filter);-webkit-backdrop-filter:var(--hp-glass-filter)}.hp-root[data-wallpaper=true] .hp-spaces{border-color:transparent;background:var(--hp-glass-sheen),var(--hp-glass-tint);backdrop-filter:var(--hp-glass-filter);-webkit-backdrop-filter:var(--hp-glass-filter)}.hp-root .hp-composer .t2c-card.dragover{border-color:var(--accent-ink)}html[data-glass=off] .hp-root .hp-composer .t2c-card:before,html[data-glass=off] .hp-root[data-wallpaper=true] .hp-spaces,html[data-glass=off] .hp-root .hp-organizer-panel:before,html[data-glass=off] .hp-root .hp-folder-panel:before,html[data-glass=off] .hp-root .hp-organizer-grid .hp-tile-icon,html[data-glass=off] .hp-root .hp-organizer-new>span,html[data-glass=off] .hp-root .hp-wallpaper-button,html[data-glass=off] .hp-root .hp-wallpaper-edge,html[data-glass=off] .hp-root .hp-folder-head,html[data-glass=off] .hp-root .hp-organizer-head,html[data-glass=off] .hp-root .hp-wallpaper-sheet{background:var(--bg-card);backdrop-filter:none;-webkit-backdrop-filter:none}.hp-root .hp-composer .engine-picker-hint,.hp-root .hp-composer .agent-select-team{position:relative;isolation:isolate;padding:2px 10px;border-radius:var(--radius-pill)}.hp-root .hp-composer .project-pill{position:relative;isolation:isolate}.hp-root .hp-composer .engine-picker-hint:before,.hp-root .hp-composer .agent-select-team:before,.hp-root .hp-composer .project-pill:before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:color-mix(in srgb,var(--bg-card) 64%,transparent);backdrop-filter:var(--hp-glass-filter);-webkit-backdrop-filter:var(--hp-glass-filter)}html[data-glass=off] .hp-root .hp-composer .engine-picker-hint:before,html[data-glass=off] .hp-root .hp-composer .agent-select-team:before,html[data-glass=off] .hp-root .hp-composer .project-pill:before{background:var(--bg-card);backdrop-filter:none;-webkit-backdrop-filter:none}.hp-root .hp-composer .engine-picker-hint.is-default{display:none}.hp-space-row{width:100%;min-width:0;display:flex;align-items:stretch;gap:5px}.hp-pinned-zone{box-sizing:border-box;flex:0 1 auto;width:max-content;min-width:170px;max-width:min(42%,350px);display:flex;align-items:flex-start;gap:4px;padding:2px;overflow-x:auto;overscroll-behavior-x:contain;border:var(--border-width) solid transparent;border-radius:var(--radius-md);transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.hp-pinned-zone[data-over=true]{border-color:color-mix(in srgb,var(--accent-ink) 50%,transparent);background:color-mix(in srgb,var(--accent-light) 68%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent-ink) 12%,transparent)}.hp-space-divider{flex:0 0 1px;align-self:stretch;min-height:54px;margin:10px 5px;border-radius:var(--radius-pill, 999px);background:color-mix(in srgb,var(--border-strong) 68%,transparent)}.hp-space-main{flex:1 1 0;min-width:0;display:flex;overflow-x:auto;overscroll-behavior-x:contain}.hp-pinned-zone .hp-tile,.hp-space-main .hp-tile{flex:0 0 82px}.hp-pinned-action{cursor:pointer;touch-action:auto}.hp-pinned-action:active{cursor:pointer}.hp-dock{display:flex;flex-wrap:nowrap;align-items:flex-start;justify-content:flex-start;gap:4px}.hp-tile{position:relative;box-sizing:border-box;width:82px;min-height:78px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:8px 5px 7px;border:var(--border-width) solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--text-muted);box-shadow:none;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;transition:transform var(--duration-fast) var(--ease-spring),color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out)}.hp-tile:hover{color:var(--text);background:var(--bg-hover);transform:translateY(-2px)}.hp-tile:active{cursor:grabbing;transform:scale(.97)}.hp-tile.dragging{opacity:.16;cursor:grabbing}.hp-tile-icon{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-md);background:var(--overlay-light, color-mix(in srgb, var(--text) 7%, transparent));color:var(--text-light);transition:transform var(--duration-fast) var(--ease-spring),background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.hp-tile:hover .hp-tile-icon{background:var(--overlay-medium, var(--bg-hover));color:var(--text)}.hp-tile-name{width:100%;overflow:hidden;color:inherit;font-size:var(--ui-font-caption, 11px);line-height:1.2;text-align:center;text-overflow:ellipsis;white-space:nowrap}.hp-tile[data-over]{border-color:var(--accent);box-shadow:0 0 0 .5px var(--accent)}.hp-folder[data-over] .hp-tile-icon{transform:scale(1.12);background:color-mix(in srgb,var(--accent) 16%,var(--overlay-light))}.hp-fpreview{display:grid;grid-template-columns:repeat(2,12px);grid-auto-rows:12px;place-content:center;gap:2px;background:var(--overlay-medium, var(--bg-hover))}.hp-fmini{display:inline-flex;align-items:center;justify-content:center;opacity:.82}.hp-folder.on{color:var(--text);background:var(--bg-hover)}.hp-folder-count,.hp-more-count{position:absolute;top:5px;right:6px;min-width:17px;height:17px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;border-radius:var(--radius-pill, 999px);background:var(--bg-card);color:var(--text-faint);font-size:var(--ui-font-caption, 11px);font-variant-numeric:tabular-nums}.hp-more{cursor:pointer}.hp-more-count{color:var(--accent-ink)}.hp-drag-overlay{pointer-events:none;cursor:grabbing;background:var(--bg-card);border-color:var(--accent);box-shadow:var(--card-shadow);opacity:.96;transform:rotate(1deg) scale(1.04)}.hp-spaces-empty{padding:20px 12px 22px;color:var(--text-faint);font-size:var(--ui-font-meta, 12px);text-align:center}@keyframes hp-stage-in{0%{opacity:0}to{opacity:1}}@keyframes hp-folder-open{0%{transform:translate(var(--hp-folder-dx),var(--hp-folder-dy)) scale(.24)}to{transform:none}}.hp-folder-stage,.hp-organizer-stage,.hp-wallpaper-stage{position:absolute;z-index:20;inset:0;display:grid;place-items:center;padding:calc(var(--hp-chrome-top, 0px) + 24px) 24px calc(var(--hp-chrome-bottom, 0px) + 24px)}.hp-folder-stage:before,.hp-organizer-stage:before,.hp-wallpaper-stage:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:color-mix(in srgb,var(--overlay-scrim) 72%,transparent);animation:hp-stage-in var(--duration-fast) var(--ease-out) both}.hp-folder-stage:before,.hp-organizer-stage:before{background:color-mix(in srgb,var(--overlay-scrim) 36%,transparent)}.hp-organizer-stage{z-index:20;overflow:auto}.hp-folder-panel,.hp-organizer-panel{position:relative;isolation:isolate;border-radius:var(--radius-chat-surface);box-shadow:var(--card-shadow)}.hp-root .hp-folder-panel:before,.hp-root .hp-organizer-panel:before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:var(--hp-glass-sheen),var(--hp-glass-thick-tint);backdrop-filter:var(--hp-glass-filter);-webkit-backdrop-filter:var(--hp-glass-filter)}.hp-folder-panel{box-sizing:border-box;width:min(680px,100%);min-height:min(330px,calc(100% - 16px));max-height:min(620px,calc(100% - 16px));overflow:hidden;display:flex;flex-direction:column;padding:18px;border:0;background:transparent;transform-origin:center;animation:hp-folder-open .36s var(--ease-spring) backwards}.hp-root .hp-wallpaper-sheet{border-color:color-mix(in srgb,var(--border) 76%,transparent);background:color-mix(in srgb,var(--bg-card) 70%,transparent);backdrop-filter:blur(34px) saturate(155%);-webkit-backdrop-filter:blur(34px) saturate(155%)}.hp-folder-head{flex:none;width:min(480px,calc(100% - 24px));margin-inline:auto;padding:6px 7px 6px 9px;border:var(--border-width) solid color-mix(in srgb,var(--border) 76%,transparent);border-radius:var(--radius-pill, 999px);background:color-mix(in srgb,var(--bg-card) 58%,transparent);backdrop-filter:blur(28px) saturate(150%);-webkit-backdrop-filter:blur(28px) saturate(150%)}.hp-folder-head,.hp-wallpaper-head{display:flex;align-items:center;justify-content:space-between;gap:18px}.hp-folder-head>button,.hp-wallpaper-head>button{width:30px;height:30px;flex:none;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:transparent;color:var(--text-muted);cursor:pointer}.hp-folder-head>button:hover,.hp-wallpaper-head>button:hover{color:var(--text);background:var(--bg-hover)}.hp-folder-identity{min-width:0;display:flex;align-items:center;gap:12px}.hp-folder-identity>span:last-child{min-width:0;display:flex;flex-direction:column}.hp-folder-identity strong{overflow:hidden;color:var(--text);font-size:var(--ui-font-heading, 14px);text-overflow:ellipsis;white-space:nowrap}.hp-folder-identity small{color:var(--text-faint);font-size:var(--ui-font-caption, 11px)}.hp-folder-hero{width:44px;height:44px;flex:none;display:inline-flex;align-items:center;justify-content:center}.hp-folder-hero>.hp-tile-icon{width:44px;height:44px}.hp-folder-hero>.hp-tile-name,.hp-folder-hero>.hp-folder-count{display:none}.hp-folder-grid{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-wrap:wrap;align-content:safe center;align-items:center;justify-content:center;gap:18px;padding:26px 4px 20px}.hp-folder-app{width:96px;min-width:0;min-height:104px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:10px 7px;border:var(--border-width) solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--text-light);font:inherit;font-size:var(--ui-font-caption, 11px);cursor:grab;touch-action:none;transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-spring),opacity var(--duration-fast) var(--ease-out)}.hp-folder-app:hover{color:var(--text);background:var(--bg-hover);transform:translateY(-3px)}.hp-folder-app:active{cursor:grabbing}.hp-folder-app.dragging{opacity:.18}.hp-folder-app>span:last-child{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hp-folder-app-icon{width:48px;height:48px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-md);background:var(--overlay-light)}.hp-folder-empty{margin:auto;max-width:270px;color:var(--text-faint);font-size:var(--ui-font-meta, 12px);line-height:1.6;text-align:center}.hp-folder-panel footer{flex:none;padding-top:12px;color:var(--text-ghost);font-size:var(--ui-font-caption, 11px);text-align:center}.hp-organizer-panel{box-sizing:border-box;width:min(590px,100%);max-height:calc(100% - 8px);overflow:hidden;display:flex;flex-direction:column;align-items:stretch;padding:8px 10px 7px;animation:hp-rise .36s var(--ease-spring) backwards}.hp-organizer-head{min-height:42px;flex:none;display:flex;align-items:center;justify-content:space-between;gap:14px;width:min(440px,calc(100% - 24px));margin:0 auto 9px;padding:5px 7px 5px 8px;border:var(--border-width) solid color-mix(in srgb,var(--border) 76%,transparent);border-radius:var(--radius-pill, 999px);background:color-mix(in srgb,var(--bg-card) 58%,transparent);backdrop-filter:blur(28px) saturate(150%);-webkit-backdrop-filter:blur(28px) saturate(150%)}.hp-organizer-head>div{min-width:0;display:flex;align-items:center;gap:9px}.hp-organizer-head>div>span:nth-child(2){min-width:0;display:flex;flex-direction:column}.hp-organizer-head strong{color:var(--text);font-size:var(--ui-font-meta, 12px);line-height:1.3}.hp-organizer-head small{color:var(--text-faint);font-size:var(--ui-font-caption, 11px)}.hp-organizer-mark{width:30px;height:30px;flex:none;display:grid;place-items:center;border-radius:50%;background:var(--overlay-light);color:var(--text-light)}.hp-organizer-head>button{width:30px;height:30px;flex:none;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:var(--text-muted);cursor:pointer}.hp-organizer-head>button:hover{color:var(--text);background:var(--bg-hover)}.hp-organizer-grid{box-sizing:border-box;display:grid;grid-template-columns:repeat(6,78px);grid-auto-rows:78px;align-content:start;justify-content:center;justify-items:center;gap:6px 8px;min-height:0;max-height:414px;overflow-y:auto;overscroll-behavior:contain;padding:5px 8px;scroll-padding-block:5px}.hp-organizer-grid .hp-tile,.hp-organizer-new{width:78px;min-height:78px;padding:5px 3px;gap:5px}.hp-organizer-grid .hp-tile{color:var(--text-light)}.hp-organizer-grid .hp-tile-icon,.hp-organizer-new>span{width:40px;height:40px;background:color-mix(in srgb,var(--bg-card) 54%,transparent);backdrop-filter:blur(18px) saturate(135%);-webkit-backdrop-filter:blur(18px) saturate(135%);box-shadow:var(--icon-shadow)}.hp-organizer-grid .hp-tile:hover{color:var(--text)}.hp-organizer-new{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:5px 3px;border:var(--border-width) solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--text-muted);font:inherit;cursor:pointer;transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-spring)}.hp-organizer-new>span{display:grid;place-items:center;border-radius:var(--radius-md);box-shadow:none}.hp-organizer-new small{max-width:100%;overflow:hidden;font-size:var(--ui-font-caption, 11px);text-overflow:ellipsis;white-space:nowrap}.hp-organizer-new:hover{color:var(--text);background:var(--bg-hover);transform:translateY(-2px)}.hp-organizer-grid .hp-tile-name,.hp-organizer-new small{font-size:var(--ui-font-caption, 11px)}.hp-organizer-panel>footer{flex:none;padding-top:7px;color:var(--text-ghost);font-size:var(--ui-font-caption, 11px);text-align:center}.hp-wallpaper-stage{z-index:30;justify-items:end}.hp-wallpaper-sheet{box-sizing:border-box;width:min(420px,100%);max-height:100%;overflow:auto;padding:18px;border:var(--border-width) solid var(--border);border-radius:calc(var(--radius-lg) + 4px);background:var(--bg-card);box-shadow:var(--card-shadow);animation:hp-rise var(--duration-slow) var(--ease-out) both}.hp-wallpaper-head>div{min-width:0;display:flex;flex-direction:column}.hp-wallpaper-head strong{color:var(--text);font-size:var(--ui-font-heading, 14px)}.hp-wallpaper-head span{color:var(--text-faint);font-size:var(--ui-font-caption, 11px);line-height:1.4}.hp-wallpaper-sources{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;margin-top:17px;padding:3px;border:var(--border-width) solid var(--border);border-radius:var(--radius-md);background:var(--overlay-subtle)}.hp-wallpaper-sources button{min-width:0;height:30px;display:inline-flex;align-items:center;justify-content:center;gap:4px;border:0;border-radius:calc(var(--radius-md) - 3px);background:transparent;color:var(--text-muted);font:inherit;font-size:var(--ui-font-caption, 11px);cursor:pointer}.hp-wallpaper-sources button:hover{color:var(--text)}.hp-wallpaper-sources button.on{background:var(--bg-card);color:var(--text);box-shadow:var(--btn-shadow)}.hp-wallpaper-loading,.hp-wallpaper-error{min-height:126px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:20px;color:var(--text-faint);font-size:var(--ui-font-caption, 11px);line-height:1.5;text-align:center}.hp-wallpaper-error{min-height:48px;color:var(--danger)}.hp-theme-presets{padding-top:13px}.hp-theme-presets>p{margin:0 1px 9px;color:var(--text-faint);font-size:var(--ui-font-caption, 11px);line-height:1.45}.hp-theme-presets>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.hp-theme-presets button{position:relative;min-width:0;display:grid;grid-template-rows:auto 22px;overflow:hidden;padding:0;border:var(--border-width) solid transparent;border-radius:var(--radius-sm);background:var(--overlay-subtle);color:var(--text-muted);font:inherit;font-size:var(--ui-font-caption, 11px);cursor:pointer;transition:transform var(--duration-fast) var(--ease-spring),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.hp-theme-presets button:hover{color:var(--text);transform:translateY(-2px)}.hp-theme-presets button.on{border-color:color-mix(in srgb,var(--accent-ink) 72%,var(--border));color:var(--text)}.hp-theme-presets button>span:nth-child(2){align-self:center;padding-inline:7px;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.hp-theme-presets button>i{position:absolute;top:6px;right:6px;width:18px;height:18px;display:grid;place-items:center;border-radius:50%;background:var(--action-fill);color:var(--on-action);font-style:normal}.hp-theme-preview{position:relative;min-height:76px;overflow:hidden;background-color:color-mix(in srgb,var(--bg) 94%,var(--accent-ink) 6%)}.hp-wallpaper-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 1px 9px}.hp-wallpaper-switch,.hp-wallpaper-refresh{display:inline-flex;align-items:center;gap:7px;border:0;background:transparent;color:var(--text-muted);font:inherit;font-size:var(--ui-font-caption, 11px);cursor:pointer}.hp-wallpaper-switch>span{position:relative;width:27px;height:16px;border-radius:var(--radius-pill, 999px);background:var(--overlay-strong)}.hp-wallpaper-switch>span:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--bg-card);transition:transform var(--duration-fast) var(--ease-spring)}.hp-wallpaper-switch.on>span{background:var(--action-fill)}.hp-wallpaper-switch.on>span:after{transform:translate(11px)}.hp-wallpaper-refresh:hover{color:var(--text)}.hp-wallpaper-refresh:disabled{opacity:.45;cursor:wait}.hp-wallpaper-refresh:disabled svg{animation:hp-spin .85s linear infinite}@keyframes hp-spin{to{transform:rotate(1turn)}}.hp-wallpaper-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}.hp-wallpaper-grid button{position:relative;aspect-ratio:5 / 3;overflow:hidden;padding:0;border:var(--border-width) solid transparent;border-radius:var(--radius-sm);background:var(--overlay-light);cursor:pointer;transition:transform var(--duration-fast) var(--ease-spring),border-color var(--duration-fast) var(--ease-out)}.hp-wallpaper-grid button:hover{transform:translateY(-2px)}.hp-wallpaper-grid button.on{border-color:var(--accent-ink)}.hp-wallpaper-grid img{width:100%;height:100%;display:block;object-fit:cover}.hp-wallpaper-grid button>span{position:absolute;right:5px;bottom:5px;width:19px;height:19px;display:grid;place-items:center;border-radius:50%;background:var(--action-fill);color:var(--on-action)}.hp-wallpaper-custom{display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:14px 1px 6px}.hp-wallpaper-custom-preview{grid-column:1 / -1;aspect-ratio:16 / 7;border-radius:var(--radius-md);background-color:var(--overlay-light);background-position:center;background-size:cover}.hp-wallpaper-custom>div:nth-child(2){min-width:0;display:flex;flex-direction:column}.hp-wallpaper-custom strong{color:var(--text);font-size:var(--ui-font-caption, 11px)}.hp-wallpaper-custom span{color:var(--text-faint);font-size:var(--ui-font-caption, 11px)}.hp-wallpaper-custom button{min-height:29px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 8px;border:var(--border-width) solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font:inherit;font-size:var(--ui-font-caption, 11px);cursor:pointer}.hp-wallpaper-custom button:hover{color:var(--text);background:var(--bg-hover)}.hp-wallpaper-options{margin-top:14px;padding-top:8px;border-top:var(--border-width) solid var(--border)}.hp-wallpaper-options>button{width:100%;min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:7px 3px;border:0;background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer}.hp-wallpaper-options>button>span{min-width:0;display:flex;flex-direction:column}.hp-wallpaper-options strong{font-size:var(--ui-font-caption, 11px)}.hp-wallpaper-options small{color:var(--text-faint);font-size:var(--ui-font-caption, 11px);font-weight:400}.hp-wallpaper-options i{position:relative;width:27px;height:16px;flex:none;border-radius:var(--radius-pill, 999px);background:var(--overlay-strong)}.hp-wallpaper-options i:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--bg-card);transition:transform var(--duration-fast) var(--ease-spring)}.hp-wallpaper-options button.on i{background:var(--action-fill)}.hp-wallpaper-options button.on i:after{transform:translate(11px)}@media(max-width:620px){.hp-root{padding-inline:12px;--hp-padding-block: 24px}.hp-wallpaper-button{top:calc(var(--hp-chrome-top, 0px) + 10px);right:10px}.hp-stack{gap:18px}.hp-clock{font-size:46px}.hp-brand{font-size:30px}.hp-dock{gap:2px}.hp-tile{width:70px;min-height:74px}.hp-pinned-zone{min-width:146px;max-width:48%;gap:2px}.hp-pinned-zone .hp-tile,.hp-space-main .hp-tile{flex-basis:70px}.hp-space-divider{margin-inline:3px}.hp-composer .t2c-card{padding-inline:11px}.hp-folder-stage,.hp-organizer-stage,.hp-wallpaper-stage{padding:calc(var(--hp-chrome-top, 0px) + 10px) 10px calc(var(--hp-chrome-bottom, 0px) + 10px)}.hp-organizer-panel{width:min(390px,100%);padding-inline:2px}.hp-organizer-grid{grid-template-columns:repeat(4,72px);grid-auto-rows:76px;gap:4px 6px}.hp-organizer-grid .hp-tile,.hp-organizer-new{width:72px;min-height:76px}.hp-folder-panel{min-height:300px;padding:14px}.hp-folder-grid{gap:5px}.hp-folder-app{width:82px;min-height:92px}.hp-wallpaper-sheet{width:100%;padding:15px}.hp-wallpaper-credit{display:none}}@media(max-width:390px){.hp-organizer-panel{width:min(300px,100%)}.hp-organizer-grid{grid-template-columns:repeat(3,72px)}.hp-theme-presets>div{grid-template-columns:1fr}}@media(max-height:700px){.hp-root{--hp-padding-block: 20px}.hp-stack{gap:16px}.hp-brand{font-size:28px}.hp-clock{font-size:44px}.hp-date{margin-top:6px}}@media(max-height:520px){.hp-root{--hp-padding-block: 12px}.hp-stack{gap:10px}.hp-brand{display:none}.hp-clock{font-size:32px}.hp-date{margin-top:3px;font-size:var(--ui-font-caption, 11px)}.hp-greet{display:none}}@media(prefers-reduced-motion:reduce){.hp-title,.hp-composer,.hp-spaces,.hp-folder-panel,.hp-folder-stage,.hp-folder-stage:before,.hp-organizer-panel,.hp-organizer-stage,.hp-organizer-stage:before,.hp-wallpaper-sheet,.hp-wallpaper-stage,.hp-wallpaper-stage:before{animation:none}.hp-stack,.hp-wallpaper,.hp-wallpaper-art,.hp-tile,.hp-tile-icon,.hp-folder-app{transition-duration:.01ms!important}.hp-root[data-focus-blur=true].hp-composer-focused .hp-wallpaper,.hp-root[data-focus-blur=true].hp-composer-focused .hp-wallpaper-art,.hp-root[data-focus-blur=true].hp-layer-focused .hp-wallpaper,.hp-root[data-focus-blur=true].hp-layer-focused .hp-wallpaper-art,.hp-root[data-focus-blur=true].hp-secondary-open .hp-wallpaper{filter:none;transform:none}.hp-tile:hover,.hp-tile:active,.hp-folder-app:hover,.hp-drag-overlay{transform:none}}.hp-still .hp-title,.hp-still .hp-composer,.hp-still .hp-spaces,.hp-still .hp-folder-panel,.hp-still .hp-folder-stage,.hp-still .hp-folder-stage:before,.hp-still .hp-organizer-panel,.hp-still .hp-organizer-stage,.hp-still .hp-organizer-stage:before,.hp-still .hp-wallpaper-sheet,.hp-still .hp-wallpaper-stage,.hp-still .hp-wallpaper-stage:before{animation:none}.hp-still[data-focus-blur=true].hp-composer-focused .hp-wallpaper,.hp-still[data-focus-blur=true].hp-composer-focused .hp-wallpaper-art,.hp-still[data-focus-blur=true].hp-layer-focused .hp-wallpaper,.hp-still[data-focus-blur=true].hp-layer-focused .hp-wallpaper-art,.hp-still[data-focus-blur=true].hp-secondary-open .hp-wallpaper{filter:none;transform:none}.hp-still .hp-tile,.hp-still .hp-tile-icon,.hp-still .hp-folder-app{transition-duration:.01ms!important}.hp-root.hp-phone{--hp-dp: calc(1px / var(--uiz, 1));--hp-padding-block: calc(18 * var(--hp-dp));padding-inline:calc(18 * var(--hp-dp))}.hp-phone .hp-stack{align-items:stretch;height:100%;margin:0;gap:calc(14 * var(--hp-dp))}.hp-phone .hp-title{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:calc(6 * var(--hp-dp));text-align:left;margin-bottom:auto}.hp-phone .hp-brand{flex:0 0 100%;order:1;margin:0 0 calc(4 * var(--hp-dp));font-size:var(--ui-font-title, 16px)}.hp-phone .hp-greet{flex:0 0 100%;order:2;margin:0;color:var(--text);font-size:var(--ui-font-display, 20px);font-weight:600;line-height:1.25}.hp-phone .hp-date{order:3;margin-top:calc(6 * var(--hp-dp));font-size:var(--ui-font-body, 13px)}.hp-phone .hp-clock{order:4;font-size:var(--ui-font-body, 13px);font-weight:400;letter-spacing:0;line-height:inherit;color:var(--text-muted)}.hp-phone .hp-clock:before{content:"·";margin-right:calc(6 * var(--hp-dp))}.hp-root.hp-phone[data-wallpaper=true] .hp-greet{opacity:1}.hp-root.hp-phone[data-wallpaper=true] .hp-clock{color:var(--text);opacity:.7}.hp-phone .hp-cards{order:2;display:grid;grid-template-columns:1fr 1fr;gap:calc(12 * var(--hp-dp))}.hp-phone .hp-card{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;align-content:space-between;column-gap:calc(10 * var(--hp-dp));row-gap:calc(8 * var(--hp-dp));min-height:calc(104 * var(--hp-dp));padding:calc(16 * var(--hp-dp));border:0;border-radius:var(--radius-lg, 16px);background:var(--hp-glass-sheen),var(--hp-glass-tint);backdrop-filter:var(--hp-glass-filter);-webkit-backdrop-filter:var(--hp-glass-filter);box-shadow:var(--card-shadow);color:var(--text);font-family:var(--font-ui);text-align:left}.hp-phone .hp-card:active{transform:scale(.98)}.hp-phone .hp-card-icon{display:inline-flex;align-self:center;color:var(--text-muted)}.hp-phone .hp-card-icon>svg{width:calc(24 * var(--hp-dp));height:calc(24 * var(--hp-dp))}.hp-phone .hp-card-name{align-self:center;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ui-font-heading, 14px);font-weight:600}.hp-phone .hp-card-status{grid-column:1 / -1;min-width:0;min-height:1.3em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ui-font-caption, 11px);line-height:1.3;color:var(--text-muted)}.hp-phone .hp-pill{order:3;display:flex;align-items:center;gap:calc(12 * var(--hp-dp));height:calc(54 * var(--hp-dp));padding:0 calc(8 * var(--hp-dp)) 0 calc(20 * var(--hp-dp));border:0;border-radius:var(--radius-pill, 999px);background:var(--hp-glass-sheen),var(--hp-glass-tint);backdrop-filter:var(--hp-glass-filter);-webkit-backdrop-filter:var(--hp-glass-filter);box-shadow:var(--card-shadow);color:var(--text-muted);font-family:var(--font-ui);font-size:var(--ui-font-body, 13px);text-align:left}.hp-phone .hp-pill-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hp-phone .hp-pill-text[data-draft]{color:var(--text)}.hp-phone .hp-pill-mic{align-self:stretch;display:grid;place-items:center;width:calc(44 * var(--hp-dp));margin-inline:calc(-8 * var(--hp-dp))}.hp-phone .hp-pill-mic>svg{width:calc(20 * var(--hp-dp));height:calc(20 * var(--hp-dp))}.hp-phone .hp-pill-send{display:grid;place-items:center;width:calc(38 * var(--hp-dp));height:calc(38 * var(--hp-dp));border-radius:50%;background:var(--accent);color:var(--on-accent, #fff)}.hp-phone .hp-pill-send>svg{width:calc(18 * var(--hp-dp));height:calc(18 * var(--hp-dp))}.hp-phone .hp-composer{order:3}.hp-root.hp-phone:not(.hp-composer-focused) .hp-composer{display:none}.hp-root.hp-phone.hp-composer-focused .hp-pill,.hp-root.hp-phone.hp-composer-focused .hp-cards{display:none}.hp-root.hp-phone.hp-composer-focused .hp-composer{transform:none}.hp-root.hp-phone.hp-composer-focused .hp-title{opacity:1;transform:none}