@forsion/unit 2.12.2 → 2.13.0

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 (204) hide show
  1. package/README.md +61 -0
  2. package/backendWorker.mjs +6 -2
  3. package/main.mjs +987 -495
  4. package/package.json +1 -1
  5. package/release.json +5 -5
  6. package/web/assets/ArtificialView-BSv3Mx5C.js +1 -0
  7. package/web/assets/{AutomationBuilder-sxWdUa0L.js → AutomationBuilder-BuiHtVB-.js} +1 -1
  8. package/web/assets/CalendarConfigView-BJtG6cqN.js +1 -0
  9. package/web/assets/CalendarView-C-FX1RED.js +1 -0
  10. package/web/assets/CapabilityMenu-kx1TIJYN.js +1 -0
  11. package/web/assets/{CheckboxInput-BsaoUHZ0.js → CheckboxInput-eW7xdiRS.js} +1 -1
  12. package/web/assets/Chrome-B77-lQyh.js +1 -0
  13. package/web/assets/{CodeView-j065KtVh.js → CodeView-Df3AiSIi.js} +3 -3
  14. package/web/assets/DashboardGridView-MlO1dpuo.js +17 -0
  15. package/web/assets/{EventCard-BmDQkEj9.js → EventCard-CDmeCbI8.js} +1 -1
  16. package/web/assets/ExcalidrawCanvas-D9vkBh_5.js +1 -0
  17. package/web/assets/{FloatingToc-CENybkAA.js → FloatingToc-tART_jC4.js} +1 -1
  18. package/web/assets/HomepageView-Trqmd3RV.js +1 -0
  19. package/web/assets/ImageStudioPanels-BfCVTnKC.js +3 -0
  20. package/web/assets/ImageStudioView-KJhx0wJk.js +1 -0
  21. package/web/assets/InlineFiles-BHwivGbQ.js +1 -0
  22. package/web/assets/MarkdownBlock--__nPQGh.css +1 -0
  23. package/web/assets/MarkdownBlock-D8LgHFYY.js +58 -0
  24. package/web/assets/ModelPill-DrW2cG0l.js +2 -0
  25. package/web/assets/MuseLibraryView-CW78Uivf.js +2 -0
  26. package/web/assets/{MuseView-d-iBk3sc.js → MuseView-Cb6R_l4i.js} +2 -2
  27. package/web/assets/{PageHistoryPanel-CR-k1AM7.js → PageHistoryPanel-BQs9IWTP.js} +2 -2
  28. package/web/assets/PdfAnnotator-BFTBkxvO.js +505 -0
  29. package/web/assets/PdfAnnotator-C_kglLCA.css +1 -0
  30. package/web/assets/{ProductView-u2aezVsl.js → ProductView-mB-S0j81.js} +1 -1
  31. package/web/assets/RightPanel-BVZeVO3c.js +4 -0
  32. package/web/assets/RunLocationPicker-BE5mxnab.css +1 -0
  33. package/web/assets/RunLocationPicker-CyVa0RJa.js +38 -0
  34. package/web/assets/{SidebarRow-BuSkKH5q.js → SidebarRow-D77yrSLf.js} +1 -1
  35. package/web/assets/{SketchCard-D87GADyG.js → SketchCard-CAAr_cqF.js} +5 -5
  36. package/web/assets/{StudioGuestSurface-BijU_EEb.js → StudioGuestSurface-DthpuVGg.js} +1 -1
  37. package/web/assets/{TodoListView-DPPVpPUn.js → TodoListView-C3ZkMIIf.js} +1 -1
  38. package/web/assets/{Tooltip-DY4ISA-e.js → Tooltip-D9Dt9ZTr.js} +1 -1
  39. package/web/assets/UnifiedPage-C75y-MKT.js +68 -0
  40. package/web/assets/UnifiedPage-CWXc_mo1.css +1 -0
  41. package/web/assets/{amadeus-manual.en-DWaN2fPs.js → amadeus-manual.en-D5wZKuag.js} +3 -3
  42. package/web/assets/{amadeus-manual.zh--7D5TS8X.js → amadeus-manual.zh-Br5fidrj.js} +3 -3
  43. package/web/assets/{appStore-Dg9WALEA.js → appStore-B1ynyt42.js} +186 -120
  44. package/web/assets/appStore-BC_CQv-L.css +1 -0
  45. package/web/assets/{arrow-up-right-CpQs92mu.js → arrow-up-right-R10mR2I6.js} +1 -1
  46. package/web/assets/{astryxBridge-BZhaZPs4.js → astryxBridge-CU_kQTEl.js} +3 -3
  47. package/web/assets/automationListSource-B8EIRmDW.js +1 -0
  48. package/web/assets/book-open-DBJ3dDpw.js +1 -0
  49. package/web/assets/{calendarNavStore-C7fGRpoH.js → calendarNavStore-DGvUlU5N.js} +1 -1
  50. package/web/assets/{canvasPrefs-BeG4oEgP.js → canvasPrefs-DwL_OAAo.js} +1 -1
  51. package/web/assets/chatBoxSurface-Lq-2qfd3.js +1 -0
  52. package/web/assets/{circle-question-mark-WL3vbp-Z.js → circle-question-mark-HPZpZQxd.js} +1 -1
  53. package/web/assets/{circle-x-D7s-M5sB.js → circle-x-BZfe7d6S.js} +1 -1
  54. package/web/assets/{client-BSKpsyAw.js → client-DxGbwZLy.js} +1 -1
  55. package/web/assets/{code-xml-BALV9u_c.js → code-xml-joKQ-qGS.js} +1 -1
  56. package/web/assets/{codeStudioStore-C2mWfm32.js → codeStudioStore-C7rGKlOC.js} +1 -1
  57. package/web/assets/codingNavigation-CZB4v1ZW.css +1 -0
  58. package/web/assets/codingNavigation-CjeWG4xm.js +47 -0
  59. package/web/assets/{create-4xUyKtAF.js → create-BjBRKATq.js} +4 -4
  60. package/web/assets/dashboardSurface-Cojgf_-U.js +1 -0
  61. package/web/assets/{deskCapture-Df701U8L.js → deskCapture-DnGWk1iq.js} +1 -1
  62. package/web/assets/{diff2html-BV-zCH4d.js → diff2html-Cd1rVi_Z.js} +1 -1
  63. package/web/assets/{docx-preview-DW4IyU_Q.js → docx-preview-CK0k1mUD.js} +1 -1
  64. package/web/assets/{emoji-DGaxpCIu.js → emoji-Cjm3bKiF.js} +1 -1
  65. package/web/assets/floatingTocSurface-Dd1pT5j5.js +1 -0
  66. package/web/assets/foldActions-Dm-uAt3L.js +1 -0
  67. package/web/assets/folder-CvZyHIgb.js +1 -0
  68. package/web/assets/{folder-plus-D1TDb7k9.js → folder-plus-BRScGQ9m.js} +1 -1
  69. package/web/assets/gestures-CZQVefU0.js +1 -0
  70. package/web/assets/{hand-Crrw-nSn.js → hand-D3QspKYq.js} +1 -1
  71. package/web/assets/{hard-drive-BbyVSbfP.js → hard-drive-BQsHSala.js} +1 -1
  72. package/web/assets/i18n-ecQQxiMQ.css +1 -0
  73. package/web/assets/i18n.generated-BZRHO2Nc.js +15 -0
  74. package/web/assets/imageStudio--KF9gwHA.css +1 -0
  75. package/web/assets/imageStudio-Cy3_437s.js +2 -0
  76. package/web/assets/{index-CflzrdSt.js → index-0AYHATDX.js} +1 -1
  77. package/web/assets/{index-Dg9oixs4.js → index-1FhRiJ_X.js} +1 -1
  78. package/web/assets/{index-CqyM6tQ0.js → index-4E9nrhwf.js} +1 -1
  79. package/web/assets/{index-Cmr7gVZQ.js → index-8ag1K7AZ.js} +1 -1
  80. package/web/assets/{index-SZ5waGAq.js → index-9BmmlTjY.js} +1 -1
  81. package/web/assets/{index-CzM-C2Sd.js → index-B5GxvbNm.js} +1 -1
  82. package/web/assets/{index-DKhyDkGB.js → index-BPhwi4-v.js} +1 -1
  83. package/web/assets/index-BaRySZ-M.js +1 -0
  84. package/web/assets/{index-Brik2pf9.js → index-BcVGjCAJ.js} +1 -1
  85. package/web/assets/{index-OHi69jDq.js → index-BdZaheMZ.js} +1 -1
  86. package/web/assets/{index-D1f_JwPH.js → index-BgDZGDqt.js} +1 -1
  87. package/web/assets/{index-C6GJulug.js → index-BgtO11q8.js} +1 -1
  88. package/web/assets/{index-CF4RV4mh.js → index-Bh_nLVTc.js} +90 -90
  89. package/web/assets/{index-DjzSBM0U.js → index-BnWj6ggb.js} +1 -1
  90. package/web/assets/{index-BRW82CsP.js → index-Bpc3R3DS.js} +1 -1
  91. package/web/assets/{index-BCZZVJ_w.js → index-C9yo04Ck.js} +1 -1
  92. package/web/assets/{index--drOLtq7.js → index-CcOag8eb.js} +1 -1
  93. package/web/assets/{index-Czu_bbDM.js → index-D0FLFLfh.js} +1 -1
  94. package/web/assets/{index-KL5Rj9kP.js → index-D6mpAJ9S.js} +1 -1
  95. package/web/assets/{index-tAXBa_fN.js → index-DElrDw66.js} +1 -1
  96. package/web/assets/{index-DUWR2nZi.js → index-DJLWTPtq.js} +1 -1
  97. package/web/assets/{index-gPSbFSUn.js → index-DNE_PBJt.js} +1 -1
  98. package/web/assets/index-Dj-PygjB.js +1 -0
  99. package/web/assets/{index-BYsdKR_1.js → index-Dkd-nl1u.js} +1 -1
  100. package/web/assets/{index-C7U6T-k8.js → index-GjLSlygt.js} +1 -1
  101. package/web/assets/{invitePage-lLQ-e0pj.js → invitePage-B4gMvEKi.js} +1 -1
  102. package/web/assets/{ipc-DQOD2UKk.js → ipc-CPhL3bPp.js} +1 -1
  103. package/web/assets/{jszip.min-DZxV9uZ_.js → jszip.min-DAJT9RUA.js} +1 -1
  104. package/web/assets/launchpad-C2c1MSVX.css +1 -0
  105. package/web/assets/{layout-grid-B_pjJwz4.js → layout-grid-DfUfnvDS.js} +1 -1
  106. package/web/assets/{linkFollow-C0_3k_PC.js → linkFollow-C6PHGUxk.js} +5 -5
  107. package/web/assets/{list-tree-DkAJYEXd.js → list-tree-DaGpnIYu.js} +1 -1
  108. package/web/assets/{listFold-BsOVn9UZ.js → listFold-Q_8mh5ZG.js} +1 -1
  109. package/web/assets/{lock-BnGHxjeE.js → lock-DQ_yL4nF.js} +1 -1
  110. package/web/assets/{log-out-DBuMeqik.js → log-out-DFwTeh2X.js} +1 -1
  111. package/web/assets/main-CwqZ_ymb.js +19 -0
  112. package/web/assets/markdownEditorSurface-e_oMhqx-.js +3 -0
  113. package/web/assets/mdMarkStore-DjN4bf1T.js +2 -0
  114. package/web/assets/{mdMarks-Bq7Hl-4C.js → mdMarks-cmL6vzR-.js} +1 -1
  115. package/web/assets/{message-square-plus-BiAZAvcw.js → message-square-plus-CEHkduIL.js} +1 -1
  116. package/web/assets/{messages-BH5MfQdZ.js → messages-CBtmbpur.js} +1 -1
  117. package/web/assets/minus-BUT48dAC.js +1 -0
  118. package/web/assets/mobileEntry-qR7BAROr.js +13 -0
  119. package/web/assets/nativeDownload-CziEyW_p.js +1 -0
  120. package/web/assets/{pageChrome-xLNdFaSg.css → pageChrome-CovzZPdb.css} +1 -1
  121. package/web/assets/pageChrome-DFz_AAzZ.js +1 -0
  122. package/web/assets/{pageTree-CZH2J6cc.js → pageTree-yVO1_fSy.js} +2 -2
  123. package/web/assets/{pen-tool-lkmBqliH.js → pen-tool-uxsFELYC.js} +1 -1
  124. package/web/assets/{pencil-Cvk91P_Z.js → pencil-BSbra1Ra.js} +1 -1
  125. package/web/assets/pluginChat-BMFnf_j2.js +2 -0
  126. package/web/assets/{redo-2-DSi54z4e.js → redo-2-BK5LMNa5.js} +1 -1
  127. package/web/assets/{rotate-ccw-CUlnplr0.js → rotate-ccw-HedfU4na.js} +1 -1
  128. package/web/assets/{sharePage-MM6UpPJ9.js → sharePage-CpzDpuU1.js} +2 -2
  129. package/web/assets/{shareViewer-CDZ8lTdy.js → shareViewer-BwzH2bIs.js} +1 -1
  130. package/web/assets/{star-CwDiGyUW.js → star-CgYon3z4.js} +1 -1
  131. package/web/assets/tableSurface-CmDwnKnd.js +1 -0
  132. package/web/assets/{terminal-DIXogYJY.js → terminal-krsPf1mc.js} +1 -1
  133. package/web/assets/{terminalView-B3aZSsrQ.js → terminalView-4e2_u5_I.js} +1 -1
  134. package/web/assets/theme-C6D3tMGV.css +1 -0
  135. package/web/assets/type-GJYLEhY-.js +1 -0
  136. package/web/assets/{undo-2-tUKCv5Gs.js → undo-2-DCTs4Ro4.js} +1 -1
  137. package/web/assets/{unitAccount-D8lVwaaT.js → unitAccount-D3xjX3cu.js} +1 -1
  138. package/web/assets/{unitBridge-D547ublk.js → unitBridge-D5JcIkAP.js} +1 -1
  139. package/web/assets/{unitCloudTransport-BVF6lVp4.js → unitCloudTransport-B44L3x6M.js} +1 -1
  140. package/web/assets/{unitOwnerAccess-BfnEjsZb.js → unitOwnerAccess-CRUHWGpf.js} +1 -1
  141. package/web/assets/{unitShim-DxetRgmP.js → unitShim-_VzxvdEG.js} +3 -3
  142. package/web/assets/{upload-BbeAsMuD.js → upload-MVVRQtkj.js} +1 -1
  143. package/web/assets/userSpaces-CI4eqEgh.js +1 -0
  144. package/web/assets/viewportLock-BH26xHQO.js +611 -0
  145. package/web/assets/viewportLock-IP1zaVkz.css +1 -0
  146. package/web/assets/{workflow-DuoVRSSX.js → workflow-DzeW9OXR.js} +1 -1
  147. package/web/assets/{zoom-in-hr5bRpDL.js → zoom-in-CovPsw4g.js} +1 -1
  148. package/web/index.html +212 -13
  149. package/web/assets/ArtificialView-B4ESD4iK.js +0 -1
  150. package/web/assets/CalendarConfigView-cCfo_EvZ.js +0 -1
  151. package/web/assets/CalendarView-wgLapctk.js +0 -1
  152. package/web/assets/CapabilityMenu-BQBsM638.js +0 -1
  153. package/web/assets/ChatView-BIUk0OJd.css +0 -1
  154. package/web/assets/ChatView-C-jCJnyS.js +0 -47
  155. package/web/assets/Chrome-CwFiDmre.js +0 -1
  156. package/web/assets/DashboardGridView-DXqe0vPd.js +0 -17
  157. package/web/assets/ExcalidrawCanvas-C3egkikA.js +0 -1
  158. package/web/assets/HomepageView-CRdhjLXu.js +0 -1
  159. package/web/assets/ImageStudioPanels-Dke7xf8E.js +0 -3
  160. package/web/assets/ImageStudioView-g38V8gaj.js +0 -1
  161. package/web/assets/InlineFiles-C_hjvn3u.js +0 -1
  162. package/web/assets/MarkdownBlock-DIjYEhTK.js +0 -56
  163. package/web/assets/ModelPill-BPlgovPo.js +0 -1
  164. package/web/assets/MuseLibraryView-CenyTTim.js +0 -2
  165. package/web/assets/PdfAnnotator-CGzC_o1Q.css +0 -1
  166. package/web/assets/PdfAnnotator-D79ip27w.js +0 -560
  167. package/web/assets/RightPanel-C3OJTIqT.js +0 -4
  168. package/web/assets/RunLocationPicker-BNcZ7KKF.css +0 -1
  169. package/web/assets/RunLocationPicker-CTYXUH2z.js +0 -34
  170. package/web/assets/UnifiedPage-CKNtVD_n.js +0 -57
  171. package/web/assets/UnifiedPage-DX_sTpyZ.css +0 -1
  172. package/web/assets/appStore-Di8LXuJ9.css +0 -1
  173. package/web/assets/automationListSource-DP5xZBxo.js +0 -1
  174. package/web/assets/chatBoxSurface-zvcyfrxE.js +0 -1
  175. package/web/assets/dashboardSurface-CFTH5z4c.js +0 -1
  176. package/web/assets/ellipsis-r1EcXsFq.js +0 -1
  177. package/web/assets/floatingTocSurface-C6RJ6i41.js +0 -1
  178. package/web/assets/foldActions-B7KByFdN.js +0 -1
  179. package/web/assets/folder-DlxnPmWY.js +0 -1
  180. package/web/assets/frame-_xBVYe3P.js +0 -1
  181. package/web/assets/gestures-CkW1Kfs9.js +0 -1
  182. package/web/assets/i18n-D-eU58uw.css +0 -1
  183. package/web/assets/i18n.generated-Bbsz16cl.js +0 -15
  184. package/web/assets/imageStudio-BqbNOvpu.css +0 -1
  185. package/web/assets/imageStudio-C_Rs630L.js +0 -2
  186. package/web/assets/index-BCubCwdT.js +0 -1
  187. package/web/assets/index-DZfZTksa.js +0 -1
  188. package/web/assets/main-Dki8NlsT.js +0 -21
  189. package/web/assets/markdownEditorSurface-B4PeUzed.js +0 -3
  190. package/web/assets/mdMarkStore-CsKl7C8O.js +0 -2
  191. package/web/assets/minus-Cyv1YzOU.js +0 -1
  192. package/web/assets/mobileEntry-Bd_nKr0D.js +0 -13
  193. package/web/assets/nativeDownload-D-f1_L2S.js +0 -1
  194. package/web/assets/pageChrome-C9_azUYW.js +0 -1
  195. package/web/assets/panel-left-rOc8As0s.js +0 -1
  196. package/web/assets/pen-line-m6_HvWZ9.js +0 -1
  197. package/web/assets/sticky-note-BIuPUSOU.js +0 -1
  198. package/web/assets/tableSurface-Y_JBQsuz.js +0 -1
  199. package/web/assets/theme-DfEi_DND.css +0 -1
  200. package/web/assets/type-Cqoabh7H.js +0 -1
  201. package/web/assets/userSpaces-DyyAn7vj.js +0 -1
  202. package/web/assets/viewportLock-C4SX-9PO.js +0 -103
  203. package/web/assets/viewportLock-DYSe7Jsn.css +0 -1
  204. package/web/assets/waves-horizontal-B8ZpHQ5H.js +0 -1
@@ -1 +0,0 @@
1
- import{t as i}from"./index-CF4RV4mh.js";import{bg as O,gS as s,u as p,aB as M,q1 as C,k as g,q4 as D,jd as N,h0 as $,g8 as E,cI as q,q5 as K,g4 as B,gZ as L,g7 as x,hy as P,i as U}from"./appStore-Dg9WALEA.js";import{n as W}from"./nativeDownload-D-f1_L2S.js";import"./messages-BH5MfQdZ.js";const Z="plugin:automation:rules",d=t=>t?JSON.stringify(t):null,m=()=>U.getState().openView("automation-detail",{},"main"),f=async t=>{try{return await t(),s.getState().bump(),!0}catch(o){return p.getState().toast(String(o instanceof Error?o.message:o),!0),!1}},w=5e3,_=6e4,S=new Set,A=new Map,y=t=>S.has(t)||Date.now()-(A.get(t)??-1/0)<_,z=t=>y(d(t));function v(t,o,u,a){const n=d(t);if(y(n))return;const e=O()==="main";if(!e&&!window.confirm(i("automation.deleteConfirm",{name:o})))return;S.add(n);const r=s.getState();d(r.sel)===n&&r.setSel(null),r.bump();const c=()=>{S.delete(n),s.getState().bump()};let l=!1;const h=()=>{l||(l=!0,f(u).then(I=>{I&&(A.set(n,Date.now()),a?.())}).finally(c))};if(!e){h();return}W({text:i("automation.deleted",{name:o}),level:"info",dedupeKey:`automation.delete:${n}`,receipt:!0,durationMs:w,onClose:h,action:{label:i("automation.undo"),run(){l||(l=!0,c())}}})||setTimeout(h,w)}let k=0,b;function J(t){const o=s.subscribe(t),u=P(t);if(k++===0){const a=()=>{s.getState().refresh(p.getState().cfg)},n=s.subscribe((c,l)=>{c.refreshNonce!==l.refreshNonce&&a()}),e=p.subscribe((c,l)=>{c.cfg!==l.cfg&&a()}),r=setInterval(a,8e3);b=()=>{clearInterval(r),n(),e()},a()}return()=>{o(),u(),--k===0&&(b?.(),b=void 0)}}const T={id:"rules",get title(){return i("space.automation")},search:!0,activeKey:()=>s.getState().builder?null:d(s.getState().sel),subscribe:J,items(t){const o=s.getState(),u=K(),a=t?.query?.trim().toLowerCase(),n=o.triggers.map(e=>({key:d({kind:"trigger",triggerId:e.id}),title:e.desc,icon:"today",category:x(e)?"finished":e.cond.type==="manual"?"buttons":"rules",hint:i(x(e)?"automation.finished":e.enabled?"automation.ux.on":"automation.ux.off"),searchText:`${B(i,e.cond)} ${L(i,u,e)}`}));for(const e of o.schedules)for(const r of e.entries)r.date&&r.prompt&&n.push({key:d({kind:"schedule",slug:e.slug,rowId:r.id}),title:r.name,icon:"calendar",category:"schedules",searchText:e.name,hint:i(r.auto?"automation.ux.on":"automation.ux.off")});for(const e of["muse","historian"])n.push({key:d({kind:e}),title:i(`automation.${e}.title`),icon:e==="muse"?"sparkles":"history",category:"system",hint:i(o.specialCfg?.[e].enabled?"automation.ux.on":"automation.ux.off")});return n.filter(e=>!y(e.key)&&(t?.group?e.category===t.group:a||e.category!=="finished")&&(!a||`${e.title} ${e.searchText||""}`.toLowerCase().includes(a)))},groups:()=>["rules","buttons","schedules","system","finished"].map(t=>({key:t,title:i(t==="rules"?"automation.ux.myWorkflows":t==="finished"?"automation.finished":`automation.group.${t}`),count:T.items({group:t}).length})).filter(t=>t.count>0||t.key==="rules"),open(t){s.getState().setSel(JSON.parse(t.key)),m()},actions:[{id:"new",get label(){return i("automation.new")},run(){s.getState().openBuilder(),m()}},{id:"overview",get label(){return i("automation.ux.overview")},run(){s.getState().setSel(null),m()}}],itemMenu(t){const o=JSON.parse(t.key),u=s.getState();if(p.getState().cfg,o.kind==="trigger"){const n=u.triggers.find(e=>e.id===o.triggerId);return n?[{id:"edit",label:i("common.edit"),run(){u.openBuilder(n.id),m()}},{id:"toggle",label:i(n.enabled?"automation.ux.pause":"automation.ux.enable"),run(){f(()=>C(g(),{...D(n),enabled:!n.enabled,actor:"user"}))}},{id:"delete",label:i("common.delete"),danger:!0,run(){v(o,n.desc,()=>N(g(),n.id))}}]:[]}if(o.kind==="schedule"){const n=u.schedules.find(e=>e.slug===o.slug)?.entries.find(e=>e.id===o.rowId);return n?[{id:"toggle",label:i(n.auto?"automation.ux.pause":"automation.ux.enable"),run(){f(()=>$(g(),o.slug,{id:n.id,name:n.name,date:n.date,repeat:n.repeat,auto:!n.auto,prompt:n.prompt,description:n.description,todo:n.todo}))}},{id:"delete",label:i("common.delete"),danger:!0,run(){v(o,n.name,()=>E(g(),o.slug,n.id))}}]:[]}const a=u.specialCfg?.[o.kind];return a?[{id:"toggle",label:i(a.enabled?"automation.ux.pause":"automation.ux.enable"),run(){f(()=>q(g(),{[o.kind]:{...a,enabled:!a.enabled}}))}}]:[]}};function G(){M.setState(t=>({listSources:[...t.listSources.filter(o=>!(o.pluginId==="automation"&&o.item.id==="rules")),{pluginId:"automation",item:T}]}))}export{Z as A,T as a,v as d,z as i,G as r,J as s};
@@ -1 +0,0 @@
1
- import{j as o,J as I,u as S,d as u,r as k}from"./index-CF4RV4mh.js";import{u as C,C as j}from"./index-DZfZTksa.js";import{fv as B}from"./appStore-Dg9WALEA.js";import"./client-BSKpsyAw.js";import"./ModelPill-BPlgovPo.js";import"./nativeDownload-D-f1_L2S.js";import"./ipc-DQOD2UKk.js";k({"chatbox.label":{zh:"输入内容",en:"Message"},"chatbox.submitFailed":{zh:"提交失败,内容已保留,请重试。",en:"Submission failed. Your draft is preserved; try again."}});function P({options:e,revision:d,input:c,isAlive:n}){const{t:l}=S(),[a,s]=u.useState(e.value||""),[i,m]=C(e.agentSlug),[x,v]=u.useState(!1),[g,f]=u.useState(!1),h=u.useRef(!1),r={modelId:e.modelId??i.modelId,thinkingLevel:e.thinkingLevel??i.thinkingLevel};u.useEffect(()=>{e.value!==void 0&&s(e.value)},[e.value,d]);const b=t=>{s(t.text),m(t),f(!1),e.value=t.text,e.modelId=t.modelId,e.thinkingLevel=t.thinkingLevel,e.onChange?.(t)};return o.jsx(j,{value:a,onValueChange:t=>b({...r,text:t}),selection:r,onSelectionChange:t=>b({...t,text:a}),inputRef:c,inputProps:{"aria-label":e.label||l("chatbox.label"),placeholder:e.placeholder},disabled:e.disabled||x,submitDisabled:!a.trim(),submitOn:e.submitOn,submitLabel:e.submitLabel||l("input.send"),afterInput:g?o.jsx("p",{role:"alert",children:l("chatbox.submitFailed")}):void 0,onSubmit:()=>{if(h.current||!a.trim()||!n())return;h.current=!0,v(!0),f(!1);const t={...r,text:a};Promise.resolve().then(()=>e.onSubmit(t)).then(L=>{n()&&L&&e.value===t.text&&b({modelId:e.modelId??r.modelId,thinkingLevel:e.thinkingLevel??r.thinkingLevel,text:""})}).catch(()=>{n()&&f(!0)}).finally(()=>{h.current=!1,n()&&v(!1)})}})}function H(e,d){const c={...d},n={current:null};let l=!0,a=0,s=()=>{};const i=()=>{s=B(e,o.jsx(I,{children:o.jsx(P,{options:c,revision:a++,input:n,isAlive:()=>l})}))};return i(),{update(m){l&&(Object.assign(c,m),i())},focus(){l&&n.current?.focus()},dispose(){l&&(l=!1,s())}}}export{H as mountPluginChatBox};
@@ -1 +0,0 @@
1
- import{t as f,j as m,aY as h,cl as g,bD as x,a_ as b,cm as v,a$ as y,aH as S,d as P,r as k,aD as E}from"./index-CF4RV4mh.js";import{D as j}from"./DashboardGridView-DXqe0vPd.js";import{qr as w,fs as D,fv as R,eR as F,fq as _}from"./appStore-Dg9WALEA.js";import"./UnifiedPage-CKNtVD_n.js";import"./MarkdownBlock-DIjYEhTK.js";import"./index-BCubCwdT.js";import"./linkFollow-C0_3k_PC.js";import"./mdMarks-Bq7Hl-4C.js";import"./emoji-DGaxpCIu.js";import"./listFold-BsOVn9UZ.js";import"./pageChrome-C9_azUYW.js";import"./upload-BbeAsMuD.js";import"./client-BSKpsyAw.js";import"./SketchCard-D87GADyG.js";import"./nativeDownload-D-f1_L2S.js";import"./Chrome-CwFiDmre.js";import"./minus-Cyv1YzOU.js";import"./canvasPrefs-BeG4oEgP.js";import"./hand-Crrw-nSn.js";import"./sticky-note-BIuPUSOU.js";import"./type-Cqoabh7H.js";import"./frame-_xBVYe3P.js";import"./foldActions-B7KByFdN.js";import"./ipc-DQOD2UKk.js";import"./lock-BnGHxjeE.js";import"./code-xml-BALV9u_c.js";import"./undo-2-tUKCv5Gs.js";import"./message-square-plus-BiAZAvcw.js";import"./FloatingToc-CENybkAA.js";import"./pageTree-CZH2J6cc.js";import"./pluginExt-Byb64tQO.js";import"./SidebarRow-BuSkKH5q.js";import"./list-tree-DkAJYEXd.js";import"./pen-tool-lkmBqliH.js";import"./pencil-Cvk91P_Z.js";import"./star-CwDiGyUW.js";import"./folder-plus-D1TDb7k9.js";import"./redo-2-DSi54z4e.js";import"./ellipsis-r1EcXsFq.js";import"./folder-DlxnPmWY.js";import"./layout-grid-B_pjJwz4.js";k({"plugindash.recipeInvalid":{zh:"仪表盘配方无效:{err}",en:"Invalid dashboard recipe: {err}"}});function C(t,r){const e=h(t),s=g(x(t)),o=[],i={};for(const a of s)a.id&&(o.push(a.id),i[a.id]={id:a.id,type:"markdown",content:a.content});const p=new Date().toISOString();return{manifest:{schema:S,id:e.amadeus_page||"plugin-dashboard",title:r,createdAt:p,updatedAt:p,compiler:{version:y},root:v(e.amadeus_layout),blocks:Object.fromEntries(o.map(a=>[a,{type:"markdown"}])),fmExtra:b(t)},blocks:i}}function $({scope:t,dashPath:r,locked:e}){const[s,o]=P.useState({dashPath:r,locked:e}),i={id:t,type:"dashboard",loc:"main",params:s,setTitle:()=>{},setParams:p=>o(p),close:()=>{}};return m.jsx("div",{className:"amadeus-root am-app tangu-lovable",style:{height:"100%"},children:m.jsx(j,{leaf:i,params:s})})}let A=0;function Pt(t,r,e){const s=w(e.recipe,{existingFileText:e.layoutText||void 0,pageId:`plugin-dash-${t}`});if(!s.ok)return r.textContent=f("plugindash.recipeInvalid",{err:s.error}),{dispose:()=>{r.replaceChildren()},scope:""};const o=`plugin:${t}:dashboard:${++A}`,i=`plugin:${t}/overview.dashboard.md`,p=D(o,{sink:(I,l,u)=>{e.onLayout?.(E(l,u))}}),{manifest:n,blocks:a}=C(s.text,t);p.setState({activePage:i,pendingPage:null,manifest:n,blocks:a,status:"ready",error:null}),r.style.height="100%",r.style.overflow="hidden";const c=R(r,m.jsx(F.Provider,{value:o,children:m.jsx($,{scope:o,dashPath:i,locked:e.locked!==!1})}));let d=!1;return{scope:o,dispose:()=>{d||(d=!0,c(),_(o))}}}export{Pt as mountPluginDashboard,C as pageStateFromText};
@@ -1 +0,0 @@
1
- import{z as c}from"./appStore-Dg9WALEA.js";const e=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],r=c("ellipsis",e);export{r as E};
@@ -1 +0,0 @@
1
- import{j as a}from"./index-CF4RV4mh.js";import{fv as c}from"./appStore-Dg9WALEA.js";import{F as f}from"./FloatingToc-CENybkAA.js";import"./nativeDownload-D-f1_L2S.js";import"./ipc-DQOD2UKk.js";import"./client-BSKpsyAw.js";function R(t,e){const o=document.createElement("div");o.className="lcl-ftoc-mount-layer";const m=t.style.position,r=getComputedStyle(t).position==="static";r&&(t.style.position="relative"),t.appendChild(o);let n=0,i=!1,s=()=>{};const l=()=>{s=c(o,a.jsx(f,{scrollContainer:e.scrollContainer,contentRoot:e.contentRoot??e.scrollContainer,selector:e.selector,itemFromElement:e.itemFromElement,label:e.label,minItems:e.minItems,hideBelow:e.hideBelow,topOffset:e.topOffset,side:e.side,scanTrigger:n}))};return l(),{refresh:()=>{i||(n++,l())},dispose:()=>{i||(i=!0,s(),o.remove(),r&&t.style.position==="relative"&&(t.style.position=m))}}}export{R as mountPluginFloatingToc};
@@ -1 +0,0 @@
1
- import{n as F,o as O,h as d,l as g,a as T,p as b}from"./listFold-BsOVn9UZ.js";import{mi as w,lZ as N,lP as A,lL as C,cO as H,qn as D,ai as K}from"./appStore-Dg9WALEA.js";import"./index-CF4RV4mh.js";import{$ as L}from"./index-BCubCwdT.js";import"./nativeDownload-D-f1_L2S.js";import"./ipc-DQOD2UKk.js";import"./client-BSKpsyAw.js";const u=new Set;let c=null;function x(){const e=typeof document<"u"?document.activeElement:null;if(e){for(const t of u)if(t.dom.contains(e))return t}return c&&c.dom.isConnected?c:null}function E(e){const t=new Set(F(e.doc)),o=new Set(O(e.doc)),n=e.selection;if(n instanceof N)return t.has(n.from)?{kind:"heading",pos:n.from}:o.has(n.from)?{kind:"list",pos:n.from}:null;const s=n.$from;for(let r=s.depth;r>=1;r--)if(s.node(r).type.name==="list_item"&&o.has(s.before(r)))return{kind:"list",pos:s.before(r)};if(s.parent.type.name==="heading"){const r=s.before(s.depth);return t.has(r)?{kind:"heading",pos:r}:null}for(let r=s.depth;r>=1;r--){const i=s.node(r-1);let l=s.start(r-1),a=null;for(let f=0;f<s.index(r-1);f++)i.child(f).type.name==="heading"&&(a=l),l+=i.child(f).nodeSize;if(a!=null)return t.has(a)?{kind:"heading",pos:a}:null}return null}function _(e,t,o){const n=e.selection;if(!n.empty)return;const s=[...T(e.doc,t),...b(e.doc,o)].filter(r=>n.from>r.start&&n.from<r.after).sort((r,i)=>r.start-i.start);s.length&&e.setSelection(A.near(e.doc.resolve(s[0].start),-1))}function y(e){return{headings:d.getState(e)?.folded??[],lists:g.getState(e)?.folded??[]}}function h(e,t,o){const n=e.tr.setMeta(d,{set:t}).setMeta(g,{set:o}).setMeta("addToHistory",!1);return _(n,t,o),n}function J(e){const t=E(e);if(!t)return null;const o=y(e),n=s=>s.includes(t.pos)?s.filter(r=>r!==t.pos):[...s,t.pos];return h(e,t.kind==="heading"?n(o.headings):o.headings,t.kind==="list"?n(o.lists):o.lists)}function V(e){const t=F(e.doc),o=O(e.doc);return!t.length&&!o.length?null:h(e,t,o)}function q(e){const t=y(e);return!t.headings.length&&!t.lists.length?null:h(e,[],[])}const v={toggle:J,foldAll:V,unfoldAll:q};function M(e,t){const o=v[t](e.state);o&&e.dispatch(o.scrollIntoView()),e.focus()}function k(e){const t=e.toLowerCase().split("+").map(n=>n.trim()),o=t.pop()??"";return[...t.sort(),o].join("+")}function z(e){if(e.isComposing)return null;const t=H(e);if(!t)return null;const o=k(t);for(const n of D){const s=K(n);if(s&&k(s)===o)return n.kind}return null}function tt(e){const t=x();t&&M(t,e)}const B="amx.noteFold:",R=500,m=(e,t)=>`${B}${w(e,t)}`;function $(e,t){const o=new Map;e.descendants((n,s)=>{let r=null;if(n.type.name==="heading"?r=`h${Number(n.attrs.level)||1}:${n.textContent}`:n.type.name==="list_item"&&(r=`l:${n.firstChild?.textContent??""}`),r!=null){const i=o.get(r)??0;o.set(r,i+1),t(`${r}#${i}`,n.type.name==="heading"?"heading":"list",s)}return!0})}function X(e,t,o){if(!t.length&&!o.length)return[];const n=new Set(t),s=new Set(o),r=[];return $(e,(i,l,a)=>{(l==="heading"?n:s).has(a)&&r.push(i)}),r.slice(0,R)}function j(e,t){const o=new Set(t),n=[],s=[];return o.size?($(e,(r,i,l)=>{o.has(r)&&(i==="heading"?n:s).push(l)}),{headings:n,lists:s}):{headings:n,lists:s}}function I(e,t){try{const o=localStorage.getItem(m(e,t)),n=o?JSON.parse(o):[];return Array.isArray(n)?n.filter(s=>typeof s=="string"):[]}catch{return[]}}function p(e,t,o){try{o.length?localStorage.setItem(m(e,t),JSON.stringify(o)):localStorage.removeItem(m(e,t))}catch{}}function et(e,t,o){if(t===o)return;const n=I(e,t);n.length&&(p(e,o,n),p(e,t,[]))}function nt(e){return[L(()=>new C({view:t=>{u.add(t);let o=!1,n="",s=null;const r=()=>{s=null;const{vaultRoot:i,path:l}=e(),a=y(t.state),f=X(t.state.doc,a.headings,a.lists),S=JSON.stringify(f);S!==n&&(n=S,p(i,l,f))};return queueMicrotask(()=>{if(!u.has(t))return;const{vaultRoot:i,path:l}=e(),a=I(i,l);if(n=JSON.stringify(a),o=!0,!a.length)return;const f=j(t.state.doc,a);(f.headings.length||f.lists.length)&&t.dispatch(h(t.state,f.headings,f.lists))}),{update:(i,l)=>{o&&(d.getState(i.state)===d.getState(l)&&g.getState(i.state)===g.getState(l)||(s&&clearTimeout(s),s=setTimeout(r,300)))},destroy:()=>{s&&(clearTimeout(s),r()),u.delete(t),c===t&&(c=null)}}},props:{handleDOMEvents:{focus:t=>(c=t,!1)},handleKeyDown:(t,o)=>{const n=z(o);return n?(M(t,n),!0):!1}}}))].flat()}export{nt as createFoldMemory,V as foldAllTr,X as foldFingerprints,I as readFoldMemory,et as remapFoldMemory,j as resolveFingerprints,tt as runFoldCommand,J as toggleFoldTr,q as unfoldAllTr,p as writeFoldMemory};
@@ -1 +0,0 @@
1
- import{z as a}from"./appStore-Dg9WALEA.js";const o=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],c=a("book-open",o);const e=[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]],n=a("folder",e);export{c as B,n as F};
@@ -1 +0,0 @@
1
- import{z as e}from"./appStore-Dg9WALEA.js";const y=[["line",{x1:"22",x2:"2",y1:"6",y2:"6",key:"15w7dq"}],["line",{x1:"22",x2:"2",y1:"18",y2:"18",key:"1ip48p"}],["line",{x1:"6",x2:"6",y1:"2",y2:"22",key:"a2lnyx"}],["line",{x1:"18",x2:"18",y1:"2",y2:"22",key:"8vb6jd"}]],n=e("frame",y);export{n as F};
@@ -1 +0,0 @@
1
- import{d as w}from"./index-CF4RV4mh.js";import{mq as xe,mp as ve,ms as me,mt as ke,a7 as q,my as re,qo as be,qp as ge,mr as we,qq as he,fo as ie}from"./appStore-Dg9WALEA.js";import{r as Ee}from"./Chrome-CwFiDmre.js";const A='button, a[href], input, select, textarea, [contenteditable="true"]',O=".amx-stage-hud, .amx-stage-minimap, .amx-stage-tools, .ctx-menu, .dash-add-menu, .dash-menu-scrim";function Me(Le,_,P,B){const[oe,se]=w.useState([]),[ce,le]=w.useState(null),[ue,X]=w.useState(null),[ae,Y]=w.useState(!1),v=w.useRef([]),h=w.useCallback(s=>{v.current=s,se(s)},[]),G=w.useRef(P);G.current=P;const R=w.useRef(B);R.current=B;const H=w.useRef(_);H.current=_,w.useEffect(()=>{if(!v.current.length)return;const s=P.boxes(),r=v.current.filter(m=>s.has(m));r.length!==v.current.length&&h(r)});const de=w.useCallback(s=>{if(!s)return()=>{};const r=()=>G.current,m=()=>H.current,S=()=>r().identity?.()??null,U=e=>{try{s.hasPointerCapture(e)&&s.releasePointerCapture(e)}catch{}};let n=null,N=null;const C=e=>{N=e,le(e)},p=new Map;let k=null,E=null;const I=e=>m().toStage(e.clientX,e.clientY),fe=()=>(q(s)||1)*m().vpRef.current.z,L=()=>{E&&(clearTimeout(E.timer),E=null)},M=()=>{n=null,C(null),X(null),Y(!1)},K=()=>{L();for(const e of p.keys())U(e);p.clear(),k=null,n&&U(n.id),M()},V=()=>{if(p.size<2)return null;const[[e,t],[o,i]]=[...p.entries()].slice(0,2),f=s.getBoundingClientRect(),b=q(s)||1;return{x:((t.x+i.x)/2-f.left)/b,y:((t.y+i.y)/2-f.top)/b,d:Math.max(1,Math.hypot(t.x-i.x,t.y-i.y)),ids:[e,o].sort((a,u)=>a-u).join(",")}},W=()=>{const e=V();if(!e)return;const t=m().vpRef.current;k={ids:e.ids,d:e.d,cx:e.x,cy:e.y,anchor:{x:(e.x-t.x)/t.z,y:(e.y-t.y)/t.z},z:t.z}},pe=()=>{const e=V();if(!e||!k)return;if(e.ids!==k.ids){W();return}const t=he(k.z*(e.d/k.d));m().setVp({z:t,x:e.x-k.anchor.x*t,y:e.y-k.anchor.y*t})},F=e=>{const t=e.target;if(t.closest?.(O))return;if(r().locked){p.clear(),k=null;const l=r().hitKey(t);if(l&&!r().isEditing?.(l)&&!t.closest?.(A)){e.preventDefault();try{s.setPointerCapture(e.pointerId)}catch{}}l||h([]);return}if(e.pointerType==="touch"&&p.set(e.pointerId,{x:e.clientX,y:e.clientY}),p.size>=2){L(),M(),W();return}if(e.button===2)return;const o=r().hitKey(t);if(o&&(r().isEditing?.(o)||t.closest?.(A)))return;const i=o?r().hitEdge?.(t)??null:null,f=!!r().locked,b=fe(),a=e.pointerType==="touch"?xe/b:ve;if(e.pointerType==="touch"){L();const l=I(e);E={t:Date.now(),x:e.clientX,y:e.clientY,id:e.pointerId,timer:window.setTimeout(()=>{E=null,M(),r().onContextMenu?.(o,{...l,clientX:e.clientX,clientY:e.clientY})},me)}}const u=()=>{try{s.setPointerCapture(e.pointerId)}catch{}};if(o&&!f&&i){const l=r().boxes().get(o);if(!l)return;e.preventDefault(),u(),h([o]),n={kind:"size",id:e.pointerId,who:S(),key:o,edge:i,b0:l,x0:e.clientX,y0:e.clientY,live:!1,slop:a};return}if(o&&!f){e.preventDefault(),u();const y=e.shiftKey||e.metaKey?v.current.includes(o)?v.current.filter(D=>D!==o):[...v.current,o]:v.current.includes(o)?v.current:[o];h(y);const x=r().boxes(),z=y.includes(o)?y:[o],g=new Map;for(const D of z){const ne=x.get(D);ne&&g.set(D,ne)}n={kind:"move",id:e.pointerId,who:S(),keys:[...g.keys()],base:g,x0:e.clientX,y0:e.clientY,live:!1,slop:a};return}if(o){e.preventDefault(),u();return}if(h([]),f)return;const c=e.pointerType==="touch"||e.button===1||e.altKey,d=m().vpRef.current;if(u(),c)n={kind:"pan",id:e.pointerId,who:S(),x0:e.clientX,y0:e.clientY,vx:d.x,vy:d.y,live:!1};else{const l=I(e);n={kind:"marquee",id:e.pointerId,who:S(),x0:e.clientX,y0:e.clientY,sx:l.x,sy:l.y,additive:e.shiftKey,base:[...v.current],live:!1}}s.focus({preventScroll:!0})},j=e=>{if(e.pointerType==="touch"&&p.has(e.pointerId)&&p.set(e.pointerId,{x:e.clientX,y:e.clientY}),E&&Math.hypot(e.clientX-E.x,e.clientY-E.y)>ke&&L(),p.size>=2){pe();return}if(!n||e.pointerId!==n.id)return;const t=e.clientX-n.x0,o=e.clientY-n.y0;if(n.kind==="pan"){const c=q(s)||1,d=m().vpRef.current;m().setVp({z:d.z,x:n.vx+t/c,y:n.vy+o/c}),n.live=!0;return}const{dx:i,dy:f}=m().toStageDelta(t,o);if(!n.live&&n.kind!=="marquee"&&Math.hypot(i,f)<n.slop)return;if(n.live||(n.live=!0,Y(!0),L()),n.kind==="move"){const c=new Map;for(const[d,l]of n.base)c.set(d,{...l,x:Math.round(l.x+i),y:Math.round(l.y+f)});C(r().constrain?.(c,{kind:"move"})??c);return}if(n.kind==="size"){const{minW:c,minH:d}=r(),l=re(n.b0,n.edge,i,f,!1,c,d),y=new Map([[n.key,l]]);C(r().constrain?.(y,{kind:"resize",key:n.key,edge:n.edge})??y);return}const b=m().toStage(e.clientX,e.clientY),a=be(n.sx,n.sy,b.x,b.y);X(a);const u=ge(a,r().boxes());h(n.additive?[...new Set([...n.base,...u])]:u)},ye=e=>{if(!n||e.pointerId!==n.id)return;const t=n;n=null,Y(!1),X(null);try{s.hasPointerCapture(e.pointerId)&&s.releasePointerCapture(e.pointerId)}catch{}if(t.kind==="pan"||t.kind==="marquee")return;if(!t.live){C(null);return}if(t.who!==S()){C(null);return}const o=new Map(N??[]);if(C(null),!o.size)return;let i=new Map(o);if(R.current&&t.kind==="move"){const a=t.keys[0],u=t.base.get(a),c=i.get(a);if(u&&c){const d=ie(c.x)-c.x,l=ie(c.y)-c.y;if(d||l)for(const[y,x]of i)i.set(y,{...x,x:x.x+d,y:x.y+l});i=r().constrain?.(i,{kind:"move"})??i}}else if(R.current&&t.kind==="size"){const a=i.get(t.key);if(a){const u=t.edge.includes("w"),c=t.edge.includes("e"),d=t.edge.includes("n"),l=t.edge.includes("s"),y=u?a.x-t.b0.x:c?a.x+a.w-(t.b0.x+t.b0.w):0,x=d?a.y-t.b0.y:l?a.y+a.h-(t.b0.y+t.b0.h):0,{minW:z,minH:g}=r();i=new Map([[t.key,re(t.b0,t.edge,y,x,!0,z,g)]]),i=r().constrain?.(i,{kind:"resize",key:t.key,edge:t.edge})??i}}let f=!1;if(t.kind==="move"&&r().repel!==!1){const a=r().boxes(),u=[];for(const[z,g]of a)i.has(z)||u.push(g);const c=t.keys[0],d=t.base.get(c),l=i.get(c),y=d&&l?{x:l.x-d.x,y:l.y-d.y}:{x:0,y:0},x=Ee([...i.values()],u,y,void 0,r().repelBounds);if(x.x||x.y){f=!0;for(const[z,g]of i)i.set(z,{...g,x:g.x+x.x,y:g.y+x.y});i=r().constrain?.(i,{kind:"move"})??i}}r().commit(i),[...i].some(([a,u])=>{const c=o.get(a);return!!c&&(c.x!==u.x||c.y!==u.y||c.w!==u.w||c.h!==u.h)})&&r().onSettle?.(o,i,f?"repel":"snap")},T=e=>{if(L(),e.pointerType==="touch"&&(p.delete(e.pointerId),p.size<2&&(k=null),p.size>=1)){M();return}ye(e)},Z=e=>{L(),e.pointerType==="touch"&&(p.delete(e.pointerId),p.size<2&&(k=null)),n&&e.pointerId===n.id&&M()},J=e=>document.elementFromPoint(e.clientX,e.clientY)??e.target,Q=e=>{const t=J(e);t.closest?.(O)||r().onDoubleClick?.(r().hitKey(t),I(e))},$=e=>{const t=J(e);if(t.closest?.(O))return;const o=r().hitKey(t);if(!r().onContextMenu)return;e.preventDefault();const i=I(e);r().onContextMenu?.(o,{...i,clientX:e.clientX,clientY:e.clientY})},ee=e=>{if(r().locked||e.target?.closest?.(A))return;const o=v.current;if(e.key==="Escape"){h([]);return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="a"){e.preventDefault(),h([...r().boxes().keys()]);return}if(!o.length)return;if(e.key==="Delete"||e.key==="Backspace"){e.preventDefault(),r().onDelete?.(o);return}if(e.key===" "&&o.length===1){e.preventDefault(),r().onEnterEdit?.(o[0]);return}const i=e.key==="ArrowLeft"?-1:e.key==="ArrowRight"?1:0,f=e.key==="ArrowUp"?-1:e.key==="ArrowDown"?1:0;if(!i&&!f)return;e.preventDefault();const b=we(R.current,e.shiftKey),a=r().boxes(),u=new Map;for(const c of o){const d=a.get(c);d&&u.set(c,{...d,x:d.x+i*b,y:d.y+f*b})}u.size&&r().commit(r().constrain?.(u,{kind:"move"})??u)},te=e=>{n&&e.pointerId===n.id&&T(e)};return s.addEventListener("pointerdown",F),s.addEventListener("pointermove",j),s.addEventListener("pointerup",T),s.addEventListener("pointercancel",Z),s.addEventListener("dblclick",Q),s.addEventListener("contextmenu",$),s.addEventListener("keydown",ee),window.addEventListener("pointerup",te,!0),window.addEventListener("blur",K),()=>{K(),s.removeEventListener("pointerdown",F),s.removeEventListener("pointermove",j),s.removeEventListener("pointerup",T),s.removeEventListener("pointercancel",Z),s.removeEventListener("dblclick",Q),s.removeEventListener("contextmenu",$),s.removeEventListener("keydown",ee),window.removeEventListener("pointerup",te,!0),window.removeEventListener("blur",K)}},[h]);return{sel:oe,setSel:h,live:ce,marquee:ue,busy:ae,bind:de}}export{Me as u};