@hienlh/ppm 0.23.13 → 0.23.15

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 (1218) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/CLAUDE.md +19 -4
  3. package/THIRD-PARTY-NOTICES.md +1 -1
  4. package/assets/skills/ppm/SKILL.md +3 -2
  5. package/assets/skills/ppm/references/cli-reference.md +4 -4
  6. package/assets/skills/ppm/references/common-tasks.md +6 -0
  7. package/assets/skills/ppm/references/http-api.md +13 -1
  8. package/bun.lock +15 -0
  9. package/dist/web/assets/accounts-settings-section-B5YXy0vd.js +1 -0
  10. package/dist/web/assets/accounts-settings-section-B5YXy0vd.js.br +0 -0
  11. package/dist/web/assets/accounts-settings-section-B5YXy0vd.js.gz +0 -0
  12. package/dist/web/assets/adaptive-context-menu-C4jNSORA.js +1 -0
  13. package/dist/web/assets/adaptive-context-menu-C4jNSORA.js.br +0 -0
  14. package/dist/web/assets/adaptive-context-menu-C4jNSORA.js.gz +0 -0
  15. package/dist/web/assets/agent-session-sheet-Bj42PwCK.js +2 -0
  16. package/dist/web/assets/agent-session-sheet-Bj42PwCK.js.br +0 -0
  17. package/dist/web/assets/agent-session-sheet-Bj42PwCK.js.gz +0 -0
  18. package/dist/web/assets/agent-session-sheet-store-BAfLnsLX.js +1 -0
  19. package/dist/web/assets/agent-session-window-content-LqL6fVPU.js +1 -0
  20. package/dist/web/assets/agent-session-window-content-LqL6fVPU.js.br +0 -0
  21. package/dist/web/assets/agent-session-window-content-LqL6fVPU.js.gz +0 -0
  22. package/dist/web/assets/ai-resource-editor-jVv2nvAG.js +1 -0
  23. package/dist/web/assets/ai-resource-editor-jVv2nvAG.js.br +0 -0
  24. package/dist/web/assets/ai-resource-editor-jVv2nvAG.js.gz +0 -0
  25. package/dist/web/assets/ai-settings-section-C9Q-v8fY.js +1 -0
  26. package/dist/web/assets/ai-settings-section-C9Q-v8fY.js.br +0 -0
  27. package/dist/web/assets/ai-settings-section-C9Q-v8fY.js.gz +0 -0
  28. package/dist/web/assets/ai-settings-section-CN5BR1ZZ.js +1 -0
  29. package/dist/web/assets/android-tab-CwqiuEZP.js +2 -0
  30. package/dist/web/assets/android-tab-CwqiuEZP.js.br +0 -0
  31. package/dist/web/assets/android-tab-CwqiuEZP.js.gz +0 -0
  32. package/dist/web/assets/api-client-xQDlhUTu.js +1 -0
  33. package/dist/web/assets/api-client-xQDlhUTu.js.br +0 -0
  34. package/dist/web/assets/api-client-xQDlhUTu.js.gz +0 -0
  35. package/dist/web/assets/api-client-xR05zj6r.js +1 -0
  36. package/dist/web/assets/api-settings-VAi0LpIJ.js +1 -0
  37. package/dist/web/assets/api-settings-vmIRFNwZ.js +1 -0
  38. package/dist/web/assets/api-settings-vmIRFNwZ.js.br +0 -0
  39. package/dist/web/assets/api-settings-vmIRFNwZ.js.gz +0 -0
  40. package/dist/web/assets/api-themes-CaXofG7d.js +1 -0
  41. package/dist/web/assets/appearance-settings-section-D0JIfiRx.js +1 -0
  42. package/dist/web/assets/appearance-settings-section-D0JIfiRx.js.br +0 -0
  43. package/dist/web/assets/appearance-settings-section-D0JIfiRx.js.gz +0 -0
  44. package/dist/web/assets/apps-panel-Cz_KJ37M.js +1 -0
  45. package/dist/web/assets/apps-panel-Cz_KJ37M.js.br +0 -0
  46. package/dist/web/assets/apps-panel-Cz_KJ37M.js.gz +0 -0
  47. package/dist/web/assets/audio-preview-Dq7qZ_6i.js +1 -0
  48. package/dist/web/assets/audio-preview-Dq7qZ_6i.js.br +0 -0
  49. package/dist/web/assets/audio-preview-Dq7qZ_6i.js.gz +0 -0
  50. package/dist/web/assets/branch-review-tab-C3QNpsm7.js +1 -0
  51. package/dist/web/assets/branch-review-tab-C3QNpsm7.js.br +0 -0
  52. package/dist/web/assets/branch-review-tab-C3QNpsm7.js.gz +0 -0
  53. package/dist/web/assets/button-C9ZXWb3b.js +1 -0
  54. package/dist/web/assets/button-C9ZXWb3b.js.br +0 -0
  55. package/dist/web/assets/button-C9ZXWb3b.js.gz +0 -0
  56. package/dist/web/assets/chat-preparation-cache-190LLyy7.js +1 -0
  57. package/dist/web/assets/chat-preparation-cache-190LLyy7.js.br +0 -0
  58. package/dist/web/assets/chat-preparation-cache-190LLyy7.js.gz +0 -0
  59. package/dist/web/assets/chat-tab-D14CUl0J.js +1 -0
  60. package/dist/web/assets/chat-tab-D14CUl0J.js.br +0 -0
  61. package/dist/web/assets/chat-tab-D14CUl0J.js.gz +0 -0
  62. package/dist/web/assets/chat-tab-D8iAVZKV.js +16 -0
  63. package/dist/web/assets/chat-tab-D8iAVZKV.js.br +0 -0
  64. package/dist/web/assets/chat-tab-D8iAVZKV.js.gz +0 -0
  65. package/dist/web/assets/code-editor-B7gbH4-x.js +10 -0
  66. package/dist/web/assets/code-editor-B7gbH4-x.js.br +0 -0
  67. package/dist/web/assets/code-editor-B7gbH4-x.js.gz +0 -0
  68. package/dist/web/assets/codex-reset-credit-button-DQDtyvnd.js +1 -0
  69. package/dist/web/assets/codex-reset-credit-button-DQDtyvnd.js.br +0 -0
  70. package/dist/web/assets/codex-reset-credit-button-DQDtyvnd.js.gz +0 -0
  71. package/dist/web/assets/conflict-editor-ktOkrODA.js +19 -0
  72. package/dist/web/assets/conflict-editor-ktOkrODA.js.br +0 -0
  73. package/dist/web/assets/conflict-editor-ktOkrODA.js.gz +0 -0
  74. package/dist/web/assets/connection-form-tab-CxvExR7T.js +4 -0
  75. package/dist/web/assets/connection-form-tab-CxvExR7T.js.br +0 -0
  76. package/dist/web/assets/connection-form-tab-CxvExR7T.js.gz +0 -0
  77. package/dist/web/assets/context-menu-BCuZYfWC.js +1 -0
  78. package/dist/web/assets/context-menu-BCuZYfWC.js.br +0 -0
  79. package/dist/web/assets/context-menu-BCuZYfWC.js.gz +0 -0
  80. package/dist/web/assets/createLucideIcon-D9_fdOKS.js +1 -0
  81. package/dist/web/assets/createLucideIcon-D9_fdOKS.js.br +0 -0
  82. package/dist/web/assets/createLucideIcon-D9_fdOKS.js.gz +0 -0
  83. package/dist/web/assets/csv-preview-CBDMTEsF.js +10 -0
  84. package/dist/web/assets/csv-preview-CBDMTEsF.js.br +0 -0
  85. package/dist/web/assets/csv-preview-CBDMTEsF.js.gz +0 -0
  86. package/dist/web/assets/database-drivers-section-DJvU6bf5.js +1 -0
  87. package/dist/web/assets/database-drivers-section-DJvU6bf5.js.br +0 -0
  88. package/dist/web/assets/database-drivers-section-DJvU6bf5.js.gz +0 -0
  89. package/dist/web/assets/db-ai-tools-CVbbW_MZ.js +1 -0
  90. package/dist/web/assets/db-ai-tools-CVbbW_MZ.js.br +0 -0
  91. package/dist/web/assets/db-ai-tools-CVbbW_MZ.js.gz +0 -0
  92. package/dist/web/assets/db-explorer-store-BmpvDHz6.js +1 -0
  93. package/dist/web/assets/db-explorer-store-BmpvDHz6.js.br +0 -0
  94. package/dist/web/assets/db-explorer-store-BmpvDHz6.js.gz +0 -0
  95. package/dist/web/assets/db-sidebar-reveal-_qw0CliT.js +1 -0
  96. package/dist/web/assets/db-sidebar-reveal-_qw0CliT.js.br +0 -0
  97. package/dist/web/assets/db-sidebar-reveal-_qw0CliT.js.gz +0 -0
  98. package/dist/web/assets/db-tab-parts-BgVpKbi6.js +1 -0
  99. package/dist/web/assets/db-tab-parts-BgVpKbi6.js.br +0 -0
  100. package/dist/web/assets/db-tab-parts-BgVpKbi6.js.gz +0 -0
  101. package/dist/web/assets/db-types-CNhENouW.js +1 -0
  102. package/dist/web/assets/design-canvas-check-BIHc2d_k.js +1 -0
  103. package/dist/web/assets/design-canvas-check-BIHc2d_k.js.br +0 -0
  104. package/dist/web/assets/design-canvas-check-BIHc2d_k.js.gz +0 -0
  105. package/dist/web/assets/design-export-client-CJ3w7Zrk.js +1 -0
  106. package/dist/web/assets/design-export-client-CJ3w7Zrk.js.br +0 -0
  107. package/dist/web/assets/design-export-client-CJ3w7Zrk.js.gz +0 -0
  108. package/dist/web/assets/design-responsive-dialog-MAFgVOmv.js +1 -0
  109. package/dist/web/assets/design-responsive-dialog-MAFgVOmv.js.br +0 -0
  110. package/dist/web/assets/design-responsive-dialog-MAFgVOmv.js.gz +0 -0
  111. package/dist/web/assets/design-settings-section-DPGw61pY.js +2 -0
  112. package/dist/web/assets/design-settings-section-DPGw61pY.js.br +0 -0
  113. package/dist/web/assets/design-settings-section-DPGw61pY.js.gz +0 -0
  114. package/dist/web/assets/design-skill-suggestion-Dmmg_ap5.js +3 -0
  115. package/dist/web/assets/design-skill-suggestion-Dmmg_ap5.js.br +0 -0
  116. package/dist/web/assets/design-skill-suggestion-Dmmg_ap5.js.gz +0 -0
  117. package/dist/web/assets/design-tab-BiCqHNl3.js +57 -0
  118. package/dist/web/assets/design-tab-BiCqHNl3.js.br +0 -0
  119. package/dist/web/assets/design-tab-BiCqHNl3.js.gz +0 -0
  120. package/dist/web/assets/designs-sidebar-panel-pcJ2Rx5G.js +1 -0
  121. package/dist/web/assets/designs-sidebar-panel-pcJ2Rx5G.js.br +0 -0
  122. package/dist/web/assets/designs-sidebar-panel-pcJ2Rx5G.js.gz +0 -0
  123. package/dist/web/assets/dialog-Dn_2tuYa.js +1 -0
  124. package/dist/web/assets/dialog-Dn_2tuYa.js.br +0 -0
  125. package/dist/web/assets/dialog-Dn_2tuYa.js.gz +0 -0
  126. package/dist/web/assets/diff-viewer-CLAvyqVG.js +4 -0
  127. package/dist/web/assets/diff-viewer-CLAvyqVG.js.br +0 -0
  128. package/dist/web/assets/diff-viewer-CLAvyqVG.js.gz +0 -0
  129. package/dist/web/assets/docx-preview-XSkD2IL6.js +12 -0
  130. package/dist/web/assets/docx-preview-XSkD2IL6.js.br +0 -0
  131. package/dist/web/assets/docx-preview-XSkD2IL6.js.gz +0 -0
  132. package/dist/web/assets/dropdown-menu-BQidk_OJ.js +1 -0
  133. package/dist/web/assets/dropdown-menu-BQidk_OJ.js.br +0 -0
  134. package/dist/web/assets/dropdown-menu-BQidk_OJ.js.gz +0 -0
  135. package/dist/web/assets/edit-diff-preview-DyWUMlkI.js +7 -0
  136. package/dist/web/assets/edit-diff-preview-DyWUMlkI.js.br +0 -0
  137. package/dist/web/assets/edit-diff-preview-DyWUMlkI.js.gz +0 -0
  138. package/dist/web/assets/editor-dialog-cQvqVZAR.js +1 -0
  139. package/dist/web/assets/editor-dialog-cQvqVZAR.js.br +0 -0
  140. package/dist/web/assets/editor-dialog-cQvqVZAR.js.gz +0 -0
  141. package/dist/web/assets/editor-language-service-6-7mS6_9.js +1 -0
  142. package/dist/web/assets/editor-language-service-6-7mS6_9.js.br +0 -0
  143. package/dist/web/assets/editor-language-service-6-7mS6_9.js.gz +0 -0
  144. package/dist/web/assets/explorer-body-BlGDPmNa.js +2 -0
  145. package/dist/web/assets/explorer-body-BlGDPmNa.js.br +0 -0
  146. package/dist/web/assets/explorer-body-BlGDPmNa.js.gz +0 -0
  147. package/dist/web/assets/explorer-model-BtJN4MZ9.js +1 -0
  148. package/dist/web/assets/explorer-model-BtJN4MZ9.js.br +0 -0
  149. package/dist/web/assets/explorer-model-BtJN4MZ9.js.gz +0 -0
  150. package/dist/web/assets/explorer-window-content-BLWY8GJ_.js +1 -0
  151. package/dist/web/assets/explorer-window-content-BLWY8GJ_.js.br +0 -0
  152. package/dist/web/assets/explorer-window-content-BLWY8GJ_.js.gz +0 -0
  153. package/dist/web/assets/extension-manager-section-NSEt5f4z.js +1 -0
  154. package/dist/web/assets/extension-manager-section-NSEt5f4z.js.br +0 -0
  155. package/dist/web/assets/extension-manager-section-NSEt5f4z.js.gz +0 -0
  156. package/dist/web/assets/extension-webview-BkAEBWin.js +12 -0
  157. package/dist/web/assets/extension-webview-BkAEBWin.js.br +0 -0
  158. package/dist/web/assets/extension-webview-BkAEBWin.js.gz +0 -0
  159. package/dist/web/assets/file-diff-CcDhJkXB.js +1 -0
  160. package/dist/web/assets/file-icons-JInFtBVl.js +1 -0
  161. package/dist/web/assets/file-icons-JInFtBVl.js.br +0 -0
  162. package/dist/web/assets/file-icons-JInFtBVl.js.gz +0 -0
  163. package/dist/web/assets/file-store-BQ41vIs5.js +1 -0
  164. package/dist/web/assets/file-store-BQ41vIs5.js.br +0 -0
  165. package/dist/web/assets/file-store-BQ41vIs5.js.gz +0 -0
  166. package/dist/web/assets/files-settings-section-Bq7liJ_r.js +1 -0
  167. package/dist/web/assets/files-settings-section-Bq7liJ_r.js.br +0 -0
  168. package/dist/web/assets/files-settings-section-Bq7liJ_r.js.gz +0 -0
  169. package/dist/web/assets/filter-dialog-frame-BkEbqBA4.js +1 -0
  170. package/dist/web/assets/filter-dialog-frame-BkEbqBA4.js.br +0 -0
  171. package/dist/web/assets/filter-dialog-frame-BkEbqBA4.js.gz +0 -0
  172. package/dist/web/assets/format-file-meta-DdYtk07C.js +1 -0
  173. package/dist/web/assets/format-file-meta-DdYtk07C.js.br +0 -0
  174. package/dist/web/assets/format-file-meta-DdYtk07C.js.gz +0 -0
  175. package/dist/web/assets/fs-api-CFtQzsIJ.js +1 -0
  176. package/dist/web/assets/fs-api-CFtQzsIJ.js.br +0 -0
  177. package/dist/web/assets/fs-api-CFtQzsIJ.js.gz +0 -0
  178. package/dist/web/assets/general-settings-section-DvHROAMa.js +1 -0
  179. package/dist/web/assets/general-settings-section-DvHROAMa.js.br +0 -0
  180. package/dist/web/assets/general-settings-section-DvHROAMa.js.gz +0 -0
  181. package/dist/web/assets/git-commit-horizontal-BPdj2L1i.js +1 -0
  182. package/dist/web/assets/git-log-panel-Cu9kK48H.js +1 -0
  183. package/dist/web/assets/git-log-panel-Cu9kK48H.js.br +0 -0
  184. package/dist/web/assets/git-log-panel-Cu9kK48H.js.gz +0 -0
  185. package/dist/web/assets/git-repo-store-CKB5fdNP.js +1 -0
  186. package/dist/web/assets/git-repo-store-CKB5fdNP.js.br +0 -0
  187. package/dist/web/assets/git-repo-store-CKB5fdNP.js.gz +0 -0
  188. package/dist/web/assets/git-review-tab-B_JT649W.js +3 -0
  189. package/dist/web/assets/git-review-tab-B_JT649W.js.br +0 -0
  190. package/dist/web/assets/git-review-tab-B_JT649W.js.gz +0 -0
  191. package/dist/web/assets/glide-data-grid-BlposOph.js +177 -0
  192. package/dist/web/assets/glide-data-grid-BlposOph.js.br +0 -0
  193. package/dist/web/assets/glide-data-grid-BlposOph.js.gz +0 -0
  194. package/dist/web/assets/grid-save-dialog-B0d0qhnN.js +2 -0
  195. package/dist/web/assets/grid-save-dialog-B0d0qhnN.js.br +0 -0
  196. package/dist/web/assets/grid-save-dialog-B0d0qhnN.js.gz +0 -0
  197. package/dist/web/assets/group-chat-tab-jirUsGm-.js +1 -0
  198. package/dist/web/assets/group-chat-tab-jirUsGm-.js.br +0 -0
  199. package/dist/web/assets/group-chat-tab-jirUsGm-.js.gz +0 -0
  200. package/dist/web/assets/html-preview-loads-CMWBC-iv.js +1 -0
  201. package/dist/web/assets/icons-BwyIKaTT.js +1 -0
  202. package/dist/web/assets/icons-BwyIKaTT.js.br +0 -0
  203. package/dist/web/assets/icons-BwyIKaTT.js.gz +0 -0
  204. package/dist/web/assets/image-preview-gOBK9zED.js +1 -0
  205. package/dist/web/assets/impexp-tab-HJVcOTYJ.js +1 -0
  206. package/dist/web/assets/impexp-tab-HJVcOTYJ.js.br +0 -0
  207. package/dist/web/assets/impexp-tab-HJVcOTYJ.js.gz +0 -0
  208. package/dist/web/assets/index-DLB3j_P0.js +59 -0
  209. package/dist/web/assets/index-DLB3j_P0.js.br +0 -0
  210. package/dist/web/assets/index-DLB3j_P0.js.gz +0 -0
  211. package/dist/web/assets/index-M3DUzop8.css +1 -0
  212. package/dist/web/assets/index-M3DUzop8.css.br +0 -0
  213. package/dist/web/assets/index-M3DUzop8.css.gz +0 -0
  214. package/dist/web/assets/input-C3oVNCMq.js +1 -0
  215. package/dist/web/assets/jira-watcher-section-EQvdnETB.js +1 -0
  216. package/dist/web/assets/keybindings-store-CEy-Sdcc.js +1 -0
  217. package/dist/web/assets/keyboard-shortcuts-section-DN21gB-T.js +1 -0
  218. package/dist/web/assets/keyboard-shortcuts-section-DN21gB-T.js.br +0 -0
  219. package/dist/web/assets/keyboard-shortcuts-section-DN21gB-T.js.gz +0 -0
  220. package/dist/web/assets/language-servers-section-DOcZ72FJ.js +2 -0
  221. package/dist/web/assets/language-servers-section-DOcZ72FJ.js.br +0 -0
  222. package/dist/web/assets/language-servers-section-DOcZ72FJ.js.gz +0 -0
  223. package/dist/web/assets/lib-5Chotbwm.js +2 -0
  224. package/dist/web/assets/lib-5Chotbwm.js.br +0 -0
  225. package/dist/web/assets/lib-5Chotbwm.js.gz +0 -0
  226. package/dist/web/assets/logs-app-C7n9GSCn.js +13 -0
  227. package/dist/web/assets/logs-app-C7n9GSCn.js.br +0 -0
  228. package/dist/web/assets/logs-app-C7n9GSCn.js.gz +0 -0
  229. package/dist/web/assets/logs-tab-CSOiexvx.js +1 -0
  230. package/dist/web/assets/logs-window-content-C4Qs6-0q.js +1 -0
  231. package/dist/web/assets/lsp-client-DpYmPhXX.js +1 -0
  232. package/dist/web/assets/lsp-client-DpYmPhXX.js.br +0 -0
  233. package/dist/web/assets/lsp-client-DpYmPhXX.js.gz +0 -0
  234. package/dist/web/assets/markdown-renderer-CtEl6qAt.js +4 -0
  235. package/dist/web/assets/markdown-renderer-CtEl6qAt.js.br +0 -0
  236. package/dist/web/assets/markdown-renderer-CtEl6qAt.js.gz +0 -0
  237. package/dist/web/assets/markdown-renderer-Df3r-CCb.js +1 -0
  238. package/dist/web/assets/media-url-Cn2yRAxP.js +1 -0
  239. package/dist/web/assets/metric-chart-canvas-DEW16Su8.js +1 -0
  240. package/dist/web/assets/metric-chart-canvas-DEW16Su8.js.br +0 -0
  241. package/dist/web/assets/metric-chart-canvas-DEW16Su8.js.gz +0 -0
  242. package/dist/web/assets/mobile-bottom-sheet-DArbIyrD.js +1 -0
  243. package/dist/web/assets/mobile-bottom-sheet-DArbIyrD.js.br +0 -0
  244. package/dist/web/assets/mobile-bottom-sheet-DArbIyrD.js.gz +0 -0
  245. package/dist/web/assets/mobile-explorer-sheet-B-rcKEL9.js +1 -0
  246. package/dist/web/assets/mobile-explorer-sheet-B-rcKEL9.js.br +0 -0
  247. package/dist/web/assets/mobile-explorer-sheet-B-rcKEL9.js.gz +0 -0
  248. package/dist/web/assets/new-design-dialog-DgztQK5R.js +1 -0
  249. package/dist/web/assets/new-design-dialog-DgztQK5R.js.br +0 -0
  250. package/dist/web/assets/new-design-dialog-DgztQK5R.js.gz +0 -0
  251. package/dist/web/assets/notification-store-B92dvP_u.js +1 -0
  252. package/dist/web/assets/notifications-settings-section-JiGvaCFx.js +1 -0
  253. package/dist/web/assets/notifications-settings-section-JiGvaCFx.js.br +0 -0
  254. package/dist/web/assets/notifications-settings-section-JiGvaCFx.js.gz +0 -0
  255. package/dist/web/assets/onboarding-entry-eehqBvyM.js +1 -0
  256. package/dist/web/assets/onboarding-entry-eehqBvyM.js.br +0 -0
  257. package/dist/web/assets/onboarding-entry-eehqBvyM.js.gz +0 -0
  258. package/dist/web/assets/onboarding-quick-orientation-CTHtIRib.js +1 -0
  259. package/dist/web/assets/onboarding-quick-orientation-CTHtIRib.js.br +0 -0
  260. package/dist/web/assets/onboarding-quick-orientation-CTHtIRib.js.gz +0 -0
  261. package/dist/web/assets/open-db-tabs-CtWIWHOa.js +1 -0
  262. package/dist/web/assets/open-db-tabs-CtWIWHOa.js.br +0 -0
  263. package/dist/web/assets/open-db-tabs-CtWIWHOa.js.gz +0 -0
  264. package/dist/web/assets/open-settings-EXR4zoZG.js +1 -0
  265. package/dist/web/assets/overview-panel-DEGF2DmZ.js +1 -0
  266. package/dist/web/assets/overview-panel-DEGF2DmZ.js.br +0 -0
  267. package/dist/web/assets/overview-panel-DEGF2DmZ.js.gz +0 -0
  268. package/dist/web/assets/panel-store-BJhazigC.js +1 -0
  269. package/dist/web/assets/panel-store-BJhazigC.js.br +0 -0
  270. package/dist/web/assets/panel-store-BJhazigC.js.gz +0 -0
  271. package/dist/web/assets/patch-tab-metadata-C92YkrRX.js +1 -0
  272. package/dist/web/assets/pdf-preview-C9gMtv2a.js +1 -0
  273. package/dist/web/assets/pdf-preview-C9gMtv2a.js.br +0 -0
  274. package/dist/web/assets/pdf-preview-C9gMtv2a.js.gz +0 -0
  275. package/dist/web/assets/performance-panel-TkwfKIZa.js +3 -0
  276. package/dist/web/assets/performance-panel-TkwfKIZa.js.br +0 -0
  277. package/dist/web/assets/performance-panel-TkwfKIZa.js.gz +0 -0
  278. package/dist/web/assets/portal-container-context-NBi-KGK0.js +1 -0
  279. package/dist/web/assets/ppmbot-settings-section-XfrZ8VoC.js +1 -0
  280. package/dist/web/assets/ppmbot-settings-section-XfrZ8VoC.js.br +0 -0
  281. package/dist/web/assets/ppmbot-settings-section-XfrZ8VoC.js.gz +0 -0
  282. package/dist/web/assets/pptx-export-B2wCBWlV.js +111 -0
  283. package/dist/web/assets/pptx-export-B2wCBWlV.js.br +0 -0
  284. package/dist/web/assets/pptx-export-B2wCBWlV.js.gz +0 -0
  285. package/dist/web/assets/problems-panel-CDzwSJn6.js +1 -0
  286. package/dist/web/assets/problems-panel-CDzwSJn6.js.br +0 -0
  287. package/dist/web/assets/problems-panel-CDzwSJn6.js.gz +0 -0
  288. package/dist/web/assets/process-row-format-CytRH7g2.js +1 -0
  289. package/dist/web/assets/process-table-C_B39GHm.js +1 -0
  290. package/dist/web/assets/process-table-C_B39GHm.js.br +0 -0
  291. package/dist/web/assets/process-table-C_B39GHm.js.gz +0 -0
  292. package/dist/web/assets/project-framework-store-DwLxaRan.js +1 -0
  293. package/dist/web/assets/project-store-BLGl9IAO.js +1 -0
  294. package/dist/web/assets/project-store-BLGl9IAO.js.br +0 -0
  295. package/dist/web/assets/project-store-BLGl9IAO.js.gz +0 -0
  296. package/dist/web/assets/proxy-settings-section-CvaOvYIv.js +1 -0
  297. package/dist/web/assets/proxy-settings-section-CvaOvYIv.js.br +0 -0
  298. package/dist/web/assets/proxy-settings-section-CvaOvYIv.js.gz +0 -0
  299. package/dist/web/assets/query-audit-section-D_WDp1m-.js +1 -0
  300. package/dist/web/assets/query-audit-section-D_WDp1m-.js.br +0 -0
  301. package/dist/web/assets/query-audit-section-D_WDp1m-.js.gz +0 -0
  302. package/dist/web/assets/query-tab-B8aMpAbI.js +22 -0
  303. package/dist/web/assets/query-tab-B8aMpAbI.js.br +0 -0
  304. package/dist/web/assets/query-tab-B8aMpAbI.js.gz +0 -0
  305. package/dist/web/assets/react-BZ0kba1-.js +1 -0
  306. package/dist/web/assets/remote-access-settings-section-Bv0eawR4.js +1 -0
  307. package/dist/web/assets/remote-access-settings-section-Bv0eawR4.js.br +0 -0
  308. package/dist/web/assets/remote-access-settings-section-Bv0eawR4.js.gz +0 -0
  309. package/dist/web/assets/remote-desktop-clipboard-notice-BpDakRY0.js +1 -0
  310. package/dist/web/assets/remote-desktop-clipboard-notice-BpDakRY0.js.br +0 -0
  311. package/dist/web/assets/remote-desktop-clipboard-notice-BpDakRY0.js.gz +0 -0
  312. package/dist/web/assets/remote-desktop-mobile-sheet-C5GQ3kzY.js +2 -0
  313. package/dist/web/assets/remote-desktop-mobile-sheet-C5GQ3kzY.js.br +0 -0
  314. package/dist/web/assets/remote-desktop-mobile-sheet-C5GQ3kzY.js.gz +0 -0
  315. package/dist/web/assets/remote-desktop-mobile-view-CZb5EMEK.js +1 -0
  316. package/dist/web/assets/remote-desktop-mobile-view-CZb5EMEK.js.br +0 -0
  317. package/dist/web/assets/remote-desktop-mobile-view-CZb5EMEK.js.gz +0 -0
  318. package/dist/web/assets/remote-desktop-readiness-gate-CipNtLX5.js +1 -0
  319. package/dist/web/assets/remote-desktop-readiness-gate-CipNtLX5.js.br +0 -0
  320. package/dist/web/assets/remote-desktop-readiness-gate-CipNtLX5.js.gz +0 -0
  321. package/dist/web/assets/remote-desktop-settings-section-ZAsBRwjq.js +1 -0
  322. package/dist/web/assets/remote-desktop-settings-section-ZAsBRwjq.js.br +0 -0
  323. package/dist/web/assets/remote-desktop-settings-section-ZAsBRwjq.js.gz +0 -0
  324. package/dist/web/assets/remote-desktop-window-content-B7OXXvAM.js +1 -0
  325. package/dist/web/assets/remote-desktop-window-content-B7OXXvAM.js.br +0 -0
  326. package/dist/web/assets/remote-desktop-window-content-B7OXXvAM.js.gz +0 -0
  327. package/dist/web/assets/rename-object-dialog-B4W6S7Xg.js +1 -0
  328. package/dist/web/assets/rename-object-dialog-B4W6S7Xg.js.br +0 -0
  329. package/dist/web/assets/rename-object-dialog-B4W6S7Xg.js.gz +0 -0
  330. package/dist/web/assets/review-code-B4osj0k1.js +5 -0
  331. package/dist/web/assets/review-code-B4osj0k1.js.br +0 -0
  332. package/dist/web/assets/review-code-B4osj0k1.js.gz +0 -0
  333. package/dist/web/assets/run-in-terminal-button-m3i-Hcou.js +1 -0
  334. package/dist/web/assets/run-in-terminal-ujoc25vj.js +1 -0
  335. package/dist/web/assets/save-as-dialog-DpXv_f1d.js +1 -0
  336. package/dist/web/assets/save-as-dialog-DpXv_f1d.js.br +5 -0
  337. package/dist/web/assets/save-as-dialog-DpXv_f1d.js.gz +0 -0
  338. package/dist/web/assets/schedules-settings-section-BbaPbc28.js +1 -0
  339. package/dist/web/assets/schedules-settings-section-BbaPbc28.js.br +0 -0
  340. package/dist/web/assets/schedules-settings-section-BbaPbc28.js.gz +0 -0
  341. package/dist/web/assets/scroll-area-DOlQJGZp.js +1 -0
  342. package/dist/web/assets/scroll-area-DOlQJGZp.js.br +0 -0
  343. package/dist/web/assets/scroll-area-DOlQJGZp.js.gz +0 -0
  344. package/dist/web/assets/send-to-chat-CWV1qd3c.js +1 -0
  345. package/dist/web/assets/send-to-chat-CWV1qd3c.js.br +0 -0
  346. package/dist/web/assets/send-to-chat-CWV1qd3c.js.gz +0 -0
  347. package/dist/web/assets/separator-DmU9aJwq.js +1 -0
  348. package/dist/web/assets/services-panel-CZQOrvth.js +1 -0
  349. package/dist/web/assets/services-panel-CZQOrvth.js.br +0 -0
  350. package/dist/web/assets/services-panel-CZQOrvth.js.gz +0 -0
  351. package/dist/web/assets/session-changes-bar-VfS2sHuH.js +1 -0
  352. package/dist/web/assets/session-changes-bar-VfS2sHuH.js.br +0 -0
  353. package/dist/web/assets/session-changes-bar-VfS2sHuH.js.gz +0 -0
  354. package/dist/web/assets/session-list-sync-triggers-DtJI5KF0.js +1 -0
  355. package/dist/web/assets/session-list-sync-triggers-DtJI5KF0.js.br +0 -0
  356. package/dist/web/assets/session-list-sync-triggers-DtJI5KF0.js.gz +0 -0
  357. package/dist/web/assets/session-review-tab-Aq3FEooH.js +6 -0
  358. package/dist/web/assets/session-review-tab-Aq3FEooH.js.br +0 -0
  359. package/dist/web/assets/session-review-tab-Aq3FEooH.js.gz +0 -0
  360. package/dist/web/assets/settings-body-vXbOWchN.js +1 -0
  361. package/dist/web/assets/settings-body-vXbOWchN.js.br +0 -0
  362. package/dist/web/assets/settings-body-vXbOWchN.js.gz +0 -0
  363. package/dist/web/assets/settings-categories-Ajj4ui27.js +1 -0
  364. package/dist/web/assets/settings-categories-Ajj4ui27.js.br +0 -0
  365. package/dist/web/assets/settings-categories-Ajj4ui27.js.gz +0 -0
  366. package/dist/web/assets/settings-rows-DD7Gxmst.js +1 -0
  367. package/dist/web/assets/settings-rows-DD7Gxmst.js.br +0 -0
  368. package/dist/web/assets/settings-rows-DD7Gxmst.js.gz +0 -0
  369. package/dist/web/assets/settings-section-content-CVtvJ6ze.js +1 -0
  370. package/dist/web/assets/settings-section-content-DkUJFop6.js +2 -0
  371. package/dist/web/assets/settings-section-content-DkUJFop6.js.br +0 -0
  372. package/dist/web/assets/settings-section-content-DkUJFop6.js.gz +0 -0
  373. package/dist/web/assets/settings-store-B4mLp19V.js +2 -0
  374. package/dist/web/assets/settings-store-B4mLp19V.js.br +0 -0
  375. package/dist/web/assets/settings-store-B4mLp19V.js.gz +0 -0
  376. package/dist/web/assets/settings-tab-Cdv9_OIe.js +1 -0
  377. package/dist/web/assets/settings-window-content-DLa6Ph4u.js +1 -0
  378. package/dist/web/assets/share-BV49OI6q.css +2 -0
  379. package/dist/web/assets/share-BV49OI6q.css.br +0 -0
  380. package/dist/web/assets/share-BV49OI6q.css.gz +0 -0
  381. package/dist/web/assets/share-D5ufGmNI.js +9 -0
  382. package/dist/web/assets/share-D5ufGmNI.js.br +0 -0
  383. package/dist/web/assets/share-D5ufGmNI.js.gz +0 -0
  384. package/dist/web/assets/slash-command-picker-lILYDfK3.js +1 -0
  385. package/dist/web/assets/slash-command-picker-lILYDfK3.js.br +0 -0
  386. package/dist/web/assets/slash-command-picker-lILYDfK3.js.gz +0 -0
  387. package/dist/web/assets/sortable-header-DwzTFLkG.js +1 -0
  388. package/dist/web/assets/sortable-header-DwzTFLkG.js.br +0 -0
  389. package/dist/web/assets/sortable-header-DwzTFLkG.js.gz +0 -0
  390. package/dist/web/assets/split-sql-statements-DcAeXbk_.js +5 -0
  391. package/dist/web/assets/split-sql-statements-DcAeXbk_.js.br +0 -0
  392. package/dist/web/assets/split-sql-statements-DcAeXbk_.js.gz +0 -0
  393. package/dist/web/assets/sql-completion-provider-CS-ElfgJ.js +1 -0
  394. package/dist/web/assets/sql-completion-provider-CS-ElfgJ.js.br +0 -0
  395. package/dist/web/assets/sql-completion-provider-CS-ElfgJ.js.gz +0 -0
  396. package/dist/web/assets/sql-object-tab-Da42SMK5.js +1 -0
  397. package/dist/web/assets/sql-object-tab-Da42SMK5.js.br +0 -0
  398. package/dist/web/assets/sql-object-tab-Da42SMK5.js.gz +0 -0
  399. package/dist/web/assets/sqlite-viewer-V3SKNukY.js +1 -0
  400. package/dist/web/assets/sqlite-viewer-V3SKNukY.js.br +0 -0
  401. package/dist/web/assets/sqlite-viewer-V3SKNukY.js.gz +0 -0
  402. package/dist/web/assets/start-ellipsis-CU8GkxaV.js +1 -0
  403. package/dist/web/assets/structure-save-dialog-B635iyPI.js +1 -0
  404. package/dist/web/assets/structure-save-dialog-B635iyPI.js.br +0 -0
  405. package/dist/web/assets/structure-save-dialog-B635iyPI.js.gz +0 -0
  406. package/dist/web/assets/structure-tab-Co9d8ktU.js +3 -0
  407. package/dist/web/assets/structure-tab-Co9d8ktU.js.br +0 -0
  408. package/dist/web/assets/structure-tab-Co9d8ktU.js.gz +0 -0
  409. package/dist/web/assets/system-monitor-body-DC0j8RqP.js +2 -0
  410. package/dist/web/assets/system-monitor-body-DC0j8RqP.js.br +0 -0
  411. package/dist/web/assets/system-monitor-body-DC0j8RqP.js.gz +0 -0
  412. package/dist/web/assets/system-monitor-tab-DA8BcdXo.js +1 -0
  413. package/dist/web/assets/system-monitor-window-content-BiuLo8XW.js +1 -0
  414. package/dist/web/assets/tab-host-window-content-Crvt1r5F.js +1 -0
  415. package/dist/web/assets/tab-host-window-content-Crvt1r5F.js.br +0 -0
  416. package/dist/web/assets/tab-host-window-content-Crvt1r5F.js.gz +0 -0
  417. package/dist/web/assets/tab-store-D5I52eLN.js +1 -0
  418. package/dist/web/assets/table-tab-C2cYw7a0.js +2 -0
  419. package/dist/web/assets/table-tab-C2cYw7a0.js.br +0 -0
  420. package/dist/web/assets/table-tab-C2cYw7a0.js.gz +0 -0
  421. package/dist/web/assets/telegram-bot-token-field-BqNtOo5n.js +1 -0
  422. package/dist/web/assets/telegram-bot-token-field-BqNtOo5n.js.br +0 -0
  423. package/dist/web/assets/telegram-bot-token-field-BqNtOo5n.js.gz +0 -0
  424. package/dist/web/assets/terminal-tab-CrKxibGC.js +3 -0
  425. package/dist/web/assets/terminal-tab-CrKxibGC.js.br +0 -0
  426. package/dist/web/assets/terminal-tab-CrKxibGC.js.gz +0 -0
  427. package/dist/web/assets/tool-cards-BRto67jM.js +15 -0
  428. package/dist/web/assets/tool-cards-BRto67jM.js.br +0 -0
  429. package/dist/web/assets/tool-cards-BRto67jM.js.gz +0 -0
  430. package/dist/web/assets/tools-settings-section-DEvZsrxq.js +1 -0
  431. package/dist/web/assets/tools-settings-section-DEvZsrxq.js.br +0 -0
  432. package/dist/web/assets/tools-settings-section-DEvZsrxq.js.gz +0 -0
  433. package/dist/web/assets/use-at-most-wide-BHsrzvv3.js +1 -0
  434. package/dist/web/assets/use-blob-url-Clm7wbB_.js +1 -0
  435. package/dist/web/assets/use-db-driver-installed-anzWkGi5.js +1 -0
  436. package/dist/web/assets/use-db-read-BCYhIrJM.js +1 -0
  437. package/dist/web/assets/use-db-read-BCYhIrJM.js.br +0 -0
  438. package/dist/web/assets/use-db-read-BCYhIrJM.js.gz +0 -0
  439. package/dist/web/assets/use-db-tab-B8LjdDb7.js +1 -0
  440. package/dist/web/assets/use-db-tab-B8LjdDb7.js.br +0 -0
  441. package/dist/web/assets/use-db-tab-B8LjdDb7.js.gz +0 -0
  442. package/dist/web/assets/use-design-canvas-check-DBsLf1At.js +1 -0
  443. package/dist/web/assets/use-design-canvas-check-DBsLf1At.js.br +0 -0
  444. package/dist/web/assets/use-design-canvas-check-DBsLf1At.js.gz +0 -0
  445. package/dist/web/assets/use-h264-canvas-decoder-_zqeiVx8.js +1 -0
  446. package/dist/web/assets/use-h264-canvas-decoder-_zqeiVx8.js.br +0 -0
  447. package/dist/web/assets/use-h264-canvas-decoder-_zqeiVx8.js.gz +0 -0
  448. package/dist/web/assets/use-inline-blame-CRWJU6Rq.js +16 -0
  449. package/dist/web/assets/use-inline-blame-CRWJU6Rq.js.br +0 -0
  450. package/dist/web/assets/use-inline-blame-CRWJU6Rq.js.gz +0 -0
  451. package/dist/web/assets/use-is-mobile-VRV9eZy1.js +1 -0
  452. package/dist/web/assets/use-lsp-B-otjr-6.js +6 -0
  453. package/dist/web/assets/use-lsp-B-otjr-6.js.br +0 -0
  454. package/dist/web/assets/use-lsp-B-otjr-6.js.gz +0 -0
  455. package/dist/web/assets/use-monaco-theme-BiDXRJ4e.js +1 -0
  456. package/dist/web/assets/use-opener-focus-CDRKhHwX.js +1 -0
  457. package/dist/web/assets/use-process-kill-BW2UW0mZ.js +1 -0
  458. package/dist/web/assets/use-process-kill-BW2UW0mZ.js.br +0 -0
  459. package/dist/web/assets/use-process-kill-BW2UW0mZ.js.gz +0 -0
  460. package/dist/web/assets/use-sql-schema-info-D_Kc2FI7.js +4 -0
  461. package/dist/web/assets/use-sql-schema-info-D_Kc2FI7.js.br +0 -0
  462. package/dist/web/assets/use-sql-schema-info-D_Kc2FI7.js.gz +0 -0
  463. package/dist/web/assets/use-visual-viewport-MmugpRg-.js +1 -0
  464. package/dist/web/assets/use-websocket-n3Ud9vEA.js +1 -0
  465. package/dist/web/assets/vendor-markdown-C-P1aR4p.js +291 -0
  466. package/dist/web/assets/vendor-markdown-C-P1aR4p.js.br +0 -0
  467. package/dist/web/assets/vendor-markdown-C-P1aR4p.js.gz +0 -0
  468. package/dist/web/assets/vendor-ui-BTSIXzhZ.js +45 -0
  469. package/dist/web/assets/vendor-ui-BTSIXzhZ.js.br +0 -0
  470. package/dist/web/assets/vendor-ui-BTSIXzhZ.js.gz +0 -0
  471. package/dist/web/assets/video-preview-CjB6wesi.js +1 -0
  472. package/dist/web/assets/video-preview-CjB6wesi.js.br +0 -0
  473. package/dist/web/assets/video-preview-CjB6wesi.js.gz +0 -0
  474. package/dist/web/assets/voice-settings-section-C6Wb6q5o.js +1 -0
  475. package/dist/web/assets/voice-settings-section-C6Wb6q5o.js.br +0 -0
  476. package/dist/web/assets/voice-settings-section-C6Wb6q5o.js.gz +0 -0
  477. package/dist/web/assets/web-preview-tab-doNpegW3.js +1 -0
  478. package/dist/web/assets/web-preview-tab-doNpegW3.js.br +0 -0
  479. package/dist/web/assets/web-preview-tab-doNpegW3.js.gz +0 -0
  480. package/dist/web/assets/window-store-DqX_qmkQ.js +1 -0
  481. package/dist/web/assets/window-store-DqX_qmkQ.js.br +0 -0
  482. package/dist/web/assets/window-store-DqX_qmkQ.js.gz +0 -0
  483. package/dist/web/assets/ws-auth-CbF6GqxP.js +1 -0
  484. package/dist/web/design-share-page/index.html +18 -0
  485. package/dist/web/index.html +47 -47
  486. package/dist/web/index.html.br +0 -0
  487. package/dist/web/index.html.gz +0 -0
  488. package/dist/web/sw.js +1 -1
  489. package/dist/web/sw.js.br +0 -0
  490. package/dist/web/sw.js.gz +0 -0
  491. package/docs/architecture/ai-chat-and-providers.md +258 -26
  492. package/docs/architecture/data-and-storage.md +9 -3
  493. package/docs/architecture/workspace-and-ui.md +42 -5
  494. package/docs/project-roadmap.md +5 -0
  495. package/package.json +6 -2
  496. package/scripts/gen-product-icons.ts +1 -0
  497. package/src/cli/commands/db-cmd.ts +79 -1
  498. package/src/providers/claude-agent-sdk-query-options.ts +42 -10
  499. package/src/providers/claude-agent-sdk.ts +19 -6
  500. package/src/providers/codex-app-server/codex-provider.ts +9 -3
  501. package/src/providers/codex-app-server/codex-thread-params.ts +34 -4
  502. package/src/server/index.ts +17 -5
  503. package/src/server/middleware/access-log.ts +6 -3
  504. package/src/server/routes/accounts.ts +3 -2
  505. package/src/server/routes/chat-file-changes.ts +15 -1
  506. package/src/server/routes/chat.ts +92 -18
  507. package/src/server/routes/database-query.ts +14 -5
  508. package/src/server/routes/database.ts +14 -0
  509. package/src/server/routes/debug-crash.ts +30 -0
  510. package/src/server/routes/design-comments.ts +56 -7
  511. package/src/server/routes/design-share-address.ts +20 -0
  512. package/src/server/routes/design-share-guest-comments.ts +120 -0
  513. package/src/server/routes/design-share-guest-files.ts +99 -0
  514. package/src/server/routes/design-share-guest-shared.ts +95 -0
  515. package/src/server/routes/design-share-guest.ts +77 -0
  516. package/src/server/routes/design-shares.ts +90 -0
  517. package/src/server/routes/designs.ts +2 -0
  518. package/src/server/routes/settings.ts +12 -0
  519. package/src/server/routes/static.ts +10 -2
  520. package/src/server/ws/chat.ts +113 -39
  521. package/src/server/ws/global.ts +10 -8
  522. package/src/services/account.service.ts +57 -18
  523. package/src/services/chat.service.ts +16 -6
  524. package/src/services/db-ai-tools/db-ai-connections.ts +48 -0
  525. package/src/services/db-ai-tools/db-ai-format.ts +107 -0
  526. package/src/services/db-ai-tools/db-ai-run.ts +199 -0
  527. package/src/services/db-ai-tools/db-ai-target.ts +59 -0
  528. package/src/services/db-ai-tools/db-ai-tools-endpoint.ts +225 -0
  529. package/src/services/db-ai-tools/db-ai-tools-tokens.ts +33 -0
  530. package/src/services/db-ai-tools/db-ai-tools-tool.ts +131 -0
  531. package/src/services/db-ai-tools/db-approval-broker.ts +157 -0
  532. package/src/services/db.service.ts +25 -1
  533. package/src/services/design/bridge/bridge-picker.ts +15 -5
  534. package/src/services/design/bridge/guest-bridge.ts +19 -0
  535. package/src/services/design/comments/design-comment-element-context.ts +28 -6
  536. package/src/services/design/comments/design-comment-input.ts +47 -0
  537. package/src/services/design/comments/design-comment-views.ts +146 -0
  538. package/src/services/design/comments/design-comments-revision.ts +19 -0
  539. package/src/services/design/comments/design-comments-store.ts +82 -9
  540. package/src/services/design/design-comment-replies.service.ts +126 -0
  541. package/src/services/design/design-comments.service.ts +77 -34
  542. package/src/services/design/design-restore.service.ts +6 -2
  543. package/src/services/design/design-snapshots.service.ts +8 -2
  544. package/src/services/design/design-store.service.ts +7 -1
  545. package/src/services/design/design-write-rate-limit.ts +11 -17
  546. package/src/services/design/preview/design-guest-alias.ts +64 -0
  547. package/src/services/design/preview/design-preview-html.ts +16 -3
  548. package/src/services/design/preview/design-preview-scope.ts +29 -5
  549. package/src/services/design/share/design-share-address.ts +81 -0
  550. package/src/services/design/share/design-share-changed-files.ts +74 -0
  551. package/src/services/design/share/design-share-client-key.ts +72 -0
  552. package/src/services/design/share/design-share-code.ts +116 -0
  553. package/src/services/design/share/design-share-comments.service.ts +162 -0
  554. package/src/services/design/share/design-share-guest-link.ts +109 -0
  555. package/src/services/design/share/design-share-guest-page.ts +86 -0
  556. package/src/services/design/share/design-share-link-rules.ts +83 -0
  557. package/src/services/design/share/design-share-links-store.ts +157 -0
  558. package/src/services/design/share/design-share-links.service.ts +174 -0
  559. package/src/services/design/share/design-share-notifier.ts +192 -0
  560. package/src/services/design/share/design-share-rate-limit.ts +71 -0
  561. package/src/services/design/share/design-share-resolve.ts +31 -0
  562. package/src/services/mcp-http-endpoint.ts +23 -10
  563. package/src/services/mysql.service.ts +6 -2
  564. package/src/services/notification-format.ts +10 -2
  565. package/src/services/notification-link.ts +1 -1
  566. package/src/services/notification.service.ts +47 -15
  567. package/src/services/ppm-password.ts +26 -0
  568. package/src/services/project-name-for-path.ts +18 -0
  569. package/src/services/query-audit/query-audit.service.ts +7 -4
  570. package/src/services/remote-desktop/access-unit-assembler.ts +11 -7
  571. package/src/services/remote-desktop/nal-splitter.ts +14 -1
  572. package/src/services/remote-desktop/remote-desktop-capture-wayland.ts +47 -21
  573. package/src/services/remote-desktop/remote-desktop-encoder-args.ts +5 -3
  574. package/src/services/session-file-baselines/session-file-baselines.service.ts +48 -0
  575. package/src/services/session-file-baselines/session-file-blame.ts +57 -24
  576. package/src/services/session-file-baselines/session-file-changes.service.ts +220 -22
  577. package/src/services/session-file-baselines/session-file-history.ts +5 -1
  578. package/src/services/session-file-baselines/session-file-writes.ts +28 -0
  579. package/src/services/sliding-window-limiter.ts +106 -0
  580. package/src/services/tab-tools-mcp/open-url-tool.ts +149 -0
  581. package/src/services/tab-tools-mcp/tab-open-broker.ts +12 -4
  582. package/src/services/tab-tools-mcp/tab-tools-mcp-endpoint.ts +66 -22
  583. package/src/services/tab-tools-mcp/tab-tools-mcp-tokens.ts +3 -1
  584. package/src/services/tab-tools-mcp/tab-tools-mcp-tool.ts +78 -6
  585. package/src/services/tab-tools-mcp/terminal-text.ts +45 -0
  586. package/src/services/tab-tools-mcp/terminal-tools.ts +297 -0
  587. package/src/services/terminal.service.ts +39 -4
  588. package/src/shared/db-ai-tools.ts +118 -0
  589. package/src/shared/db-query-script.ts +16 -0
  590. package/src/shared/design-comment-thread-types.ts +80 -0
  591. package/src/shared/design-comment-types.ts +53 -4
  592. package/src/shared/design-share-guest-types.ts +59 -0
  593. package/src/shared/design-share-types.ts +100 -0
  594. package/src/shared/notification-settings.ts +4 -3
  595. package/src/shared/ppm-tools.ts +39 -0
  596. package/src/shared/session-file-changes.ts +16 -0
  597. package/src/shared/tab-open-protocol.ts +50 -6
  598. package/src/shared/untrusted-text.ts +15 -1
  599. package/src/types/chat.ts +7 -1
  600. package/src/types/config.ts +5 -2
  601. package/src/types/database.ts +6 -0
  602. package/src/web/components/chat/chat-history-bar.tsx +10 -6
  603. package/src/web/components/chat/chat-tab.tsx +7 -1
  604. package/src/web/components/chat/db-execute-approval-card.tsx +100 -0
  605. package/src/web/components/chat/db-tool-card.tsx +42 -0
  606. package/src/web/components/chat/device-tool-card.tsx +45 -0
  607. package/src/web/components/chat/message-input.tsx +9 -6
  608. package/src/web/components/chat/message-list.tsx +6 -1
  609. package/src/web/components/chat/message-markdown.tsx +6 -3
  610. package/src/web/components/chat/message-user-bubble.tsx +2 -1
  611. package/src/web/components/chat/model-thinking-selector.tsx +6 -4
  612. package/src/web/components/chat/prompt-cache-chip.tsx +1 -1
  613. package/src/web/components/chat/running-agents-bar.tsx +164 -76
  614. package/src/web/components/chat/session-changes-bar.tsx +46 -13
  615. package/src/web/components/chat/tool-cards.tsx +29 -1
  616. package/src/web/components/chat/turn-change-rollup.tsx +8 -1
  617. package/src/web/components/chat/usage-badge.tsx +3 -3
  618. package/src/web/components/database/query/query-run-state.ts +11 -1
  619. package/src/web/components/database/query/query-tab.tsx +33 -7
  620. package/src/web/components/database/query/use-query-runner.ts +3 -0
  621. package/src/web/components/database/query/write-once-dialog.tsx +70 -0
  622. package/src/web/components/design/canvas/design-canvas-pane.tsx +5 -2
  623. package/src/web/components/design/comments/comment-author-label.tsx +23 -0
  624. package/src/web/components/design/comments/comment-composer.tsx +6 -14
  625. package/src/web/components/design/comments/comment-pins-overlay.tsx +8 -3
  626. package/src/web/components/design/comments/comment-thread-replies.tsx +82 -0
  627. package/src/web/components/design/comments/comment-thread-text-box.tsx +69 -0
  628. package/src/web/components/design/comments/comment-thread-view.tsx +115 -0
  629. package/src/web/components/design/comments/comments-panel.tsx +33 -10
  630. package/src/web/components/design/comments/comments-send-preview.tsx +20 -8
  631. package/src/web/components/design/comments/design-comments-layer.tsx +3 -1
  632. package/src/web/components/design/comments/use-comment-pins.ts +3 -0
  633. package/src/web/components/design/comments/use-design-comments-feature.ts +40 -25
  634. package/src/web/components/design/comments/use-design-comments.ts +44 -12
  635. package/src/web/components/design/design-split-layout.tsx +106 -10
  636. package/src/web/components/design/design-tab-context.ts +2 -0
  637. package/src/web/components/design/design-tab.tsx +5 -1
  638. package/src/web/components/design/design-toolbar.tsx +24 -4
  639. package/src/web/components/design/share/design-share-dialog.tsx +81 -0
  640. package/src/web/components/design/share/new-share-link-form.tsx +85 -0
  641. package/src/web/components/design/share/share-address-block.tsx +101 -0
  642. package/src/web/components/design/share/share-changed-files.tsx +30 -0
  643. package/src/web/components/design/share/share-expiry-picker.tsx +44 -0
  644. package/src/web/components/design/share/share-repin-panel.tsx +64 -0
  645. package/src/web/components/design/share/share-row-panel.tsx +35 -0
  646. package/src/web/components/design/share/share-version-picker.tsx +67 -0
  647. package/src/web/components/design/share/shared-link-action-panels.tsx +120 -0
  648. package/src/web/components/design/share/shared-link-row.tsx +131 -0
  649. package/src/web/components/design/share/shared-links-list.tsx +33 -0
  650. package/src/web/components/design/share/use-share-address.ts +74 -0
  651. package/src/web/components/design/share/use-share-links.ts +93 -0
  652. package/src/web/components/design/use-design-layout.ts +7 -4
  653. package/src/web/components/editor/diff-viewer.tsx +16 -12
  654. package/src/web/components/editor/docx-preview.tsx +7 -2
  655. package/src/web/components/floating-window/close-window.ts +32 -0
  656. package/src/web/components/floating-window/floating-window.tsx +65 -24
  657. package/src/web/components/floating-window/open-tab-in-pip.ts +3 -0
  658. package/src/web/components/floating-window/use-window-drag.ts +33 -7
  659. package/src/web/components/floating-window/use-window-meta.ts +138 -0
  660. package/src/web/components/floating-window/window-chrome-contract.ts +19 -2
  661. package/src/web/components/floating-window/window-dock-layout.ts +72 -0
  662. package/src/web/components/floating-window/window-dock-list.tsx +156 -0
  663. package/src/web/components/floating-window/window-dock.tsx +192 -0
  664. package/src/web/components/floating-window/window-geometry.ts +39 -1
  665. package/src/web/components/floating-window/window-layer.tsx +59 -23
  666. package/src/web/components/floating-window/window-persistence.ts +16 -3
  667. package/src/web/components/floating-window/window-store-types.ts +13 -2
  668. package/src/web/components/floating-window/window-store.ts +75 -8
  669. package/src/web/components/floating-window/window-title-identity.tsx +86 -0
  670. package/src/web/components/layout/status-bar.tsx +3 -0
  671. package/src/web/components/layout/tab-pop-out-menu-item.tsx +2 -2
  672. package/src/web/components/logs/open-logs.ts +0 -1
  673. package/src/web/components/os-explorer/actions/explorer-actions-upload.ts +2 -1
  674. package/src/web/components/os-explorer/skins/macos-window-chrome.tsx +17 -11
  675. package/src/web/components/os-explorer/skins/windows-window-chrome.tsx +14 -5
  676. package/src/web/components/remote-desktop/use-remote-desktop-readiness.ts +8 -3
  677. package/src/web/components/settings/accounts/account-add-dialog.tsx +25 -13
  678. package/src/web/components/settings/accounts/claude-accounts-section.tsx +3 -3
  679. package/src/web/components/settings/ai-settings-section.tsx +0 -20
  680. package/src/web/components/settings/design-settings-section.tsx +3 -0
  681. package/src/web/components/settings/design-window-setting.tsx +28 -0
  682. package/src/web/components/settings/settings-categories.ts +3 -0
  683. package/src/web/components/settings/settings-section-content.tsx +1 -0
  684. package/src/web/components/settings/tools-settings-section.tsx +120 -0
  685. package/src/web/components/shared/docx-html-sanitize.ts +59 -0
  686. package/src/web/components/shared/markdown-code-block.tsx +3 -1
  687. package/src/web/components/shared/markdown-renderer.tsx +15 -3
  688. package/src/web/components/shared/markdown-sanitize.ts +65 -0
  689. package/src/web/components/web-preview/web-preview-tab.tsx +6 -3
  690. package/src/web/design-share-page/index.html +17 -0
  691. package/src/web/design-share-page/main.tsx +11 -0
  692. package/src/web/design-share-page/share-api.ts +131 -0
  693. package/src/web/design-share-page/share-app.tsx +14 -0
  694. package/src/web/design-share-page/share-bottom-sheet.tsx +61 -0
  695. package/src/web/design-share-page/share-canvas.tsx +92 -0
  696. package/src/web/design-share-page/share-composer.tsx +104 -0
  697. package/src/web/design-share-page/share-entry.tsx +92 -0
  698. package/src/web/design-share-page/share-identity.ts +81 -0
  699. package/src/web/design-share-page/share-name-prompt.tsx +59 -0
  700. package/src/web/design-share-page/share-panel-content.tsx +57 -0
  701. package/src/web/design-share-page/share-pins-overlay.tsx +50 -0
  702. package/src/web/design-share-page/share-review.tsx +123 -0
  703. package/src/web/design-share-page/share-states.tsx +78 -0
  704. package/src/web/design-share-page/share-thread-model.ts +83 -0
  705. package/src/web/design-share-page/share-thread-view.tsx +61 -0
  706. package/src/web/design-share-page/share-threads-panel.tsx +103 -0
  707. package/src/web/design-share-page/share-toolbar.tsx +105 -0
  708. package/src/web/design-share-page/share-ui.ts +30 -0
  709. package/src/web/design-share-page/share.css +63 -0
  710. package/src/web/design-share-page/use-share-canvas.ts +51 -0
  711. package/src/web/design-share-page/use-share-info.ts +34 -0
  712. package/src/web/design-share-page/use-share-session.ts +75 -0
  713. package/src/web/design-share-page/use-share-threads.ts +139 -0
  714. package/src/web/hooks/use-chat.ts +5 -2
  715. package/src/web/hooks/use-design-session-redirect.ts +3 -2
  716. package/src/web/hooks/use-git-repo.ts +36 -16
  717. package/src/web/hooks/use-global-events.ts +4 -0
  718. package/src/web/hooks/use-inline-blame.ts +17 -11
  719. package/src/web/hooks/use-notification-clicks.ts +23 -5
  720. package/src/web/hooks/use-session-file-changes.ts +118 -41
  721. package/src/web/hooks/use-url-sync.ts +5 -4
  722. package/src/web/lib/api-settings.ts +2 -0
  723. package/src/web/lib/chat-attempt-lifecycle.ts +3 -1
  724. package/src/web/lib/db-tool-call.ts +57 -0
  725. package/src/web/lib/design/api-design-comments.ts +39 -9
  726. package/src/web/lib/design/api-design-shares.ts +47 -0
  727. package/src/web/lib/design/design-comments-prompt.ts +108 -23
  728. package/src/web/lib/design/design-layout-mode.ts +16 -1
  729. package/src/web/lib/design/design-share-address-state.ts +88 -0
  730. package/src/web/lib/design/design-share-expiry.ts +96 -0
  731. package/src/web/lib/design/design-share-link-status.ts +66 -0
  732. package/src/web/lib/design/design-view-prefs.ts +20 -1
  733. package/src/web/lib/design/open-design-tab.ts +54 -1
  734. package/src/web/lib/git-repo-scope.ts +60 -0
  735. package/src/web/lib/icons.generated.tsx +3 -1
  736. package/src/web/lib/model-display-name.ts +16 -0
  737. package/src/web/lib/open-ai-tab.ts +129 -19
  738. package/src/web/lib/running-agent-rows.ts +52 -0
  739. package/src/web/lib/session-file-changes-client.ts +6 -0
  740. package/src/web/lib/session-file-changes.ts +13 -0
  741. package/src/web/lib/tab-tool-call.ts +37 -1
  742. package/src/web/lib/utils.ts +4 -1
  743. package/src/web/stores/panel-store.ts +13 -1
  744. package/src/web/stores/panel-utils.ts +9 -4
  745. package/src/web/stores/settings-store.ts +14 -0
  746. package/src/web/stores/window-panel-actions.ts +21 -3
  747. package/src/web/stores/window-panel-persistence.ts +2 -1
  748. package/src/web/sw-notification-click.ts +12 -1
  749. package/templates/skill/SKILL.md.tmpl +2 -1
  750. package/templates/skill/common-tasks.md +6 -0
  751. package/vite.config.ts +10 -0
  752. package/vite.share.config.ts +43 -0
  753. package/dist/web/assets/accounts-settings-section-DU-lTifs.js +0 -1
  754. package/dist/web/assets/accounts-settings-section-DU-lTifs.js.br +0 -0
  755. package/dist/web/assets/accounts-settings-section-DU-lTifs.js.gz +0 -0
  756. package/dist/web/assets/adaptive-context-menu-Cq7ynvIn.js +0 -1
  757. package/dist/web/assets/adaptive-context-menu-Cq7ynvIn.js.br +0 -0
  758. package/dist/web/assets/adaptive-context-menu-Cq7ynvIn.js.gz +0 -0
  759. package/dist/web/assets/agent-session-sheet-At6Rt-Yf.js +0 -2
  760. package/dist/web/assets/agent-session-sheet-At6Rt-Yf.js.br +0 -0
  761. package/dist/web/assets/agent-session-sheet-At6Rt-Yf.js.gz +0 -0
  762. package/dist/web/assets/agent-session-sheet-store-BoBrAw5i.js +0 -1
  763. package/dist/web/assets/agent-session-window-content-CB_uvabH.js +0 -1
  764. package/dist/web/assets/agent-session-window-content-CB_uvabH.js.br +0 -0
  765. package/dist/web/assets/agent-session-window-content-CB_uvabH.js.gz +0 -0
  766. package/dist/web/assets/ai-resource-editor-Czearm3I.js +0 -1
  767. package/dist/web/assets/ai-resource-editor-Czearm3I.js.br +0 -0
  768. package/dist/web/assets/ai-resource-editor-Czearm3I.js.gz +0 -0
  769. package/dist/web/assets/ai-settings-section-AOgAUCgH.js +0 -1
  770. package/dist/web/assets/ai-settings-section-B_OFMlrt.js +0 -1
  771. package/dist/web/assets/ai-settings-section-B_OFMlrt.js.br +0 -0
  772. package/dist/web/assets/ai-settings-section-B_OFMlrt.js.gz +0 -0
  773. package/dist/web/assets/android-tab-L7DmLfHG.js +0 -2
  774. package/dist/web/assets/android-tab-L7DmLfHG.js.br +0 -0
  775. package/dist/web/assets/android-tab-L7DmLfHG.js.gz +0 -0
  776. package/dist/web/assets/api-client-DAQfiXg0.js +0 -1
  777. package/dist/web/assets/api-client-OiA8Ida1.js +0 -1
  778. package/dist/web/assets/api-client-OiA8Ida1.js.br +0 -0
  779. package/dist/web/assets/api-client-OiA8Ida1.js.gz +0 -0
  780. package/dist/web/assets/api-settings-D2H6gjen.js +0 -1
  781. package/dist/web/assets/api-settings-D2H6gjen.js.br +0 -0
  782. package/dist/web/assets/api-settings-D2H6gjen.js.gz +0 -0
  783. package/dist/web/assets/api-settings-DHhcUHtx.js +0 -1
  784. package/dist/web/assets/api-themes-CE8gPZ3X.js +0 -1
  785. package/dist/web/assets/appearance-settings-section-s3KWKTBm.js +0 -1
  786. package/dist/web/assets/appearance-settings-section-s3KWKTBm.js.br +0 -0
  787. package/dist/web/assets/appearance-settings-section-s3KWKTBm.js.gz +0 -0
  788. package/dist/web/assets/apps-panel-DaojtUvh.js +0 -1
  789. package/dist/web/assets/apps-panel-DaojtUvh.js.br +0 -0
  790. package/dist/web/assets/apps-panel-DaojtUvh.js.gz +0 -0
  791. package/dist/web/assets/audio-preview-CWcPZqTA.js +0 -1
  792. package/dist/web/assets/audio-preview-CWcPZqTA.js.br +0 -4
  793. package/dist/web/assets/audio-preview-CWcPZqTA.js.gz +0 -0
  794. package/dist/web/assets/branch-review-tab-9UB4ccpF.js +0 -1
  795. package/dist/web/assets/branch-review-tab-9UB4ccpF.js.br +0 -0
  796. package/dist/web/assets/branch-review-tab-9UB4ccpF.js.gz +0 -0
  797. package/dist/web/assets/button-Br60hGkw.js +0 -1
  798. package/dist/web/assets/button-Br60hGkw.js.br +0 -0
  799. package/dist/web/assets/button-Br60hGkw.js.gz +0 -0
  800. package/dist/web/assets/chat-preparation-cache-CRX9WAK5.js +0 -1
  801. package/dist/web/assets/chat-preparation-cache-CRX9WAK5.js.br +0 -0
  802. package/dist/web/assets/chat-preparation-cache-CRX9WAK5.js.gz +0 -0
  803. package/dist/web/assets/chat-tab-DMVb_mgx.js +0 -1
  804. package/dist/web/assets/chat-tab-DMVb_mgx.js.br +0 -0
  805. package/dist/web/assets/chat-tab-DMVb_mgx.js.gz +0 -0
  806. package/dist/web/assets/chat-tab-s7uAnh-h.js +0 -17
  807. package/dist/web/assets/chat-tab-s7uAnh-h.js.br +0 -0
  808. package/dist/web/assets/chat-tab-s7uAnh-h.js.gz +0 -0
  809. package/dist/web/assets/code-editor-JK49X9EX.js +0 -10
  810. package/dist/web/assets/code-editor-JK49X9EX.js.br +0 -0
  811. package/dist/web/assets/code-editor-JK49X9EX.js.gz +0 -0
  812. package/dist/web/assets/codex-reset-credit-button-CxJsBnff.js +0 -1
  813. package/dist/web/assets/codex-reset-credit-button-CxJsBnff.js.br +0 -0
  814. package/dist/web/assets/codex-reset-credit-button-CxJsBnff.js.gz +0 -0
  815. package/dist/web/assets/conflict-editor-rOpVkK9P.js +0 -19
  816. package/dist/web/assets/conflict-editor-rOpVkK9P.js.br +0 -0
  817. package/dist/web/assets/conflict-editor-rOpVkK9P.js.gz +0 -0
  818. package/dist/web/assets/connection-form-tab-BGmb918E.js +0 -4
  819. package/dist/web/assets/connection-form-tab-BGmb918E.js.br +0 -0
  820. package/dist/web/assets/connection-form-tab-BGmb918E.js.gz +0 -0
  821. package/dist/web/assets/context-menu-BoQ6lxte.js +0 -1
  822. package/dist/web/assets/context-menu-BoQ6lxte.js.br +0 -0
  823. package/dist/web/assets/context-menu-BoQ6lxte.js.gz +0 -0
  824. package/dist/web/assets/createLucideIcon-DBXq3G0e.js +0 -1
  825. package/dist/web/assets/createLucideIcon-DBXq3G0e.js.br +0 -0
  826. package/dist/web/assets/createLucideIcon-DBXq3G0e.js.gz +0 -0
  827. package/dist/web/assets/csv-preview-CM7su92m.js +0 -10
  828. package/dist/web/assets/csv-preview-CM7su92m.js.br +0 -0
  829. package/dist/web/assets/csv-preview-CM7su92m.js.gz +0 -0
  830. package/dist/web/assets/database-drivers-section-C6ZKPWaE.js +0 -1
  831. package/dist/web/assets/database-drivers-section-C6ZKPWaE.js.br +0 -0
  832. package/dist/web/assets/database-drivers-section-C6ZKPWaE.js.gz +0 -0
  833. package/dist/web/assets/db-explorer-store-BcLxq-X0.js +0 -1
  834. package/dist/web/assets/db-explorer-store-BcLxq-X0.js.br +0 -0
  835. package/dist/web/assets/db-explorer-store-BcLxq-X0.js.gz +0 -0
  836. package/dist/web/assets/db-tab-parts-DvmnlA6V.js +0 -1
  837. package/dist/web/assets/db-tab-parts-DvmnlA6V.js.br +0 -0
  838. package/dist/web/assets/db-tab-parts-DvmnlA6V.js.gz +0 -0
  839. package/dist/web/assets/db-types-9ac-eYxf.js +0 -1
  840. package/dist/web/assets/db-types-9ac-eYxf.js.br +0 -0
  841. package/dist/web/assets/db-types-9ac-eYxf.js.gz +0 -0
  842. package/dist/web/assets/design-canvas-check-Bo76Q6Qr.js +0 -1
  843. package/dist/web/assets/design-canvas-check-Bo76Q6Qr.js.br +0 -0
  844. package/dist/web/assets/design-canvas-check-Bo76Q6Qr.js.gz +0 -0
  845. package/dist/web/assets/design-export-client-ClwRg798.js +0 -1
  846. package/dist/web/assets/design-export-client-ClwRg798.js.br +0 -0
  847. package/dist/web/assets/design-export-client-ClwRg798.js.gz +0 -0
  848. package/dist/web/assets/design-responsive-dialog-Cdccv3Nw.js +0 -1
  849. package/dist/web/assets/design-responsive-dialog-Cdccv3Nw.js.br +0 -0
  850. package/dist/web/assets/design-responsive-dialog-Cdccv3Nw.js.gz +0 -0
  851. package/dist/web/assets/design-settings-section-CuxZSLAr.js +0 -2
  852. package/dist/web/assets/design-settings-section-CuxZSLAr.js.br +0 -0
  853. package/dist/web/assets/design-settings-section-CuxZSLAr.js.gz +0 -0
  854. package/dist/web/assets/design-skill-suggestion-DZQjG8FV.js +0 -3
  855. package/dist/web/assets/design-skill-suggestion-DZQjG8FV.js.br +0 -0
  856. package/dist/web/assets/design-skill-suggestion-DZQjG8FV.js.gz +0 -0
  857. package/dist/web/assets/design-tab-JlKmHVkd.js +0 -57
  858. package/dist/web/assets/design-tab-JlKmHVkd.js.br +0 -0
  859. package/dist/web/assets/design-tab-JlKmHVkd.js.gz +0 -0
  860. package/dist/web/assets/designs-sidebar-panel-C1EwWf4Z.js +0 -1
  861. package/dist/web/assets/designs-sidebar-panel-C1EwWf4Z.js.br +0 -0
  862. package/dist/web/assets/designs-sidebar-panel-C1EwWf4Z.js.gz +0 -0
  863. package/dist/web/assets/dialog-DOaEX6AK.js +0 -1
  864. package/dist/web/assets/dialog-DOaEX6AK.js.br +0 -0
  865. package/dist/web/assets/dialog-DOaEX6AK.js.gz +0 -0
  866. package/dist/web/assets/diff-viewer-FidH7Nsq.js +0 -4
  867. package/dist/web/assets/diff-viewer-FidH7Nsq.js.br +0 -0
  868. package/dist/web/assets/diff-viewer-FidH7Nsq.js.gz +0 -0
  869. package/dist/web/assets/docx-preview-ENiLGqzy.js +0 -12
  870. package/dist/web/assets/docx-preview-ENiLGqzy.js.br +0 -0
  871. package/dist/web/assets/docx-preview-ENiLGqzy.js.gz +0 -0
  872. package/dist/web/assets/dropdown-menu-DB3yyoVz.js +0 -1
  873. package/dist/web/assets/dropdown-menu-DB3yyoVz.js.br +0 -0
  874. package/dist/web/assets/dropdown-menu-DB3yyoVz.js.gz +0 -0
  875. package/dist/web/assets/edit-diff-preview-D4EqC86X.js +0 -7
  876. package/dist/web/assets/edit-diff-preview-D4EqC86X.js.br +0 -0
  877. package/dist/web/assets/edit-diff-preview-D4EqC86X.js.gz +0 -0
  878. package/dist/web/assets/editor-dialog-DC7dUWAX.js +0 -1
  879. package/dist/web/assets/editor-dialog-DC7dUWAX.js.br +0 -0
  880. package/dist/web/assets/editor-dialog-DC7dUWAX.js.gz +0 -0
  881. package/dist/web/assets/editor-language-service-0pN0TxYN.js +0 -1
  882. package/dist/web/assets/editor-language-service-0pN0TxYN.js.br +0 -0
  883. package/dist/web/assets/editor-language-service-0pN0TxYN.js.gz +0 -0
  884. package/dist/web/assets/explorer-body-tFaUp9_Q.js +0 -2
  885. package/dist/web/assets/explorer-body-tFaUp9_Q.js.br +0 -0
  886. package/dist/web/assets/explorer-body-tFaUp9_Q.js.gz +0 -0
  887. package/dist/web/assets/explorer-model-BmgFEsj1.js +0 -1
  888. package/dist/web/assets/explorer-model-BmgFEsj1.js.br +0 -0
  889. package/dist/web/assets/explorer-model-BmgFEsj1.js.gz +0 -0
  890. package/dist/web/assets/explorer-window-content-XnRTZT_X.js +0 -1
  891. package/dist/web/assets/explorer-window-content-XnRTZT_X.js.br +0 -0
  892. package/dist/web/assets/explorer-window-content-XnRTZT_X.js.gz +0 -0
  893. package/dist/web/assets/extension-manager-section-DEbwRPf1.js +0 -1
  894. package/dist/web/assets/extension-manager-section-DEbwRPf1.js.br +0 -0
  895. package/dist/web/assets/extension-manager-section-DEbwRPf1.js.gz +0 -0
  896. package/dist/web/assets/extension-webview-C9ApceLU.js +0 -12
  897. package/dist/web/assets/extension-webview-C9ApceLU.js.br +0 -0
  898. package/dist/web/assets/extension-webview-C9ApceLU.js.gz +0 -0
  899. package/dist/web/assets/file-diff-lX1a7RLF.js +0 -1
  900. package/dist/web/assets/file-icons-DpwcJLL4.js +0 -1
  901. package/dist/web/assets/file-icons-DpwcJLL4.js.br +0 -0
  902. package/dist/web/assets/file-icons-DpwcJLL4.js.gz +0 -0
  903. package/dist/web/assets/file-store-Bk1WYfdy.js +0 -1
  904. package/dist/web/assets/file-store-Bk1WYfdy.js.br +0 -0
  905. package/dist/web/assets/file-store-Bk1WYfdy.js.gz +0 -0
  906. package/dist/web/assets/files-settings-section-C8MacVFQ.js +0 -1
  907. package/dist/web/assets/files-settings-section-C8MacVFQ.js.br +0 -0
  908. package/dist/web/assets/files-settings-section-C8MacVFQ.js.gz +0 -0
  909. package/dist/web/assets/filter-dialog-frame-CoWlaNRy.js +0 -1
  910. package/dist/web/assets/filter-dialog-frame-CoWlaNRy.js.br +0 -0
  911. package/dist/web/assets/filter-dialog-frame-CoWlaNRy.js.gz +0 -0
  912. package/dist/web/assets/format-file-meta-C0LKHE3e.js +0 -1
  913. package/dist/web/assets/format-file-meta-C0LKHE3e.js.br +0 -0
  914. package/dist/web/assets/format-file-meta-C0LKHE3e.js.gz +0 -0
  915. package/dist/web/assets/fs-api-BQrIEcvo.js +0 -1
  916. package/dist/web/assets/fs-api-BQrIEcvo.js.br +0 -0
  917. package/dist/web/assets/fs-api-BQrIEcvo.js.gz +0 -0
  918. package/dist/web/assets/general-settings-section-DZRRGdlQ.js +0 -1
  919. package/dist/web/assets/general-settings-section-DZRRGdlQ.js.br +0 -0
  920. package/dist/web/assets/general-settings-section-DZRRGdlQ.js.gz +0 -0
  921. package/dist/web/assets/git-commit-horizontal-BVihXafd.js +0 -1
  922. package/dist/web/assets/git-log-panel-g2pBnu6r.js +0 -1
  923. package/dist/web/assets/git-log-panel-g2pBnu6r.js.br +0 -0
  924. package/dist/web/assets/git-log-panel-g2pBnu6r.js.gz +0 -0
  925. package/dist/web/assets/git-repo-store-BOYLnV67.js +0 -1
  926. package/dist/web/assets/git-repo-store-BOYLnV67.js.br +0 -0
  927. package/dist/web/assets/git-repo-store-BOYLnV67.js.gz +0 -0
  928. package/dist/web/assets/git-review-tab-BzI5mxWd.js +0 -3
  929. package/dist/web/assets/git-review-tab-BzI5mxWd.js.br +0 -0
  930. package/dist/web/assets/git-review-tab-BzI5mxWd.js.gz +0 -0
  931. package/dist/web/assets/glide-data-grid-BxvI3ehr.js +0 -177
  932. package/dist/web/assets/glide-data-grid-BxvI3ehr.js.br +0 -0
  933. package/dist/web/assets/glide-data-grid-BxvI3ehr.js.gz +0 -0
  934. package/dist/web/assets/grid-save-dialog-D55Po6Vu.js +0 -2
  935. package/dist/web/assets/grid-save-dialog-D55Po6Vu.js.br +0 -0
  936. package/dist/web/assets/grid-save-dialog-D55Po6Vu.js.gz +0 -0
  937. package/dist/web/assets/group-chat-tab-CoMC-Fx1.js +0 -1
  938. package/dist/web/assets/group-chat-tab-CoMC-Fx1.js.br +0 -0
  939. package/dist/web/assets/group-chat-tab-CoMC-Fx1.js.gz +0 -0
  940. package/dist/web/assets/icons-JMA45Ifw.js +0 -1
  941. package/dist/web/assets/icons-JMA45Ifw.js.br +0 -0
  942. package/dist/web/assets/icons-JMA45Ifw.js.gz +0 -0
  943. package/dist/web/assets/image-preview-D7KR11Xo.js +0 -1
  944. package/dist/web/assets/impexp-tab-JF6JF8eO.js +0 -1
  945. package/dist/web/assets/impexp-tab-JF6JF8eO.js.br +0 -0
  946. package/dist/web/assets/impexp-tab-JF6JF8eO.js.gz +0 -0
  947. package/dist/web/assets/index-DyYGWFVa.css +0 -1
  948. package/dist/web/assets/index-DyYGWFVa.css.br +0 -0
  949. package/dist/web/assets/index-DyYGWFVa.css.gz +0 -0
  950. package/dist/web/assets/index-ItT-dTPV.js +0 -59
  951. package/dist/web/assets/index-ItT-dTPV.js.br +0 -0
  952. package/dist/web/assets/index-ItT-dTPV.js.gz +0 -0
  953. package/dist/web/assets/input-CKGoVpYv.js +0 -1
  954. package/dist/web/assets/jira-watcher-section-CvyXLyjO.js +0 -1
  955. package/dist/web/assets/keybindings-store-CeEtx6js.js +0 -1
  956. package/dist/web/assets/keyboard-shortcuts-section-MUIE0Rvf.js +0 -1
  957. package/dist/web/assets/keyboard-shortcuts-section-MUIE0Rvf.js.br +0 -0
  958. package/dist/web/assets/keyboard-shortcuts-section-MUIE0Rvf.js.gz +0 -0
  959. package/dist/web/assets/language-servers-section-DiYURB24.js +0 -2
  960. package/dist/web/assets/language-servers-section-DiYURB24.js.br +0 -0
  961. package/dist/web/assets/language-servers-section-DiYURB24.js.gz +0 -0
  962. package/dist/web/assets/logs-app-CJlNqOdc.js +0 -13
  963. package/dist/web/assets/logs-app-CJlNqOdc.js.br +0 -0
  964. package/dist/web/assets/logs-app-CJlNqOdc.js.gz +0 -0
  965. package/dist/web/assets/logs-tab-BoAlm_8H.js +0 -1
  966. package/dist/web/assets/logs-window-content-nNm4jl1s.js +0 -1
  967. package/dist/web/assets/lsp-client-LnKiMWeG.js +0 -1
  968. package/dist/web/assets/lsp-client-LnKiMWeG.js.br +0 -0
  969. package/dist/web/assets/lsp-client-LnKiMWeG.js.gz +0 -0
  970. package/dist/web/assets/markdown-renderer-8Hef5MLx.js +0 -1
  971. package/dist/web/assets/markdown-renderer-BH_CFPJw.js +0 -5
  972. package/dist/web/assets/markdown-renderer-BH_CFPJw.js.br +0 -0
  973. package/dist/web/assets/markdown-renderer-BH_CFPJw.js.gz +0 -0
  974. package/dist/web/assets/media-url-CsdZ6q_T.js +0 -1
  975. package/dist/web/assets/metric-chart-canvas-LAMaVJTu.js +0 -1
  976. package/dist/web/assets/metric-chart-canvas-LAMaVJTu.js.br +0 -0
  977. package/dist/web/assets/metric-chart-canvas-LAMaVJTu.js.gz +0 -0
  978. package/dist/web/assets/mobile-bottom-sheet-CGmmdp_5.js +0 -1
  979. package/dist/web/assets/mobile-bottom-sheet-CGmmdp_5.js.br +0 -0
  980. package/dist/web/assets/mobile-bottom-sheet-CGmmdp_5.js.gz +0 -0
  981. package/dist/web/assets/mobile-explorer-sheet-Dh2ZECzL.js +0 -1
  982. package/dist/web/assets/mobile-explorer-sheet-Dh2ZECzL.js.br +0 -0
  983. package/dist/web/assets/mobile-explorer-sheet-Dh2ZECzL.js.gz +0 -0
  984. package/dist/web/assets/new-design-dialog-CgBUrVFx.js +0 -1
  985. package/dist/web/assets/new-design-dialog-CgBUrVFx.js.br +0 -0
  986. package/dist/web/assets/new-design-dialog-CgBUrVFx.js.gz +0 -0
  987. package/dist/web/assets/notification-store-CXC7u6MW.js +0 -1
  988. package/dist/web/assets/notifications-settings-section-CPbx23nU.js +0 -1
  989. package/dist/web/assets/notifications-settings-section-CPbx23nU.js.br +0 -0
  990. package/dist/web/assets/notifications-settings-section-CPbx23nU.js.gz +0 -0
  991. package/dist/web/assets/onboarding-entry--MWe4amV.js +0 -1
  992. package/dist/web/assets/onboarding-entry--MWe4amV.js.br +0 -0
  993. package/dist/web/assets/onboarding-entry--MWe4amV.js.gz +0 -0
  994. package/dist/web/assets/onboarding-quick-orientation-DZYQekRt.js +0 -1
  995. package/dist/web/assets/onboarding-quick-orientation-DZYQekRt.js.br +0 -0
  996. package/dist/web/assets/onboarding-quick-orientation-DZYQekRt.js.gz +0 -0
  997. package/dist/web/assets/open-db-tabs-CkQe49j_.js +0 -1
  998. package/dist/web/assets/open-db-tabs-CkQe49j_.js.br +0 -0
  999. package/dist/web/assets/open-db-tabs-CkQe49j_.js.gz +0 -0
  1000. package/dist/web/assets/open-settings-DsGBn73g.js +0 -1
  1001. package/dist/web/assets/overview-panel-CcUGDvnt.js +0 -1
  1002. package/dist/web/assets/overview-panel-CcUGDvnt.js.br +0 -0
  1003. package/dist/web/assets/overview-panel-CcUGDvnt.js.gz +0 -0
  1004. package/dist/web/assets/panel-store-DmP16Fo0.js +0 -1
  1005. package/dist/web/assets/panel-store-DmP16Fo0.js.br +0 -0
  1006. package/dist/web/assets/panel-store-DmP16Fo0.js.gz +0 -0
  1007. package/dist/web/assets/patch-tab-metadata-B-jH5svY.js +0 -1
  1008. package/dist/web/assets/pdf-preview-DMUIWb9B.js +0 -1
  1009. package/dist/web/assets/pdf-preview-DMUIWb9B.js.br +0 -0
  1010. package/dist/web/assets/pdf-preview-DMUIWb9B.js.gz +0 -0
  1011. package/dist/web/assets/performance-panel-CJDLUwrs.js +0 -3
  1012. package/dist/web/assets/performance-panel-CJDLUwrs.js.br +0 -0
  1013. package/dist/web/assets/performance-panel-CJDLUwrs.js.gz +0 -0
  1014. package/dist/web/assets/portal-container-context-BXAsDqrB.js +0 -1
  1015. package/dist/web/assets/ppmbot-settings-section-DTCTPQ-R.js +0 -1
  1016. package/dist/web/assets/ppmbot-settings-section-DTCTPQ-R.js.br +0 -0
  1017. package/dist/web/assets/ppmbot-settings-section-DTCTPQ-R.js.gz +0 -0
  1018. package/dist/web/assets/pptx-export-BxmgltJ4.js +0 -111
  1019. package/dist/web/assets/pptx-export-BxmgltJ4.js.br +0 -0
  1020. package/dist/web/assets/pptx-export-BxmgltJ4.js.gz +0 -0
  1021. package/dist/web/assets/problems-panel-DX32QDH_.js +0 -1
  1022. package/dist/web/assets/problems-panel-DX32QDH_.js.br +0 -0
  1023. package/dist/web/assets/problems-panel-DX32QDH_.js.gz +0 -0
  1024. package/dist/web/assets/process-row-format-CBw-CQCx.js +0 -1
  1025. package/dist/web/assets/process-table-CX-NhOg6.js +0 -1
  1026. package/dist/web/assets/process-table-CX-NhOg6.js.br +0 -0
  1027. package/dist/web/assets/process-table-CX-NhOg6.js.gz +0 -0
  1028. package/dist/web/assets/project-framework-store-Bi5dyHdx.js +0 -1
  1029. package/dist/web/assets/project-store-CEGoLMOl.js +0 -1
  1030. package/dist/web/assets/project-store-CEGoLMOl.js.br +0 -0
  1031. package/dist/web/assets/project-store-CEGoLMOl.js.gz +0 -0
  1032. package/dist/web/assets/proxy-settings-section-BGNvFe7e.js +0 -1
  1033. package/dist/web/assets/proxy-settings-section-BGNvFe7e.js.br +0 -0
  1034. package/dist/web/assets/proxy-settings-section-BGNvFe7e.js.gz +0 -0
  1035. package/dist/web/assets/query-audit-section-DTHI5GP7.js +0 -1
  1036. package/dist/web/assets/query-audit-section-DTHI5GP7.js.br +0 -0
  1037. package/dist/web/assets/query-audit-section-DTHI5GP7.js.gz +0 -0
  1038. package/dist/web/assets/query-tab-qMlIkHRk.js +0 -22
  1039. package/dist/web/assets/query-tab-qMlIkHRk.js.br +0 -0
  1040. package/dist/web/assets/query-tab-qMlIkHRk.js.gz +0 -0
  1041. package/dist/web/assets/react-PkBxFcos.js +0 -1
  1042. package/dist/web/assets/remote-access-settings-section-t2BYAA9g.js +0 -1
  1043. package/dist/web/assets/remote-access-settings-section-t2BYAA9g.js.br +0 -0
  1044. package/dist/web/assets/remote-access-settings-section-t2BYAA9g.js.gz +0 -0
  1045. package/dist/web/assets/remote-desktop-clipboard-notice-ChUU6Jts.js +0 -1
  1046. package/dist/web/assets/remote-desktop-clipboard-notice-ChUU6Jts.js.br +0 -0
  1047. package/dist/web/assets/remote-desktop-clipboard-notice-ChUU6Jts.js.gz +0 -0
  1048. package/dist/web/assets/remote-desktop-mobile-sheet-_bopEtCa.js +0 -2
  1049. package/dist/web/assets/remote-desktop-mobile-sheet-_bopEtCa.js.br +0 -0
  1050. package/dist/web/assets/remote-desktop-mobile-sheet-_bopEtCa.js.gz +0 -0
  1051. package/dist/web/assets/remote-desktop-mobile-view-D9G4kDfa.js +0 -1
  1052. package/dist/web/assets/remote-desktop-mobile-view-D9G4kDfa.js.br +0 -0
  1053. package/dist/web/assets/remote-desktop-mobile-view-D9G4kDfa.js.gz +0 -0
  1054. package/dist/web/assets/remote-desktop-readiness-gate-Yz9eVB3-.js +0 -1
  1055. package/dist/web/assets/remote-desktop-readiness-gate-Yz9eVB3-.js.br +0 -0
  1056. package/dist/web/assets/remote-desktop-readiness-gate-Yz9eVB3-.js.gz +0 -0
  1057. package/dist/web/assets/remote-desktop-settings-section-BTGGSjZY.js +0 -1
  1058. package/dist/web/assets/remote-desktop-settings-section-BTGGSjZY.js.br +0 -0
  1059. package/dist/web/assets/remote-desktop-settings-section-BTGGSjZY.js.gz +0 -0
  1060. package/dist/web/assets/remote-desktop-window-content-B8ZaG2bL.js +0 -1
  1061. package/dist/web/assets/remote-desktop-window-content-B8ZaG2bL.js.br +0 -0
  1062. package/dist/web/assets/remote-desktop-window-content-B8ZaG2bL.js.gz +0 -0
  1063. package/dist/web/assets/rename-object-dialog-FSlcdUoB.js +0 -1
  1064. package/dist/web/assets/rename-object-dialog-FSlcdUoB.js.br +0 -0
  1065. package/dist/web/assets/rename-object-dialog-FSlcdUoB.js.gz +0 -0
  1066. package/dist/web/assets/review-code-CfuJeLYd.js +0 -5
  1067. package/dist/web/assets/review-code-CfuJeLYd.js.br +0 -0
  1068. package/dist/web/assets/review-code-CfuJeLYd.js.gz +0 -0
  1069. package/dist/web/assets/run-in-terminal-Bk9Bw7G1.js +0 -1
  1070. package/dist/web/assets/run-in-terminal-button-DFPQUlZs.js +0 -1
  1071. package/dist/web/assets/save-as-dialog-Bj9VpGYf.js +0 -1
  1072. package/dist/web/assets/save-as-dialog-Bj9VpGYf.js.br +0 -0
  1073. package/dist/web/assets/save-as-dialog-Bj9VpGYf.js.gz +0 -0
  1074. package/dist/web/assets/schedules-settings-section-DNJ4K7zS.js +0 -1
  1075. package/dist/web/assets/schedules-settings-section-DNJ4K7zS.js.br +0 -0
  1076. package/dist/web/assets/schedules-settings-section-DNJ4K7zS.js.gz +0 -0
  1077. package/dist/web/assets/scroll-area-6Am1KMiB.js +0 -1
  1078. package/dist/web/assets/scroll-area-6Am1KMiB.js.br +0 -0
  1079. package/dist/web/assets/scroll-area-6Am1KMiB.js.gz +0 -0
  1080. package/dist/web/assets/send-to-chat-Bcm_Lcog.js +0 -1
  1081. package/dist/web/assets/send-to-chat-Bcm_Lcog.js.br +0 -0
  1082. package/dist/web/assets/send-to-chat-Bcm_Lcog.js.gz +0 -0
  1083. package/dist/web/assets/separator-BOYUIPkH.js +0 -1
  1084. package/dist/web/assets/services-panel-CBRTsROB.js +0 -1
  1085. package/dist/web/assets/services-panel-CBRTsROB.js.br +0 -0
  1086. package/dist/web/assets/services-panel-CBRTsROB.js.gz +0 -0
  1087. package/dist/web/assets/session-changes-bar-BRopa3Dh.js +0 -1
  1088. package/dist/web/assets/session-changes-bar-BRopa3Dh.js.br +0 -0
  1089. package/dist/web/assets/session-changes-bar-BRopa3Dh.js.gz +0 -0
  1090. package/dist/web/assets/session-list-sync-triggers-DitiR5h1.js +0 -1
  1091. package/dist/web/assets/session-list-sync-triggers-DitiR5h1.js.br +0 -0
  1092. package/dist/web/assets/session-list-sync-triggers-DitiR5h1.js.gz +0 -0
  1093. package/dist/web/assets/session-review-tab--kNB_FKQ.js +0 -6
  1094. package/dist/web/assets/session-review-tab--kNB_FKQ.js.br +0 -0
  1095. package/dist/web/assets/session-review-tab--kNB_FKQ.js.gz +0 -0
  1096. package/dist/web/assets/settings-body-B-s0fEjc.js +0 -1
  1097. package/dist/web/assets/settings-body-B-s0fEjc.js.br +0 -0
  1098. package/dist/web/assets/settings-body-B-s0fEjc.js.gz +0 -0
  1099. package/dist/web/assets/settings-categories-CcR9eL3x.js +0 -1
  1100. package/dist/web/assets/settings-categories-CcR9eL3x.js.br +0 -0
  1101. package/dist/web/assets/settings-categories-CcR9eL3x.js.gz +0 -0
  1102. package/dist/web/assets/settings-section-content-BJ35dy5r.js +0 -1
  1103. package/dist/web/assets/settings-section-content-DckksvTg.js +0 -2
  1104. package/dist/web/assets/settings-section-content-DckksvTg.js.br +0 -0
  1105. package/dist/web/assets/settings-section-content-DckksvTg.js.gz +0 -0
  1106. package/dist/web/assets/settings-store-WeJyQVL8.js +0 -2
  1107. package/dist/web/assets/settings-store-WeJyQVL8.js.br +0 -0
  1108. package/dist/web/assets/settings-store-WeJyQVL8.js.gz +0 -0
  1109. package/dist/web/assets/settings-tab-BlX33GEN.js +0 -1
  1110. package/dist/web/assets/settings-window-content-B-7yV1_q.js +0 -1
  1111. package/dist/web/assets/slash-command-picker-BBcy6w6m.js +0 -1
  1112. package/dist/web/assets/slash-command-picker-BBcy6w6m.js.br +0 -0
  1113. package/dist/web/assets/slash-command-picker-BBcy6w6m.js.gz +0 -0
  1114. package/dist/web/assets/sortable-header-B9gfWik4.js +0 -1
  1115. package/dist/web/assets/sortable-header-B9gfWik4.js.br +0 -0
  1116. package/dist/web/assets/sortable-header-B9gfWik4.js.gz +0 -0
  1117. package/dist/web/assets/sql-completion-provider-CaTHVr1l.js +0 -5
  1118. package/dist/web/assets/sql-completion-provider-CaTHVr1l.js.br +0 -0
  1119. package/dist/web/assets/sql-completion-provider-CaTHVr1l.js.gz +0 -0
  1120. package/dist/web/assets/sql-object-tab-DVo4bxRI.js +0 -1
  1121. package/dist/web/assets/sql-object-tab-DVo4bxRI.js.br +0 -0
  1122. package/dist/web/assets/sql-object-tab-DVo4bxRI.js.gz +0 -0
  1123. package/dist/web/assets/sqlite-viewer-BGfIpl5x.js +0 -1
  1124. package/dist/web/assets/sqlite-viewer-BGfIpl5x.js.br +0 -0
  1125. package/dist/web/assets/sqlite-viewer-BGfIpl5x.js.gz +0 -0
  1126. package/dist/web/assets/start-ellipsis-rBh37k0n.js +0 -1
  1127. package/dist/web/assets/structure-save-dialog-STK_RFCK.js +0 -1
  1128. package/dist/web/assets/structure-save-dialog-STK_RFCK.js.br +0 -0
  1129. package/dist/web/assets/structure-save-dialog-STK_RFCK.js.gz +0 -0
  1130. package/dist/web/assets/structure-tab-DuLnsTC4.js +0 -3
  1131. package/dist/web/assets/structure-tab-DuLnsTC4.js.br +0 -0
  1132. package/dist/web/assets/structure-tab-DuLnsTC4.js.gz +0 -0
  1133. package/dist/web/assets/system-monitor-body-BIjW16Pb.js +0 -2
  1134. package/dist/web/assets/system-monitor-body-BIjW16Pb.js.br +0 -0
  1135. package/dist/web/assets/system-monitor-body-BIjW16Pb.js.gz +0 -0
  1136. package/dist/web/assets/system-monitor-tab-B6_tC9LO.js +0 -1
  1137. package/dist/web/assets/system-monitor-window-content-CwBzqMUe.js +0 -1
  1138. package/dist/web/assets/tab-host-window-content-CpdEjkZd.js +0 -1
  1139. package/dist/web/assets/tab-host-window-content-CpdEjkZd.js.br +0 -0
  1140. package/dist/web/assets/tab-host-window-content-CpdEjkZd.js.gz +0 -0
  1141. package/dist/web/assets/tab-store-nNzRNfVV.js +0 -1
  1142. package/dist/web/assets/table-tab-B5asfTBP.js +0 -2
  1143. package/dist/web/assets/table-tab-B5asfTBP.js.br +0 -0
  1144. package/dist/web/assets/table-tab-B5asfTBP.js.gz +0 -0
  1145. package/dist/web/assets/telegram-bot-token-field-BiqKbXwE.js +0 -1
  1146. package/dist/web/assets/telegram-bot-token-field-BiqKbXwE.js.br +0 -0
  1147. package/dist/web/assets/telegram-bot-token-field-BiqKbXwE.js.gz +0 -0
  1148. package/dist/web/assets/terminal-tab-DpMONMVB.js +0 -3
  1149. package/dist/web/assets/terminal-tab-DpMONMVB.js.br +0 -0
  1150. package/dist/web/assets/terminal-tab-DpMONMVB.js.gz +0 -0
  1151. package/dist/web/assets/tool-cards-DoDKxqN4.js +0 -14
  1152. package/dist/web/assets/tool-cards-DoDKxqN4.js.br +0 -0
  1153. package/dist/web/assets/tool-cards-DoDKxqN4.js.gz +0 -0
  1154. package/dist/web/assets/use-at-most-wide-BQFi1Sjv.js +0 -1
  1155. package/dist/web/assets/use-blob-url-D7ElNPnW.js +0 -1
  1156. package/dist/web/assets/use-db-driver-installed-BscdI-wS.js +0 -1
  1157. package/dist/web/assets/use-db-read-DYuyNA5i.js +0 -1
  1158. package/dist/web/assets/use-db-read-DYuyNA5i.js.br +0 -0
  1159. package/dist/web/assets/use-db-read-DYuyNA5i.js.gz +0 -0
  1160. package/dist/web/assets/use-db-tab-Cr4lXxwF.js +0 -1
  1161. package/dist/web/assets/use-db-tab-Cr4lXxwF.js.br +0 -0
  1162. package/dist/web/assets/use-db-tab-Cr4lXxwF.js.gz +0 -0
  1163. package/dist/web/assets/use-design-canvas-check-DKlyMp-S.js +0 -1
  1164. package/dist/web/assets/use-design-canvas-check-DKlyMp-S.js.br +0 -0
  1165. package/dist/web/assets/use-design-canvas-check-DKlyMp-S.js.gz +0 -0
  1166. package/dist/web/assets/use-h264-canvas-decoder-DAjp9oHe.js +0 -1
  1167. package/dist/web/assets/use-h264-canvas-decoder-DAjp9oHe.js.br +0 -0
  1168. package/dist/web/assets/use-h264-canvas-decoder-DAjp9oHe.js.gz +0 -0
  1169. package/dist/web/assets/use-inline-blame-DS0HrHJ3.js +0 -16
  1170. package/dist/web/assets/use-inline-blame-DS0HrHJ3.js.br +0 -0
  1171. package/dist/web/assets/use-inline-blame-DS0HrHJ3.js.gz +0 -0
  1172. package/dist/web/assets/use-is-mobile-BXHbkfs9.js +0 -1
  1173. package/dist/web/assets/use-lsp-BTVDYrt6.js +0 -6
  1174. package/dist/web/assets/use-lsp-BTVDYrt6.js.br +0 -0
  1175. package/dist/web/assets/use-lsp-BTVDYrt6.js.gz +0 -0
  1176. package/dist/web/assets/use-monaco-theme-DqnhExsm.js +0 -1
  1177. package/dist/web/assets/use-opener-focus-C5L5UUJs.js +0 -1
  1178. package/dist/web/assets/use-process-kill-D-SGQxDn.js +0 -1
  1179. package/dist/web/assets/use-process-kill-D-SGQxDn.js.br +0 -0
  1180. package/dist/web/assets/use-process-kill-D-SGQxDn.js.gz +0 -0
  1181. package/dist/web/assets/use-sql-schema-info-DRb9dAKi.js +0 -4
  1182. package/dist/web/assets/use-sql-schema-info-DRb9dAKi.js.br +0 -0
  1183. package/dist/web/assets/use-sql-schema-info-DRb9dAKi.js.gz +0 -0
  1184. package/dist/web/assets/use-visual-viewport-CQ6-A0Dt.js +0 -1
  1185. package/dist/web/assets/use-websocket-C6RnlNVJ.js +0 -1
  1186. package/dist/web/assets/vendor-markdown-QKPNiWEd.js +0 -291
  1187. package/dist/web/assets/vendor-markdown-QKPNiWEd.js.br +0 -0
  1188. package/dist/web/assets/vendor-markdown-QKPNiWEd.js.gz +0 -0
  1189. package/dist/web/assets/vendor-ui-CS1GvlOm.js +0 -45
  1190. package/dist/web/assets/vendor-ui-CS1GvlOm.js.br +0 -0
  1191. package/dist/web/assets/vendor-ui-CS1GvlOm.js.gz +0 -0
  1192. package/dist/web/assets/video-preview-CYzeUPfH.js +0 -1
  1193. package/dist/web/assets/video-preview-CYzeUPfH.js.br +0 -0
  1194. package/dist/web/assets/video-preview-CYzeUPfH.js.gz +0 -0
  1195. package/dist/web/assets/voice-settings-section-C01d-toF.js +0 -1
  1196. package/dist/web/assets/voice-settings-section-C01d-toF.js.br +0 -0
  1197. package/dist/web/assets/voice-settings-section-C01d-toF.js.gz +0 -0
  1198. package/dist/web/assets/web-preview-tab-F5C3quQs.js +0 -1
  1199. package/dist/web/assets/web-preview-tab-F5C3quQs.js.br +0 -0
  1200. package/dist/web/assets/web-preview-tab-F5C3quQs.js.gz +0 -0
  1201. package/dist/web/assets/window-pip-registry-DSoB7T3k.js +0 -1
  1202. package/dist/web/assets/window-store-zJczRsv4.js +0 -1
  1203. package/dist/web/assets/window-store-zJczRsv4.js.br +0 -0
  1204. package/dist/web/assets/window-store-zJczRsv4.js.gz +0 -0
  1205. package/dist/web/assets/ws-auth-cWeQ7_61.js +0 -1
  1206. /package/dist/web/assets/{__vite-browser-external-B4VNaaaA.js → __vite-browser-external-DL4jXWNt.js} +0 -0
  1207. /package/dist/web/assets/{clipboard-D3XnL7CB.js → clipboard-D-VCry-F.js} +0 -0
  1208. /package/dist/web/assets/{clipboard-D3XnL7CB.js.br → clipboard-D-VCry-F.js.br} +0 -0
  1209. /package/dist/web/assets/{clipboard-D3XnL7CB.js.gz → clipboard-D-VCry-F.js.gz} +0 -0
  1210. /package/dist/web/assets/{code-fence-vHZyBehL.js → code-fence-BK57HRhJ.js} +0 -0
  1211. /package/dist/web/assets/{design-system-status-label-Cus6e2Df.js → design-system-status-label-KA4ESjWe.js} +0 -0
  1212. /package/dist/web/assets/{format-bytes-B2kC4sbB.js → format-bytes-he3TR0bV.js} +0 -0
  1213. /package/dist/web/assets/{session-turns-gmrmXzeg.js → session-turns-D3QpTtCq.js} +0 -0
  1214. /package/dist/web/assets/{session-turns-gmrmXzeg.js.br → session-turns-D3QpTtCq.js.br} +0 -0
  1215. /package/dist/web/assets/{session-turns-gmrmXzeg.js.gz → session-turns-D3QpTtCq.js.gz} +0 -0
  1216. /package/dist/web/assets/{vendor-xterm-sFX94k3w.js → vendor-xterm-DRhOk3kW.js} +0 -0
  1217. /package/dist/web/assets/{vendor-xterm-sFX94k3w.js.br → vendor-xterm-DRhOk3kW.js.br} +0 -0
  1218. /package/dist/web/assets/{vendor-xterm-sFX94k3w.js.gz → vendor-xterm-DRhOk3kW.js.gz} +0 -0
@@ -1,2 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import{A as r,Bt as i,Dr as a,Gr as o,Hn as s,I as c,In as l,L as u,Lr as d,Or as f,P as p,Qn as m,Rr as h,Vn as g,Vt as _,Yr as v,Zt as y,at as b,c as x,ci as S,cn as C,cr as w,f as T,g as ee,gt as E,h as D,hr as O,kt as k,lt as A,mn as j,mr as M,o as N,p as P,r as te,st as ne,ut as F,v as I,vr as L,vt as re}from"./icons-JMA45Ifw.js";import{k as R,n as z,r as B}from"./api-client-OiA8Ida1.js";import{t as ie}from"./settings-store-WeJyQVL8.js";import{n as V}from"./utils-Bslrbb-G.js";import"./portal-container-context-BXAsDqrB.js";import{C as ae,E as oe,t as H,w as se}from"./panel-store-DmP16Fo0.js";import"./window-store-zJczRsv4.js";import"./project-store-CEGoLMOl.js";import"./project-framework-store-Bi5dyHdx.js";import"./session-list-sync-triggers-DitiR5h1.js";import{t as ce}from"./tab-store-nNzRNfVV.js";import"./context-menu-BoQ6lxte.js";import{n as le}from"./use-is-mobile-BXHbkfs9.js";import"./settings-categories-CcR9eL3x.js";import"./open-settings-DsGBn73g.js";import{r as ue}from"./clipboard-D3XnL7CB.js";import{t as de}from"./button-Br60hGkw.js";import"./dialog-DOaEX6AK.js";import"./file-icons-DpwcJLL4.js";import{i as fe,l as pe,m as me,r as U,t as he,u as ge}from"./dropdown-menu-DB3yyoVz.js";import{t as _e}from"./mobile-bottom-sheet-CGmmdp_5.js";import"./use-visual-viewport-CQ6-A0Dt.js";import"./adaptive-context-menu-Cq7ynvIn.js";import"./fs-api-BQrIEcvo.js";import"./format-file-meta-C0LKHE3e.js";import"./input-CKGoVpYv.js";import{i as ve,t as ye}from"./use-db-driver-installed-BscdI-wS.js";import"./db-types-9ac-eYxf.js";import{D as be}from"./db-explorer-store-BcLxq-X0.js";import{A as xe,C as Se,D as Ce,E as we,I as Te,N as Ee,O as W,P as De,S as Oe,T as ke,a as Ae,b as je,g as Me,h as Ne,i as Pe,j as Fe,k as Ie,m as Le,n as Re,r as ze,s as Be,u as Ve,w as He,x as Ue,y as We}from"./open-db-tabs-CkQe49j_.js";import{m as Ge}from"./impexp-state-BWKOuRGj.js";import"./scroll-area-6Am1KMiB.js";import{$n as Ke,Ci as qe,Jn as Je,Qn as Ye,Zn as Xe,_ as Ze,er as Qe,g as $e,m as et,ot as tt,qn as nt,s as rt,tr as it,ui as at,vi as G}from"./index-ItT-dTPV.js";import"./marked.esm-jqwIt-AK.js";import{t as ot}from"./use-db-tab-Cr4lXxwF.js";import{t as st}from"./use-db-read-DYuyNA5i.js";import{a as K,i as q,n as ct,r as J,t as lt}from"./db-tab-parts-DvmnlA6V.js";import"./use-opener-focus-C5L5UUJs.js";import{i as ut,n as dt,r as ft,t as pt}from"./filter-dialog-frame-CoWlaNRy.js";import{t as mt}from"./use-at-most-wide-BQFi1Sjv.js";import{C as ht,S as gt,_ as _t,a as vt,b as yt,c as bt,d as xt,f as St,g as Ct,h as wt,i as Tt,l as Et,m as Dt,o as Ot,p as kt,r as At,s as jt,t as Mt,u as Nt,v as Pt,w as Ft,x as It,y as Lt}from"./glide-data-grid-BxvI3ehr.js";var Y=e(t(),1),X={filters:[],anyColumn:[]};function Rt(e,t,n){return`ppm-db-${e}-${n}.${t}-p1`}var zt=(e,t)=>`/schema?table=${encodeURIComponent(e)}${t?`&schema=${encodeURIComponent(t)}`:``}`;function Bt(e,t,n){try{let r=sessionStorage.getItem(Rt(e,t,n)),i=r?JSON.parse(r):null;return i&&typeof i.data?.hasMore==`boolean`?i:null}catch{return null}}function Z(e,t,n,r,i){try{sessionStorage.setItem(Rt(e,t,n),JSON.stringify({data:r,cols:i}))}catch{}}var Vt=e=>e.toLocaleString();function Ht(e,t){if(!e)return null;let n=e.rows.length;if(!e.hasMore)return{text:`Rows: ${Vt(n)}`,counting:!1,canCountExactly:!1,total:{kind:`exact`,count:n}};let r=t?.key===e.countKey?t:null;if(r?.count!=null){let e=Math.max(r.count,n);return{text:`Rows: ${Vt(e)}`,counting:!1,canCountExactly:!1,total:{kind:`exact`,count:e}}}let i=r?.estimate!=null&&r.estimate>n?r.estimate:null;return r&&!r.pending&&(r.timedOut||r.failed)?{text:i===null?`Rows: Many`:`Rows: ~${Vt(i)}`,counting:!1,canCountExactly:!0,title:r.failed?`The rows could not be counted: ${r.failed}. Click to try again.`:`Counting took too long, so this is not exact. Click to count every row.`,total:i===null?{kind:`many`}:{kind:`estimate`,count:i}}:{text:i===null?`Rows: ${Vt(n)}+`:`Rows: ~${Vt(i)}`,counting:!!r?.pending,canCountExactly:!1,title:i===null?`Rows loaded so far, until they are counted`:`The database's estimate, until the rows are counted`,total:i===null?{kind:`atLeast`,count:n}:{kind:`estimate`,count:i}}}function Ut(e){let t=(0,Y.useCallback)(t=>e?oe(e,t):``,[e]),n=e?ae(e):``,[r,i]=(0,Y.useState)(null),[a,o]=(0,Y.useState)(``),s=(0,Y.useRef)(null),[c,l]=(0,Y.useState)(null),u=(0,Y.useRef)(null),[d,f]=(0,Y.useState)([]),p=(0,Y.useRef)(null),[m,h]=(0,Y.useState)(!1),[g,_]=(0,Y.useState)(!1),[v,y]=(0,Y.useState)(null),[b,x]=(0,Y.useState)(null),[S,C]=(0,Y.useState)(null),w=(0,Y.useRef)(null),[T,ee]=(0,Y.useState)([]),E=(0,Y.useRef)([]),D=(0,Y.useRef)(X),O=(0,Y.useRef)(0),k=(0,Y.useRef)(Promise.resolve()),A=(0,Y.useRef)(null),[j,M]=(0,Y.useState)(null),N=(0,Y.useRef)(null),P=(0,Y.useRef)(0),[te,ne]=(0,Y.useState)(0),F=(0,Y.useCallback)(e=>{u.current=e,l(e)},[]),I=(0,Y.useCallback)(e=>{N.current=e,M(e)},[]),L=(0,Y.useCallback)(e=>{P.current++,e.countKey&&I({key:e.countKey,count:e.rows.length,estimate:null,pending:!1})},[I]),re=(0,Y.useCallback)((e,n)=>{let r=++P.current,i=N.current?.key===n?N.current:null;I({key:n,count:null,estimate:i?.estimate??null,pending:!0}),B.post(t(`/grid/count`),{table:e.table,schema:e.schema,filters:e.filters,anyColumn:e.anyColumn,...e.exact?{exact:!0}:{}}).then(e=>{r===P.current&&I({key:n,count:e.count,estimate:e.estimate,pending:!1,timedOut:e.timedOut})}).catch(e=>{r===P.current&&I({key:n,count:null,estimate:i?.estimate??null,pending:!1,failed:e.message})})},[t,I]),z=(0,Y.useCallback)((e,t,n=s.current,r=E.current)=>{if(!n)return null;let{filters:i,anyColumn:a}=D.current;return{table:n.table,schema:n.schema,filters:i,anyColumn:a,sort:r,offset:e,limit:t}},[]),ie=(0,Y.useCallback)((e,n)=>{let r=s.current;if(!r)return Promise.resolve(null);let{filters:i,anyColumn:a}=D.current;return B.post(t(`/grid/export`),{table:r.table,schema:r.schema,filters:i,anyColumn:a,sort:E.current,columns:n,format:e})},[t]),V=(0,Y.useCallback)((e,n,r)=>{let i=s.current;return i?B.post(t(`/grid/cell`),{table:i.table,schema:i.schema,column:e,key:n,fileName:r}):Promise.resolve(null)},[t]),H=(0,Y.useCallback)(async(r={})=>{let i=r.table===void 0?s.current:{table:r.table,schema:r.tableSchema??``};if(!i||!e)return null;let a=++O.current;A.current=null,y(null),r.silent||h(!0);let o=r.sort??E.current,c=u.current?.rows.length??0,l=r.keepLoaded?Math.min(Math.max(c,100),De):100,d=z(0,l,i,o),{filters:m,anyColumn:g}=D.current,_=JSON.stringify([i.table,i.schema,m,g]),v=JSON.stringify([i.table,i.schema]),b=r.structure||p.current!==v;try{let[e,s]=await Promise.all([B.post(t(`/grid`),d),b?B.get(t(zt(i.table,i.schema))):Promise.resolve(null)]);if(a!==O.current)return null;C(null),x(null);let{keys:c,records:u}=Te(e.columns,e.rows),h={columns:c,rows:u,hasMore:e.hasMore,sql:e.sql,countKey:_,rowKey:e.rowKey};return F(h),r.keepLoaded||ne(e=>e+1),s&&(f(s),p.current=v),m.length===0&&g.length===0&&o.length===0&&l===100&&s&&Z(n,i.table,i.schema,h,s),e.hasMore?(r.recount||N.current?.key!==_)&&re(d,_):L(h),null}catch(e){if(a!==O.current)return null;if(r.silent)return e;x(e.message);let t=ve(e);return C(t),w.current=t?()=>{H({...r,table:i.table,tableSchema:i.schema})}:null,e}finally{a===O.current&&h(!1)}},[t,e,n,z,F,L,re]),se=(0,Y.useCallback)(async(e,n)=>{let r=u.current;if(e!==O.current||!r?.hasMore)return!1;let i=z(r.rows.length,n);if(!i)return!1;let a=await B.post(t(`/grid`),i),o=u.current;if(e!==O.current||!o)return!1;let{records:s}=Te(a.columns,a.rows),c={...o,rows:[...o.rows,...s],hasMore:a.hasMore};return F(c),a.hasMore||L(c),!0},[t,z,F,L]),ce=(0,Y.useCallback)(e=>{let t=k.current.then(e);return k.current=t.catch(()=>{}),t},[]),le=(0,Y.useCallback)(()=>{let e=O.current;!u.current?.hasMore||A.current===e||(A.current=e,_(!0),ce(async()=>{try{await se(e,100)}catch(t){e===O.current&&R.error(`Could not load more rows`,{description:t.message})}finally{A.current===e&&(A.current=null,_(!1))}}))},[ce,se]),ue=(0,Y.useCallback)(()=>{let e=O.current;if(!u.current?.hasMore)return Promise.resolve(null);y(u.current.rows.length);let t=null;return ce(async()=>{try{for(;e===O.current&&u.current?.hasMore&&await se(e,5e3);)e===O.current&&y(u.current?.rows.length??0);e===O.current&&u.current&&!u.current.hasMore&&(t=u.current)}catch(t){e===O.current&&R.error(`Fetch all stopped`,{description:t.message})}finally{e===O.current&&y(null)}}).then(()=>t)},[ce,se]),de=(0,Y.useCallback)(()=>{let e=u.current,t=z(0,100);!e?.countKey||!t||re({...t,exact:!0},e.countKey)},[z,re]),fe=(0,Y.useCallback)(e=>(D.current=e,H()),[H]),pe=(0,Y.useCallback)(async(e,r=``,a)=>{s.current={table:e,schema:r},i(e),o(r),D.current=X,E.current=[],ee([]);let c=Bt(n,e,r);if(a){let n=c?.cols??await B.get(t(zt(e,r))).catch(()=>null),i=n?a(n):X;if(n&&(i.filters.length>0||i.anyColumn.length>0))return f(n),p.current=JSON.stringify([e,r]),D.current=i,H({table:e,tableSchema:r})}return c&&(F(c.data),f(c.cols),h(!1)),H({table:e,tableSchema:r,structure:!0})},[t,n,H,F]);ye(e=>{if(S?.id!==e)return;let t=w.current;w.current=null,t?.()});let me=(0,Y.useCallback)(async(t,n)=>{let r=s.current;!r||!e||(await rt({target:e,place:n,table:r.table,schema:r.schema,changes:t}),H({keepLoaded:!0,recount:!0}))},[e,H]),U=(0,Y.useCallback)(e=>(E.current=e,ee(e),H({sort:e})),[H]),he=(0,Y.useCallback)((e={})=>H({structure:e.structure,recount:!0,...e.keepPlace?{keepLoaded:!0}:{}}),[H]),ge=(0,Y.useCallback)(()=>H({silent:!0,keepLoaded:!0}),[H]);return{selectedTable:r,selectedSchema:a,selectTable:pe,tableData:c,schema:d,loading:m,loadingMore:g,fetchingAll:v,error:b,driverMissing:S,rowCount:(0,Y.useMemo)(()=>Ht(c,j),[c,j]),countExactly:de,viewKey:te,sort:T,setSort:U,loadMore:le,fetchAll:ue,startExport:ie,startCellDownload:V,saveChanges:me,reload:he,refreshQuietly:ge,applyFilters:fe}}var Q=n();function Wt(e,t,n,r){let[i,a]=(0,Y.useState)(!1),o=(0,Y.useRef)(!1);return{run:(0,Y.useCallback)(async n=>{if(o.current)return;o.current=!0,a(!0);let r=R.loading(`Exporting ${ut(t,n)}…`);try{let t=await e(n);if(!t){R.dismiss(r);return}at(ft(t.ticket),t.fileName),R.success(`Downloading ${t.fileName}`,{id:r})}catch(e){R.error(`Export failed`,{id:r,description:e.message})}finally{o.current=!1,a(!1)}},[e,t]),busy:i,unavailable:n,advanced:r}}function Gt({exporter:e,labelClassName:t}){return(0,Q.jsxs)(he,{children:[(0,Q.jsx)(me,{asChild:!0,children:(0,Q.jsxs)(`button`,{type:`button`,disabled:!!e.unavailable,"aria-label":`Export`,title:e.unavailable??`Export every row the filters select`,className:K,children:[(0,Q.jsx)(D,{className:`size-4 shrink-0`}),(0,Q.jsx)(`span`,{className:t,children:`Export`}),(0,Q.jsx)(p,{className:`-ml-0.5 size-3 shrink-0`,"aria-hidden":!0})]})}),(0,Q.jsxs)(U,{align:`start`,className:`min-w-56`,children:[e.advanced&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(fe,{onSelect:e.advanced,children:[`Export advanced...`,(0,Q.jsx)(ge,{className:`tracking-normal`,children:G(`Mod+E`)})]}),e.run&&(0,Q.jsx)(pe,{})]}),e.run&&dt.map(t=>(0,Q.jsx)(fe,{disabled:e.busy,onSelect:()=>void e.run?.(t.id),children:t.label},t.id))]})]})}function Kt(e){let t=new Map;for(let n of e){if(n==null||xt(n))continue;let e=_t(n);t.has(e)||t.set(e,n)}return[...t.values()]}function qt(e,t,n){let r=Kt(n);if(!r.length)return null;let i=Ct(t,r),a=Ee(i,t);return!a.ok||a.anyOf.length===0?null:{text:i,group:{column:e,anyOf:a.anyOf}}}function Jt(e,t,n){return n==null||xt(n)?null:Ce(Me,e,Pt(t,n))}function Yt(e){return e.columns.length===0||e.columns.length!==e.refColumns.length?null:e.columns.map((t,n)=>({column:t,ref:e.refColumns[n]}))}function Xt(e){return{out:e.foreignKeys.flatMap(e=>{let t=Yt(e);return t?[{direction:`out`,schema:e.refSchema,table:e.refTable,name:e.name,keyColumns:e.columns,columns:t.map(e=>({detail:e.ref,master:e.column}))}]:[]}),in:e.references.flatMap(e=>{let t=Yt(e);return t?[{direction:`in`,schema:e.schema,table:e.table,name:e.name,keyColumns:e.columns,columns:t.map(e=>({detail:e.column,master:e.ref}))}]:[]})}}function Zt(e){return!!e&&e.out.length+e.in.length>0}function Qt(e){return[e.direction,e.schema??``,e.table,e.name??``,...e.columns.flatMap(e=>[e.detail,e.master])].join(`\0`)}function $t(e,t){let n=t.trim().toLowerCase();if(!n)return e;let r=e=>e.table.toLowerCase().includes(n)||e.keyColumns.join(`, `).toLowerCase().includes(n);return{out:e.out.filter(r),in:e.in.filter(r)}}function en(e){return{table:e.table,detail:e.columns.map(e=>e.detail).join(`, `),master:e.columns.map(e=>e.master).join(`, `)}}function tn(e,t,n){let r=[];for(let{detail:i,master:a}of e.columns){let e=qt(i,n(i),t.map(e=>e[a]));if(!e)return null;r.push(e.group)}return r}function nn({table:e,references:t,open:n,onOpen:r,sheet:i=!1,grow:a=!0,collapsed:o,onCollapsedChange:s}){let[c,l]=(0,Y.useState)(``),u=$t(t,c),f=n?Qt(n):null,p=(e,t)=>t.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:V(`px-3 pt-1.5 pb-0.5 text-[10.5px] font-semibold tracking-[0.05em] whitespace-nowrap text-text-3 uppercase`,i&&`px-4 pt-2.5 pb-1 text-[11px]`),children:[e,` (`,t.length,`)`]}),t.map(e=>{let t=Qt(e),n=t===f;return(0,Q.jsx)(`div`,{role:`listitem`,children:(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>r(e),"aria-pressed":n,title:`Show ${e.table} below the grid, following the selected row`,className:V(`mx-1 flex h-[26px] w-[calc(100%-8px)] items-center gap-[5px] rounded-[5px] pr-1.5 pl-0.5 text-left text-xs whitespace-nowrap text-text-2 select-none can-hover:hover:bg-surface-hover can-hover:hover:text-text`,i&&`mx-1.5 h-11 w-[calc(100%-12px)] gap-2.5 px-2.5 text-sm`,n&&`bg-accent-wash text-text can-hover:hover:bg-accent-wash`),children:[(0,Q.jsx)(d,{className:V(`shrink-0`,i?`size-[18px]`:`size-[15px]`,n?`text-primary`:`text-text-3`),"aria-hidden":!0}),(0,Q.jsxs)(`span`,{className:`min-w-0 truncate`,children:[(0,Q.jsx)(Ye,{text:e.table,query:c}),` `,(0,Q.jsxs)(`span`,{className:`font-mono text-[10.5px] text-text-3`,children:[`(`,e.keyColumns.join(`, `),`)`]})]})]})},t)})]});return(0,Q.jsxs)(`section`,{"aria-label":`References`,className:V(`flex min-h-0 flex-col`,a&&!o&&`flex-1`),children:[(0,Q.jsx)(Qe,{title:`References`,collapsed:o,onToggle:()=>s(!o)}),!o&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`flex shrink-0 items-center pr-1.5 pb-1.5 pl-2`,children:(0,Q.jsx)(Ke,{value:c,onChange:l,placeholder:`Search references`})}),(0,Q.jsxs)(`div`,{role:`list`,"aria-label":`References of ${e}`,className:V(`min-h-0 pb-2.5`,a&&`flex-1 overflow-auto`),children:[p(`References tables`,u.out),p(`Dependent tables`,u.in),u.out.length+u.in.length===0&&(0,Q.jsxs)(Xe,{children:[`No reference matches “`,c.trim(),`”.`]})]})]})]})}var rn=[{mode:`is`,label:`Is one of line`},{mode:`isNot`,label:`Is not one of line`},{mode:`contains`,label:`Contains`},{mode:`begins`,label:`Begins`},{mode:`ends`,label:`Ends`}];function an({onSubmit:e,onClose:t,returnFocus:n}){let[r,i]=(0,Y.useState)(``),[a,o]=(0,Y.useState)(`is`),s=(0,Y.useId)();return(0,Q.jsxs)(pt,{title:`Filter multiple values`,description:`One value per line. OK writes them into the filter box as one filter.`,onOk:()=>{let n=He(a,r);t(),n&&e(n)},onClose:t,returnFocus:n,children:[(0,Q.jsx)(`textarea`,{value:r,onChange:e=>i(e.target.value),"aria-label":`One value per line`,rows:10,autoFocus:!0,spellCheck:!1,autoComplete:`off`,autoCapitalize:`off`,className:V(Ze,`h-auto min-h-[190px] resize-y py-2 font-mono leading-normal md:h-auto md:text-xs`)}),(0,Q.jsx)(`div`,{role:`radiogroup`,"aria-label":`Match`,className:`flex flex-wrap gap-x-[18px] max-md:flex-col md:gap-y-1.5`,children:rn.map(e=>(0,Q.jsx)(et,{name:s,value:e.mode,checked:a===e.mode,onChange:()=>o(e.mode),children:e.label},e.mode))})]})}function on({request:e,onSubmit:t,onClose:n,returnFocus:r}){let i=It(e.kind),[a,o]=(0,Y.useState)({op:e.first,value:``}),[s,c]=(0,Y.useState)({op:e.second,value:``}),[l,u]=(0,Y.useState)(`and`),d=(0,Y.useId)();return(0,Q.jsxs)(pt,{title:`Set filter`,description:`Two conditions joined with And or Or. OK writes them into the filter box.`,onOk:()=>{let r=ht(e.kind,a,l,s);n(),r&&t(r)},onClose:n,returnFocus:r,children:[(0,Q.jsx)(`p`,{className:`text-[13px] text-text-2 md:text-[12.5px]`,children:`Show rows where`}),(0,Q.jsx)(sn,{which:`First`,condition:a,onChange:o,choices:i,autoFocus:!0}),(0,Q.jsxs)(`div`,{role:`radiogroup`,"aria-label":`Join the two conditions`,className:`flex gap-[18px]`,children:[(0,Q.jsx)(et,{name:d,value:`and`,checked:l===`and`,onChange:()=>u(`and`),children:`And`}),(0,Q.jsx)(et,{name:d,value:`or`,checked:l===`or`,onChange:()=>u(`or`),children:`Or`})]}),(0,Q.jsx)(sn,{which:`Second`,condition:s,onChange:c,choices:i})]})}function sn({which:e,condition:t,onChange:n,choices:r,autoFocus:i}){let a=Ft(t.op);return(0,Q.jsxs)(`div`,{className:`flex gap-2 max-md:flex-col`,children:[(0,Q.jsxs)(`span`,{className:`relative flex min-w-0 md:w-[190px] md:shrink-0`,children:[(0,Q.jsx)(`select`,{value:t.op,onChange:e=>n({...t,op:e.target.value}),"aria-label":`${e} condition`,autoFocus:i&&!a,className:V(`h-11 w-full min-w-0 appearance-none rounded-md border border-border bg-surface pr-7 pl-2.5 text-[15px] text-text-primary outline-none focus:border-ring`,`md:h-[30px] md:font-mono md:text-xs`),children:r.map(e=>(0,Q.jsx)(`option`,{value:e.op,children:e.label},e.op))}),(0,Q.jsx)(p,{className:`pointer-events-none absolute top-1/2 right-2 size-3.5 -translate-y-1/2 text-text-subtle`})]}),a&&(0,Q.jsx)($e,{value:t.value,onChange:e=>n({...t,value:e.target.value}),"aria-label":`${e} value`,autoFocus:i,"data-autofocus":i?``:void 0,mono:t.op===`sql`||t.op===`sqlRight`})]})}function cn({open:e,onClose:t,onSubmit:n}){if(!e)return null;let r={onSubmit:t=>n(e.column,t),onClose:t,returnFocus:e.returnFocus},i=e.request;switch(i.dialog){case`condition`:return(0,Q.jsx)(on,{request:i,...r});case`lines`:return(0,Q.jsx)(an,{...r});case`values`:return(0,Q.jsx)(Nt,{column:i.column,kind:i.kind,load:i.load,...r});case`lookup`:return(0,Q.jsx)(Et,{source:i.source,kind:i.kind,...r})}}function ln(e,t,n){return`${ae(e)}:${encodeURIComponent(t)}:${encodeURIComponent(n)}`}function un({target:e,dbType:t,table:n,schema:r,columns:i,tableSchema:a,filters:o,fixed:s}){let c=(0,Y.useCallback)(t=>e?oe(e,t):``,[e]),l=(0,Y.useCallback)(e=>i.find(t=>t.name===e)?.kind??`other`,[i]),u=(0,Y.useCallback)(e=>({dialog:`values`,column:e,kind:l(e),load:t=>{let a=Lt({table:n,schema:r},e,t,o,i);return B.post(c(`/grid/values`),s?.length?{...a,filters:[...s,...a.filters??[]]}:a)}}),[c,l,n,r,o,i,s]),d=(0,Y.useCallback)(n=>{let i=a.find(e=>e.name===n)?.fk;if(!i)return null;let o=ln(e,r,i.table),s=r?`&schema=${encodeURIComponent(r)}`:``;return{dialog:`lookup`,kind:l(n),source:{table:i.table,keyColumn:i.column,columns:()=>B.get(c(`/schema?table=${encodeURIComponent(i.table)}${s}`)).then(e=>Ue(e,t)),rows:e=>B.post(c(`/grid`),wt({table:i.table,schema:r},i.column,e)).then(e=>({rows:Te(e.columns,e.rows).records,hasMore:e.hasMore})),description:ie.getState().dbLookupDescriptions[o]??null,onDescription:e=>ie.getState().setDbLookupDescription(o,e)}}},[c,l,e,t,r,a]);return(0,Y.useMemo)(()=>({chooseValues:u,lookup:d}),[u,d])}var dn=je(Me,[]);function fn(e,t,n=Me){let[r,i]=(0,Y.useState)(n),[a,o]=(0,Y.useState)({}),s=(0,Y.useRef)(null),c=(0,Y.useRef)(null),l=(0,Y.useRef)(t);l.current=t;let u=(0,Y.useRef)(n),d=(0,Y.useCallback)((e,t)=>{let n=pn(e,t);n?o(n):R.error(`Could not filter the rows`,{description:t.message})},[]);return(0,Y.useEffect)(()=>{if(e.length===0)return;let t=je(r,e),n=JSON.stringify(t);s.current??=JSON.stringify(c.current??dn),n!==s.current&&(s.current=n,o({}),l.current(t).then(e=>{e&&s.current===n&&d(t,e)}))},[r,e,d]),{filters:r,setFilters:i,errors:a,opening:(0,Y.useCallback)(e=>(c.current=je(u.current,e),c.current),[]),openFailed:(0,Y.useCallback)(e=>{let t=c.current&&pn(c.current,e);t&&o(t)},[])}}function pn(e,t){if(!(t instanceof z)||t.status===404||t.status===428)return null;let n=e.filters.filter(e=>e.anyOf.some(e=>e.some(e=>e.op===`rawSql`))),r=n.length>0?n:t.status===400||t.status===403?e.filters:[];return r.length>0?Object.fromEntries(r.map(e=>[e.column,t.message])):null}var mn=`detail`;function hn({tab:e,reference:t,masterRows:n,shownIn:r,narrow:i,onClose:a}){let o=(0,Y.useId)(),s=en(t);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{"aria-hidden":!0,className:`h-[5px] shrink-0 border-y border-border bg-panel`}),(0,Q.jsxs)(`section`,{"aria-labelledby":o,className:`flex min-h-[150px] shrink-0 grow-0 basis-[42%] flex-col bg-panel-2 max-md:basis-[45%]`,children:[(0,Q.jsxs)(`div`,{className:`flex h-[30px] shrink-0 items-center gap-1.5 border-b border-border-soft bg-panel px-2.5 text-xs text-text-2 max-md:h-11 max-md:text-[13px]`,children:[(0,Q.jsx)(j,{className:`size-3.5 shrink-0 text-info`,"aria-hidden":!0}),(0,Q.jsxs)(`h3`,{id:o,className:`min-w-0 truncate font-normal`,children:[(0,Q.jsx)(`b`,{className:`font-semibold text-text`,children:s.table}),` [`,s.detail,`] = master [`,s.master,`]`,n.length===0&&(0,Q.jsx)(`span`,{className:`text-text-3`,children:` · select a row in the grid above`})]}),(0,Q.jsx)(`span`,{className:`flex-1`}),(0,Q.jsx)(`button`,{type:`button`,onClick:a,"aria-label":`Close ${s.table}`,className:V(it,`shrink-0 max-md:min-w-11`),children:`Close`})]}),(0,Q.jsx)(`div`,{className:`relative min-h-0 flex-1`,children:(0,Q.jsx)(_n,{tab:e,reference:t,masterRows:n,shownIn:r,narrow:i},Qt(t))})]})]})}var gn={filters:[],anyColumn:[]};function _n({tab:e,reference:t,masterRows:n,shownIn:r,narrow:i}){let a=Ut(e.target),o=le(),s=(0,Y.useRef)(null),c=t.schema??``,l=c?`&schema=${encodeURIComponent(c)}`:``,u=st(e.target,`/schema?table=${encodeURIComponent(t.table)}${l}`,r),d=a.schema.length?a.schema:u.data??[],f=(0,Y.useMemo)(()=>Ue(d,e.dbType),[d,e.dbType]),p=(0,Y.useMemo)(()=>f.length?tn(t,n,e=>f.find(t=>t.name===e)?.kind??`other`):null,[t,n,f]),m=p?JSON.stringify(p):null,h=(0,Y.useRef)(p);h.current=p;let g=(0,Y.useRef)(gn),_=(0,Y.useRef)(!1),[v,y]=(0,Y.useState)(!1),b=(0,Y.useRef)(0),x=(0,Y.useCallback)(async e=>{let n=g.current,r={filters:[...e,...n.filters],anyColumn:n.anyColumn},i=++b.current,o;return _.current?o=await a.applyFilters(r):(_.current=!0,o=await a.selectTable(t.table,c,()=>r)),i===b.current&&y(o!==null),o},[a.applyFilters,a.selectTable,t.table,c]),S=(0,Y.useRef)(!1);S.current=a.tableData!==null,(0,Y.useEffect)(()=>{if(!m)return;let e=S.current;x(JSON.parse(m)).then(n=>{n&&e&&R.error(`Could not read ${t.table}`,{description:n.message})})},[m]);let{filters:C,setFilters:w,errors:T}=fn(f,(0,Y.useCallback)(e=>{g.current=e;let t=h.current;return t?x(t):Promise.resolve(null)},[x])),[ee,E]=(0,Y.useState)(null),D=un({target:e.target,dbType:e.dbType,table:t.table,schema:c,columns:f,tableSchema:d,filters:C,fixed:p??void 0}),O=(0,Y.useMemo)(()=>({filters:C,columns:f,onChange:w,errors:T,onDialog:(e,t,n)=>E({column:e,request:t,returnFocus:n}),onChooseValues:(e,t)=>E({column:e,request:D.chooseValues(e),returnFocus:t}),onLookup:(e,t)=>{let n=D.lookup(e);n&&E({column:e,request:n,returnFocus:t})}}),[C,f,T,w,D]),k=(0,Y.useCallback)(e=>{let t=D.lookup(e);return t?.dialog===`lookup`?{source:t.source,kind:t.kind}:null},[D]),A=(0,Y.useCallback)((e,t)=>{w(n=>e===null?Ie(n,t):Ce(n,e,t))},[w]),[j,M]=(0,Y.useState)({}),N=(0,Y.useCallback)(e=>{a.setSort(e)},[a.setSort]),P=(0,Y.useCallback)(n=>{e.place&&Be(e.place,{schema:t.schema,name:n})},[e.place,t.schema]),te=(0,Y.useCallback)((n,r)=>{let i=d.find(e=>e.name===n)?.fk,a=f.find(e=>e.name===n)?.kind??`other`,o=i&&Jt(i.column,a,r[n]);i&&o&&e.place&&ze(e.place,{schema:t.schema,name:i.table},o)},[d,f,e.place,t.schema]),ne=t=>{let n=Ot(t.currentTarget,t.target),r=n&&vt(t.nativeEvent,n);if(!(!r||r===`toggle-panel`||r!==`swallow`&&Tt(r)))switch(t.preventDefault(),t.stopPropagation(),r){case`refresh`:p&&a.reload();break;case`refresh-structure`:u.reload(),p&&a.reload({structure:!0});break;case`save`:e.readonly||s.current?.save();break;case`new-row`:p&&s.current?.newRow();break;case`delete-rows`:s.current?.deleteSelectedRows();break;case`undo`:s.current?.undo();break;case`redo`:s.current?.redo();break;case`clear-filters`:w(Me);break;default:break}},F=a.tableData;if(u.error&&!d.length)return(0,Q.jsx)(ct,{error:u.error});if(a.error&&!F)return(0,Q.jsx)(ct,{error:a.error});if(!d.length)return(0,Q.jsx)(ct,{loading:!0});let I=!p,L=e.place&&!I&&(F?.sql||e.dbType)?()=>{e.place&&Re(e.place,F?.sql||nt({schema:t.schema,name:t.table},e.dbType))}:void 0;return(0,Q.jsxs)(`div`,{className:`absolute inset-0`,onKeyDown:ne,children:[(0,Q.jsx)(Mt,{ref:s,columns:F?.columns??d.map(e=>e.name),rows:I||v||!F?[]:F.rows,schema:d,loading:!I&&(a.loading||!F),rowKey:F?.rowKey,onSaveChanges:t=>a.saveChanges(t,e.place),readOnly:e.readonly,editOnly:I,sort:a.sort,onSortChange:N,viewKey:I?`waiting`:a.viewKey,hasMore:!I&&!!F?.hasMore,onLoadMore:a.loadMore,loadingMore:a.loadingMore,fetchingAll:a.fetchingAll,columnWidths:j,onColumnWidthsChange:M,tabId:r,tabSlot:mn,rowsLabel:I?`Rows: 0`:v?void 0:a.rowCount?.text,onResetFilter:!I&&Se(C)?()=>w(Me):void 0,onOpenQuery:L,onOpenTable:e.place?P:void 0,place:e.place??void 0,selectedTable:t.table,selectedSchema:c,connectionName:e.name,dialect:e.dialect,filtering:o?void 0:O,lookupFor:e.target?k:void 0,onOpenReference:e.place?te:void 0,startCellDownload:a.startCellDownload,floatCellData:i}),(0,Q.jsx)(cn,{open:ee,onClose:()=>E(null),onSubmit:A})]})}function vn({filtering:e,schema:t,nameFilter:n,added:r,onRemoveAdded:i}){let[a,o]=(0,Y.useState)(!1),{filters:s,columns:c,onChange:l}=e,u=new Map(t.map(e=>[e.name,e])),d=new Set(r),f=s.multi;return(0,Q.jsxs)(`section`,{"aria-label":`Filters`,className:`flex min-h-0 flex-col`,children:[(0,Q.jsx)(Qe,{title:`Filters`,collapsed:a,onToggle:()=>o(e=>!e)}),!a&&(0,Q.jsxs)(`div`,{className:`grid min-h-0 content-start gap-2 overflow-auto px-2 pb-2.5`,children:[n&&(0,Q.jsx)(bn,{...n}),(0,Q.jsx)(yn,{title:(0,Q.jsx)(`span`,{className:`min-w-0 truncate text-[11.5px] text-text-3`,children:`Multi column filter`}),filter:f,name:`this filter`,onSwitch:e=>l(t=>W(t,null,!e)),onRemove:()=>l(e=>Ie(e,``)),children:(0,Q.jsx)(yt,{size:`panel`,value:f?.text??``,off:f?.off,read:e=>ke({text:e},c),onCommit:e=>l(t=>Ie(t,e)),label:`Multi column filter`,funnel:e.onDialog&&{kind:`multi`,label:`Filter options: all columns`,onDialog:(t,n)=>e.onDialog(null,t,n)}})}),c.filter(e=>s.columns[e.name]||d.has(e.name)).map(t=>{let n=u.get(t.name),r=n?.pk?C:n?.fk?j:null,a=()=>{l(e=>Ce(e,t.name,``)),d.has(t.name)&&i?.(t.name)};return(0,Q.jsx)(yn,{title:(0,Q.jsxs)(Q.Fragment,{children:[r&&(0,Q.jsx)(r,{className:V(`size-3.5 shrink-0`,n?.pk?`text-warning`:`text-info`),"aria-hidden":!0}),(0,Q.jsx)(`span`,{className:V(`min-w-0 truncate text-[11.5px]`,n&&!n.nullable?`font-semibold text-text`:`text-text-3`),children:t.name})]}),filter:s.columns[t.name],name:`the ${t.name} filter`,onSwitch:e=>l(n=>W(n,t.name,!e)),onRemove:a,removable:d.has(t.name),children:(0,Q.jsx)(yt,{...kt(e,t.name,t.kind,n?.fk?.table),size:`panel`})},t.name)})]})]})}function yn({title:e,filter:t,name:n,onSwitch:r,onRemove:i,removable:a,children:o}){return(0,Q.jsxs)(`div`,{className:`grid gap-[3px]`,children:[(0,Q.jsxs)(`div`,{className:`flex h-5 min-w-0 items-center gap-[5px]`,children:[e,t&&(0,Q.jsx)(`label`,{className:`ml-auto grid size-5 shrink-0 cursor-pointer place-items-center`,title:t.off?`Enable this filter`:`Disable this filter`,children:(0,Q.jsx)(`input`,{type:`checkbox`,checked:!t.off,onChange:e=>r(e.target.checked),"aria-label":`Apply ${n}`,className:`size-[13px] cursor-pointer accent-primary`})}),(t||a)&&(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(`button`,{type:`button`,onClick:i,"aria-label":`Remove ${n}`,title:`Remove`,className:V(`grid size-5 shrink-0 place-items-center rounded text-text-3 can-hover:hover:bg-surface-hover can-hover:hover:text-text`,!t&&`ml-auto`),children:(0,Q.jsx)(S,{className:`size-3`})})})]}),o]})}function bn({text:e,onChange:t}){return(0,Q.jsxs)(`div`,{className:`grid gap-[3px]`,children:[(0,Q.jsx)(`div`,{className:`flex h-5 min-w-0 items-center gap-[5px]`,children:(0,Q.jsx)(`span`,{className:`min-w-0 truncate text-[11.5px] text-text-3`,children:`Column name filter`})}),(0,Q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-px`,children:[(0,Q.jsx)(`input`,{value:e,onChange:e=>t(e.target.value),onKeyDown:n=>{n.key!==`Escape`||!e||(n.preventDefault(),n.stopPropagation(),t(``))},"aria-label":`Column name filter`,spellCheck:!1,autoComplete:`off`,autoCapitalize:`off`,className:`h-[26px] w-full min-w-0 rounded-[5px] border border-border-soft bg-input px-1.5 text-[11.5px] text-text outline-none placeholder:text-text-3/70 focus:border-primary`}),e&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>t(``),"aria-label":`Clear the column name filter`,title:`Clear`,className:`grid size-5 shrink-0 place-items-center rounded text-text-3 can-hover:hover:bg-surface-hover can-hover:hover:text-text`,children:(0,Q.jsx)(S,{className:`size-3`})})]})]})}var xn={ok:`border-success/45 bg-success/10 text-success`,off:`border-dashed border-border text-text-3`,bad:`border-error/50 bg-error/10 text-error`},Sn=e=>e.refused?`, refused`:e.state===`bad`?`, not understood`:e.state===`off`?`, switched off`:``,Cn=e=>e.map(e=>`${e.column} ${e.dir===`ASC`?`↑`:`↓`}`).join(`, `),wn=`relative inline-flex h-8 shrink-0 items-center gap-1 rounded-full border border-border bg-panel-2 px-2.5 text-[12.5px] text-text-2 select-none before:absolute before:inset-x-0 before:-inset-y-[7px]`;function Tn({filtering:e,onOpen:t,sort:n,hidden:r}){let{filters:i,columns:a,errors:o,onChange:s}=e,c=a.flatMap(e=>{let t=i.columns[e.name],{state:n}=We(t,e.kind);if(!t||n===`empty`)return[];let r=n===`ok`?o?.[e.name]:void 0;return[{column:e.name,filter:t,state:r?`bad`:n,refused:r}]}),l=i.multi,u=ke(l,a).state;l&&u!==`empty`&&c.push({column:null,filter:l,state:u});let d=n?.length?n:null;return c.length===0&&!d&&!r?.count?null:(0,Q.jsxs)(`div`,{role:`group`,"aria-label":`Filters`,className:`flex shrink-0 gap-3 overflow-x-auto border-b border-border-soft px-3 py-1.5 scrollbar-none`,children:[r&&r.count>0&&(0,Q.jsxs)(`button`,{type:`button`,onClick:r.onOpen,className:wn,children:[(0,Q.jsx)(A,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),(0,Q.jsx)(`b`,{className:`font-semibold`,children:`Columns`}),` · `,r.count,` hidden`]}),c.map(e=>{let n=e.column??`any column`,r=e.state===`bad`?te:k;return(0,Q.jsxs)(`span`,{className:V(`inline-flex h-8 shrink-0 items-stretch rounded-full border text-[12.5px] select-none`,xn[e.state]),children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>t(e.column),"aria-label":`${n}: ${e.filter.text}${Sn(e)}`,className:`relative flex min-w-0 items-center gap-1 rounded-l-full pr-1 pl-2.5 before:absolute before:inset-x-0 before:-inset-y-[7px]`,children:[(0,Q.jsx)(r,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),(0,Q.jsx)(`b`,{className:`shrink-0 font-semibold`,children:n}),(0,Q.jsx)(`span`,{className:V(`max-w-[40vw] truncate font-mono text-xs`,e.state===`off`&&`line-through`),children:e.filter.text})]}),(0,Q.jsx)(`button`,{type:`button`,title:`Remove`,"aria-label":e.column===null?`Remove the Multi column filter`:`Remove the ${e.column} filter`,onClick:()=>s(t=>e.column===null?Ie(t,``):Ce(t,e.column,``)),className:`relative grid w-8 shrink-0 place-items-center rounded-r-full before:absolute before:-inset-y-[7px] before:left-0 before:-right-3`,children:(0,Q.jsx)(S,{className:`size-3.5`,"aria-hidden":!0})})]},e.column??`\0multi`)}),d&&(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>t(d[0].column),"aria-label":`Sorted by ${Cn(d)}`,className:wn,children:[(0,Q.jsx)(I,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),(0,Q.jsx)(`span`,{className:`max-w-[50vw] truncate`,children:Cn(d)})]})]})}var En=e=>e.sort.length===0?S:e.dir===`DESC`?N:ee,Dn={empty:``,ok:`border-success/55 focus:border-success/55 text-success`,off:`border-dashed text-text-3 line-through`,bad:`border-error/70 focus:border-error/70 text-error`},On=()=>{};function kn({filtering:e,column:t,schema:n,menu:r,onClose:i}){let a=(0,Y.useId)(),o=t===null?null:e.columns.find(e=>e.name===t)?.kind??`other`,c=t===null?e.filters.multi:e.filters.columns[t],[l,u]=(0,Y.useState)(c?.text??``),d=t===null?void 0:n.find(e=>e.name===t),f=o===null?ke({text:l},e.columns):We({text:l},o),p=l===(c?.text??``),m=p&&f.state===`ok`&&t!==null?e.errors?.[t]:void 0,h=m?`bad`:p&&f.state===`ok`&&c?.off?`off`:f.state,_=m?`Refused: ${m}`:f.state===`bad`?`${f.error.message} — it would not be applied`:h===`off`?`Switched off · Apply switches it on`:h===`ok`?`Understood · Apply filters the rows`:t===null?`No filter on any column`:`No filter on this column`,v=n=>{i(),e.onChange(e=>t===null?Ie(e,n):Ce(e,t,n))},y=()=>{f.state!==`bad`&&v(l)},b=e=>{e.key!==`Enter`||e.shiftKey||e.ctrlKey||e.metaKey||e.altKey||e.nativeEvent.isComposing||(e.preventDefault(),f.state===`bad`&&f.error.end>f.error.start&&e.currentTarget.setSelectionRange(f.error.start,f.error.end),y())},x=e=>{let t=e.clipboardData.getData(`text`);if(!t.includes(`
2
- `))return;e.preventDefault();let n=He(`is`,t);n&&u(n)},w=e=>{i(),e()},T=t===null||o===null?null:d?.fk&&e.onLookup?{icon:g,label:`Lookup from ${d.fk.table}`,open:()=>e.onLookup(t,On)}:e.onChooseValues&&Dt(o)?{icon:s,label:`Choose value from ${t}`,open:()=>e.onChooseValues(t,On)}:null,ee=gt(o===null?`multi`:Fe(o)).filter(e=>e!==`separator`&&e.label!==`Clear Filter`).filter(t=>`text`in t.action||!!e.onDialog),D=t!==null&&r?St(t,r.sort?.sort??[],r.onOpenTable?d?.fk?.table:null):[],O=r?.sort?D.filter(e=>e.kind===`sort`):[],A=D.find(e=>e.kind===`open-table`),M=t===null?k:d?.pk?C:d?.fk?j:ne;return(0,Q.jsx)(_e,{open:!0,onClose:i,className:`popover-solid`,children:(0,Q.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":a,onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),i())},className:`flex max-h-[calc(var(--sheet-vh,100dvh)*0.85)] flex-col`,children:[(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2.5 pr-1.5 pb-1 pl-4`,children:[(0,Q.jsx)(M,{className:V(`size-5 shrink-0`,d?.pk?`text-warning`:d?.fk?`text-info`:`text-text-2`),"aria-hidden":!0}),(0,Q.jsxs)(`h2`,{id:a,className:`min-w-0 flex-1 text-[15px] font-semibold`,children:[(0,Q.jsx)(`span`,{className:`block truncate`,children:t??`Multi column filter`}),(0,Q.jsx)(`small`,{className:`block truncate text-xs font-normal text-text-3`,children:d?`${d.type}${d.nullable?``:` · NOT NULL`}${d.fk?` · → ${d.fk.table}.${d.fk.column}`:``}`:t===null?`Every column of the table reads it`:null})]}),(0,Q.jsx)(`button`,{type:`button`,onClick:i,"aria-label":`Close`,className:`grid size-11 shrink-0 place-items-center rounded-lg text-text-2 active:bg-surface-hover`,children:(0,Q.jsx)(S,{className:`size-5`})})]}),(0,Q.jsxs)(`div`,{className:`min-h-0 overflow-y-auto pb-3`,children:[(0,Q.jsx)(An,{children:`Filter`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 px-4`,children:[(0,Q.jsx)(`input`,{value:l,onChange:e=>u(e.target.value),onKeyDown:b,onPaste:x,placeholder:`Filter`,"aria-label":t===null?`Multi column filter`:`Filter ${t}`,"aria-invalid":h===`bad`,"aria-describedby":`${a}-status`,spellCheck:!1,autoComplete:`off`,autoCapitalize:`off`,className:V(Ze,`font-mono`,Dn[h])}),T&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>w(T.open),"aria-label":T.label,title:T.label,className:`grid size-11 shrink-0 place-items-center rounded-md border border-border text-text-2 active:bg-surface-hover`,children:(0,Q.jsx)(T.icon,{className:`size-5`})})]}),(0,Q.jsx)(`p`,{id:`${a}-status`,"aria-live":`polite`,className:V(`mt-1.5 px-4 text-[12.5px]`,h===`bad`?`text-error`:h===`ok`?`text-success`:`text-text-3`),children:_}),O.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(An,{children:`Sort`}),O.map(e=>(0,Q.jsx)(jn,{icon:En(e),label:e.label,checked:e.checked,onSelect:()=>w(()=>r.sort.onChange(e.sort))},e.label))]}),t!==null&&r&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(An,{children:`Column`}),(0,Q.jsx)(jn,{icon:F,label:`Copy column name`,onSelect:()=>w(()=>r.onCopyName(t))}),r.onHide&&(0,Q.jsx)(jn,{icon:re,label:`Hide column`,onSelect:()=>w(()=>r.onHide(t))}),A&&(0,Q.jsx)(jn,{icon:E,label:`Open ${A.table}`,onSelect:()=>w(()=>r.onOpenTable(A.table))})]}),(0,Q.jsx)(An,{children:`Filter options`}),ee.map(n=>(0,Q.jsx)(jn,{label:n.label,onSelect:()=>{let r=n.action;`text`in r?v(r.text):w(()=>e.onDialog(t,r.open,On))}},n.label))]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 gap-2 border-t border-border-soft px-3 pt-2.5`,children:[(0,Q.jsx)(de,{type:`button`,variant:`outline`,onClick:()=>v(``),className:`h-11 flex-1 text-sm`,children:`Clear Filter`}),(0,Q.jsx)(de,{type:`button`,onClick:y,disabled:f.state===`bad`,className:`h-11 flex-[2] text-sm`,children:`Apply`})]})]})})}function An({children:e}){return(0,Q.jsx)(`h3`,{className:`mx-4 mt-3.5 mb-1.5 text-[11px] font-semibold tracking-[0.06em] text-text-3 uppercase`,children:e})}function jn({icon:e,label:t,checked:n,onSelect:i}){return(0,Q.jsxs)(`button`,{type:`button`,onClick:i,"aria-pressed":n===void 0?void 0:n,className:`flex min-h-[52px] w-full items-center gap-3 border-b border-border-soft px-4 text-left text-[15px] select-none active:bg-surface-hover`,children:[e?(0,Q.jsx)(e,{className:`size-5 shrink-0 text-text-2`,"aria-hidden":!0}):(0,Q.jsx)(`span`,{className:`size-5 shrink-0`,"aria-hidden":!0}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1`,children:t}),n&&(0,Q.jsx)(r,{className:`size-5 shrink-0 text-primary`,"aria-hidden":!0})]})}function Mn(e,t,n){return`${e} · ${t-n} of ${t} columns shown`}function Nn({table:e,schema:t,hidden:n,onHiddenChange:r,onJump:i,onOpenTable:a,filtering:o,onOpenFilter:s,references:c,focusSearch:l,onClose:u}){let d=(0,Y.useId)(),[f,p]=(0,Y.useState)(!1),[m,h]=(0,Y.useState)(!1),[g,_]=(0,Y.useState)(!1),v=t.filter(e=>n.has(e.name)).length,y=e=>{u(),e()};return(0,Q.jsx)(_e,{open:!0,onClose:u,className:`popover-solid`,children:(0,Q.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":d,className:`flex max-h-[calc(var(--sheet-vh,100dvh)*0.85)] flex-col`,children:[(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2.5 pr-1.5 pb-1 pl-4`,children:[(0,Q.jsxs)(`h2`,{id:d,className:`min-w-0 flex-1 text-[15px] font-semibold`,children:[(0,Q.jsx)(`span`,{className:`block truncate`,children:`Columns and filters`}),(0,Q.jsx)(`small`,{className:`block truncate text-xs font-normal text-text-3`,children:Mn(e,t.length,v)})]}),(0,Q.jsx)(`button`,{type:`button`,onClick:u,"aria-label":`Close`,className:`grid size-11 shrink-0 place-items-center rounded-lg text-text-2 active:bg-surface-hover`,children:(0,Q.jsx)(S,{className:`size-5`})})]}),(0,Q.jsxs)(`div`,{className:`min-h-0 overflow-y-auto pb-2`,children:[(0,Q.jsx)(jt,{schema:t,hidden:n,onHiddenChange:r,onJump:e=>y(()=>i(e)),onOpenTable:a&&(e=>y(()=>a(e))),sheet:!0,grow:!1,collapsed:f,onCollapsedChange:p,focusSearch:l}),o&&(0,Q.jsxs)(`section`,{"aria-label":`Filters`,className:`border-t border-border-soft`,children:[(0,Q.jsx)(Qe,{title:`Filters`,collapsed:m,onToggle:()=>h(e=>!e)}),!m&&(0,Q.jsx)(Fn,{filtering:o,schema:t,onOpen:e=>y(()=>s(e))})]}),c&&(0,Q.jsx)(`div`,{className:`border-t border-border-soft`,children:(0,Q.jsx)(nn,{table:e,references:c.refs,open:c.open,onOpen:e=>y(()=>c.onOpen(e)),sheet:!0,grow:!1,collapsed:g,onCollapsedChange:_})})]}),(0,Q.jsx)(`div`,{className:`flex shrink-0 border-t border-border-soft px-3 pt-2.5`,children:(0,Q.jsx)(de,{type:`button`,onClick:u,className:`h-11 flex-1 text-sm`,children:`Done`})})]})})}var Pn={empty:`text-text-3`,ok:`text-success`,off:`text-text-3 line-through`,bad:`text-error`};function Fn({filtering:e,schema:t,onOpen:n}){let{filters:r,columns:i,onChange:a,errors:o}=e,s=new Map(t.map(e=>[e.name,e]));return(0,Q.jsx)(`div`,{className:`pb-1`,children:[{column:null,filter:r.multi,state:ke(r.multi,i).state},...i.flatMap(e=>{let t=r.columns[e.name];if(!t)return[];let{state:n}=We(t,e.kind);return[{column:e.name,filter:t,state:n===`ok`&&o?.[e.name]?`bad`:n}]})].map(e=>{let t=e.column===null?void 0:s.get(e.column),r=e.state===`bad`?te:e.column===null?k:t?.pk?C:t?.fk?j:k,i=e.column??`Multi column filter`,o=e.filter?.text.trim()?e.filter.text:null,c=e.column===null?`the Multi column filter`:`the ${e.column} filter`;return(0,Q.jsxs)(`div`,{className:`mx-1.5 flex min-h-11 items-center rounded-lg select-none`,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>n(e.column),"aria-label":o?`${i}: ${o}`:`${i}: none — tap to add one`,className:`flex min-h-11 min-w-0 flex-1 items-center gap-2.5 rounded-lg px-2.5 text-left text-sm active:bg-surface-hover`,children:[(0,Q.jsx)(r,{className:V(`size-[18px] shrink-0`,e.state===`bad`?`text-error`:t?.pk?`text-warning`:t?.fk?`text-info`:`text-text-3`),"aria-hidden":!0}),(0,Q.jsx)(`span`,{className:V(`shrink-0`,e.column===null&&!o?`text-text-3`:`font-semibold`),children:i}),(0,Q.jsx)(`span`,{className:V(`min-w-0 truncate font-mono text-xs`,Pn[e.state]),children:o??`Tap to add`})]}),e.filter&&o&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`label`,{className:`grid size-11 shrink-0 cursor-pointer place-items-center`,title:e.filter.off?`Enable this filter`:`Disable this filter`,children:(0,Q.jsx)(`input`,{type:`checkbox`,checked:!e.filter.off,onChange:t=>a(n=>W(n,e.column,!t.target.checked)),"aria-label":`Apply ${c}`,className:`size-5 cursor-pointer accent-primary`})}),(0,Q.jsx)(`button`,{type:`button`,"aria-label":`Remove ${c}`,title:`Remove`,onClick:()=>a(t=>e.column===null?Ie(t,``):Ce(t,e.column,``)),className:`grid size-11 shrink-0 place-items-center rounded-lg text-text-3 active:bg-surface-hover`,children:(0,Q.jsx)(S,{className:`size-4`})})]})]},e.column??`\0multi`)})})}var In=`ppm-db-fetch-all-dont-ask`;function Ln(){try{return localStorage.getItem(In)!==`1`}catch{return!0}}function Rn(){try{localStorage.setItem(In,`1`)}catch{}}function zn({onFetch:e,onClose:t}){let[n,r]=(0,Y.useState)(!1),i=(0,Y.useId)();return(0,Q.jsxs)(pt,{title:`Fetch All Rows`,okLabel:`Fetch All`,description:`Load every remaining row of the table into the grid`,onOk:()=>{n&&Rn(),t(),e()},onClose:t,children:[(0,Q.jsx)(`p`,{className:`text-sm text-text-2`,children:`This will load all remaining rows into memory. For large tables, this may consume a significant amount of memory and could affect application performance.`}),(0,Q.jsxs)(`label`,{htmlFor:i,className:`flex min-h-11 cursor-pointer items-center gap-2.5 text-sm select-none md:min-h-0`,children:[(0,Q.jsx)(`input`,{id:i,type:`checkbox`,checked:n,onChange:e=>r(e.target.checked),className:`size-4 accent-primary max-md:size-5`}),(0,Q.jsx)(`b`,{className:`font-semibold`,children:`Don't ask again`})]})]})}var Bn=[1,5,10,15,30,60],Vn=10;function Hn(e,t){return[{label:`Refresh with structure`,shortcut:G(`Mod+F5`),onSelect:e},t.running?{label:`Stop auto refresh`,shortcut:G(`Mod+Shift+R`),onSelect:t.stop}:{label:`Start auto refresh`,shortcut:G(`Mod+Shift+R`),onSelect:()=>t.start()},{label:`Refresh every 1 second`,onSelect:()=>t.start(1)},...Bn.slice(1).map(e=>({label:`...${e} seconds`,onSelect:()=>t.start(e)}))]}var Un=e=>e.running?`Refresh (every ${e.every}s)`:`Refresh`;function Wn(e,t){let[n,r]=(0,Y.useState)(!1),[i,a]=(0,Y.useState)(Vn),o=(0,Y.useRef)(e);o.current=e;let s=(0,Y.useRef)(t);return s.current=t,(0,Y.useEffect)(()=>{if(!n)return;let e=!1,t=!1,a=setInterval(()=>{e||document.hidden||!s.current()||(e=!0,o.current().then(n=>{e=!1,!(!n||t)&&(r(!1),R.error(`Auto refresh stopped`,{description:n.message}))}))},i*1e3);return()=>{t=!0,clearInterval(a)}},[n,i]),{running:n,every:i,start:(0,Y.useCallback)(e=>{e!==void 0&&a(e),r(!0)},[]),stop:(0,Y.useCallback)(()=>r(!1),[])}}function Gn({onRefresh:e,onRefreshWithStructure:t,auto:n,busy:r,disabled:i,form:a}){let o=Un(n);return(0,Q.jsxs)(`span`,{className:`flex shrink-0 items-center`,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:e,disabled:i,"aria-label":o,title:`${a?`Data form`:`Data grid`}: Refresh (F5 | ${G(`Mod+R`)})`,className:V(K,`rounded-r-none pr-1`,r&&`[&>svg]:animate-spin`),children:[(0,Q.jsx)(O,{className:`size-4 shrink-0`}),(0,Q.jsx)(`span`,{className:`@max-[900px]:hidden`,children:o})]}),(0,Q.jsxs)(he,{children:[(0,Q.jsx)(me,{asChild:!0,children:(0,Q.jsx)(`button`,{type:`button`,disabled:i,"aria-label":`Refresh options`,title:`Refresh options`,className:V(K,`rounded-l-none px-0.5`),children:(0,Q.jsx)(p,{className:`size-3 shrink-0`})})}),(0,Q.jsx)(U,{align:`start`,className:`min-w-60`,children:Hn(t,n).map(e=>(0,Q.jsxs)(fe,{onSelect:e.onSelect,children:[e.label,e.shortcut&&(0,Q.jsx)(ge,{className:`tracking-normal`,children:e.shortcut})]},e.label))})]})]})}function Kn(e,t){let n=e?.pending??0;return{count:n,disabled:n===0||t,title:t?`The connection is read-only`:`Table data: Save (${G(`Mod+S`)})`}}function qn(e){let t=!!e.form?.on,n=!!e.edit?.canChangeRows&&!e.readonly&&!t;return{revert:!!e.edit&&(e.edit.pending>0||e.edit.newRows>0),newRow:n,deleteRows:n&&e.edit.selectedRows>0,fetchAll:e.hasMore&&!t}}var Jn=[{to:`first`,label:`First`,icon:P,combo:`Mod+Home`},{to:`previous`,label:`Previous`,icon:c,combo:`Mod+↑`},{to:`next`,label:`Next`,icon:u,combo:`Mod+↓`},{to:`last`,label:`Last`,icon:T,combo:`Mod+End`}];function Yn(e,t){let n=e?.form;return n?t===`first`||t===`previous`?n.atFirst:n.atLast:!0}var Xn=e=>e>9?`9+`:String(e),Zn=({n:e,className:t})=>(0,Q.jsx)(`span`,{"aria-hidden":!0,className:V(`min-w-4 rounded-full bg-warning/20 px-1 text-center font-mono text-[10.5px] leading-4 font-semibold text-warning`,t),children:Xn(e)}),$=`@max-[900px]:hidden`,Qn=`@max-[1200px]:hidden`;function $n({actions:e}){let t=Kn(e.edit,e.readonly),n=qn(e);return(0,Q.jsxs)(q,{label:e.table,children:[(0,Q.jsx)(J,{icon:i,label:`Structure`,title:`Open the structure of ${e.table} in its own tab`,onClick:e.onOpenStructure,opensTab:!0,disabled:!e.canOpenTabs,labelClassName:$,arrowClassName:Qn}),(0,Q.jsx)(J,{icon:b,label:`SQL`,title:`Open the SQL of ${e.table} in its own tab`,onClick:e.onOpenSql,opensTab:!0,disabled:!e.canOpenTabs,labelClassName:$,arrowClassName:Qn}),(0,Q.jsx)(Gn,{onRefresh:e.onRefresh,onRefreshWithStructure:e.onRefreshWithStructure,auto:e.auto,busy:e.busy,disabled:e.idle,form:e.form?.on}),e.form?.on&&Jn.map(({to:t,label:n,icon:r,combo:i})=>(0,Q.jsx)(J,{icon:r,label:n,title:`Data form: ${n} (${G(i)})`,onClick:()=>e.form.onNavigate(t),disabled:Yn(e.edit,t),labelClassName:$},t)),(0,Q.jsxs)(`button`,{type:`button`,onClick:e.onSave,disabled:t.disabled,title:t.title,"aria-label":t.count?`Save ${t.count} changed ${t.count===1?`row`:`rows`}`:`Save`,className:V(K,`disabled:pointer-events-auto disabled:cursor-default`),children:[(0,Q.jsx)(L,{className:`size-4 shrink-0`}),(0,Q.jsx)(`span`,{className:$,children:`Save`}),t.count>0&&(0,Q.jsx)(Zn,{n:t.count})]}),n.revert&&(0,Q.jsx)(J,{icon:v,label:`Revert all`,title:`Data grid: Revert all`,onClick:e.onRevert,labelClassName:$}),n.newRow&&(0,Q.jsx)(J,{icon:w,label:`New row`,title:`Data grid: New row (Insert)`,onClick:e.onNewRow,labelClassName:$}),n.deleteRows&&(0,Q.jsx)(J,{icon:l,label:`Delete row(s)`,title:`Data grid: Delete row(s) (${G(`Mod+Delete`)})`,onClick:e.onDeleteRows,labelClassName:$}),e.form&&(e.form.on?(0,Q.jsx)(J,{icon:h,label:`Switch to table`,title:`Data grid: Switch to table (F4)`,onClick:e.form.onToggle,labelClassName:$}):(0,Q.jsx)(J,{icon:_,label:`Switch to form`,title:`Data grid: Switch to form (F4)`,onClick:e.form.onToggle,disabled:e.idle,labelClassName:$})),e.export&&(0,Q.jsx)(Gt,{exporter:e.export,labelClassName:Qn}),n.fetchAll&&(0,Q.jsx)(J,{icon:x,label:`Fetch all`,title:`Data grid: Fetch all`,onClick:e.onFetchAll,labelClassName:Qn}),e.panel&&(0,Q.jsxs)(`button`,{type:`button`,onClick:e.panel.onToggle,"aria-pressed":e.panel.open,title:`View columns (${G(`Mod+L`)})`,"aria-label":`View columns`,className:V(K,e.panel.open&&`bg-accent-wash text-primary can-hover:hover:bg-accent-wash can-hover:hover:text-primary`),children:[(0,Q.jsx)(A,{className:`size-4 shrink-0`}),(0,Q.jsx)(`span`,{className:Qn,children:`View columns`})]}),e.cellData&&!e.form?.on&&(0,Q.jsxs)(`button`,{type:`button`,onClick:e.cellData.onToggle,"aria-pressed":e.cellData.open,title:`Data grid: Toggle cell data view`,"aria-label":`Cell Data`,className:V(K,e.cellData.open&&`bg-accent-wash text-primary can-hover:hover:bg-accent-wash can-hover:hover:text-primary`),children:[(0,Q.jsx)(m,{className:`size-4 shrink-0`}),(0,Q.jsx)(`span`,{className:Qn,children:`Cell Data`})]}),e.onToggleReadonly&&(0,Q.jsx)(er,{readonly:e.readonly,onToggle:e.onToggleReadonly})]})}function er({readonly:e,onToggle:t}){return(0,Q.jsxs)(`button`,{type:`button`,onClick:t,"aria-pressed":!e,"aria-label":e?`Read-only: allow writes`:`Writes allowed: make read-only`,title:e?`Read-only — click to allow writes`:`WRITE mode — click to make read-only`,className:V(K,`ml-auto`,!e&&`bg-destructive/15 text-destructive can-hover:hover:bg-destructive/20 can-hover:hover:text-destructive`),children:[e?(0,Q.jsx)(a,{className:`size-4 shrink-0`}):(0,Q.jsx)(f,{className:`size-4 shrink-0`}),(0,Q.jsx)(`span`,{className:V($,!e&&`font-medium`),children:e?`Read-only`:`WRITE`})]})}function tr({actions:e}){let[t,n]=(0,Y.useState)(!1),[r,l]=(0,Y.useState)(!1),d=()=>{n(!1),l(!1)},p=qn(e),[h,g]=Hn(e.onRefreshWithStructure,e.auto),S=[{label:`Structure`,icon:i,onSelect:e.onOpenStructure,disabled:!e.canOpenTabs},{label:`SQL`,icon:b,onSelect:e.onOpenSql,disabled:!e.canOpenTabs},`separator`,{label:`Refresh`,icon:O,onSelect:e.onRefresh,disabled:e.idle},{label:h.label,icon:O,onSelect:h.onSelect,disabled:e.idle},{label:g.label,icon:o,onSelect:g.onSelect,disabled:e.idle,hint:e.auto.running?`every ${e.auto.every}s`:void 0},...e.form?[{label:`Switch to form`,icon:_,onSelect:e.form.onToggle,disabled:!e.edit}]:[],...e.cellData?[{label:`Show cell data`,icon:m,onSelect:e.cellData.onToggle,disabled:!e.edit}]:[],...p.fetchAll?[{label:`Fetch all rows`,icon:x,onSelect:e.onFetchAll}]:[],...e.onCountExactly?[{label:`Count every row`,icon:y,onSelect:e.onCountExactly}]:[],...e.export?[{label:`Export`,icon:D,onSelect:()=>l(!0),sub:!0,disabled:!!e.export.unavailable}]:[],`separator`,{label:`Undo`,icon:v,onSelect:e.onUndo,disabled:!e.edit?.canUndo},{label:`Redo`,icon:M,onSelect:e.onRedo,disabled:!e.edit?.canRedo},{label:`Revert all changes`,icon:v,onSelect:e.onRevert,disabled:!p.revert},...e.onToggleReadonly?[e.readonly?{label:`Allow writes`,icon:f,onSelect:e.onToggleReadonly,hint:`Read-only now`}:{label:`Make read-only`,icon:a,onSelect:e.onToggleReadonly,hint:`Writes allowed now`}]:[]];return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`button`,{type:`button`,onClick:()=>n(!0),"aria-haspopup":`menu`,"aria-expanded":t,"aria-label":`Table actions`,className:`grid size-11 shrink-0 place-items-center rounded-md text-text-2 active:bg-surface-hover`,children:(0,Q.jsx)(s,{className:`size-5`})}),(0,Q.jsx)(_e,{open:t,onClose:d,children:(0,Q.jsx)(`div`,{role:`menu`,"aria-label":r?`Export`:`${e.table}: table actions`,className:`flex max-h-[60vh] flex-col gap-0.5 overflow-y-auto px-2 pb-2`,children:r?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(nr,{onClick:()=>l(!1),children:[(0,Q.jsx)(c,{className:`size-5 text-text-subtle`,"aria-hidden":!0}),(0,Q.jsx)(`span`,{className:`flex-1`,children:`Back`})]}),(0,Q.jsx)(`div`,{role:`separator`,className:`my-1 h-px bg-border`}),e.export?.run&&dt.map(t=>(0,Q.jsxs)(nr,{disabled:e.export.busy,onClick:()=>{d(),e.export.run?.(t.id)},children:[(0,Q.jsx)(`span`,{className:`size-5`,"aria-hidden":!0}),(0,Q.jsx)(`span`,{className:`flex-1`,children:t.label})]},t.id))]}):S.map((e,t)=>{if(e===`separator`)return(0,Q.jsx)(`div`,{role:`separator`,className:`my-1 h-px bg-border`},`sep-${t}`);let n=e.icon;return(0,Q.jsxs)(nr,{disabled:e.disabled,onClick:()=>{if(e.sub)return e.onSelect();d(),e.onSelect()},children:[(0,Q.jsx)(n,{className:`size-5 text-text-subtle`,"aria-hidden":!0}),(0,Q.jsx)(`span`,{className:`flex-1`,children:e.label}),e.hint&&(0,Q.jsx)(`span`,{className:`text-xs text-text-subtle`,children:e.hint}),e.sub&&(0,Q.jsx)(u,{className:`size-4 text-text-subtle`,"aria-hidden":!0})]},e.label)})})})]})}function nr({children:e,onClick:t,disabled:n}){return(0,Q.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:n,onClick:t,className:`flex min-h-11 w-full items-center gap-3 rounded-lg px-3 text-left text-sm select-none active:bg-accent disabled:opacity-50`,children:e})}function rr({actions:e,onOpenPanel:t}){let n=Kn(e.edit,e.readonly),r=qn(e);return!r.newRow&&!t&&e.readonly?null:(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-t border-border bg-panel px-2.5 py-2`,children:[r.newRow&&(0,Q.jsx)(`button`,{type:`button`,onClick:e.onNewRow,"aria-label":`New row`,className:`grid size-11 shrink-0 place-items-center rounded-[10px] border border-border text-text-2 active:bg-surface-hover`,children:(0,Q.jsx)(w,{className:`size-5`})}),t&&(0,Q.jsxs)(`button`,{type:`button`,onClick:t,className:`flex h-11 shrink-0 items-center gap-2 rounded-[10px] border border-border px-3.5 text-sm text-text-2 active:bg-surface-hover`,children:[(0,Q.jsx)(k,{className:`size-4`,"aria-hidden":!0}),`Filters`]}),(0,Q.jsxs)(`button`,{type:`button`,onClick:e.onSave,disabled:n.disabled,"aria-label":n.count?`Save ${n.count} changed ${n.count===1?`row`:`rows`}`:e.readonly?`Save: the connection is read-only`:`Save`,className:`flex h-11 min-w-0 flex-1 items-center justify-center gap-2 rounded-[10px] bg-primary px-3.5 text-sm font-medium text-primary-foreground disabled:opacity-45`,children:[(0,Q.jsx)(L,{className:`size-4`,"aria-hidden":!0}),`Save`,n.count>0&&(0,Q.jsx)(`span`,{"aria-hidden":!0,className:`rounded-full bg-white/20 px-1.5 font-mono text-xs`,children:Xn(n.count)})]})]})}function ir({metadata:e,tabId:t}){let n=ot(e,t);return n.missing?(0,Q.jsx)(ct,{empty:`This connection no longer exists.`}):(0,Q.jsx)(sr,{tab:n,table:typeof e?.tableName==`string`?e.tableName:``,schemaName:typeof e?.schemaName==`string`?e.schemaName:``,objectKind:e?.objectKind,color:n.conn?.color??e?.connectionColor,tabId:t})}var ar=e=>H.getState().getPanelForTab(e)?.tabs.find(t=>t.id===e)?.metadata;function or(e){if(!e?.isConnected||e.ownerDocument.defaultView?.getComputedStyle(e).visibility===`hidden`)return!1;let t=e.getBoundingClientRect();return t.width>0&&t.height>0}function sr({tab:e,table:t,schemaName:n,objectKind:r,color:i,header:a=!0,tabId:o,shownIn:s=o}){let c=Ut(e.target),l=le(),u=(0,Y.useRef)(null),d=(0,Y.useRef)(null),f=c.tableData;(0,Y.useEffect)(()=>{if(!s||!c.rowCount)return;let{file:e}=tt.getState();return e(s,{rowCount:c.rowCount,onCountExactly:c.countExactly}),()=>e(s,null)},[s,c.rowCount,c.countExactly]);let p=(0,Y.useMemo)(()=>Ue(c.schema,e.dbType),[c.schema,e.dbType]),[m]=(0,Y.useState)(()=>o?we(ar(o)):Me),{filters:h,setFilters:g,errors:_,opening:v,openFailed:y}=fn(p,c.applyFilters,m),b=(0,Y.useRef)(!1);(0,Y.useEffect)(()=>{if(b.current||!e.target||!t||e.missing||Se(m)&&!e.dbType)return;b.current=!0;let r=e.dbType;c.selectTable(t,n,Se(m)?e=>v(Ue(e,r)):void 0).then(e=>{e&&y(e)})},[e.target,e.missing,e.dbType,t,n]),(0,Y.useEffect)(()=>{if(!o)return;let e=ar(o),t=xe(e,p.length>0?Oe(h,p):h);JSON.stringify(t.filters)!==JSON.stringify(e?.filters)&&ce.getState().updateTab(o,{metadata:t})},[o,h,p]);let[x,S]=(0,Y.useState)(()=>o?Le(ar(o)):Ve);(0,Y.useEffect)(()=>{if(!o)return;let e=ar(o),t=c.schema.length?new Set(c.schema.map(e=>e.name)):null,n=Ne(e,t?{...x,hidden:x.hidden.filter(e=>t.has(e)),columnWidths:Object.fromEntries(Object.entries(x.columnWidths).filter(([e])=>t.has(e)))}:x);JSON.stringify(n.gridView)!==JSON.stringify(e?.gridView)&&ce.getState().updateTab(o,{metadata:n})},[o,x,c.schema]);let C=(0,Y.useMemo)(()=>new Set(x.hidden),[x.hidden]),w=(0,Y.useMemo)(()=>c.schema.filter(e=>C.has(e.name)).length,[c.schema,C]),T=(0,Y.useCallback)(e=>S(t=>({...t,hidden:[...e]})),[]),ee=(0,Y.useCallback)(e=>S(t=>t.hidden.includes(e)?t:{...t,hidden:[...t.hidden,e]}),[]),E=(0,Y.useCallback)(e=>S(t=>{let n=e.filter(e=>!t.hidden.includes(e));return n.length?{...t,hidden:[...t.hidden,...n]}:t}),[]),D=(0,Y.useCallback)(e=>S(t=>({...t,columnWidths:e})),[]),O=(0,Y.useCallback)(e=>S(t=>({...t,panelWidth:e})),[]),k=mt(u,860),[A,j]=(0,Y.useState)(null),M=A??!k,N=!l&&c.schema.length>0&&!c.driverMissing,P=(0,Y.useCallback)(()=>j(!M),[M]),te=(0,Y.useCallback)(()=>{j(!1),d.current?.focus()},[]),[ne,F]=(0,Y.useState)(null),I=f?ne:null,L=x.form&&!l,re=(0,Y.useCallback)(e=>{S(t=>t.form===(e===`form`)?t:{...t,form:e===`form`})},[]),z=(0,Y.useCallback)(()=>{l?d.current?.openRowForm():S(e=>({...e,form:!e.form}))},[l]),[ie,V]=(0,Y.useState)(``),[de,fe]=(0,Y.useState)([]),pe=(0,Y.useCallback)(e=>fe(t=>t.filter(t=>t!==e)),[]),[me,U]=(0,Y.useState)(null),[he,ge]=(0,Y.useState)(!1),_e=(0,Y.useCallback)(()=>{if(l){U({kind:`columns`,find:!0});return}j(!0),ge(!0)},[l]),ve=(0,Y.useCallback)(()=>ge(!1),[]),[ye,Ee]=(0,Y.useState)(null),W=un({target:e.target,dbType:e.dbType,table:c.selectedTable??t,schema:c.selectedSchema,columns:p,tableSchema:c.schema,filters:h}),De=(0,Y.useMemo)(()=>({filters:h,columns:p,onChange:g,errors:_,onDialog:(e,t,n)=>Ee({column:e,request:t,returnFocus:n}),onChooseValues:(e,t)=>Ee({column:e,request:W.chooseValues(e),returnFocus:t}),onLookup:(e,t)=>{let n=W.lookup(e);n&&Ee({column:e,request:n,returnFocus:t})},onColumnSheet:e=>U({kind:`filter`,column:e})}),[h,p,_,g,W]),ke=(0,Y.useCallback)(e=>{let t=W.lookup(e);return t?.dialog===`lookup`?{source:t.source,kind:t.kind}:null},[W]),je=(0,Y.useCallback)((e,t)=>{g(n=>e===null?Ie(n,t):Ce(n,e,t))},[g]),Fe=p.length>0&&!c.driverMissing,He=(0,Y.useCallback)((e,t)=>{let n=p.find(t=>t.name===e)?.kind;!n||!Dt(n)||t===void 0||xt(t)||g(r=>Ce(r,e,Pt(n,t)))},[p,g]),[We,Ke]=(0,Y.useState)(null),Ye=(0,Y.useCallback)(e=>{fe(t=>t.includes(e)?t:[...t,e]),j(!0),Ke(e)},[]);(0,Y.useEffect)(()=>{We&&(Ke(null),[...u.current?.querySelectorAll(`[data-table-panel] input`)??[]].find(e=>e.getAttribute(`aria-label`)===`Filter ${We}`)?.focus())},[We]);let Xe={schema:n||null,name:t,...r?{kind:r}:{}},Ze=()=>{e.place&&Ae(e.place,Xe)},Qe=()=>{e.place&&Pe(e.place,{schema:Xe.schema,name:t,kind:r??`table`})},$e=(0,Y.useCallback)(t=>{e.place&&Be(e.place,{schema:n||null,name:t})},[e.place,n]),et=e.place&&(f?.sql||e.dbType)?()=>{e.place&&Re(e.place,f?.sql||nt({schema:Xe.schema,name:t},e.dbType))}:void 0,rt=e.place&&(r??`table`)===`table`?t=>{e.place&&Re(e.place,t)}:void 0,it=(0,Y.useRef)(new Map),at=(0,Y.useCallback)(async(t,n)=>{let r=c.schema.find(e=>e.name===t)?.fk,i=e.target;if(!r||!i)throw Error(`${t} refers to no table`);let a=c.selectedSchema,o=a?`&schema=${encodeURIComponent(a)}`:``,s=`${ae(i)}\u0000${a}\u0000${r.table}`,l=it.current.get(s);l||(l=B.get(oe(i,`/schema?table=${encodeURIComponent(r.table)}${o}`)),it.current.set(s,l),l.catch(()=>it.current.delete(s)));let u=await l,d=u.filter(e=>e.name!==r.column),f=Ue(u,e.dbType).find(e=>e.name===r.column)?.kind??`other`,p=qt(r.column,f,[n[t]]);if(!p)return{columns:d,row:null};let m={table:r.table,...a?{schema:a}:{},filters:[p.group],limit:1},h=await B.post(oe(i,`/grid`),m);return{columns:d,row:Te(h.columns,h.rows).records[0]??null}},[c.schema,c.selectedSchema,e.target,e.dbType]),G=(0,Y.useCallback)((t,r)=>{let i=c.schema.find(e=>e.name===t)?.fk,a=p.find(e=>e.name===t)?.kind??`other`,o=i&&Jt(i.column,a,r[t]);i&&o&&e.place&&ze(e.place,{schema:n||null,name:i.table},o)},[c.schema,e.place,p,n]),ot=st(e.target,t?`/structure?table=${encodeURIComponent(t)}${n?`&schema=${encodeURIComponent(n)}`:``}`:null,s),K=(0,Y.useMemo)(()=>{let e=ot.data?Xt(ot.data):null;return Zt(e)?e:null},[ot.data]),[q,J]=(0,Y.useState)(null),[ut,dt]=(0,Y.useState)([]),ft=(0,Y.useCallback)(e=>{if(!q||e&&Qt(e)===Qt(q)){q||J(e);return}let t=s?qe(s,mn):0;if(t>0){R.info(`Save or discard the changes in ${q.table} first`,{description:`${t.toLocaleString()} changed row${t===1?``:`s`} there would be lost.`});return}J(e)},[q,s]),pt=(0,Y.useCallback)(()=>{e.conn&&be(e.conn.id,!e.readonly).catch(e=>R.error(`Could not change read-only`,{description:e.message}))},[e.conn,e.readonly]),ht=(0,Y.useCallback)(e=>{ue(e).then(e=>{e?R.success(`Column name copied`):R.error(`Could not copy the column name`)})},[]),gt=(0,Y.useCallback)(e=>{if(C.has(e)){R.info(`${e} is hidden in the grid: tick it in Columns to show it`);return}d.current?.scrollToColumn(e)},[C]),_t=(0,Y.useCallback)(e=>{c.setSort(e)},[c.setSort]),yt=c.loading||c.loadingMore||c.fetchingAll!==null,St=Wn(c.refreshQuietly,()=>!yt&&or(u.current)&&!u.current?.ownerDocument.activeElement?.closest(`.gdg-clip-region, [data-cell-editor]`)),Ct=(0,Y.useCallback)(()=>{c.reload({keepPlace:L})},[c.reload,L]),wt=(0,Y.useCallback)(()=>{it.current.clear(),c.reload({structure:!0,keepPlace:L})},[c.reload,L]),[Et,kt]=(0,Y.useState)(!1),jt=(0,Y.useRef)(null),Nt=(0,Y.useCallback)(e=>{let t=jt.current;jt.current=null,t?.(e)},[]),Ft=(0,Y.useCallback)(()=>c.fetchAll().then(e=>(e&&R.success(`All ${e.rows.length.toLocaleString()} rows loaded`),!!e)),[c.fetchAll]),It=(0,Y.useCallback)(()=>Ln()?(Nt(!1),kt(!0),new Promise(e=>{jt.current=e})):Ft(),[Ft,Nt]),Lt=se(e.target,e.name),X=(0,Y.useMemo)(()=>f?f.columns.filter(e=>!C.has(e)):[],[f,C]),Rt=(0,Y.useCallback)(e=>c.startExport(e,X),[c.startExport,X]),zt=(0,Y.useMemo)(()=>{let r=f?.sql;if(l||!f||!r||!e.target)return;let i={target:e.target,schema:n||null},a=X.length<f.columns.length?X:void 0;return()=>{Je(Ge(i,t,r,a))}},[l,f,e.target,n,X,t]),Bt=Wt(Rt,t,X.length?void 0:`Every column is hidden`,zt),Z={table:t,canOpenTabs:!!e.place,onOpenStructure:Ze,onOpenSql:Qe,onRefresh:Ct,onRefreshWithStructure:wt,auto:St,busy:yt,idle:!c.selectedTable,edit:I,readonly:e.readonly,onSave:()=>d.current?.save(),onRevert:()=>d.current?.revert(),onNewRow:()=>d.current?.newRow(),onDeleteRows:()=>d.current?.deleteSelectedRows(),onUndo:()=>d.current?.undo(),onRedo:()=>d.current?.redo(),export:f?Bt:void 0,hasMore:!!f?.hasMore&&c.fetchingAll===null,onFetchAll:It,panel:N?{open:M,onToggle:P}:void 0,form:f?{on:L,onToggle:z,onNavigate:e=>d.current?.formNavigate(e)}:void 0,cellData:f?{open:I?.cellData??!1,onToggle:()=>d.current?.toggleCellData()}:void 0,onToggleReadonly:e.conn?pt:void 0,onCountExactly:c.rowCount?.canCountExactly?c.countExactly:void 0},Vt=k,Ht=N&&M&&Vt,Gt=H(e=>!!s&&e.panels[e.focusedPanelId]?.activeTabId===s),Kt=t=>{let n=qn(Z);switch(t){case`refresh`:Z.idle||Ct();break;case`refresh-structure`:Z.idle||wt();break;case`toggle-auto-refresh`:Z.idle||(St.running?St.stop():St.start());break;case`save`:!e.readonly&&(I?.pending??0)>0&&Z.onSave();break;case`new-row`:n.newRow&&Z.onNewRow();break;case`delete-rows`:n.deleteRows&&Z.onDeleteRows();break;case`undo`:Z.onUndo();break;case`redo`:Z.onRedo();break;case`revert-rows`:break;case`toggle-panel`:l?U(e=>e?null:{kind:`columns`}):N&&P();break;case`clear-filters`:g(Me);break;case`toggle-form`:Z.form?.onToggle();break;case`export-advanced`:Bt.unavailable||Bt.advanced?.();break}},Yt=e=>{let t=Ot(e.currentTarget,e.target);if(!t)return;if(e.key===`Escape`&&Ht&&t!==`cell-editor`&&!e.defaultPrevented){e.preventDefault(),te();return}let n=vt(e.nativeEvent,t);!n||n!==`swallow`&&Tt(n)||n===`export-advanced`&&!Bt.advanced||(e.preventDefault(),e.stopPropagation(),n!==`swallow`&&Kt(n))},$t=e=>{let t=At(e.target);!Ht||!t||!e.currentTarget.contains(t)||t.closest(`[data-table-panel]`)||j(!1)},en={sort:{sort:c.sort,onChange:_t},onCopyName:ht,onHide:ee,onOpenTable:e.place?$e:void 0};return(0,Q.jsxs)(`div`,{ref:u,className:`@container flex h-full w-full flex-col overflow-hidden`,onKeyDown:Yt,children:[a&&(0,Q.jsx)(lt,{title:t,subtitle:[Lt,n,c.rowCount?.text].filter(Boolean).join(` · `),color:i,children:l&&(0,Q.jsx)(tr,{actions:Z})}),!a&&l&&(0,Q.jsxs)(`div`,{className:`flex h-11 shrink-0 items-center gap-1 border-b border-border-soft pr-1 pl-3`,children:[(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs text-text-subtle`,children:c.rowCount?.text}),(0,Q.jsx)(tr,{actions:Z})]}),l&&Fe&&(0,Q.jsx)(Tn,{filtering:De,onOpen:e=>U({kind:`filter`,column:e}),sort:c.sort,hidden:{count:w,onOpen:()=>U({kind:`columns`})}}),!l&&(0,Q.jsx)($n,{actions:Z}),(0,Q.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 overflow-hidden`,onPointerDownCapture:$t,children:[N&&M&&(0,Q.jsx)(bt,{width:x.panelWidth,onWidthChange:O,floating:Vt,onClose:te,children:(0,Q.jsx)(cr,{schema:c.schema,hidden:C,onHiddenChange:T,onJump:gt,findColumn:he?ve:void 0,onOpenTable:e.place?$e:void 0,selected:I?.selectedColumns,filtering:Fe?De:void 0,form:L?{text:ie,onChange:V}:void 0,added:de,onRemoveAdded:pe,references:K?{table:t,refs:K,open:q,onOpen:ft}:void 0})}),(0,Q.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden`,children:[(0,Q.jsx)(`div`,{className:`relative min-h-0 flex-1 overflow-hidden`,children:c.driverMissing?(0,Q.jsx)(ct,{driver:c.driverMissing}):f?(0,Q.jsx)(Mt,{ref:d,columns:f.columns,rows:f.rows,schema:c.schema,loading:c.loading,rowKey:f.rowKey,onSaveChanges:t=>c.saveChanges(t,e.place),readOnly:e.readonly,sort:c.sort,onSortChange:_t,viewKey:c.viewKey,hasMore:f.hasMore,onLoadMore:c.loadMore,loadingMore:c.loadingMore,fetchingAll:c.fetchingAll,hiddenColumns:C,onShowAllColumns:()=>T(new Set),onHideColumns:E,onFindColumn:(N||l)&&!L?_e:void 0,columnWidths:x.columnWidths,onColumnWidthsChange:D,onEditStateChange:F,tabId:s,sidePanel:N?{open:M,onToggle:P}:void 0,onResetFilter:Se(h)?()=>g(Me):void 0,onOpenQuery:et,onOpenGeneratedSql:rt,exporter:Bt,startCellDownload:c.startCellDownload,focusOnVisible:Gt,onOpenTable:e.place?$e:void 0,place:e.place??void 0,selectedTable:c.selectedTable,selectedSchema:c.selectedSchema,connectionName:e.name,dialect:e.dialect,filtering:Fe?De:void 0,lookupFor:e.target?ke:void 0,view:L?`form`:`table`,onViewChange:re,formNameFilter:ie,onFormNameFilterChange:V,rowCount:c.rowCount,onFetchAll:It,loadReference:e.target?at:void 0,onOpenReference:e.place?G:void 0,onFilterValue:Fe?He:void 0,onAddToFilter:Fe&&N?Ye:void 0,onRefresh:Ct,floatCellData:k,onSelectedRowsChange:q?dt:void 0,rowsLabel:q?c.rowCount?.text:void 0}):(0,Q.jsx)(ct,{loading:c.loading||!c.error,error:c.error})}),q&&f&&!c.driverMissing&&(0,Q.jsx)(hn,{tab:e,reference:q,masterRows:ut,shownIn:s,narrow:k,onClose:()=>ft(null)})]})]}),l&&f&&(0,Q.jsx)(rr,{actions:Z,onOpenPanel:c.schema.length?()=>U({kind:`columns`}):void 0}),l&&me?.kind===`filter`&&Fe&&(0,Q.jsx)(kn,{filtering:De,column:me.column,schema:c.schema,menu:en,onClose:()=>U(null)}),l&&me?.kind===`columns`&&(0,Q.jsx)(Nn,{table:t,schema:c.schema,hidden:C,onHiddenChange:T,onJump:gt,onOpenTable:e.place?$e:void 0,filtering:Fe?De:void 0,onOpenFilter:e=>U({kind:`filter`,column:e}),references:K?{refs:K,open:q,onOpen:ft}:void 0,focusSearch:me.find?()=>U({kind:`columns`}):void 0,onClose:()=>U(null)}),Et&&(0,Q.jsx)(zn,{onFetch:()=>{let e=jt.current;jt.current=null,Ft().then(t=>e?.(t))},onClose:()=>{kt(!1),queueMicrotask(()=>Nt(!1))}}),(0,Q.jsx)(cn,{open:ye,onClose:()=>Ee(null),onSubmit:je})]})}function cr({schema:e,hidden:t,onHiddenChange:n,onJump:r,findColumn:i,onOpenTable:a,selected:o,filtering:s,form:c,added:l,onRemoveAdded:u,references:d}){let[f,p]=(0,Y.useState)(!1),[m,h]=(0,Y.useState)(!1),g=(0,Y.useMemo)(()=>new Set(o),[o]),_=d&&(0,Q.jsx)(`div`,{className:`flex max-h-[30%] min-h-0 shrink-0 flex-col border-t border-border`,children:(0,Q.jsx)(nn,{table:d.table,references:d.refs,open:d.open,onOpen:d.onOpen,collapsed:m,onCollapsedChange:h})});return c?(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[s&&(0,Q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:(0,Q.jsx)(vn,{filtering:s,schema:e,nameFilter:c,added:l,onRemoveAdded:u})}),_]}):(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,Q.jsx)(jt,{schema:e,hidden:t,onHiddenChange:n,onJump:r,onOpenTable:a,selected:g,collapsed:f,onCollapsedChange:p,focusSearch:i}),s&&(0,Q.jsx)(`div`,{className:f?`flex min-h-0 flex-1 flex-col`:V(`flex min-h-0 shrink-0 flex-col border-t border-border`,d?`max-h-[40%]`:`max-h-[45%]`),children:(0,Q.jsx)(vn,{filtering:s,schema:e,added:l,onRemoveAdded:u})}),_]})}export{ir as TableTab,sr as TableView};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import{Kr as r,P as i,gt as a,xn as o}from"./icons-JMA45Ifw.js";import{k as s,r as c}from"./api-client-OiA8Ida1.js";import{n as l}from"./utils-Bslrbb-G.js";import{n as u,t as d}from"./button-Br60hGkw.js";import{t as f}from"./input-CKGoVpYv.js";import{Hn as p,an as m}from"./index-ItT-dTPV.js";var h=e(t(),1),g=n();function _({title:e,children:t}){return(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`h3`,{className:`text-sm font-medium`,children:e}),(0,g.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:t})]})}function v({label:e,note:t,checked:n,disabled:r,onChange:i}){let a=(0,h.useId)();return(0,g.jsxs)(`div`,{className:`flex min-h-11 items-center justify-between gap-3 px-4`,children:[(0,g.jsxs)(`label`,{htmlFor:a,className:l(`min-w-0 flex-1 py-3`,r?`cursor-default`:`cursor-pointer`),children:[(0,g.jsx)(`span`,{className:`block text-sm`,children:e}),t&&(0,g.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:t})]}),(0,g.jsx)(p,{id:a,checked:n,disabled:r,onCheckedChange:i})]})}function y({label:e,onClick:t,disabled:n,danger:r,children:i}){return(0,g.jsx)(d,{variant:`ghost`,size:`icon`,"aria-label":e,title:e,disabled:n,onClick:t,className:l(`size-11 shrink-0 cursor-pointer md:size-9`,r&&`text-error hover:text-error`),children:i})}var b=e=>e instanceof Error?e.message:String(e);function x(e,t,n){let[r,i]=(0,h.useState)(null),[a,o]=(0,h.useState)(!1),l=(0,h.useRef)(new Set);return(0,h.useEffect)(()=>{if(!r)return;let e=setInterval(async()=>{let e=await n();if(!e)return;let t=e.chats.find(e=>!l.current.has(e.chatId));t?(i(null),s.success(`Connected ${t.name}`)):e.connect.active||(i(null),Date.now()>=r.expiresAt?s.info(`The link expired. Make a new one to connect.`):s.success(`Telegram connected`))},2e3);return()=>clearInterval(e)},[r,n]),{link:r,starting:a,connect:(0,h.useCallback)(async()=>{o(!0);try{l.current=new Set(t?.chats.map(e=>e.chatId)),i(await c.post(e)),await n()}catch(e){s.error(`Could not make a link`,{description:b(e)})}finally{o(!1)}},[e,t,n]),cancel:(0,h.useCallback)(async()=>{i(null),await c.del(e).catch(()=>{})},[e])}}function S({chats:e,onDisconnect:t}){return e.length===0?null:(0,g.jsx)(`ul`,{className:`divide-y divide-border rounded-lg border border-border`,children:e.map(e=>(0,g.jsxs)(`li`,{className:`flex items-center gap-3 py-1.5 pl-4 pr-1`,children:[(0,g.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm`,children:e.name}),(0,g.jsx)(y,{label:`Disconnect ${e.name}`,danger:!0,onClick:()=>t(e),children:(0,g.jsx)(r,{className:`size-4`})})]},e.chatId))})}function C({link:e,botUsername:t,error:n,onCancel:r}){let[i,s]=(0,h.useState)(Date.now());(0,h.useEffect)(()=>{let e=setInterval(()=>s(Date.now()),1e3);return()=>clearInterval(e)},[]);let c=Math.max(0,Math.ceil((e.expiresAt-i)/1e3)),f=`${Math.floor(c/60)}:${String(c%60).padStart(2,`0`)}`;return(0,g.jsxs)(`div`,{className:`space-y-3 rounded-lg border border-primary/40 px-4 py-3`,children:[(0,g.jsxs)(`p`,{className:`text-sm leading-relaxed`,children:[`Open the link in Telegram and tap `,(0,g.jsx)(`b`,{children:`Start`}),t?(0,g.jsxs)(g.Fragment,{children:[` in the chat with `,(0,g.jsxs)(`b`,{children:[`@`,t]})]}):null,`. It connects one chat, once.`]}),(0,g.jsxs)(`div`,{className:`flex flex-col gap-3 md:flex-row md:items-center`,children:[(0,g.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:l(u(),`min-h-11 w-full gap-2 md:min-h-9 md:w-auto`),children:[`Open Telegram`,(0,g.jsx)(a,{className:`size-3.5`})]}),(0,g.jsxs)(`div`,{className:`hidden items-center gap-3 md:flex`,children:[(0,g.jsx)(`div`,{className:`rounded-md bg-white p-2`,children:(0,g.jsx)(m,{value:e.url,size:112,bgColor:`#ffffff`,fgColor:`#000000`,level:`L`,style:{display:`block`}})}),(0,g.jsx)(`p`,{className:`max-w-48 text-xs text-muted-foreground`,children:`Or scan it with the phone that has Telegram.`})]})]}),n?(0,g.jsx)(`p`,{className:`text-xs text-error`,children:n}):(0,g.jsxs)(`p`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,g.jsx)(o,{className:`size-3.5 animate-spin`}),`Waiting for Telegram… the link expires in `,f]}),(0,g.jsx)(d,{variant:`ghost`,onClick:r,className:`min-h-11 cursor-pointer md:min-h-9`,children:`Cancel`})]})}function w({configured:e,botUsername:t,onSaved:n,endpoint:r=`/api/settings/telegram`,usernameExample:o=`my_ppm_bot`}){let s=(0,h.useId)(),[p,m]=(0,h.useState)(``),[_,v]=(0,h.useState)(!1),[y,b]=(0,h.useState)(null),[x,S]=(0,h.useState)(!e),C=async()=>{if(p.trim()){v(!0),b(null);try{let e=await c.put(r,{bot_token:p.trim()});m(``),S(!1),n(e.bot_username)}catch(e){b(e instanceof Error?e.message:String(e))}finally{v(!1)}}};return(0,g.jsxs)(`div`,{className:`space-y-2`,children:[(0,g.jsx)(`label`,{htmlFor:s,className:`text-xs text-muted-foreground`,children:e?`Bot token — paste a new one to replace it`:`Bot token`}),(0,g.jsxs)(`form`,{className:`flex flex-col gap-2 sm:flex-row`,onSubmit:e=>{e.preventDefault(),C()},children:[(0,g.jsx)(f,{id:s,type:`password`,autoComplete:`off`,spellCheck:!1,placeholder:e?`•••••• (saved)`:`123456789:AA…`,value:p,onChange:e=>{m(e.target.value),b(null)},className:`h-11 w-full font-mono text-sm md:h-9`}),(0,g.jsx)(d,{type:`submit`,disabled:_||!p.trim(),className:`min-h-11 shrink-0 cursor-pointer md:min-h-9`,children:_?`Checking…`:`Save`})]}),y&&(0,g.jsx)(`p`,{className:`text-xs text-error`,children:y}),e&&t&&(0,g.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Using`,` `,(0,g.jsxs)(`a`,{href:`https://t.me/${t}`,target:`_blank`,rel:`noopener noreferrer`,className:`text-primary underline-offset-2 hover:underline`,children:[`@`,t]}),`.`]}),(0,g.jsxs)(`button`,{type:`button`,onClick:()=>S(e=>!e),"aria-expanded":x,className:`flex min-h-11 cursor-pointer items-center gap-1 text-xs text-primary md:min-h-8`,children:[(0,g.jsx)(i,{className:l(`size-3.5 transition-transform`,!x&&`-rotate-90`)}),`How to create a bot`]}),x&&(0,g.jsxs)(`div`,{className:`space-y-3 rounded-lg border border-border px-4 py-3`,children:[(0,g.jsxs)(`ol`,{className:`list-decimal space-y-1.5 pl-4 text-sm leading-relaxed`,children:[(0,g.jsxs)(`li`,{children:[`Open `,(0,g.jsx)(`b`,{children:`@BotFather`}),` in Telegram.`]}),(0,g.jsxs)(`li`,{children:[`Send `,(0,g.jsx)(`code`,{className:`rounded bg-muted px-1 py-0.5 text-xs`,children:`/newbot`}),`.`]}),(0,g.jsxs)(`li`,{children:[`Pick a display name, then a username ending in `,(0,g.jsx)(`b`,{children:`bot`}),`, such as `,(0,g.jsx)(`i`,{children:o}),`.`]}),(0,g.jsxs)(`li`,{children:[`BotFather replies with a token like `,(0,g.jsx)(`code`,{className:`rounded bg-muted px-1 py-0.5 text-xs`,children:`123456789:AA…`}),`. Copy it and paste it above.`]})]}),(0,g.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Treat the token like a password: whoever has it controls the bot.`}),(0,g.jsxs)(`a`,{href:`https://t.me/BotFather`,target:`_blank`,rel:`noopener noreferrer`,className:l(u({variant:`outline`}),`min-h-11 w-full gap-2 md:min-h-9 sm:w-auto`),children:[`Open @BotFather`,(0,g.jsx)(a,{className:`size-3.5`})]})]})]})}export{y as a,x as i,C as n,_ as o,S as r,v as s,w as t};
@@ -1,3 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import{An as r,Wr as i,et as a,gr as o,gt as s,hn as c,jn as l,mn as u,ut as d,wn as f,xn as p}from"./icons-JMA45Ifw.js";import{k as m,r as h}from"./api-client-OiA8Ida1.js";import{t as g}from"./settings-store-WeJyQVL8.js";import{n as _}from"./utils-Bslrbb-G.js";import"./portal-container-context-BXAsDqrB.js";import{t as v}from"./panel-store-DmP16Fo0.js";import"./window-store-zJczRsv4.js";import"./project-store-CEGoLMOl.js";import"./project-framework-store-Bi5dyHdx.js";import"./session-list-sync-triggers-DitiR5h1.js";import{t as y}from"./tab-store-nNzRNfVV.js";import{r as b,t as x}from"./apply-theme-ORrEdHKT.js";import{r as S}from"./clipboard-D3XnL7CB.js";import{t as C}from"./mobile-bottom-sheet-CGmmdp_5.js";import"./use-visual-viewport-CQ6-A0Dt.js";import{t as w}from"./resolve-theme-BqoL27BW.js";import{t as T}from"./ws-auth-cWeQ7_61.js";import{Ar as E,di as D}from"./index-ItT-dTPV.js";import{r as O}from"./editor-font-CdxKRKX-.js";import{i as k}from"./send-to-chat-Bcm_Lcog.js";import{t as A}from"./code-fence-vHZyBehL.js";import{n as j,t as M}from"./run-in-terminal-Bk9Bw7G1.js";import{i as N,n as P,r as F,t as I}from"./vendor-xterm-sFX94k3w.js";var L=e(t(),1);function R(e){let t=e.tokens;if(e.terminal){let n=e.terminal.ansi;return{background:t.bgSolid,foreground:t.text,cursor:e.terminal.cursor,cursorAccent:e.terminal.cursorAccent??t.bgSolid,selectionBackground:e.terminal.selection,black:n[0],red:n[1],green:n[2],yellow:n[3],blue:n[4],magenta:n[5],cyan:n[6],white:n[7],brightBlack:n[8],brightRed:n[9],brightGreen:n[10],brightYellow:n[11],brightBlue:n[12],brightMagenta:n[13],brightCyan:n[14],brightWhite:n[15]}}let n=e.mode===`dark`,r=n?`#1b1f2a`:`#2b2f38`,i=n?`#d7dce8`:`#e9edf5`,a=t.text3,o=n?`#f7f9ff`:`#ffffff`;return{background:t.bgSolid,foreground:t.text,cursor:t.accent,cursorAccent:t.bgSolid,selectionBackground:t.accentWash,black:r,red:t.error,green:t.success,yellow:t.warning,blue:t.accent,magenta:t.accent2,cyan:t.info,white:i,brightBlack:a,brightRed:t.error,brightGreen:t.success,brightYellow:t.warning,brightBlue:t.accent,brightMagenta:t.accent2,brightCyan:t.info,brightWhite:o}}function z(e,t){return e>=20&&t>=2}function B(){let e=g.getState();return R(b()??w(e.themeStyle,e.themeMode,e.customThemes,e.customThemeId))}var ee=/[).,;:'"\]}>]+$/,te=/\bhttps?:\/\/[^\s<>"'`]+/g,ne=5e3,re=100,V=250,ie=3e3,ae=`RESIZE:`,oe=`PING`,se=`PONG`,ce=15e3,le=35e3;function H(e){let{sessionId:t,containerRef:n}=e,r=(0,L.useRef)(null),[i,a]=(0,L.useState)(null),o=(0,L.useRef)(null),s=(0,L.useRef)(null),c=(0,L.useRef)(null),l=(0,L.useRef)(0),u=(0,L.useRef)(!1),d=(0,L.useRef)(Date.now()),[f,p]=(0,L.useState)(!1),[m,h]=(0,L.useState)(!1),[g,_]=(0,L.useState)(!1),[v,y]=(0,L.useState)(!1),b=(0,L.useRef)(null),S=(0,L.useRef)(null),C=e.tabId?`ppm:terminal-session:${e.tabId}`:null,w=(0,L.useRef)((()=>{if(C)try{return localStorage.getItem(C)??t}catch{}return t})()),E=(0,L.useRef)(0),k=(0,L.useRef)(-1),A=(0,L.useCallback)(e=>{let t=s.current;t?.readyState===WebSocket.OPEN&&t.send(e)},[]),j=(0,L.useCallback)(()=>{b.current&&clearTimeout(b.current),b.current=setTimeout(()=>y(!0),V)},[]),M=(0,L.useCallback)(()=>r.current?.getSelection()??``,[]),R=(0,L.useCallback)(()=>{let e=r.current;if(!e)return``;let t=e.buffer.active,n=E.current,i=t.baseY+t.cursorY,a=[];for(let e=n;e<=i;e++){let n=t.getLine(e);n&&a.push(n.translateToString(!0))}for(;a.length>0&&a[a.length-1].trim()===``;)a.pop();return a.join(`
2
- `)},[]),H=(0,L.useCallback)(()=>{let e=r.current;return!e||k.current<0?``:e.buffer.active.getLine(k.current)?.translateToString(!0).trimEnd()??``},[]),U=(0,L.useCallback)(()=>{let e=r.current;if(!e)return[];let t=e.buffer.active,n=t.baseY+t.cursorY,i=Math.max(0,n-ne),a=[],o=``;for(let e=i;e<=n;e++){let n=t.getLine(e);n&&(o+=n.translateToString(!0),!t.getLine(e+1)?.isWrapped&&(a.push(o),o=``))}o&&a.push(o);let s=new Set,c=[];for(let e of a)for(let t of e.match(te)??[]){let e=t.replace(ee,``);!e||s.has(e)||(s.add(e),c.push(e))}return c.reverse()},[]),W=(0,L.useCallback)(()=>{let e=r.current,t=s.current;e&&t?.readyState===WebSocket.OPEN&&t.send(`${ae}${e.cols},${e.rows}`)},[]),G=(0,L.useCallback)(()=>{if(c.current&&clearTimeout(c.current),s.current?.close(),s.current=null,w.current=`new`,C)try{localStorage.removeItem(C)}catch{}l.current=0,_(!1),y(!1),p(!1),h(!1),setTimeout(()=>K(),0)},[]),K=(0,L.useCallback)(()=>{c.current&&=(clearTimeout(c.current),null),s.current&&=(s.current.onclose=null,s.current.close(),null);let t=r.current;if(!t)return;let n=window.location.protocol===`https:`?`wss:`:`ws:`,i=e.projectName??``,a=w.current,o=a===`new`&&e.cwd?`?cwd=${encodeURIComponent(e.cwd)}`:``,f=T(`/ws/project/${encodeURIComponent(i)}/terminal/${a}${o}`),m=`${n}//${window.location.host}${f}`,g=new WebSocket(m);s.current=g,g.onopen=()=>{u.current&&r.current&&r.current.clear(),u.current=!0,d.current=Date.now(),p(!0),h(!1),l.current=0,w.current===`new`&&y(!1),S.current&&clearTimeout(S.current),S.current=setTimeout(()=>y(!0),ie),W()},g.onmessage=e=>{if(d.current=Date.now(),typeof e.data==`string`){if(e.data===se)return;if(e.data.startsWith(`{`))try{let n=JSON.parse(e.data);if(n.type){if(n.type===`session`&&n.id&&(w.current=n.id,C))try{localStorage.setItem(C,n.id)}catch{}n.type===`error`&&t.write(`\r\n\x1b[31mError: ${n.message}\x1b[0m\r\n`),n.type===`exited`&&_(!0);return}}catch{}j(),t.write(e.data)}},g.onclose=()=>{p(!1),J()},g.onerror=()=>{g.close()}},[W]),q=(0,L.useCallback)(()=>{if(document.visibilityState!==`visible`)return;let e=s.current;if(!e||e.readyState!==WebSocket.OPEN){K();return}if(Date.now()-d.current>le){K();return}try{e.send(oe)}catch{K()}},[K]);function J(){let e=Math.min(1e3*2**l.current,3e4);l.current++,h(!0),c.current=setTimeout(()=>{K()},e)}return(0,L.useEffect)(()=>{let e=n.current;if(!e)return;let t=new N({cursorBlink:!0,fontSize:13,scrollback:5e4,fontFamily:O,theme:B(),minimumContrastRatio:4.5}),i=new F,l=()=>{let e=i.proposeDimensions();e&&z(e.cols,e.rows)&&i.fit()},u=new P;if(t.loadAddon(i),t.loadAddon(u),t.open(e),!(`ontouchstart`in window||navigator.maxTouchPoints>0))try{let e=new I;e.onContextLoss(()=>e.dispose()),t.loadAddon(e)}catch{}l(),r.current=t,o.current=i,a(t);let d=!1;document.fonts.ready.then(()=>{if(!(d||r.current!==t)){d=!0;try{t.options.fontFamily=O,l()}catch{}}}),t.onData(e=>{if(e.includes(`\r`)||e.includes(`
3
- `)){let e=t.buffer.active;k.current=e.baseY+e.cursorY,E.current=k.current+1}let n=s.current;n?.readyState===WebSocket.OPEN&&n.send(e)}),K();let f=setInterval(q,ce),p=e.ownerDocument,m=()=>{p.visibilityState===`visible`&&q()};p.addEventListener(`visibilitychange`,m);let h=null,g=new ResizeObserver(e=>{let t=e[0];!t||t.contentRect.width===0||t.contentRect.height===0||(h&&clearTimeout(h),h=setTimeout(()=>{try{l(),W()}catch{}},re))});g.observe(e);let _=D(e,()=>{try{l(),W()}catch{}}),v=()=>{t.options.theme=B()};window.addEventListener(x,v);let y=()=>window.removeEventListener(x,v),C=()=>{if(r.current===t)try{t.clearTextureAtlas(),t.refresh(0,t.rows-1)}catch{}};return document.fonts.addEventListener(`loadingdone`,C),()=>{y(),document.fonts.removeEventListener(`loadingdone`,C),_(),h&&clearTimeout(h),g.disconnect(),clearInterval(f),p.removeEventListener(`visibilitychange`,m),c.current&&clearTimeout(c.current),b.current&&clearTimeout(b.current),S.current&&clearTimeout(S.current),s.current?.close(),s.current=null,t.dispose(),r.current=null,a(null),o.current=null}},[]),{connected:f,reconnecting:m,exited:g,shellReady:v,sendData:A,getSelection:M,terminal:i,getLastCommandOutput:R,getLastCommand:H,getBufferUrls:U,restart:G}}function U(e,t,n){return new MouseEvent(e,{bubbles:!0,cancelable:!0,view:window,clientX:t.clientX,clientY:t.clientY,screenX:t.screenX,screenY:t.screenY,button:0,buttons:n,detail:1})}function W(e,t){(0,L.useEffect)(()=>{let n=e.current;if(!t||!n)return;let r=n.querySelector(`.xterm`);if(!r)return;let i=e=>{let t=e.touches[0];!t||e.touches.length>1||(e.preventDefault(),e.stopPropagation(),r.dispatchEvent(U(`mousedown`,t,1)))},a=e=>{let t=e.touches[0];t&&(e.preventDefault(),e.stopPropagation(),document.dispatchEvent(U(`mousemove`,t,1)))},o=e=>{let t=e.changedTouches[0];t&&(e.preventDefault(),e.stopPropagation(),document.dispatchEvent(U(`mouseup`,t,0)))},s={capture:!0,passive:!1};return n.addEventListener(`touchstart`,i,s),n.addEventListener(`touchmove`,a,s),n.addEventListener(`touchend`,o,s),n.addEventListener(`touchcancel`,o,s),()=>{n.removeEventListener(`touchstart`,i,s),n.removeEventListener(`touchmove`,a,s),n.removeEventListener(`touchend`,o,s),n.removeEventListener(`touchcancel`,o,s)}},[e,t])}var G=40;function K(e){if(!e||typeof e.checkVisibility==`function`&&!e.checkVisibility({visibilityProperty:!0}))return!1;let t=e.getBoundingClientRect();return t.width<G||t.height<G?!1:t.bottom>0&&t.right>0&&t.top<window.innerHeight&&t.left<window.innerWidth}function q({tabId:e,metadata:t,shellReady:n,sendData:r,focusTerminal:i,containerRef:a}){let o=(0,L.useRef)(null),[s,c]=(0,L.useState)(0),l=(0,L.useCallback)(e=>{o.current=e,c(e=>e+1)},[]),u=t?.pendingCommand;(0,L.useEffect)(()=>{if(!(typeof u!=`string`||!u)&&(l(u),e)){let n={...t??{}};delete n.pendingCommand,v.getState().updateTab(e,{metadata:n})}},[u,e,l]),(0,L.useEffect)(()=>{let e=e=>{let t=e.detail;t?.command&&K(a.current)&&(l(t.command),window.dispatchEvent(new Event(M)))};return window.addEventListener(j,e),()=>window.removeEventListener(j,e)},[a,l]),(0,L.useEffect)(()=>{if(!n)return;let e=o.current;e&&(o.current=null,r(e),i())},[n,s,r,i])}var J=n(),ue=[{label:`Tab`,value:` `},{label:`Esc`,value:`\x1B`},{label:`Ctrl`,value:null},{label:`↑`,value:`\x1B[A`},{label:`↓`,value:`\x1B[B`},{label:`←`,value:`\x1B[D`},{label:`→`,value:`\x1B[C`},{label:`^C`,value:``}],Y=`flex items-center justify-center shrink-0 min-w-11 min-h-11 rounded text-xs bg-surface-elevated text-text-primary active:bg-primary active:text-primary-foreground transition-colors select-none`;function de({ctrlMode:e,onToggleCtrl:t,selectMode:n,onToggleSelect:o,onKey:s,onCopy:c,onPaste:l,onSendToChat:f,onOpenLinks:p}){return(0,J.jsxs)(`div`,{className:`relative shrink-0 bg-surface border-t border-border`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1.5 overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:[(0,J.jsx)(`button`,{onClick:o,"aria-label":`Select text`,"aria-pressed":n,className:_(Y,n&&`bg-primary text-primary-foreground`),children:(0,J.jsx)(i,{size:16})}),(0,J.jsx)(`button`,{onClick:c,"aria-label":`Copy`,className:Y,children:(0,J.jsx)(d,{size:16})}),(0,J.jsx)(`button`,{onClick:l,"aria-label":`Paste`,className:Y,children:(0,J.jsx)(a,{size:16})}),(0,J.jsx)(`button`,{onClick:p,"aria-label":`Links`,className:Y,children:(0,J.jsx)(u,{size:16})}),(0,J.jsx)(`button`,{onClick:f,"aria-label":`Send to Chat`,className:Y,children:(0,J.jsx)(r,{size:16})}),(0,J.jsx)(`div`,{className:`w-px h-6 shrink-0 bg-border mx-0.5`}),ue.map(n=>(0,J.jsx)(`button`,{onClick:()=>n.value===null?t():s(n.value),className:_(Y,`font-mono`,n.value===null&&e&&`bg-primary text-primary-foreground`),children:n.label},n.label)),(0,J.jsx)(`div`,{className:`w-6 shrink-0`,"aria-hidden":!0})]}),(0,J.jsx)(`div`,{className:`pointer-events-none absolute inset-y-0 right-0 w-8 bg-gradient-to-l from-surface to-transparent`,"aria-hidden":!0})]})}var fe=new Set([`localhost`,`::1`]);function X(e){let t=e.replace(/^\[|\]$/g,``).toLowerCase();return fe.has(t)?!0:/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(t)}function Z(e){let t;try{t=new URL(e)}catch{return null}let n=t.searchParams.get(`redirect_uri`)??t.searchParams.get(`redirectUri`);if(!n)return null;try{let e=new URL(n);return X(e.hostname)?e.port||(e.protocol===`https:`?`443`:`80`):null}catch{return null}}function Q(e){try{let t=new URL(e.trim());return(t.protocol===`http:`||t.protocol===`https:`)&&X(t.hostname)}catch{return!1}}function pe({onDone:e}){let[t,n]=(0,L.useState)(``),[r,i]=(0,L.useState)(!1),a=t.trim(),o=!r&&Q(a),s=async()=>{i(!0);try{await h.post(`/api/loopback/callback`,{url:a}),m.success(`Sent to the waiting command`,{duration:2e3}),n(``),e()}catch(e){m.error(e.message,{duration:4e3})}finally{i(!1)}};return(0,J.jsxs)(`div`,{className:`shrink-0 border-t border-border px-3 py-3`,children:[(0,J.jsx)(`p`,{className:`pb-2 text-[11px] leading-snug text-text-secondary`,children:`Finished signing in and landed on a page that would not load? Paste that address here — the machine will deliver it to the command still waiting.`}),(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`input`,{value:t,onChange:e=>n(e.target.value),inputMode:`url`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,placeholder:`http://127.0.0.1:54132/oauth/callback?code=…`,"aria-label":`Callback address`,className:`h-11 min-w-0 flex-1 rounded-lg border border-border bg-surface px-3 font-mono text-xs text-foreground placeholder:text-text-subtle`}),(0,J.jsx)(`button`,{onClick:()=>void s(),disabled:!o,"aria-label":`Finish login`,className:`flex size-11 shrink-0 items-center justify-center rounded-lg bg-primary text-primary-foreground disabled:opacity-40 active:opacity-80 transition-opacity`,children:r?(0,J.jsx)(p,{className:`size-4 animate-spin`}):(0,J.jsx)(f,{className:`size-4`})})]}),a!==``&&!Q(a)&&(0,J.jsx)(`p`,{className:`pt-1.5 text-[11px] text-error`,children:`Needs to be the http://127.0.0.1:… address the sign-in redirected to.`})]})}function me({open:e,onClose:t,urls:n}){let r=async e=>{let n=await S(e);m[n?`success`:`error`](n?`Link copied`:`Could not copy link`,{duration:1500}),t()},i=[...new Set(n.map(Z).filter(e=>!!e))];return(0,J.jsxs)(C,{open:e,onClose:t,zIndex:70,className:`flex flex-col max-h-[70vh]`,children:[(0,J.jsx)(`div`,{className:`shrink-0 px-4 pb-2 text-xs font-medium text-text-secondary`,children:n.length>0?`Links in terminal (${n.length})`:`Links in terminal`}),(0,J.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto px-2 pb-2`,children:n.length===0?(0,J.jsxs)(`div`,{className:`flex flex-col items-center gap-2 px-4 py-8 text-center text-sm text-text-secondary`,children:[(0,J.jsx)(c,{className:`size-5 text-text-subtle`}),`No links found in the visible scrollback.`]}):n.map(e=>{let n=Z(e);return(0,J.jsxs)(`div`,{children:[(0,J.jsxs)(`div`,{className:`flex items-stretch gap-1`,children:[(0,J.jsxs)(`a`,{href:e,target:`_blank`,rel:`noreferrer noopener`,onClick:t,className:`flex min-h-11 flex-1 min-w-0 items-center gap-2 rounded-lg px-3 py-2 text-sm text-foreground active:bg-accent transition-colors`,children:[(0,J.jsx)(s,{className:`size-4 shrink-0 text-text-subtle`}),(0,J.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-left font-mono text-xs`,children:e})]}),(0,J.jsx)(`button`,{onClick:()=>void r(e),"aria-label":`Copy ${e}`,className:`flex size-11 shrink-0 items-center justify-center rounded-lg text-text-secondary active:bg-accent transition-colors`,children:(0,J.jsx)(d,{className:`size-4`})})]}),n&&(0,J.jsxs)(`p`,{className:`px-3 pb-2 text-[11px] leading-snug text-text-secondary`,children:[`Signing in here sends you back to port `,n,` `,(0,J.jsx)(`strong`,{children:`on the machine`}),`, not this device — so the terminal keeps waiting. Afterwards, paste the address bar below to finish it.`]})]},e)})}),i.length>0&&(0,J.jsx)(pe,{onDone:t})]})}var he=[{title:`Add to current chat`,newTab:!1,Icon:r},{title:`Add to new chat`,newTab:!0,Icon:l}],$=4;function ge(e){let t=e.replace(/^(?:[ \t]*\r?\n)+/,``).trimEnd();if(!t)return null;let n=A(t);return{label:`Terminal selection`,text:`Selected text from the terminal\n${n}\n${t}\n${n}`}}function _e(e){let{start:t,cell:n,screen:r,box:i,actions:a}=e,o=e.end.x===0&&e.end.y>t.y?{x:e.cols,y:e.end.y-1}:e.end,s=t.y-e.viewportY,c=o.y-e.viewportY;if(c<0||s>=e.rows)return null;let l=i.height-a.height,u=r.top+(Math.min(c,e.rows-1)+1)*n.height+$;if(u>l){let e=r.top+Math.max(s,0)*n.height-a.height-$;u=e>=0?e:l}let d=Math.min(r.left+o.x*n.width,i.width-a.width);return{left:Math.max(0,d),top:Math.max(0,u)}}function ve({terminal:e,projectName:t,touch:n}){let r=(0,L.useRef)(null),[i,a]=(0,L.useState)(!1),o=(0,L.useCallback)(()=>{let t=r.current,n=t?.offsetParent,i=e?.getSelectionPosition(),a=e?.dimensions?.css.cell,o=e?.element?.querySelector(`.xterm-screen`);if(!t||!n||!e||!i||!a||!o)return;let s=n.getBoundingClientRect(),c=o.getBoundingClientRect(),l=_e({start:i.start,end:i.end,viewportY:e.buffer.active.viewportY,rows:e.rows,cols:e.cols,cell:a,screen:{left:c.left-s.left,top:c.top-s.top},box:{width:s.width,height:s.height},actions:{width:t.offsetWidth,height:t.offsetHeight}});t.style.visibility=l?`visible`:`hidden`,l&&(t.style.transform=`translate(${Math.round(l.left)}px, ${Math.round(l.top)}px)`)},[e]);if((0,L.useEffect)(()=>{let t=e?.element;if(!e||!t)return;let n=()=>{a(!!e.getSelection().trim()),o()},r,i,s=()=>{r=void 0,clearTimeout(i),i=setTimeout(n,0)},c=()=>{r?.removeEventListener(`mouseup`,s,!0),r=t.ownerDocument,r.addEventListener(`mouseup`,s,{capture:!0,once:!0})};t.addEventListener(`mousedown`,c,!0);let l=[e.onSelectionChange(n),e.onRender(o)];return()=>{t.removeEventListener(`mousedown`,c,!0),r?.removeEventListener(`mouseup`,s,!0),clearTimeout(i),l.forEach(e=>e.dispose())}},[e,o]),(0,L.useLayoutEffect)(()=>{i&&o()},[i,o]),!i||!e)return null;let s=n=>{let r=ge(e.getSelection());r&&k({...r,projectName:t,newTab:n,asContext:!0}),e.clearSelection()};return(0,J.jsx)(`div`,{ref:r,role:`group`,"aria-label":`Add the selection to chat`,className:`invisible absolute left-0 top-0 z-10 flex max-w-full flex-wrap gap-1 rounded-md border border-border bg-surface p-0.5 shadow-md`,children:he.map(({title:e,newTab:t,Icon:r})=>(0,J.jsxs)(`button`,{type:`button`,onClick:()=>s(t),className:_(`flex items-center gap-1 whitespace-nowrap rounded bg-surface-elevated text-text-primary transition-colors hover:bg-primary hover:text-primary-foreground active:bg-primary active:text-primary-foreground`,n?`min-h-11 px-3 text-sm`:`px-2 py-0.5 text-xs`),children:[(0,J.jsx)(r,{size:n?16:12}),e]},e))})}var ye=(0,L.memo)(function({metadata:e,tabId:t}){let n=e?.sessionId??`new`,i=e?.projectName,a=e?.cwd,s=(0,L.useRef)(null),{connected:c,reconnecting:l,exited:u,shellReady:d,sendData:f,getSelection:p,terminal:h,getLastCommandOutput:g,getLastCommand:v,getBufferUrls:b,restart:x}=H({sessionId:n,projectName:i,cwd:a,containerRef:s,tabId:t}),[C,w]=(0,L.useState)(!1),[T,D]=(0,L.useState)(!1),[O,A]=(0,L.useState)(!1),j=y(e=>e.activeTabId),[M,N]=(0,L.useState)(0);(0,L.useEffect)(()=>{let e=()=>N(e=>e+1);return window.addEventListener(`ppm:onboarding-refresh`,e),()=>window.removeEventListener(`ppm:onboarding-refresh`,e)},[]),(0,L.useEffect)(()=>{if(!i||!t||j!==t||!c||!d||l||u)return;let e=!!s.current?.checkVisibility({checkOpacity:!0,checkVisibilityCSS:!0});e&&E({type:`terminal-ready`,projectName:i,tabId:t,visible:e})},[M,i,t,j,c,d,l,u]),W(s,T);let P=(0,L.useCallback)(()=>{(s.current?.querySelector(`.xterm-helper-textarea`))?.focus()},[]);q({tabId:t,metadata:e,shellReady:d,sendData:f,focusTerminal:P,containerRef:s}),(0,L.useEffect)(()=>{let e=s.current;if(!e||T)return;let t=()=>P();return e.addEventListener(`touchend`,t,{capture:!0}),()=>e.removeEventListener(`touchend`,t,{capture:!0})},[P,T]);let F=(0,L.useCallback)(e=>{if(P(),C&&e.length===1){let t=e.toLowerCase().charCodeAt(0)-96;t>=1&&t<=26&&f(String.fromCharCode(t)),w(!1);return}f(e)},[C,f,P]),I=(0,L.useCallback)(async()=>{let e=p(),t=e||g();if(!t.trim()){m(`Nothing to copy`,{duration:1500});return}let n=await S(t);m[n?`success`:`error`](n?e?`Selection copied`:`Last output copied`:`Could not copy`,{duration:1500})},[p,g]),R=(0,L.useCallback)(async()=>{try{let e=await navigator.clipboard.readText();e&&(f(e),P())}catch{m.error(`Clipboard blocked — paste with the keyboard instead`,{duration:2500})}},[f,P]),z=(0,L.useCallback)(()=>{let e=p(),t=e||g();if(!t.trim())return;let n=e?``:v();k({text:"```bash\n"+(n?`${n}\n${t}`:t)+"\n```",label:e?`Terminal selection`:`Terminal output`,projectName:i}),m.success(`Sent to chat`,{duration:1500})},[p,g,v,i]),B=typeof window<`u`&&`ontouchstart`in window;return(0,J.jsxs)(`div`,{"data-onboarding":`terminal`,className:`flex flex-col h-full min-h-0`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1 bg-surface border-b border-border text-xs`,children:[(0,J.jsx)(`span`,{className:_(`size-2 rounded-full`,u?`bg-error`:c?`bg-success`:l?`bg-warning`:`bg-error`)}),(0,J.jsx)(`span`,{className:`text-text-secondary`,children:u?`Process exited`:c?`Connected`:l?`Reconnecting...`:`Disconnected`}),u&&(0,J.jsxs)(`button`,{onClick:x,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-xs bg-surface-elevated text-text-primary hover:bg-primary hover:text-primary-foreground active:bg-primary active:text-primary-foreground transition-colors`,children:[(0,J.jsx)(o,{size:10}),`Restart`]}),(0,J.jsxs)(`button`,{onClick:z,title:`Send to Chat`,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-xs bg-surface-elevated text-text-primary hover:bg-primary hover:text-primary-foreground active:bg-primary active:text-primary-foreground transition-colors ml-auto`,children:[(0,J.jsx)(r,{size:10}),`Chat`]}),(0,J.jsx)(`span`,{className:`text-text-subtle font-mono`,children:n})]}),(0,J.jsxs)(`div`,{className:`relative flex-1 min-h-0 flex flex-col`,children:[(0,J.jsx)(`div`,{ref:s,onClick:T?void 0:P,className:_(`flex-1 min-h-0 bg-background p-1`,T&&`touch-none`)}),(0,J.jsx)(ve,{terminal:h,projectName:i,touch:B})]}),B&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(de,{ctrlMode:C,onToggleCtrl:()=>w(!C),selectMode:T,onToggleSelect:()=>D(!T),onKey:F,onCopy:()=>void I(),onPaste:()=>void R(),onSendToChat:z,onOpenLinks:()=>A(!0)}),(0,J.jsx)(me,{open:O,onClose:()=>A(!1),urls:O?b():[]})]})]})});export{ye as TerminalTab};
@@ -1,14 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/markdown-renderer-8Hef5MLx.js","assets/vendor-ui-CS1GvlOm.js","assets/rolldown-runtime-C5c2KzVm.js","assets/vendor-markdown-QKPNiWEd.js","assets/markdown-renderer-BH_CFPJw.js","assets/index-ItT-dTPV.js","assets/preload-helper-CM8YhcCa.js","assets/button-Br60hGkw.js","assets/utils-Bslrbb-G.js","assets/createLucideIcon-DBXq3G0e.js","assets/file-diff-lX1a7RLF.js","assets/git-commit-horizontal-BVihXafd.js","assets/api-client-OiA8Ida1.js","assets/react-PkBxFcos.js","assets/open-db-tabs-CkQe49j_.js","assets/panel-store-DmP16Fo0.js","assets/session-list-sync-triggers-DitiR5h1.js","assets/project-store-CEGoLMOl.js","assets/project-framework-store-Bi5dyHdx.js","assets/window-store-zJczRsv4.js","assets/explorer-model-BmgFEsj1.js","assets/db-types-9ac-eYxf.js","assets/settings-store-WeJyQVL8.js","assets/use-is-mobile-BXHbkfs9.js","assets/tab-store-nNzRNfVV.js","assets/use-db-driver-installed-BscdI-wS.js","assets/impexp-state-BWKOuRGj.js","assets/file-store-Bk1WYfdy.js","assets/sql-identifiers-DDISwQor.js","assets/db-explorer-store-BcLxq-X0.js","assets/window-pip-registry-DSoB7T3k.js","assets/onboarding-quick-orientation-DZYQekRt.js","assets/dialog-DOaEX6AK.js","assets/portal-container-context-BXAsDqrB.js","assets/icons-JMA45Ifw.js","assets/format-file-meta-C0LKHE3e.js","assets/fs-api-BQrIEcvo.js","assets/open-settings-DsGBn73g.js","assets/settings-categories-CcR9eL3x.js","assets/adaptive-context-menu-Cq7ynvIn.js","assets/context-menu-BoQ6lxte.js","assets/mobile-bottom-sheet-CGmmdp_5.js","assets/use-visual-viewport-CQ6-A0Dt.js","assets/dropdown-menu-DB3yyoVz.js","assets/input-CKGoVpYv.js","assets/scroll-area-6Am1KMiB.js","assets/start-ellipsis-rBh37k0n.js","assets/chat-preparation-cache-CRX9WAK5.js","assets/clipboard-D3XnL7CB.js","assets/file-icons-DpwcJLL4.js","assets/format-date-CSHaU2wN.js","assets/git-repo-store-BOYLnV67.js","assets/patch-tab-metadata-B-jH5svY.js","assets/ws-auth-cWeQ7_61.js","assets/apply-theme-ORrEdHKT.js","assets/resolve-theme-BqoL27BW.js","assets/index-DyYGWFVa.css","assets/image-gallery-BuxSgBug.js","assets/run-in-terminal-Bk9Bw7G1.js","assets/edit-diff-preview-D4EqC86X.js","assets/libesm-B6LsX5wH.js"])))=>i.map(i=>d[i]);
2
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import{$ as r,Gt as i,Hr as a,J as o,L as s,M as c,P as l,Sr as u,St as d,Tt as f,_n as p,_t as m,at as h,bn as g,ct as _,gt as v,in as y,jr as b,li as x,m as S,n as C,ti as w,tt as T,w as E,wt as D,xn as O,xr as k,xt as ee}from"./icons-JMA45Ifw.js";import{k as A}from"./api-client-OiA8Ida1.js";import{t as te}from"./react-PkBxFcos.js";import{t as j}from"./preload-helper-CM8YhcCa.js";import{n as M,t as N}from"./utils-Bslrbb-G.js";import{r as P,t as F}from"./panel-store-DmP16Fo0.js";import{c as I,t as L}from"./window-store-zJczRsv4.js";import{i as R}from"./project-store-CEGoLMOl.js";import{t as ne}from"./tab-store-nNzRNfVV.js";import{i as re,t as ie}from"./file-store-Bk1WYfdy.js";import{n as ae}from"./use-is-mobile-BXHbkfs9.js";import{r as oe}from"./clipboard-D3XnL7CB.js";import{n as se}from"./fs-api-BQrIEcvo.js";import{Kr as ce,ni as le,r as ue}from"./index-ItT-dTPV.js";import{a as de,i as fe,n as pe,r as me,t as he}from"./image-preview-geometry-CCq8rio7.js";import{t as ge}from"./agent-session-sheet-store-BoBrAw5i.js";import{t as _e}from"./libesm-B6LsX5wH.js";import{t as ve}from"./use-blob-url-D7ElNPnW.js";import{r as ye,t as be}from"./image-gallery-BuxSgBug.js";import{d as xe,l as Se,u as Ce}from"./design-canvas-check-Bo76Q6Qr.js";var we=new Set([`Write`,`Edit`,`MultiEdit`,`NotebookEdit`]),Te={create:3,write:2,notebook:2,edit:1};function z(e){return typeof e==`string`?e:``}function Ee(e,t){let n=0,r=0;for(let i of _e(e,t))i.added?n+=i.count??0:i.removed&&(r+=i.count??0);return{added:n,removed:r}}function De(e){return e&&/created successfully/i.test(e)?`create`:`write`}function Oe(e,t,n){switch(e){case`Write`:{let e=z(t.file_path);return e?{filePath:e,op:De(n),fragments:[{oldStr:``,newStr:z(t.content)}]}:null}case`Edit`:{let e=z(t.file_path);return e?{filePath:e,op:`edit`,fragments:[{oldStr:z(t.old_string),newStr:z(t.new_string)}]}:null}case`MultiEdit`:{let e=z(t.file_path);if(!e||!Array.isArray(t.edits))return null;let n=t.edits.filter(e=>!!e&&typeof e==`object`).map(e=>({oldStr:z(e.old_string),newStr:z(e.new_string)}));return n.length===0?null:{filePath:e,op:`edit`,fragments:n}}case`NotebookEdit`:{let e=z(t.notebook_path)||z(t.file_path);return e?{filePath:e,op:`notebook`,fragments:[{oldStr:``,newStr:z(t.new_source)}]}:null}default:return null}}function ke(e,t){if(e!==`Edit`&&e!==`Write`||!Array.isArray(t.files))return null;let n=[];for(let e of t.files){if(!e||typeof e!=`object`)continue;let t=e,r=z(t.file_path);r&&n.push({filePath:r,op:t.op===`add`?`create`:`edit`,fragments:[{oldStr:z(t.old_string),newStr:z(t.new_string)}]})}return n.length>0?n:null}function Ae(e,t){if(e){for(let n of e)if(n.type===`tool_result`&&n.toolUseId&&t.set(n.toolUseId,n.output??``),n.type===`tool_use`){let e=n.result;n.toolUseId&&e?.output!=null&&!t.has(n.toolUseId)&&t.set(n.toolUseId,e.output),Ae(n.children,t)}}}function je(e,t,n,r){if(e)for(let i of e){if(i.type!==`tool_use`||(i.children?.length&&je(i.children,!0,n,r),!we.has(i.tool)))continue;let e=i.input&&typeof i.input==`object`?i.input:null;if(!e)continue;let a=Oe(i.tool,e,i.toolUseId?r.get(i.toolUseId):void 0),o=ke(i.tool,e)??(a?[a]:[]);for(let e of o)Me(n,e,i.toolUseId,t)}}function Me(e,t,n,r){let i=e.get(t.filePath);i||(i={filePath:t.filePath,op:t.op,editCount:0,linesAdded:0,linesRemoved:0,edits:[],viaSubagent:!1},e.set(t.filePath,i)),Te[t.op]>Te[i.op]&&(i.op=t.op),r&&(i.viaSubagent=!0),t.fragments.forEach((e,t)=>{let{added:a,removed:o}=Ee(e.oldStr,e.newStr);i.linesAdded+=a,i.linesRemoved+=o,i.editCount+=1,i.edits.push({...e,toolUseId:n,editIndex:t,editRef:n?`${n}-${t}`:void 0,viaSubagent:r})})}function Ne(e){let t=new Map;for(let n of e)Ae(n.events,t);let n=new Map;for(let r of e)je(r.events,!1,n,t);return[...n.values()]}function Pe(e,t){let n=[];for(let r=t;r>=0&&e[r]?.role===`assistant`;r--)n.unshift(e[r]);return n}var Fe=new Set([`Bash`,`PowerShell`]),Ie=new WeakMap;function Le(e){let t=Ie.get(e);if(t)return t;let n=new Set,r=[],i=[],a=e=>{for(let t of e??[]){if(t.type===`tool_result`&&t.toolUseId&&i.push(t.toolUseId),t.type!==`tool_use`||(t.toolUseId&&t.result!=null&&i.push(t.toolUseId),a(t.children),Fe.has(t.tool)&&t.toolUseId&&r.push(t.toolUseId),!we.has(t.tool)))continue;let e=t.input&&typeof t.input==`object`?t.input:null;if(!e)continue;let o=Oe(t.tool,e),s=ke(t.tool,e)??(o?[o]:[]);for(let e of s)n.add(e.filePath);s.length>0&&t.toolUseId&&r.push(t.toolUseId)}};a(e.events);let o={paths:[...n],writeIds:r,resultIds:i};return Ie.set(e,o),o}function Re(e){let t=new Set,n=new Set,r=new Set;for(let i of e){let e=Le(i);for(let n of e.paths)t.add(n);for(let t of e.writeIds)n.add(t);for(let t of e.resultIds)r.add(t)}let i=0;for(let e of n)r.has(e)&&i++;return{paths:[...t],settled:i}}function B(e){return typeof e==`string`?e:``}function V(e){return`${e} step${e===1?``:`s`}`}function H(e,t){return e.length>t?e.slice(0,t)+`…`:e}function ze(e){if(e.type!==`tool_use`)return``;let t=e.tool,n=e.input&&typeof e.input==`object`?e.input:{};switch(t){case`Read`:case`Write`:case`Edit`:case`MultiEdit`:case`NotebookEdit`:{let e=B(n.notebook_path||n.file_path);return e?`${t} ${N(e)}`:t}case`Bash`:case`PowerShell`:return H(n.description?B(n.description):B(n.command),60)||t;case`Glob`:return`Glob ${B(n.pattern)}`;case`Grep`:return`Grep ${H(B(n.pattern),40)}`;case`WebSearch`:return`Search ${H(B(n.query),50)}`;case`WebFetch`:return`Fetch ${H(B(n.url),50)}`;case`ToolSearch`:return`Search ${H(B(n.query),50)}`;case`Agent`:case`Task`:{let e=typeof n.name==`string`&&n.name.trim()?n.name.trim():null,r=H(B(n.description||n.prompt),44);return e?r?`${e} · ${r}`:e:r||t}case`SendMessage`:return`Message ${H(B(n.to),30)}`.trim();case`TodoWrite`:return`Todo update`;case`AskUserQuestion`:return`Question`;case`ScheduleWakeup`:return`Scheduled wakeup`;case`TaskCreate`:return H(B(n.subject),60)||t;case`TaskUpdate`:return`Task #${B(n.taskId)} → ${B(n.status)}`;case`TaskStop`:return`Task #${B(n.taskId)} stopped`;case`ImageGen`:return`Image generation`;default:return t}}function Be(e){return e===`Agent`||e===`Task`||we.has(e)}function U(e){let t=[],n=[],r=new Set,i;return(e??[]).forEach((e,a)=>{if(e.type===`tool_use`){t.push(e.toolUseId??`idx:${a}`);let o=ze(e);if(o&&(i=o),Be(e.tool)){if(e.tool===`Agent`||e.tool===`Task`){let t=U(e.children);n.push({...e,children:t.kept,stepIds:t.stepIds,stepCount:t.stepIds.length,lastStep:t.lastStep})}else n.push(e);e.toolUseId&&r.add(e.toolUseId)}}else e.type===`tool_result`&&e.toolUseId&&r.has(e.toolUseId)&&n.push(e)}),{stepIds:t,lastStep:i,kept:n}}function Ve(e){let t=e.stepCount??e.stepIds?.length??U(e.children).stepIds.length;for(let n of e.children??[])n.type===`tool_use`&&(n.tool===`Agent`||n.tool===`Task`)&&(t+=Ve(n));return t}function He(e){let t=Ve(e);if(e.stepCount!=null)return{stepCount:t,lastStep:e.lastStep};let{lastStep:n}=U(e.children);return{stepCount:t,lastStep:n}}function Ue(e){try{return JSON.stringify(e).length}catch{return 0}}function We(e){let t=e.reduce((e,t)=>e+Ue(t),0),n=0;for(;t>262144&&n<e.length-1;)t-=Ue(e[n]),n++;return n>0?e.slice(n):e}function Ge(e,t,n){let r=t.toolUseId;if(r){let i=e.findIndex(e=>e.type===t.type&&e.toolUseId===r);if(i!==-1){let r=e[i].arrivalSeq,a=[...e];return a[i]=n==null?t:{...t,arrivalSeq:r},a}}let i=n==null?t:{...t,arrivalSeq:n},a=[...e,i];return We(a.length>200?a.slice(a.length-200):a)}function Ke(e,t){let n=e=>e.map((e,t)=>({ev:e,seq:e.arrivalSeq??t}));return[...n(e),...n(t)].sort((e,t)=>e.seq-t.seq).map(e=>e.ev)}function qe(e,t){if(e.type!==`tool_use`)return e;let n=e.stepIds,r=e.lastStep;if(t.type===`tool_use`){let e=t.toolUseId;(!e||!n?.includes(e))&&(n=[...n??[],e??`idx:${n?.length??0}`]);let i=ze(t);i&&(r=i)}let i=e.childSeq??0,a=e=>{let n=t.toolUseId,r=n?e.findIndex(e=>e.type===t.type&&e.toolUseId===n):-1;if(r!==-1){let n=e[r].arrivalSeq,i=[...e];return i[r]={...t,arrivalSeq:n},i}return[...e,{...t,arrivalSeq:i}]},o=e.children??[],s=e.recentChildren??[],c=t.type===`tool_use`&&Be(t.tool),l=e=>!!e&&o.some(t=>t.type===`tool_use`&&t.toolUseId===e),u=o,d=s;return c||t.type===`tool_result`&&l(t.toolUseId)?u=a(o):d=Ge(s,t,i),{...e,children:u,recentChildren:d,stepIds:n,stepCount:n?.length,lastStep:r,childSeq:i+1}}function Je(e){return e&&e.map(e=>{if(e.type!==`tool_use`||e.tool!==`Agent`&&e.tool!==`Task`||!e.transcriptAvailable)return e;let{stepIds:t,lastStep:n,kept:r}=U(e.children);return{...e,children:r,stepIds:t,stepCount:t.length,lastStep:n}})}function W(e,t){return t.kind===`card`?`${e}:${t.cardId}`:`${e}:${t.teamName}:${t.memberName}`}var G=te(()=>({entries:{}}));function Ye(e,t){G.setState(n=>({entries:{...n.entries,[e]:t}}))}function Xe(){let e=new Set;for(let t of Object.values(L.getState().windows)){if(t.kind!==`agent-session`)continue;let n=t.payload;typeof n?.sessionId==`string`&&n.source&&e.add(W(n.sessionId,n.source))}let t=ge.getState().payload;return t&&e.add(W(t.sessionId,t.source)),e}function Ze(){let e=Xe();G.setState(t=>{let n={},r=!1;for(let[i,a]of Object.entries(t.entries))e.has(i)?n[i]=a:r=!0;return r?{entries:n}:t})}L.subscribe(Ze),ge.subscribe(Ze);var K=e(t(),1),q=n(),Qe=(0,K.lazy)(()=>j(()=>import(`./markdown-renderer-8Hef5MLx.js`).then(e=>({default:e.MarkdownRenderer})),__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,47,48,49,50,51,52,53,54,55,56,57,58])));function J({content:e,maxHeight:t=`max-h-48`}){return(0,q.jsx)(K.Suspense,{fallback:(0,q.jsx)(`div`,{className:`animate-pulse h-4 bg-muted rounded`}),children:(0,q.jsx)(Qe,{content:e,className:`text-text-secondary overflow-auto ${t}`})})}var $e={task_assignment:{label:`task`,className:`bg-primary/20 text-primary`},idle_notification:{label:`idle`,className:`bg-warning/20 text-warning`},completion:{label:`done`,className:`bg-success/20 text-success`},shutdown_request:{label:`shutdown`,className:`bg-error/20 text-error`},shutdown_approved:{label:`shutdown ✓`,className:`bg-text-3/20 text-text-3`},shutdown_response:{label:`shutdown reply`,className:`bg-text-3/20 text-text-3`},plan_approval_request:{label:`plan review`,className:`bg-primary/20 text-primary`},plan_approval_response:{label:`plan reply`,className:`bg-primary/20 text-primary`}},et=new Set([`to`,`message`,`summary`,`notify_when_idle`,`recipient`,`content`,`type`]),Y=e=>typeof e==`string`?e:e==null?``:String(e);function tt(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e;return typeof t.type!=`string`||!t.type?null:{type:t.type,request_id:typeof t.request_id==`string`?t.request_id:void 0,approve:typeof t.approve==`boolean`?t.approve:void 0,reason:typeof t.reason==`string`?t.reason:void 0,feedback:typeof t.feedback==`string`?t.feedback:void 0}}function nt(e){let t=e.trim();if(!t.startsWith(`{`))return null;try{return tt(JSON.parse(t))}catch{return null}}function rt(e){let t=Y(e.to)||Y(e.recipient),n=e.message??e.content,r=tt(n)??nt(Y(n)),i=r?``:Y(n),a=Y(e.type),o=r?.type||(a&&a!==`message`?a:`message`),s=Y(e.summary).trim(),c=Object.entries(e).filter(([e])=>!et.has(e)).map(([e,t])=>({key:e,value:typeof t==`string`?t:JSON.stringify(t)??``}));return{to:t,summary:s||void 0,text:i,firstLine:i.split(`
3
- `).map(e=>e.trim()).find(e=>e.length>0)??``,protocol:r??void 0,kind:o,notifyWhenIdle:e.notify_when_idle===!0,extras:c}}function it(e){if(!e)return null;let t;try{t=JSON.parse(e)}catch{return null}if(Array.isArray(t)){let e=Y(t.find(e=>e&&typeof e==`object`&&e.type===`text`)?.text);if(!e)return null;try{t=JSON.parse(e)}catch{return null}}if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=t;if(typeof n.success!=`boolean`)return null;let r=n.pin&&typeof n.pin==`object`?n.pin:null;return{ok:n.success,detail:Y(n.message)||Y(n.error)||void 0,peer:r&&Y(r.name)||void 0,ref:r&&Y(r.ref)||void 0}}function at({kind:e}){if(e===`message`)return null;let t=$e[e];return(0,q.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] ${t?.className??`bg-panel-2 text-text-3`}`,children:t?.label??e})}function ot({name:e,input:t}){let n=rt(t),r=n.summary||n.firstLine||(n.protocol?n.kind:``),i=r.length>72?`${r.slice(0,72)}…`:r;return(0,q.jsxs)(q.Fragment,{children:[e,` `,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[(0,q.jsx)(S,{className:`size-3 inline`}),` `,n.to||`unknown`,i?` · ${i}`:``]}),n.notifyWhenIdle&&(0,q.jsx)(T,{className:`size-3 inline ml-1 text-text-3`})]})}function st({input:e}){let t=rt(e);return(0,q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,q.jsx)(`span`,{className:`text-text-subtle`,children:`To`}),(0,q.jsx)(`span`,{className:`font-medium text-text-primary`,children:t.to||`unknown`}),(0,q.jsx)(at,{kind:t.kind}),t.notifyWhenIdle&&(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] bg-panel-2 text-text-3`,children:[(0,q.jsx)(T,{className:`size-3`}),` notify when idle`]})]}),!!t.text&&(0,q.jsx)(J,{content:t.text,maxHeight:`max-h-40`}),t.protocol&&(0,q.jsxs)(`div`,{className:`space-y-0.5 text-text-secondary`,children:[t.protocol.approve!=null&&(0,q.jsxs)(`p`,{children:[t.protocol.approve?`Approved`:`Rejected`,t.protocol.request_id?(0,q.jsxs)(`span`,{className:`text-text-subtle font-mono`,children:[` · `,t.protocol.request_id]}):null]}),!!t.protocol.reason&&(0,q.jsx)(`p`,{className:`text-text-subtle`,children:t.protocol.reason}),!!t.protocol.feedback&&(0,q.jsx)(`p`,{className:`text-text-subtle`,children:t.protocol.feedback})]}),t.extras.length>0&&(0,q.jsx)(`div`,{className:`space-y-0.5`,children:t.extras.map(e=>(0,q.jsxs)(`p`,{className:`text-text-subtle`,children:[(0,q.jsx)(`span`,{className:`font-mono`,children:e.key}),`: `,e.value]},e.key))})]})}function ct({output:e}){let[t,n]=(0,K.useState)(!1),r=it(e);return r?(0,q.jsxs)(`div`,{className:`border-t border-border pt-1.5 space-y-1`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:[r.ok?(0,q.jsx)(c,{className:`size-3 text-success shrink-0`}):(0,q.jsx)(x,{className:`size-3 text-error shrink-0`}),(0,q.jsx)(`span`,{className:r.ok?`text-success`:`text-error`,children:r.ok?`Delivered`:`Not delivered`}),!!r.detail&&(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[`· `,r.detail]}),!!r.ref&&(0,q.jsxs)(`span`,{className:`text-text-3 font-mono text-[10px]`,children:[`[`,r.ref,`]`]})]}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>n(!t),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[(0,q.jsx)(h,{className:`size-3`}),t?`Hide`:`Show`,` raw`]}),t&&(0,q.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono max-h-40 whitespace-pre-wrap break-all text-[10px]`,children:e})]}):null}var lt=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.webp`,`.bmp`,`.avif`,`.ico`]);function ut(e){let t=e.lastIndexOf(`.`);return t===-1?!1:lt.has(e.slice(t).toLowerCase())}var dt=/^\[image(?: · [\d.]+(?:B|KB|MB))?\]$/;function ft(e){return dt.test(e)}function pt(e){if(!e.startsWith(`[`))return!1;let t;try{t=JSON.parse(e)}catch{return!1}return Array.isArray(t)?t.some(e=>{let t=e;return t?.type===`text`&&typeof t.text==`string`&&dt.test(t.text)}):!1}var mt=`Async agent launched successfully`;function ht(e){return!!e&&e.includes(mt)}var gt=`text-[var(--img-meta-label)] @max-[470px]:hidden`,_t=[`60%`,`45%`,`80%`];function vt({aspect:e,actions:t}){return(0,q.jsxs)(`div`,{className:`grid grid-cols-[132px_1fr] items-start gap-[14px] overflow-hidden rounded-lg border border-border bg-panel p-[14px] @max-[470px]:grid-cols-[64px_1fr] @max-[470px]:gap-[11px] @max-[470px]:p-[11px]`,children:[(0,q.jsx)(`div`,{className:`img-skeleton rounded-lg`,style:{aspectRatio:e}}),(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-[9px]`,children:[(0,q.jsx)(`div`,{className:`img-skeleton h-[13px] w-2/5 rounded @max-[470px]:hidden`}),(0,q.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-[14px] gap-y-[4px] font-mono text-[11.5px] @max-[470px]:grid-cols-[1fr]`,children:[`dimensions`,`size`,`path`].map((e,t)=>(0,q.jsxs)(K.Fragment,{children:[(0,q.jsx)(`dt`,{className:gt,children:e}),(0,q.jsx)(`dd`,{className:`flex items-center`,children:(0,q.jsx)(`span`,{className:`img-skeleton h-[11px] rounded`,style:{width:_t[t]}})})]},e))}),t]})]})}function yt({code:e,onRetry:t}){return(0,q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-border bg-panel px-2.5 py-2 font-mono text-[12px] text-text-2`,children:[(0,q.jsx)(C,{className:`size-3 shrink-0`}),(0,q.jsxs)(`span`,{className:`truncate`,children:[`preview unavailable`,e?` · ${e}`:``]}),(0,q.jsx)(`button`,{type:`button`,onClick:t,className:`ml-auto shrink-0 text-accent`,children:`retry`})]})}var bt=4/5,X=`text-[var(--img-meta-label)] @max-[470px]:hidden`,Z=`truncate text-text @max-[470px]:text-text-2`,xt=`h-[30px] @max-[470px]:h-[36px] shrink-0 rounded-[7px] px-[9px] font-mono text-[11.5px] text-text-2 bg-[var(--img-ghost)] border border-[var(--img-ghost-border)] backdrop-blur-[6px] transition-colors can-hover:hover:bg-[var(--img-ghost-hover)] can-hover:hover:border-[var(--img-ghost-hover-border)] can-hover:hover:text-text`;function St({filePath:e,projectName:t}){let[n,r]=(0,K.useState)(0),{blobUrl:i,blob:a,error:o,errorCode:s}=ve(e,t,void 0,n),[c,l]=(0,K.useState)(()=>fe(e)),[u,d]=(0,K.useState)(!1),[f,p]=(0,K.useState)(!1),m=ue(e=>e.open),{openTab:h}=ne(le(e=>({openTab:e.openTab}))),g=N(e);(0,K.useEffect)(()=>{if(!f)return;let e=setTimeout(()=>p(!1),1200);return()=>clearTimeout(e)},[f]);let _=t=>{let n={w:t.naturalWidth,h:t.naturalHeight};if(!n.w||!n.h)return d(!0);he(e,n),l(n)},v=()=>{d(!1),r(e=>e+1)};if(o||u)return(0,q.jsx)(`div`,{className:`border-t border-border pt-1.5`,children:(0,q.jsx)(yt,{code:u?void 0:s??void 0,onRetry:v})});let y=c?de(c,132):null,b=y?.aspect??bt,x=(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-[6px]`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:S,className:xt,children:[(0,q.jsx)(`span`,{className:`@max-[470px]:hidden`,children:`open in editor`}),(0,q.jsx)(`span`,{className:`hidden @max-[470px]:inline`,children:`open`})]}),(0,q.jsx)(`button`,{type:`button`,onClick:C,className:xt,children:f?`copied`:`copy path`}),(0,q.jsx)(`button`,{type:`button`,onClick:w,className:xt,children:`full size`})]});function S(){t&&h({type:`editor`,title:g,metadata:{filePath:e,projectName:t},projectId:t,closable:!0})}function C(){oe(e).then(()=>p(!0))}function w(e){i&&m(i,g,ye(e.currentTarget))}if(!i||!y||!c)return(0,q.jsxs)(`div`,{className:`@container border-t border-border pt-1.5`,children:[i&&(0,q.jsx)(`img`,{src:i,alt:``,className:`hidden`,onLoad:e=>_(e.currentTarget),onError:()=>d(!0)}),(0,q.jsx)(vt,{aspect:b,actions:x})]});let T=(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{className:X,children:`dimensions`}),(0,q.jsx)(`dd`,{className:Z,children:pe(c,y.fit)}),a&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{className:X,children:`size`}),(0,q.jsxs)(`dd`,{className:Z,children:[me(a.size),a.type?` · ${a.type}`:``]})]}),(0,q.jsx)(`dt`,{className:X,children:`path`}),(0,q.jsx)(`dd`,{dir:`rtl`,className:`${Z} text-left`,children:e})]}),E=(0,q.jsx)(`img`,{src:i,alt:g,[be]:``,onLoad:e=>_(e.currentTarget),onError:()=>d(!0),className:y.fit===`cover`?`size-full object-cover`:y.fit===`contain`?`size-full object-contain`:`max-h-full max-w-full`});return(0,q.jsx)(`div`,{className:`@container border-t border-border pt-1.5`,children:(0,q.jsxs)(`div`,{className:`relative overflow-hidden rounded-lg border border-border p-[14px] @max-[470px]:p-[11px]`,children:[(0,q.jsx)(`img`,{"aria-hidden":`true`,alt:``,src:i,className:`absolute inset-0 size-full object-cover`,style:{filter:`var(--img-backdrop)`,transform:`scale(1.3)`}}),(0,q.jsx)(`div`,{className:`absolute inset-0`,style:{background:`var(--img-veil)`}}),y.variant===`band`?(0,q.jsxs)(`div`,{className:`relative grid gap-[11px]`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:w,title:`Open ${g}`,className:`img-checkerboard w-full cursor-zoom-in overflow-hidden rounded-lg border border-[var(--img-plate-border)]`,style:{aspectRatio:y.aspect},children:E}),(0,q.jsx)(`dl`,{className:`grid grid-cols-[auto_auto_1fr] gap-x-[18px] font-mono text-[11.5px] [&_dt]:hidden`,children:T}),x]}):(0,q.jsxs)(`div`,{className:`relative grid grid-cols-[132px_1fr] items-start gap-[14px] @max-[470px]:grid-cols-[64px_1fr] @max-[470px]:gap-[11px]`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:w,title:`Open ${g}`,className:`cursor-zoom-in overflow-hidden rounded-lg border border-[var(--img-plate-border)] bg-[var(--img-plate)] shadow-[var(--img-plate-shadow)] ${y.fit===`cover`?``:`img-checkerboard flex items-center justify-center`}`,style:{aspectRatio:y.aspect},children:E}),(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-[9px]`,children:[(0,q.jsx)(`p`,{className:`truncate text-[13px] font-semibold text-text @max-[470px]:hidden`,children:g}),(0,q.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-[14px] gap-y-[4px] font-mono text-[11.5px] @max-[470px]:grid-cols-[1fr]`,children:T}),x]})]})]})})}var Ct=/^(\/|[A-Za-z]:[/\\])/;function wt(e,t,n){if(e.type!==`editor`)return!1;let r=e.metadata??{};return r.viewerKey||r.isUntitled||r.inlineContent!=null||r.filePath!==t?!1:Ct.test(t)||r.projectName===n}function Tt(e){let{grid:t,panels:n,focusedPanelId:r,sessionId:i}=e,a=t.flat().filter(e=>n[e]);if(a.length===0)return null;let o=a.find(e=>n[e].tabs.some(e=>P(e)===i))??null,s=Et(a,o,e);if(e.mobile)return s?{kind:`focus`,...s}:{kind:`open`,panelId:a[0],split:!1};if(o===null)return s?{kind:`focus`,...s}:{kind:`open`,panelId:a.includes(r)?r:a[0],split:!1};let c=n[o],l=c.tabs.some(e=>e.id===c.activeTabId&&P(e)===i),u=Dt(t,o,r,a);return s?s.panelId!==o||!l?{kind:`focus`,...s}:{kind:`move`,tabId:s.tabId,fromPanelId:o,toPanelId:u}:u?{kind:`open`,panelId:u,split:!1}:{kind:`open`,panelId:o,split:!0}}function Et(e,t,n){let r=[...e.filter(e=>e!==t),...t?[t]:[]];for(let e of r){let t=n.panels[e].tabs.find(n.isTarget);if(t)return{tabId:t.id,panelId:e}}return null}function Dt(e,t,n,r){if(n!==t&&r.includes(n))return n;let i=e.find(e=>e.includes(t))??[],a=i.indexOf(t);return[...i.slice(a+1),...i.slice(0,a).reverse(),...e.filter(e=>e!==i).flat()].find(e=>e!==t&&r.includes(e))??null}var Ot=12e3,kt=1500,At=e=>e instanceof Error?e.message:String(e);function jt(e){if(!e||F.getState().currentProject===e)return;let t=R.getState().projects.find(t=>t.name===e);t&&(R.getState().setActiveProject(t),F.getState().switchProject(e))}function Mt(e,t){jt(t.projectName);let n=F.getState(),r=Tt({grid:n.grid,panels:n.panels,focusedPanelId:n.focusedPanelId,mobile:n.isMobile(),sessionId:t.sessionId,isTarget:t=>wt(t,e.filePath,e.projectName)});if(!r)throw Error(`PPM has no panel to open the tab in`);let i=Date.now(),a=e.line?`code`:e.tool===`open_preview`?`preview`:void 0,o={...e.line?{lineNumber:e.line,endLine:void 0,revealAt:i}:{},...a?{aiView:a,aiOpenAt:i}:{}};if(r.kind===`open`){let t={filePath:e.filePath,...e.projectName?{projectName:e.projectName}:{},...o},i=Ce(e.projectName??void 0,e.filePath),a=Se(i),s=n.openTab({type:`editor`,title:N(e.filePath),projectId:e.projectName,metadata:t,closable:!0},r.panelId);if(!s)throw Error(`PPM could not open the tab`);return r.split&&n.splitPanel(`right`,s,r.panelId),{tabId:s,previewKey:i,before:a}}let s=r.kind===`focus`?r.panelId:r.fromPanelId,c={...n.panels[s]?.tabs.find(e=>e.id===r.tabId)?.metadata,...o},l=Ce(c.projectName,String(c.filePath??e.filePath)),u=Se(l);return n.updateTab(r.tabId,{metadata:c}),r.kind===`focus`?n.setActiveTab(r.tabId,r.panelId):r.toPanelId?n.moveTab(r.tabId,s,r.toPanelId):n.splitPanel(`right`,r.tabId,s)||n.setActiveTab(r.tabId,s),{tabId:r.tabId,previewKey:l,before:u}}async function Nt(e,t,n){let r=t=>{let r={type:`tab_open_result`,requestId:e.requestId,...t};n(JSON.stringify(r))},i;try{i=Mt({tool:e.tool,filePath:e.filePath,projectName:e.projectName,line:e.line},t)}catch(e){r({opened:!1,error:At(e)});return}if(!e.check){r({opened:!0});return}try{let t=await xe(i.previewKey,i.before,Ot);if(!t){r({opened:!0,error:`the page did not start loading`});return}await new Promise(e=>setTimeout(e,kt));let n=F.getState().isMobile()?`Phone`:`Desktop`;r({opened:!0,report:await t.check({screenshot:e.check.screenshot,frame:n})})}catch(e){r({opened:!0,error:At(e)})}}async function Pt(e,t){let n=t?R.getState().projects.find(e=>e.name===t)?.path:void 0,r=e.path.trim(),i=/^(\/|[a-z]:[/\\]|~(?:[/\\]|$))/i.test(r);if(!i&&!n)throw Error(`this chat has no project folder`);let a=await se.stat(i?r:ie(n,r));if(a.kind===`directory`)throw Error(`${r} is a folder`);let o=n?re(n,a.path):null;return o?{tool:e.tool,filePath:o,projectName:t,line:e.line}:{tool:e.tool,filePath:a.path,projectName:null,line:e.line}}var Ft=`open_file`,It=`open_preview`,Lt=`ppm-tabs`;`${Lt}${Ft}`,`${Lt}${It}`;var Rt=RegExp(`^(?:mcp__${Lt}__|ppm_tabs:)(${Ft}|${It})$`),zt=/^\[image(?: [^\]\s]+)?\]$/,Bt=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function Vt(e,t){let n=Rt.exec(e)?.[1];if(!n||!Bt(t))return null;let r=`arguments`in t?t.arguments:t;if(!Bt(r)||typeof r.path!=`string`||!r.path.trim())return null;let i=r.line,a=n===`open_file`&&typeof i==`number`&&Number.isInteger(i)&&i>=1&&i<=1e7;return{tool:n,path:r.path,...a?{line:i}:{}}}function Ht(e){let t=()=>e.split(`
4
- `).filter(e=>!zt.test(e)).join(`
5
- `).trimEnd();if(!e.startsWith(`[`))return t();try{let n=JSON.parse(e);return Array.isArray(n)?n.filter(e=>Bt(e)&&e.type===`text`&&typeof e.text==`string`).map(e=>e.text).filter(e=>!ft(e)).join(`
6
-
7
- `):t()}catch{return t()}}function Ut(e){let t=e.split(`
8
- `)[1]??``;if(t.startsWith(`No layout problems or runtime errors were found`))return 0;let n=/^(\d+) problems? found\b/.exec(t);return n?Number(n[1]):null}function Wt(e){return e===`codex`?`codex`:`claude`}var Gt=(0,K.createContext)(null);function Kt(){return(0,K.useContext)(Gt)}function qt({value:e,children:t}){return(0,K.createElement)(Gt.Provider,{value:e},t)}function Jt({call:e,toolUseId:t,output:n,isError:r,done:i,projectName:a}){let[o,u]=(0,K.useState)(!1),d=Kt(),f=n===void 0?``:Ht(n),p=e.tool===`open_preview`&&!r?Ut(f):null,h=N(e.path),g=e.tool===`open_preview`?m:ee,_=async()=>{let t=d?.projectName||a;try{Mt(await Pt(e,t),{sessionId:d?.sessionId??``,projectName:t})}catch(e){A.error(`Could not open ${h}`,{description:e instanceof Error?e.message:String(e)})}};return(0,q.jsxs)(`div`,{"data-tool-ref":t,className:`rounded-[11px] border border-border overflow-hidden text-xs bg-panel`,children:[(0,q.jsxs)(`div`,{className:`flex items-center min-w-0`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>u(!o),"aria-expanded":o,className:`flex items-center gap-2.5 px-2.5 py-2 flex-1 min-w-0 text-left hover:bg-panel-2/40 transition-colors max-md:min-h-11`,children:[(0,q.jsx)(`span`,{className:`inline-flex items-center justify-center size-6 rounded-[7px] shrink-0 bg-info/15 text-info`,children:(0,q.jsx)(g,{className:`size-3.5`})}),(0,q.jsxs)(`span`,{className:`truncate text-text font-medium`,children:[e.tool===`open_preview`?`Preview`:`Opened`,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[` · `,h,e.line?`:${e.line}`:``]})]}),(0,q.jsxs)(`span`,{className:`ml-auto flex items-center gap-2 shrink-0`,children:[p!==null&&(0,q.jsx)(`span`,{className:`text-[10px] ${p>0?`text-warning`:`text-text-3`}`,children:p===0?`no problems`:`${p} ${p===1?`problem`:`problems`}`}),r?(0,q.jsx)(x,{className:`size-3.5 text-error`}):i?(0,q.jsx)(c,{className:`size-3.5 text-success`}):(0,q.jsx)(O,{className:`size-3.5 text-primary animate-spin`}),o?(0,q.jsx)(l,{className:`size-3 text-text-3`}):(0,q.jsx)(s,{className:`size-3 text-text-3`})]})]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>void _(),title:`Open ${h} in a tab`,className:`shrink-0 mr-1 px-2.5 h-7 rounded-md text-primary font-medium hover:bg-accent-wash transition-colors max-md:h-11 max-md:min-w-11`,children:`Open`})]}),o&&(0,q.jsxs)(`div`,{className:`px-2.5 pb-2 select-text`,children:[(0,q.jsx)(`p`,{className:`text-text-subtle font-mono break-all`,children:e.path}),f&&(0,q.jsx)(`pre`,{className:`mt-1.5 border-t border-border pt-1.5 max-h-60 overflow-auto whitespace-pre-wrap break-words text-text-subtle font-mono`,children:f})]})]})}function Yt({handle:e,description:t,stepCount:n,lastStep:r,status:i,bgRunning:a,onOpen:o}){let l=ce(),u=i===`error`?x:i===`done`?c:O,d=i===`error`?`text-error`:i===`done`?`text-success`:`text-primary animate-spin`;return(0,q.jsxs)(`button`,{type:`button`,onClick:o,className:M(`flex w-full items-center gap-2.5 rounded-[11px] border border-border bg-panel px-2.5 text-left text-xs`,`transition-colors hover:bg-panel-2/40`,l?`min-h-[44px] py-2`:`py-2`),title:e?`Open ${e}'s session`:`Open agent session`,children:[(0,q.jsx)(`span`,{className:M(`inline-flex items-center justify-center size-6 rounded-[7px] shrink-0`,e?`bg-accent-2/15 text-accent-2`:`bg-accent-wash text-primary`),children:e?(0,q.jsx)(w,{className:`size-3.5`}):(0,q.jsx)(E,{className:`size-3.5`})}),(0,q.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[e?(0,q.jsx)(`span`,{className:`font-medium text-text-primary`,children:e}):(0,q.jsx)(`span`,{className:`font-medium text-text`,children:t||`Agent`}),!!r&&(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[` · `,r]})]}),(0,q.jsxs)(`span`,{className:`ml-auto flex items-center gap-2 shrink-0 text-text-3`,children:[a&&(0,q.jsx)(`span`,{className:`text-[10px] text-primary`,children:`running…`}),n>0&&(0,q.jsx)(`span`,{className:`font-mono text-[10px]`,children:V(n)}),(0,q.jsx)(u,{className:M(`size-3.5`,d)}),(0,q.jsx)(s,{className:`size-3`})]})]})}function Xt(e,t){let n=e;return typeof n?.sessionId!=`string`||!n.source?!1:W(n.sessionId,n.source)===W(t.sessionId,t.source)}function Zt(){let e=ae(),t=ge(e=>e.open);return(0,K.useCallback)((n,r)=>{if(!n.sessionId)return;if(r&&Ye(W(n.sessionId,n.source),r),e){t(n);return}let i=L.getState(),a=n,o=Object.values(i.windows),s=o.find(e=>e.kind===`agent-session`&&Xt(e.payload,n));if(s){i.focus(s.id);return}if(o.length>=8){let e=o.filter(e=>e.kind===`agent-session`).sort((e,t)=>e.rank-t.rank);if(e.length===0){A.error(`Too many windows open`,{description:`Close one to open this session.`});return}i.close(e[0].id)}let c=I(Object.values(L.getState().windows).map(e=>e.rect),L.getState().bounds);L.getState().open(`agent-session`,a,c)},[e,t])}function Q(e,t){if(e!==`Agent`&&e!==`Task`)return null;let n=t.name;return typeof n==`string`&&n.trim()?n.trim():null}function Qt(e,t,n=!1){if(t&&(e===`Bash`||e===`PowerShell`))return{Icon:a,cls:`bg-error/15 text-error`};if(n)return{Icon:w,cls:`bg-accent-2/15 text-accent-2`};switch(e){case`Read`:case`Glob`:case`LS`:return{Icon:f,cls:`bg-accent-wash text-primary`};case`Grep`:case`Search`:case`WebSearch`:case`ToolSearch`:return{Icon:k,cls:`bg-accent-wash text-primary`};case`WebFetch`:case`Fetch`:return{Icon:i,cls:`bg-info/15 text-info`};case`Edit`:case`MultiEdit`:case`NotebookEdit`:return{Icon:d,cls:`bg-accent-2/15 text-accent-2`};case`Write`:return{Icon:D,cls:`bg-success/15 text-success`};case`Bash`:case`PowerShell`:return{Icon:a,cls:`bg-panel-2 text-text-2`};case`TodoWrite`:return{Icon:p,cls:`bg-warning/15 text-warning`};case`Task`:case`Agent`:return{Icon:E,cls:`bg-accent-wash text-primary`};case`SendMessage`:return{Icon:u,cls:`bg-info/15 text-info`};case`AskUserQuestion`:return{Icon:o,cls:`bg-accent-wash text-primary`};case`ExitPlanMode`:return{Icon:r,cls:`bg-accent-wash text-primary`};case`Skill`:return{Icon:b,cls:`bg-accent-2/15 text-accent-2`};case`ImageGen`:return{Icon:y,cls:`bg-accent-2/15 text-accent-2`};default:return{Icon:h,cls:`bg-panel-2 text-text-2`}}}function $t(e){let t=e.type===`approval_request`;return{toolName:e.type===`tool_use`?e.tool:t?e.tool??`Tool`:`Tool`,input:e.type===`tool_use`?e.input:t?e.input??{}:{}}}var en=new Set([`Read`,`ImageGen`]);function tn(e){if(e.type!==`tool_use`||!en.has(e.tool))return null;let t=e.input?.file_path;return typeof t!=`string`||!/^(\/|[A-Za-z]:[/\\])/.test(t)?null:ut(t)?t:null}function nn({tool:e,result:t,completed:n,projectName:r,bashPartialOutput:i,variant:a=`chat`}){let[o,u]=(0,K.useState)(()=>{let n=(e.type,e.tool),r=t?.type===`tool_result`&&!!t.isError;return(n===`Edit`||n===`MultiEdit`)&&!r?!0:!!tn(e)}),d=Zt(),f=Kt();if(e.type===`error`)return(0,q.jsxs)(`div`,{className:`flex items-center gap-2 rounded bg-error/10 border border-error/20 px-2 py-1.5 text-xs text-error`,children:[(0,q.jsx)(C,{className:`size-3`}),(0,q.jsx)(`span`,{children:e.message})]});let{toolName:p,input:m}=$t(e),h=t?.type===`tool_result`,g=h&&!!t.isError,_=h&&typeof t.exitCode==`number`?t.exitCode:void 0,v=p===`AskUserQuestion`&&!!m?.answers,y=e.type===`approval_request`&&e.approved!=null,b=(p===`Agent`||p===`Task`)&&e.type===`tool_use`,S=b?e.children:void 0,w=S&&S.length>0,T=b&&e.type===`tool_use`?e.bgStatus:void 0,E=b&&(T!=null||h&&!g&&ht(String(t.output??``)))&&T==null,D=T===`failed`||T===`stopped`,k=E?!1:h||v||y||n,ee=[`Edit`,`MultiEdit`,`Write`,`NotebookEdit`].includes(p),A=tn(e),te=h&&pt(String(t.output??``)),j=!!A,M=e.type===`tool_use`?e.toolUseId:void 0,N=e.type===`tool_use`?Vt(p,m):null;if(N)return(0,q.jsx)(Jt,{call:N,toolUseId:M,output:h?String(t.output??``):void 0,isError:g,done:!!k,projectName:r});if(b&&a===`chat`&&e.type===`tool_use`){let t=Q(p,m),n=t?``:$(String(m.description??m.prompt??``),60),{stepCount:i,lastStep:a}=He(e),o=g||D?`error`:k?`done`:`running`,s=M??``,c=f??{projectName:r??``,providerId:Wt(void 0),sessionId:`local:${s||`card`}`},l=Ke(e.children??[],e.recentChildren??[]);return(0,q.jsx)(Yt,{handle:t,description:n,stepCount:i,lastStep:a,status:o,bgRunning:E,onOpen:()=>d({projectName:c.projectName,providerId:c.providerId,sessionId:c.sessionId,source:{kind:`card`,cardId:s},title:t?`Session — ${t}`:n||`Agent session`,prompt:String(m.prompt??m.description??``)},l)})}let P=(p===`Bash`||p===`PowerShell`)&&!h&&M?i?.current?.get(M):void 0,F=!!P;(0,K.useEffect)(()=>{F&&!o&&u(!0)},[F]);let I=(0,K.useRef)(!1);(0,K.useEffect)(()=>{g&&(p===`Edit`||p===`MultiEdit`)&&!I.current&&(I.current=!0,u(!1))},[g,p]);let{Icon:L,cls:R}=Qt(p,g,!!Q(p,m)),ne=p===`AskUserQuestion`||p===`ExitPlanMode`||b;return(0,q.jsxs)(`div`,{"data-tool-ref":M,className:`rounded-[11px] border overflow-hidden text-xs bg-panel ${ne?`border-accent-wash-border`:`border-border`}`,children:[(0,q.jsxs)(`button`,{onClick:()=>u(!o),className:`flex items-center gap-2.5 px-2.5 py-2 w-full text-left hover:bg-panel-2/40 transition-colors min-w-0`,children:[(0,q.jsx)(`span`,{className:`inline-flex items-center justify-center size-6 rounded-[7px] shrink-0 ${R}`,children:(0,q.jsx)(L,{className:`size-3.5`})}),(0,q.jsx)(`span`,{className:`truncate text-text font-medium`,children:(0,q.jsx)(rn,{name:p,input:m})}),(0,q.jsxs)(`span`,{className:`ml-auto flex items-center gap-2 shrink-0`,children:[F&&(0,q.jsxs)(`span`,{className:`text-[10px] text-warning`,children:[P.lineCount,` line`,P.lineCount===1?``:`s`,` streaming…`]}),w&&!F&&(0,q.jsx)(`span`,{className:`text-[10px] text-text-3 font-mono`,children:V(S.length)}),E&&(0,q.jsx)(`span`,{className:`text-[10px] text-primary`,children:`running…`}),_!=null&&(0,q.jsxs)(`span`,{className:`text-[10px] font-mono ${_===0?`text-text-3`:`text-error`}`,children:[`exit `,_]}),g||D?(0,q.jsx)(x,{className:`size-3.5 text-error`}):k?(0,q.jsx)(c,{className:`size-3.5 text-success`}):(0,q.jsx)(O,{className:`size-3.5 text-primary animate-spin`}),o?(0,q.jsx)(l,{className:`size-3 text-text-3`}):(0,q.jsx)(s,{className:`size-3 text-text-3`})]})]}),o&&(0,q.jsxs)(`div`,{className:`px-2 pb-2 space-y-1.5 select-text`,children:[(e.type===`tool_use`||e.type===`approval_request`)&&(0,q.jsx)(an,{name:p,input:m,projectName:r,toolUseId:M}),P&&(0,q.jsx)(dn,{content:P.content,lineCount:P.lineCount}),w&&(0,q.jsx)(un,{events:S,projectName:r,variant:a}),A&&(0,q.jsx)(St,{filePath:A,projectName:r??``}),h&&!(ee&&!g)&&!(te&&!g)&&!(j&&!g)&&(0,q.jsx)(cn,{toolName:p,output:t.output})]})]})}function rn({name:e,input:t}){let n=e=>String(e??``);switch(e){case`Read`:case`Write`:case`Edit`:case`MultiEdit`:case`NotebookEdit`:return(0,q.jsxs)(q.Fragment,{children:[e,` `,(0,q.jsx)(`span`,{className:`text-text-subtle`,children:N(n(t.file_path))})]});case`Bash`:case`PowerShell`:{let r=t.description?n(t.description):n(t.command);return(0,q.jsxs)(q.Fragment,{children:[e,` `,(0,q.jsx)(`span`,{className:`text-text-subtle${t.description?``:` font-mono`}`,children:$(r,60)})]})}case`Glob`:return(0,q.jsxs)(q.Fragment,{children:[e,` `,(0,q.jsx)(`span`,{className:`font-mono text-text-subtle`,children:n(t.pattern)})]});case`Grep`:return(0,q.jsxs)(q.Fragment,{children:[e,` `,(0,q.jsx)(`span`,{className:`font-mono text-text-subtle`,children:$(n(t.pattern),40)})]});case`WebSearch`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(k,{className:`size-3 inline`}),` `,e,` `,(0,q.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.query),50)})]});case`WebFetch`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(i,{className:`size-3 inline`}),` `,e,` `,(0,q.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.url),50)})]});case`ToolSearch`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(k,{className:`size-3 inline`}),` `,e,` `,(0,q.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.query),50)})]});case`ImageGen`:{let e=(n(t.prompt).split(`
9
- `).find(e=>e.trim())??``)||N(n(t.file_path));return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(y,{className:`size-3 inline`}),` Image`,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[` `,$(e,50)]})]})}case`Agent`:case`Task`:{let r=Q(e,t),i=$(n(t.description||t.prompt),r?44:60);return(0,q.jsxs)(q.Fragment,{children:[!r&&(0,q.jsx)(E,{className:`size-3 inline`}),` `,e,` `,r&&(0,q.jsx)(`span`,{className:`text-text-primary font-medium`,children:r}),(0,q.jsx)(`span`,{className:`text-text-subtle`,children:r?` · ${i}`:i})]})}case`SendMessage`:return(0,q.jsx)(ot,{name:e,input:t});case`TodoWrite`:{let n=Array.isArray(t.todos)?t.todos:[],r=n.filter(e=>e.status===`completed`).length;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(g,{className:`size-3 inline`}),` `,e,` `,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[r,`/`,n.length,` done`]})]})}case`AskUserQuestion`:{let n=Array.isArray(t.questions)?t.questions:[],r=!!t.answers;return(0,q.jsxs)(q.Fragment,{children:[e,` `,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[n.length,` question`,n.length===1?``:`s`,r?` ✓`:``]})]})}case`ScheduleWakeup`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(T,{className:`size-3 inline`}),` `,e,` `,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[`in `,hn(Number(t.delaySeconds)),t.reason?` — ${$(n(t.reason),50)}`:``]})]});case`TaskCreate`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(g,{className:`size-3 inline`}),` `,e,` `,(0,q.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.subject),60)})]});case`TaskUpdate`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(g,{className:`size-3 inline`}),` `,e,` `,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[`#`,n(t.taskId),` → `,n(t.status)]})]});case`TaskStop`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(g,{className:`size-3 inline`}),` `,e,` `,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[`#`,n(t.taskId),` stopped`]})]});default:return(0,q.jsx)(q.Fragment,{children:e})}}function an({name:e,input:t,projectName:n,toolUseId:r}){let a=e=>String(e??``),{openTab:o}=ne(le(e=>({openTab:e.openTab}))),s=e=>{n&&o({type:`editor`,title:N(e),metadata:{filePath:e,projectName:n},projectId:n,closable:!0})},c=(e,t,r)=>{o({type:`git-diff`,title:`Diff ${N(e)}`,metadata:{filePath:e,projectName:n,original:t,modified:r},projectId:n??null,closable:!0})};switch(e){case`Bash`:case`PowerShell`:return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[!!t.description&&(0,q.jsx)(`p`,{className:`text-text-subtle italic`,children:a(t.description)}),(0,q.jsx)(`pre`,{className:`font-mono text-text-secondary overflow-x-auto whitespace-pre-wrap break-all`,children:a(t.command)})]});case`Read`:case`Write`:case`Edit`:case`MultiEdit`:case`NotebookEdit`:{let n=a(t.notebook_path||t.file_path),i=e===`Edit`&&(!!t.old_string||!!t.new_string),o=e=>r?`${r}-${e}`:void 0;return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,q.jsxs)(`button`,{type:`button`,className:`font-mono text-text-secondary break-all hover:text-primary hover:underline text-left flex items-center gap-1 min-w-0`,onClick:()=>s(n),title:`Open file in editor`,children:[(0,q.jsx)(v,{className:`size-3 shrink-0`}),n]}),i&&(0,q.jsxs)(`button`,{type:`button`,className:`text-text-subtle hover:text-primary hover:underline flex items-center gap-1 shrink-0 whitespace-nowrap`,onClick:()=>c(n,a(t.old_string),a(t.new_string)),title:`View diff in new tab`,children:[(0,q.jsx)(_,{className:`size-3 shrink-0`}),`View Diff`]})]}),i&&(0,q.jsx)(`div`,{"data-edit-ref":o(0),children:(0,q.jsx)(mn,{oldStr:a(t.old_string),newStr:a(t.new_string),filePath:n})}),e===`MultiEdit`&&Array.isArray(t.edits)&&(0,q.jsx)(`div`,{className:`space-y-1.5`,children:t.edits.map((e,t)=>(0,q.jsxs)(`div`,{"data-edit-ref":o(t),className:`space-y-0.5`,children:[(0,q.jsxs)(`p`,{className:`text-text-subtle text-[10px]`,children:[`Edit `,t+1]}),(0,q.jsx)(mn,{oldStr:a(e.old_string),newStr:a(e.new_string),filePath:n})]},t))}),e===`Write`&&!!t.content&&(0,q.jsx)(`pre`,{"data-edit-ref":o(0),className:`font-mono text-text-subtle overflow-x-auto max-h-32 whitespace-pre-wrap`,children:$(a(t.content),300)})]})}case`Glob`:return(0,q.jsxs)(`p`,{className:`font-mono text-text-secondary`,children:[a(t.pattern),t.path?` in ${a(t.path)}`:``]});case`Grep`:return(0,q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,q.jsxs)(`p`,{className:`font-mono text-text-secondary`,children:[`/`,a(t.pattern),`/`]}),!!t.path&&(0,q.jsxs)(`p`,{className:`text-text-subtle`,children:[`in `,a(t.path)]})]});case`TodoWrite`:return(0,q.jsx)(sn,{todos:t.todos??[]});case`Agent`:case`Task`:{let n=Q(e,t);return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[!!n&&(0,q.jsxs)(`p`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,q.jsx)(`span`,{className:`text-text-subtle`,children:`Name`}),(0,q.jsx)(`span`,{className:`font-medium text-text-primary`,children:n}),(0,q.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] bg-accent-2/15 text-accent-2`,children:`teammate`}),t.isolation===`worktree`&&(0,q.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] bg-panel-2 text-text-3`,children:`worktree`})]}),!!t.description&&(0,q.jsx)(`p`,{className:`text-text-secondary font-medium`,children:a(t.description)}),!!t.subagent_type&&(0,q.jsxs)(`p`,{className:`text-text-subtle`,children:[`Type: `,a(t.subagent_type)]}),!!t.prompt&&(0,q.jsx)(J,{content:a(t.prompt),maxHeight:`max-h-48`})]})}case`SendMessage`:return(0,q.jsx)(st,{input:t});case`ToolSearch`:return(0,q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,q.jsx)(`p`,{className:`font-mono text-text-secondary`,children:a(t.query)}),!!t.max_results&&(0,q.jsxs)(`p`,{className:`text-text-subtle`,children:[`Max results: `,a(t.max_results)]})]});case`WebFetch`:return(0,q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,q.jsxs)(`a`,{href:a(t.url),target:`_blank`,rel:`noopener noreferrer`,className:`font-mono text-primary hover:underline break-all flex items-center gap-1`,children:[(0,q.jsx)(i,{className:`size-3 shrink-0`}),a(t.url)]}),!!t.prompt&&(0,q.jsx)(`p`,{className:`text-text-subtle`,children:$(a(t.prompt),100)})]});case`AskUserQuestion`:{let e=t.questions??[],n=t.answers??{};return(0,q.jsx)(`div`,{className:`space-y-2`,children:e.map((e,t)=>(0,q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,q.jsxs)(`p`,{className:`text-text-primary font-medium`,children:[e.header?`${e.header}: `:``,e.question]}),(0,q.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.options.map((t,r)=>(0,q.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-xs border ${(n[e.question]??``).split(`, `).includes(t.label)?`border-primary bg-primary/20 text-text-primary`:`border-border text-text-subtle`}`,children:t.label},r))}),n[e.question]&&(0,q.jsxs)(`p`,{className:`text-foreground text-xs`,children:[`Answer: `,n[e.question]]})]},t))})}case`ScheduleWakeup`:{let e=Number(t.delaySeconds)||0;return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsxs)(`p`,{className:`text-text-secondary`,children:[(0,q.jsx)(T,{className:`size-3 inline mr-1`}),`Wake in `,(0,q.jsx)(`span`,{className:`font-medium text-text-primary`,children:hn(e)}),(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[` (`,e,`s)`]})]}),!!t.reason&&(0,q.jsx)(`p`,{className:`text-text-secondary italic`,children:a(t.reason)}),!!t.prompt&&(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`p`,{className:`text-text-subtle text-[10px] mb-0.5`,children:`Prompt on wake`}),(0,q.jsx)(J,{content:a(t.prompt),maxHeight:`max-h-48`})]})]})}case`TaskCreate`:return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-text-primary font-medium`,children:a(t.subject)}),!!t.description&&(0,q.jsx)(`p`,{className:`text-text-subtle`,children:a(t.description)}),!!t.activeForm&&(0,q.jsx)(`p`,{className:`text-text-subtle italic`,children:a(t.activeForm)})]});case`TaskUpdate`:return(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,q.jsxs)(`span`,{className:`font-mono text-text-secondary`,children:[`#`,a(t.taskId)]}),(0,q.jsx)(on,{status:a(t.status)})]});case`TaskStop`:return(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,q.jsxs)(`span`,{className:`font-mono text-text-secondary`,children:[`#`,a(t.taskId)]}),(0,q.jsx)(on,{status:`stopped`})]});case`ImageGen`:return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[!!t.prompt&&(0,q.jsx)(`p`,{className:`text-text-secondary whitespace-pre-wrap`,children:a(t.prompt)}),t.transparentBackground===!0&&(0,q.jsx)(`p`,{className:`text-text-subtle`,children:`Transparent background`})]});default:return(0,q.jsx)(`pre`,{className:`overflow-x-auto text-text-secondary font-mono whitespace-pre-wrap break-all`,children:JSON.stringify(t,null,2)})}}function on({status:e}){return(0,q.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] border ${e===`completed`?`text-success border-success/30 bg-success/10`:e===`in_progress`?`text-warning border-warning/30 bg-warning/10`:`text-text-subtle border-border bg-surface`}`,children:e})}function sn({todos:e}){return(0,q.jsx)(`div`,{className:`space-y-0.5`,children:e.map((e,t)=>(0,q.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,q.jsx)(`span`,{className:`shrink-0 mt-0.5 ${e.status===`completed`?`text-success`:e.status===`in_progress`?`text-warning`:`text-text-subtle`}`,children:e.status===`completed`?`✓`:e.status===`in_progress`?`▶`:`○`}),(0,q.jsx)(`span`,{className:e.status===`completed`?`line-through text-text-subtle`:`text-text-secondary`,children:e.content})]},t))})}function cn({toolName:e,output:t}){let[n,r]=(0,K.useState)(!1),i=(0,K.useMemo)(()=>{if(e!==`Agent`&&e!==`Task`)return null;try{let e=JSON.parse(t);if(Array.isArray(e)){let t=e.filter(e=>e.type===`text`&&e.text).map(e=>e.text).join(`
10
-
11
- `);if(t)return t}if(typeof e==`string`)return e}catch{if(t&&!t.startsWith(`[{`))return t}return null},[e,t]);return e===`SendMessage`&&it(t)?(0,q.jsx)(ct,{output:t}):i?(0,q.jsxs)(`div`,{className:`border-t border-border pt-1.5 space-y-1`,children:[(0,q.jsx)(J,{content:i,maxHeight:`max-h-60`}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>r(!n),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[(0,q.jsx)(h,{className:`size-3`}),n?`Hide`:`Show`,` raw`]}),n&&(0,q.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono max-h-40 whitespace-pre-wrap break-all text-[10px]`,children:t})]}):(0,q.jsx)(ln,{output:t})}function ln({output:e}){let t=e.split(`
12
- `).length,n=t>3||e.length>200,[r,i]=(0,K.useState)(n);return(0,q.jsxs)(`div`,{className:`border-t border-border pt-1.5`,children:[n&&(0,q.jsxs)(`button`,{type:`button`,onClick:()=>i(!r),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors mb-1`,children:[r?(0,q.jsx)(s,{className:`size-3`}):(0,q.jsx)(l,{className:`size-3`}),`Output (`,t,` lines)`]}),(0,q.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono whitespace-pre-wrap break-all ${r?`max-h-16 overflow-hidden`:`max-h-60`}`,children:e})]})}function un({events:e,projectName:t,className:n,variant:r=`chat`}){let i=[],a=``;for(let t of e)if(t.type===`text`)a+=t.content;else if(t.type===`tool_use`)a&&=(i.push({kind:`text`,content:a}),``),i.push({kind:`tool`,tool:t});else if(t.type===`tool_result`){let e=t.toolUseId,n=e?i.find(t=>t.kind===`tool`&&t.tool.type===`tool_use`&&t.tool.toolUseId===e&&!t.result):i.findLast(e=>e.kind===`tool`&&!e.result);n&&(n.result=t)}a&&i.push({kind:`text`,content:a});let o=(0,K.useRef)(null),s=(0,K.useRef)(!1);return(0,K.useEffect)(()=>{o.current&&!s.current&&(o.current.scrollTop=o.current.scrollHeight)},[i.length]),(0,q.jsx)(`div`,{ref:o,onScroll:e=>{let t=e.currentTarget;s.current=t.scrollTop+t.clientHeight<t.scrollHeight-20},className:n??`border-l-2 border-accent/20 pl-2 space-y-1 mt-1 max-h-64 md:max-h-96 overflow-y-auto`,children:i.map((e,n)=>e.kind===`text`?(0,q.jsx)(`div`,{className:`text-text-secondary text-[11px]`,children:(0,q.jsx)(J,{content:e.content,maxHeight:`max-h-24`})},`st-${n}`):(0,q.jsx)(nn,{tool:e.tool,result:e.result,completed:!!e.result,projectName:t,variant:r},`sc-${n}`))})}function dn({content:e,lineCount:t}){let n=(0,K.useRef)(null),r=(0,K.useRef)(!1);return(0,K.useEffect)(()=>{n.current&&!r.current&&(n.current.scrollTop=n.current.scrollHeight)},[e]),(0,q.jsxs)(`div`,{className:`border-t border-border pt-1.5`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] text-warning mb-1`,children:[(0,q.jsx)(O,{className:`size-3 animate-spin`}),(0,q.jsxs)(`span`,{children:[`Output (`,t,` line`,t===1?``:`s`,`, streaming...)`]})]}),(0,q.jsx)(`pre`,{ref:n,onScroll:e=>{let t=e.currentTarget;r.current=t.scrollTop+t.clientHeight<t.scrollHeight-20},className:`overflow-x-auto overflow-y-auto max-h-60 text-text-subtle font-mono whitespace-pre-wrap break-all text-[11px]`,children:e.split(`
13
- `).slice(-200).join(`
14
- `)})]})}var fn=j(()=>import(`./edit-diff-preview-D4EqC86X.js`),__vite__mapDeps([59,2,3,60])),pn=(0,K.lazy)(()=>fn);function mn(e){return(0,q.jsx)(K.Suspense,{fallback:(0,q.jsx)(`div`,{className:`animate-pulse h-8 bg-muted rounded`}),children:(0,q.jsx)(pn,{...e})})}function $(e,t=50){return e?e.length>t?e.slice(0,t)+`…`:e:``}function hn(e){if(!Number.isFinite(e)||e<=0)return`0s`;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.round(e%60),i=[];return t&&i.push(`${t}h`),n&&i.push(`${n}m`),(r||i.length===0)&&i.push(`${r}s`),i.join(` `)}export{Wt as a,W as c,V as d,Je as f,Re as h,qt as i,G as l,Pe as m,nn as n,Nt as o,Ne as p,Zt as r,$e as s,un as t,qe as u};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t}from"./vendor-markdown-QKPNiWEd.js";var n=e(t(),1);function r(e,t){let[r,i]=(0,n.useState)(!1);return(0,n.useLayoutEffect)(()=>{let n=e.current;if(!n)return;let r=()=>{n.clientWidth>0&&i(n.clientWidth<=t)};if(r(),typeof ResizeObserver>`u`)return;let a=new ResizeObserver(r);return a.observe(n),()=>a.disconnect()},[e,t]),r}export{r as t};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t}from"./vendor-markdown-QKPNiWEd.js";import{a as n,o as r}from"./api-client-OiA8Ida1.js";var i=e(t(),1);function a(e,t,a,o=0){let[s,c]=(0,i.useState)(null),[l,u]=(0,i.useState)(null),[d,f]=(0,i.useState)(!1),[p,m]=(0,i.useState)(null),h=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let i=!1;f(!1),m(null);let o=/^(\/|[A-Za-z]:[/\\])/.test(e)?`/api/fs/raw?path=${encodeURIComponent(e)}`:`${r(t)}/files/raw?path=${encodeURIComponent(e)}`,s=n();return fetch(o,{headers:s?{Authorization:`Bearer ${s}`}:{}}).then(e=>{if(!e.ok)throw Error(String(e.status));return e.blob()}).then(e=>{if(i)return;let t=a?new Blob([e],{type:a}):e,n=URL.createObjectURL(t);h.current&&URL.revokeObjectURL(h.current),h.current=n,c(n),u(t)}).catch(e=>{i||(f(!0),m(/^\d+$/.test(e.message)?e.message:`network`))}),()=>{i=!0}},[e,t,a,o]),(0,i.useEffect)(()=>()=>{h.current&&URL.revokeObjectURL(h.current)},[]),{blobUrl:s,blob:l,error:d,errorCode:p}}export{a as t};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t}from"./vendor-markdown-QKPNiWEd.js";import{n,r}from"./api-client-OiA8Ida1.js";function i(e){if(!(e instanceof n)||e.code!==`DB_DRIVER_MISSING`)return null;let t=e.body.driver;return typeof t?.id!=`string`||typeof t.displayName!=`string`?null:{id:t.id,displayName:t.displayName}}function a(){return r.get(`/api/db/drivers`)}var o=`ppm:db-driver-installed`;async function s(e){let t=await r.post(`/api/db/drivers/${encodeURIComponent(e)}/install`);return window.dispatchEvent(new CustomEvent(o,{detail:e})),t}function c(e){return r.del(`/api/db/drivers/${encodeURIComponent(e)}`)}var l=e(t(),1);function u(e){let t=(0,l.useRef)(e);(0,l.useEffect)(()=>{t.current=e}),(0,l.useEffect)(()=>{let e=e=>t.current(e.detail);return window.addEventListener(o,e),()=>window.removeEventListener(o,e)},[])}export{c as a,i,s as n,a as r,u as t};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t}from"./vendor-markdown-QKPNiWEd.js";import{r as n}from"./api-client-OiA8Ida1.js";import{E as r,t as i}from"./panel-store-DmP16Fo0.js";import{i as a,t as o}from"./use-db-driver-installed-BscdI-wS.js";import{L as s}from"./db-explorer-store-BcLxq-X0.js";var c=e(t(),1);function l(e,t,i){let l=e&&t?r(e,t):null,[d,f]=(0,c.useState)({data:null,error:null,loading:l!==null,driver:null}),p=(0,c.useRef)(0),m=(0,c.useRef)([]),h=(0,c.useCallback)(async()=>{if(!l){for(let e of m.current.splice(0))e();return}let e=++p.current;f(e=>({...e,loading:!0}));let t;try{t={data:await n.get(l),error:null,loading:!1,driver:null}}catch(e){t={data:null,error:e.message,loading:!1,driver:a(e)}}if(e===p.current){f(t);for(let e of m.current.splice(0))e()}},[l]),g=(0,c.useCallback)(()=>new Promise(e=>{m.current.push(e),h()}),[h]);(0,c.useEffect)(()=>{h()},[h]);let{active:_,shown:v}=u(i);(0,c.useEffect)(()=>{v>0&&h()},[v]);let y=e?.kind===`connection`?e.connectionId:null,b=s(e=>y===null?0:e.structureChanges[y]??0),x=(0,c.useRef)(b);return(0,c.useEffect)(()=>{b!==x.current&&(x.current=b,_&&h())},[b]),o(e=>{d.driver?.id===e&&h()}),{...d,reload:g}}function u(e){let t=i(t=>!!e&&Object.values(t.panels).some(t=>t.activeTabId===e)),[n,r]=(0,c.useState)(0),a=(0,c.useRef)(t);return(0,c.useEffect)(()=>{t&&!a.current&&r(e=>e+1),a.current=t},[t]),{active:t,shown:n}}export{l as t};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t}from"./vendor-markdown-QKPNiWEd.js";import{T as n,g as r,v as i}from"./panel-store-DmP16Fo0.js";import{t as a}from"./tab-store-nNzRNfVV.js";import{r as o}from"./db-types-9ac-eYxf.js";import{L as s,h as c}from"./db-explorer-store-BcLxq-X0.js";import{c as l}from"./open-db-tabs-CkQe49j_.js";var u=e(t(),1);function d(e,t){let d=JSON.stringify(n(e)),f=(0,u.useMemo)(()=>JSON.parse(d),[d]),p=f?.kind===`connection`?f.connectionId:null,m=s(e=>p===null?void 0:e.connections.find(e=>e.id===p)),h=s(e=>e.loaded);(0,u.useEffect)(()=>{p!==null&&!h&&c()},[p,h]);let g=f?.kind===`file`?`sqlite`:m?.type??e?.dbType,_=f?.kind===`file`?i(f.path):m?.name??(typeof e?.connectionName==`string`?e.connectionName:`Database`),v=m?.color??(typeof e?.connectionColor==`string`?e.connectionColor:null),y=a(e=>e.updateTab);(0,u.useEffect)(()=>{if(!t||!m||typeof e?.connectionName==`string`)return;let n=e?.tableName??e?.objectName;y(t,{metadata:{...e,connectionName:m.name,dbType:m.type,...m.color?{connectionColor:m.color}:{}},...n&&e?.queryId===void 0?{title:r(f,m.name,n)}:{}})},[t,m,e,f,y]);let b=(0,u.useMemo)(()=>f?l(f,{connectionName:_,dbType:g,connectionColor:v}):null,[f,_,g,v]);return{target:f,conn:m,dbType:g,dialect:g?o(g):void 0,name:_,place:b,readonly:m?.readonly===1,missing:p!==null&&h&&!m}}export{d as t};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t}from"./vendor-markdown-QKPNiWEd.js";import{o as n,r}from"./api-client-OiA8Ida1.js";import{t as i}from"./preload-helper-CM8YhcCa.js";import{a,i as o,n as s,t as c}from"./design-canvas-check-Bo76Q6Qr.js";var l={maxComments:500,body:4e3,snippet:2e3,exact:160,prefix:32,suffix:32,cssPath:512,file:1024},u=/^[0-9a-f]{12}$/,d=/^[a-z][a-z0-9-]{0,31}$/,f=/^[A-Za-z0-9_#:() >-]*$/,p=e=>!!e&&typeof e==`object`&&!Array.isArray(e),m=(e,t)=>typeof e==`string`?e.slice(0,t):``;function h(e){let t=p(e)?e:{};return{exact:_(m(t.exact,l.exact*2)).slice(0,l.exact),prefix:_(m(t.prefix,l.prefix*2)).slice(-l.prefix),suffix:_(m(t.suffix,l.suffix*2)).slice(0,l.suffix)}}function g(e){return e===null?null:typeof e==`number`&&Number.isInteger(e)&&e>=0&&e<=2147483647?e:void 0}function ee(e){if(!p(e))return null;let t=g(e.ppmId),n=e.gen===null?null:typeof e.gen==`string`&&a.test(e.gen)?e.gen:void 0,r=typeof e.file==`string`?e.file:``,i=typeof e.tag==`string`?e.tag.toLowerCase():``;if(t===void 0||n===void 0||!r||r.length>l.file||!d.test(i))return null;let o=m(e.cssPath,l.cssPath);return{file:r,ppmId:t,gen:n,tag:i,cssPath:f.test(o)?o:``,quote:h(e.quote)}}function _(e){return e.replace(/<!--[\s\S]*?(?:-->|$)/g,``)}function te(e){return!e.resolvedAt}var ne=2e3,v=500,y=1e6,b=e=>!!e&&typeof e==`object`&&!Array.isArray(e),x=e=>typeof e==`number`&&Number.isFinite(e)?Math.max(-y,Math.min(y,e)):null;function S(e){if(!b(e))return null;let t=x(e.x),n=x(e.y),r=x(e.w),i=x(e.h);return t===null||n===null||r===null||i===null?null:{x:t,y:n,w:Math.max(0,r),h:Math.max(0,i)}}var C=e=>e==null?null:typeof e==`string`&&a.test(e)?e:void 0;function w(e){if(!b(e))return null;let t=g(e.ppmId),n=C(e.gen),r=typeof e.tag==`string`?e.tag.toLowerCase():``,i=S(e.rect),a=typeof e.file==`string`?e.file.slice(0,l.file):``;if(t===void 0||n===void 0||!d.test(r)||!i||!a)return null;let o=typeof e.cssPath==`string`?e.cssPath.slice(0,l.cssPath):``;return{ppmId:t,gen:n,file:a,tag:r,rect:i,cssPath:f.test(o)?o:``,outerHtml:typeof e.outerHtml==`string`?e.outerHtml.slice(0,ne):``,text:typeof e.text==`string`?e.text.slice(0,v):``,quote:h(e.quote)}}function re(e){if(!b(e)||typeof e.id!=`string`||!u.test(e.id))return null;let t=g(e.ppmId),n=C(e.gen);return t===void 0||n===void 0?null:{id:e.id,rect:e.rect===null?null:S(e.rect),ppmId:t,gen:n,reanchored:e.reanchored===!0}}function T(e,t){if(!Array.isArray(e)||e.length>500)return null;let n=[];for(let r of e){let e=t(r);e&&n.push(e)}return n}var ie={hover:e=>{if(e.el===null)return{type:`hover`,el:null};if(!b(e.el))return null;let t=typeof e.el.tag==`string`?e.el.tag.toLowerCase():``,n=S(e.el.rect);return d.test(t)&&n?{type:`hover`,el:{tag:t,rect:n}}:null},select:e=>{let t=w(e.el);return t?{type:`select`,el:t}:null},"element-menu":e=>{let t=w(e.el);return t?{type:`element-menu`,el:t}:null},"picker-exit":()=>({type:`picker-exit`}),"pins-rects":e=>{let t=T(e.pins,re);return t?{type:`pins-rects`,pins:t}:null}},E={picker:e=>typeof e.on==`boolean`?{type:`picker`,on:e.on}:null,"pins-set":e=>{let t=T(e.pins,e=>{if(!b(e)||typeof e.id!=`string`||!u.test(e.id))return null;let t=ee(e.anchor);return t?{id:e.id,anchor:t}:null});return t?{type:`pins-set`,pins:t}:null},"select-parent":()=>({type:`select-parent`}),"clear-selection":()=>({type:`clear-selection`})},D=/^--[a-zA-Z0-9_-]{1,48}$/,O=/^-?\d{1,6}(\.\d{1,4})?(px|rem|em|%|deg)?$/,k=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,ae=/^[A-Za-z0-9 #.,%()-]{1,64}$/,oe=new Set([`rgb`,`rgba`,`hsl`,`hsla`,`hwb`,`lab`,`lch`,`oklab`,`oklch`,`calc`,`min`,`max`,`clamp`,`var`]);function A(e){if(typeof e!=`string`||!ae.test(e)||e.trim()!==e||e.includes(`/*`)||e.includes(`*/`))return!1;let t=0;for(let n of e)if(n===`(`)t++;else if(n===`)`&&--t<0)return!1;if(t!==0)return!1;for(let t of e.matchAll(/([A-Za-z-]*)\(/g))if(!oe.has(t[1].toLowerCase()))return!1;return!0}function se(e,t){return`${Number(t.toFixed(4))}${e.unit}`}function ce(e,t){if(typeof t!=`string`)return null;if(e.type===`color`)return k.test(t)?t:null;if(e.type===`select`)return e.options.some(e=>e.value===t)&&A(t)?t:null;let n=O.exec(t);if(!n||(n[2]??``)!==e.unit)return null;let r=Number(t.slice(0,t.length-e.unit.length));return Number.isFinite(r)&&r>=e.min&&r<=e.max?t:null}var le=[`root`,`conditional`,`other`,`unknown`],ue=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function j(e,t){if(!ue(e))return null;let n=Object.entries(e);if(n.length>24)return null;let r={};for(let[e,i]of n){let n=t(i);if(!D.test(e)||n===null)return null;r[e]=n}return r}function M(e){return!Array.isArray(e)||e.length>24?null:e.every(e=>typeof e==`string`&&D.test(e))?e:null}var de={"tweak-values":e=>{let t=j(e.values,e=>typeof e==`string`?e.slice(0,200):null),n=j(e.winners,e=>le.find(t=>t===e)??null);return t&&n?{type:`tweak-values`,values:t,winners:n}:null}},fe={"tweak-set":e=>{let t=j(e.values,e=>A(e)?e:null);return t?{type:`tweak-set`,values:t}:null},"tweak-reset":e=>{if(e.vars===void 0)return{type:`tweak-reset`};let t=M(e.vars);return t?{type:`tweak-reset`,vars:t}:null},"tweak-read":e=>{let t=M(e.vars);return t?{type:`tweak-read`,vars:t}:null}},pe=2e4,N=`(-?\\d{1,5}(?:\\.\\d{1,2})?)px`,me=RegExp(`^${N} ${N}$`),he=/^(\d{1,5}(?:\.\d{1,2})?)px$/,P=e=>!!e&&typeof e==`object`&&!Array.isArray(e),F=e=>Math.abs(Number(e))<=pe,I=e=>typeof e==`number`&&Number.isFinite(e)?e:null;function L(e){if(!P(e))return null;let t=Object.keys(e);if(t.length===0||t.length>3)return null;let n={};for(let r of t){let t=e[r];if(typeof t!=`string`)return null;if(r===`translate`){let e=me.exec(t);if(!e||!F(e[1])||!F(e[2]))return null;n.translate=t}else if(r===`width`||r===`height`){let e=he.exec(t);if(!e||!F(e[1]))return null;n[r]=t}else return null}return n}function R(e){if(!P(e))return null;let t=I(e.tx),n=I(e.ty),r=I(e.w),i=I(e.h);if(t===null||n===null||r===null||i===null)return null;let a=e=>Math.max(-1e6,Math.min(1e6,e));return{tx:a(t),ty:a(n),w:Math.max(0,a(r)),h:Math.max(0,a(i))}}var ge={"transform-live":e=>{let t=g(e.ppmId);if(typeof t!=`number`)return null;let n=e.rect===null?null:S(e.rect);return e.rect!==null&&!n?null:{type:`transform-live`,ppmId:t,rect:n,box:e.box===null||e.box===void 0?null:R(e.box)}},"transform-commit":e=>{let t=g(e.ppmId),n=typeof e.tag==`string`?e.tag.toLowerCase():``,r=typeof e.gen==`string`&&a.test(e.gen)?e.gen:null,i=typeof e.file==`string`&&e.file.length<=1024?e.file:``,o=L(e.props);return typeof t!=`number`||!d.test(n)||!r||!i||!o?null:{type:`transform-commit`,ppmId:t,tag:n,gen:r,file:i,props:o}}},_e={"transform-mode":e=>{let t=I(e.scale);return typeof e.on!=`boolean`||t===null||t<=0||t>10?null:{type:`transform-mode`,on:e.on,scale:t}},"transform-target":e=>{if(e.ppmId===null)return{type:`transform-target`,ppmId:null,tag:``};let t=g(e.ppmId),n=typeof e.tag==`string`?e.tag.toLowerCase():``;return typeof t==`number`&&d.test(n)?{type:`transform-target`,ppmId:t,tag:n}:null},"transform-nudge":e=>{let t=I(e.dx),n=I(e.dy);return t===null||n===null||!Number.isInteger(t)||!Number.isInteger(n)||Math.abs(t)>1e3||Math.abs(n)>1e3||t===0&&n===0?null:{type:`transform-nudge`,dx:t,dy:n}},"transform-cancel":()=>({type:`transform-cancel`})},ve=5e3,z=5376,ye=1e5,be=/^[0-9A-F]{6}$/,xe=/^[\p{L}\p{N} ._-]{1,64}$/u,Se=/^data:image\/(?:png|jpeg);base64,[A-Za-z0-9+/]+={0,2}$/,Ce=[`left`,`center`,`right`,`justify`],we=[`top`,`middle`,`bottom`],B=e=>!!e&&typeof e==`object`&&!Array.isArray(e),V=(e,t=ye)=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=t?e:null;function H(e){if(!B(e)||typeof e.hex!=`string`||!be.test(e.hex))return null;let t=V(e.alpha,1);return t===null||t<0?null:{hex:e.hex,alpha:t}}function Te(e){let t=V(e.x),n=V(e.y),r=V(e.w),i=V(e.h);if(t===null||n===null||r===null||i===null||r<=0||i<=0)return null;let a={x:t,y:n,w:r,h:i};if(e.rotation!==void 0){let t=V(e.rotation,360);if(t===null)return null;t!==0&&(a.rotation=t)}return a}function Ee(e){if(!B(e)||typeof e.text!=`string`)return null;let t={text:e.text.slice(0,ve)};for(let n of[`bold`,`italic`,`underline`,`breakLine`])e[n]===!0&&(t[n]=!0);if(e.color!==void 0){let n=H(e.color);if(!n)return null;t.color=n}if(e.sizePx!==void 0){let n=V(e.sizePx,4e3);if(n===null||n<=0)return null;t.sizePx=n}return typeof e.font==`string`&&xe.test(e.font)&&(t.font=e.font),t}function De(e,t){if(!B(e))return null;let n=Te(e);if(!n)return null;if(e.kind===`text`){if(!Array.isArray(e.runs)||e.runs.length===0||e.runs.length>400)return null;let t=e.runs.map(Ee);if(t.some(e=>e===null))return null;let r=Ce.find(t=>t===e.align),i=we.find(t=>t===e.valign);if(!r||!i)return null;let a={kind:`text`,...n,runs:t,align:r,valign:i},o=e.lineHeightPx===void 0?void 0:V(e.lineHeightPx,4e3);return o===null||o!==void 0&&o<=0?null:(o!==void 0&&(a.lineHeightPx=o),(e.bullet===`bullet`||e.bullet===`number`)&&(a.bullet=e.bullet),a)}if(e.kind===`shape`){let t={kind:`shape`,...n};if(e.fill!==void 0){let n=H(e.fill);if(!n)return null;t.fill=n}if(e.border!==void 0){if(!B(e.border))return null;let n=V(e.border.widthPx,1e3),r=H(e.border.color);if(n===null||n<=0||!r)return null;t.border={widthPx:n,color:r}}if(e.radiusPx!==void 0){let n=V(e.radiusPx);if(n===null||n<0)return null;n>0&&(t.radiusPx=n)}return t.fill||t.border?t:null}return e.kind===`image`?typeof e.data!=`string`||e.data.length>52428800-t.imageBytes||!Se.test(e.data)?null:(t.imageBytes+=e.data.length,{kind:`image`,...n,data:e.data}):null}function Oe(e){if(!B(e))return null;let t=V(e.width,z),n=V(e.height,z);if(t===null||n===null||t<1||n<1||!Array.isArray(e.slides)||e.slides.length===0||e.slides.length>200||!Array.isArray(e.warnings)||e.warnings.length>200||!e.warnings.every(e=>typeof e==`string`))return null;let r={imageBytes:0},i=[];for(let t of e.slides){if(!B(t)||!Array.isArray(t.items)||t.items.length>600)return null;let e={items:[]};if(t.background!==void 0){let n=H(t.background);if(!n)return null;e.background=n}for(let n of t.items){let t=De(n,r);if(!t)return null;e.items.push(t)}i.push(e)}return{width:t,height:n,slides:i,warnings:e.warnings.map(e=>e.slice(0,300))}}var ke=/^[A-Za-z0-9_-]{8,64}$/,U=e=>typeof e==`string`&&ke.test(e)?e:null,Ae={"slides-data":e=>{let t=U(e.requestId),n=t?Oe(e.doc):null;return t&&n?{type:`slides-data`,requestId:t,doc:n}:null},"slides-error":e=>{let t=U(e.requestId);return!t||typeof e.message!=`string`?null:{type:`slides-error`,requestId:t,message:e.message.slice(0,300)}}},je={"slides-extract":e=>{let t=U(e.requestId);return t?{type:`slides-extract`,requestId:t}:null}},W=e=>typeof e==`string`&&c.test(e)?e:null,Me={"check-result":e=>{let t=W(e.requestId),n=t?s(e.report):null;return t&&n?{type:`check-result`,requestId:t,report:n}:null},"check-error":e=>{let t=W(e.requestId);return!t||typeof e.message!=`string`?null:{type:`check-error`,requestId:t,message:e.message.slice(0,300)}}},Ne={"check-run":e=>{let t=W(e.requestId);return!t||typeof e.screenshot!=`boolean`||e.lib!==void 0&&(typeof e.lib!=`string`||e.lib.length>262144)?null:{type:`check-run`,requestId:t,screenshot:e.screenshot,...typeof e.lib==`string`?{lib:e.lib}:{}}}},Pe=`design-bridge`,Fe=/^[A-Za-z0-9_-]{16,64}$/,G=(e,t)=>typeof e==`string`?e.slice(0,t):null,K=e=>typeof e==`number`&&Number.isFinite(e)?e:null;function Ie(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=Object.entries(e);if(t.length>64)return null;let n={};for(let[e,r]of t){if(e.length>512||typeof r!=`string`||!a.test(r))return null;n[e]=r}return n}var Le=[`error`,`rejection`,`resource`,`csp`],Re={ready:e=>{let t=typeof e.gen==`string`&&a.test(e.gen)?e.gen:null,n=G(e.file,1024),r=Ie(e.cssGens);return t===null||n===null||r===null||typeof e.instrumented!=`boolean`?null:{type:`ready`,gen:t,cssGens:r,file:n,instrumented:e.instrumented,title:G(e.title,200)??``,docHeight:Math.max(0,K(e.docHeight)??0)}},scroll:e=>{let t=K(e.x),n=K(e.y);return t===null||n===null?null:{type:`scroll`,x:t,y:n}},issue:e=>{let t=Le.find(t=>t===e.kind),n=G(e.message,500);return!t||n===null?null:{type:`issue`,kind:t,message:n,source:G(e.source,1024)??void 0,line:K(e.line)??void 0}},"navigate-blocked":e=>{let t=G(e.href,2048);return t===null?null:{type:`navigate-blocked`,href:t}},expired:()=>({type:`expired`})},ze={"restore-scroll":e=>{let t=K(e.x),n=K(e.y);return t===null||n===null?null:{type:`restore-scroll`,x:t,y:n}}},Be={...Re,...ie,...de,...ge,...Ae,...Me},Ve={...ze,...E,...fe,..._e,...je,...Ne};function q(e,t){if(!e||typeof e!=`object`||Array.isArray(e))return null;let n=e;if(n.ppm!==`design-bridge`||n.v!==1||typeof n.type!=`string`||n.nonce!==null&&(typeof n.nonce!=`string`||!Fe.test(n.nonce))||!Object.prototype.hasOwnProperty.call(t,n.type))return null;let r=t[n.type](n);return r?{nonce:n.nonce,body:r}:null}function He(e){let t=q(e,Be);return t?{...t.body,nonce:t.nonce}:null}function Ue(e){let t=q(e,Ve);return t?t.body:null}function We(e){return{...e,ppm:Pe,v:1,nonce:null}}var J=e(t(),1);function Ge(e,t){if(!t.contentWindow||e.source!==t.contentWindow)return null;let n=He(e.data);return!n||!t.nonce||n.nonce!==t.nonce?null:n}function Y(){let e=new Uint8Array(16);crypto.getRandomValues(e);let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}var Ke=3e3;function X(e,t){return e>t}function Z(e,t,n){let[r,i]=(0,J.useState)(null),a=(0,J.useRef)(t),o=(0,J.useRef)(new Map),s=(0,J.useRef)(new Set),c=(0,J.useRef)(null),l=(0,J.useRef)({loads:0,readies:0}),u=(0,J.useRef)(n);u.current=n;let d=(0,J.useCallback)(()=>{c.current&&clearTimeout(c.current),c.current=null},[]);(0,J.useEffect)(()=>{a.current=t,l.current={loads:0,readies:0},d(),i(null)},[t,d]);let f=(0,J.useCallback)(t=>{let n=e.current?.contentWindow;if(!n||!a.current||X(l.current.loads,l.current.readies))return!1;let r=We(t);return Ue(r)?(n.postMessage(r,`*`),!0):!1},[e]);(0,J.useEffect)(()=>{let t=t=>{let n=Ge(t,{contentWindow:e.current?.contentWindow??null,nonce:a.current});if(n){if(n.type===`ready`){l.current.readies++,X(l.current.loads,l.current.readies)||d(),i(n);for(let e of s.current)try{e(f,n)}catch(e){console.warn(`[design] replay failed:`,e)}}for(let e of o.current.get(n.type)??[])try{e(n)}catch(e){console.warn(`[design] ${n.type} handler failed:`,e)}}};return window.addEventListener(`message`,t),()=>window.removeEventListener(`message`,t)},[e,f,d]),(0,J.useEffect)(()=>d,[d]);let p=(0,J.useCallback)(()=>{l.current.loads++,X(l.current.loads,l.current.readies)&&(d(),c.current=setTimeout(()=>{c.current=null,X(l.current.loads,l.current.readies)&&u.current()},Ke))},[d]),m=(0,J.useCallback)((e,t)=>{let n=o.current.get(e)??new Set,r=t;return n.add(r),o.current.set(e,n),()=>{n.delete(r)}},[]),h=(0,J.useCallback)(e=>(s.current.add(e),()=>{s.current.delete(e)}),[]);return(0,J.useMemo)(()=>({send:f,on:m,onReplay:h,ready:r,frameLoaded:p}),[f,m,h,r,p])}var qe=15e3,Je=8e3,Q=null;function Ye(){return Q??=i(()=>import(`./dist--v_QGJF6.js`).then(e=>e.default),[]).catch(e=>{throw Q=null,e}),Q}function Xe(e){return e.ready?Promise.resolve(e.ready):new Promise(t=>{let n=setTimeout(()=>{r(),t(null)},Je),r=e.on(`ready`,e=>{clearTimeout(n),r(),t(e)})})}async function $(e,t,n){let r=n.screenshot?await Ye().catch(()=>void 0):void 0,i=await Xe(e);if(!i)throw Error(`The canvas is still loading`);let a=o(await new Promise((t,i)=>{let a=Y(),o=()=>{s(),c(),clearTimeout(l)},s=e.on(`check-result`,e=>{e.requestId===a&&(o(),t(e.report))}),c=e.on(`check-error`,e=>{e.requestId===a&&(o(),i(Error(e.message)))}),l=setTimeout(()=>{o(),i(Error(`The canvas did not answer in time`))},qe);e.send({type:`check-run`,requestId:a,screenshot:n.screenshot,...r?{lib:r}:{}})||(o(),i(Error(`The canvas is not accepting messages`)))}),t.issues.filter(e=>e.kind!==`navigate-blocked`&&e.kind!==`layout`)),s=n.screenshot&&!r?`The screenshot library could not be loaded.`:a.screenshotNote;return{...a,...s?{screenshotNote:s}:{},file:i.file,gen:i.gen,frame:t.frame}}function Ze(e){let t=(0,J.useRef)(e);t.current=e;let{projectName:i,slug:a}=e;(0,J.useEffect)(()=>{let e=e=>{let o=e.detail;if(!o||o.projectName!==i||o.slug!==a||typeof o.requestId!=`string`||!c.test(o.requestId))return;let s=o.requestId,{bridge:l,context:u}=t.current;$(l,u(),{screenshot:o.screenshot===!0}).then(e=>r.post(`${n(i)}/designs/${encodeURIComponent(a)}/check/${s}`,e)).catch(e=>{let t=e?.message??String(e);/pending check/i.test(t)||console.warn(`[design] canvas check for ${a} not sent: ${t}`)})};return window.addEventListener(`design:check_request`,e),()=>window.removeEventListener(`design:check_request`,e)},[i,a])}export{k as a,ce as c,d,te as f,Z as i,l,Ze as n,se as o,_ as p,Y as r,A as s,$ as t,f as u};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t}from"./vendor-markdown-QKPNiWEd.js";var n=30;function r(e,t=n){return Math.round(e*1e6/t)}var i=e(t(),1);function a(e,t){return t||e}function o(e=typeof window<`u`?window.isSecureContext:!0){return e?`This browser has no WebCodecs VideoDecoder — try Chrome, Edge, or Safari 16.4+.`:`Video needs a secure origin on this transport: browsers only expose WebCodecs over HTTPS or on localhost. Reach PPM through its HTTPS tunnel, or install the WebRTC relay in Settings, which streams over plain HTTP too.`}function s(e){let[t,n]=(0,i.useState)(`idle`),[s,c]=(0,i.useState)(null),[l,u]=(0,i.useState)({width:0,height:0}),d=(0,i.useRef)(null),f=(0,i.useRef)(null),p=(0,i.useRef)(!1),m=(0,i.useRef)(0),h=(0,i.useRef)(0),g=(0,i.useRef)(null),_=(0,i.useRef)(!1),v=(0,i.useCallback)(e=>{n(`error`),c(e)},[]),y=(0,i.useCallback)(async t=>{if(g.current=t,typeof VideoDecoder>`u`){n(`unsupported`),c(o());return}let r={codec:t,optimizeForLatency:!0};try{if(!(await VideoDecoder.isConfigSupported(r)).supported){n(`unsupported`),c(`This browser's decoder does not support ${t}.`);return}}catch(e){v(e.message);return}d.current?.close(),p.current=!1,h.current=0;let i=new VideoDecoder({output:t=>{m.current+=1;let n=e.current;n&&((n.width!==t.displayWidth||n.height!==t.displayHeight)&&(n.width=t.displayWidth,n.height=t.displayHeight,u({width:t.displayWidth,height:t.displayHeight})),f.current||=n.getContext(`2d`),f.current?.drawImage(t,0,0,n.width,n.height)),t.close()},error:e=>b(e.message)});try{i.configure(r)}catch(e){v(e.message);return}d.current=i,_.current=!0,n(`ready`),c(null)},[e,v]),b=(0,i.useCallback)(e=>{if(!_.current)return;let t=g.current;if(!t){v(e);return}try{d.current?.close()}catch{}d.current=null,y(t)},[y,v]);return{status:t,errorMessage:s,configure:y,decodeAccessUnit:(0,i.useCallback)((e,t)=>{let n=d.current;if(!(!n||n.state!==`configured`)&&a(p.current,t)){t&&(p.current=!0);try{n.decode(new EncodedVideoChunk({type:t?`key`:`delta`,timestamp:r(h.current++),data:e}))}catch(e){b(e.message)}}},[b]),reset:(0,i.useCallback)(()=>{_.current=!1;try{d.current?.close()}catch{}d.current=null,p.current=!1,m.current=0,h.current=0,n(`idle`),c(null)},[]),getFrameCount:(0,i.useCallback)(()=>m.current,[]),frameSize:l}}export{s as n,a as t};
@@ -1,16 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t}from"./vendor-markdown-QKPNiWEd.js";import{k as n,r}from"./api-client-OiA8Ida1.js";import{i}from"./project-store-CEGoLMOl.js";import{r as a}from"./clipboard-D3XnL7CB.js";import{ei as o,gr as s,hr as c,mr as l,pr as u}from"./index-ItT-dTPV.js";var d=[`ppm.blame.copySha`,`ppm.blame.fileHistory`,`ppm.blame.blameFile`,`ppm.blame.showInGraph`],f=7;function p(e){return e.replace(/[\\`*_{}[\]()#+\-!<>]/g,e=>`\\${e}`)}function m(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?`?`:(t[0][0]+(t.length>1?t[t.length-1][0]:``)).toUpperCase()}var h=[`4E79A7`,`F28E2B`,`E15759`,`76B7B2`,`59A14F`,`AF7AA1`,`9C755F`,`B07AA1`];function g(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return h[Math.abs(t)%h.length]}function _(e){let t=`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="8" cy="8" r="8" fill="#${g(e)}"/><text x="8" y="11.5" font-family="sans-serif" font-size="7" font-weight="700" fill="#ffffff" text-anchor="middle">${v(m(e))}</text></svg>`;return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(t)}`}function v(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}function y(e,t){return`command:${e}?${encodeURIComponent(JSON.stringify(t))}`}function b(e){let{commit:t,detail:n,filePath:r,projectPath:i,now:a=Date.now()}=e;if(s(t.hash))return null;let o=t.author||`Unknown`,l=t.hash.slice(0,f),m=[],h=t.authorTime>0?`${c(t.authorTime*1e3,a)} (${u(t.authorTime*1e3)})`:``;m.push(`![](${_(o)}) **${p(o)}**${h?` &nbsp;$(history) ${p(h)}`:``}`);let g=n?.message||t.summary;g&&(m.push(``),m.push(p(g).split(`
2
- `).join(`
3
- `)));let v=[``,`---`,``],b=[`[$(git-commit) ${l}](${y(`ppm.blame.copySha`,[t.hash])} "Copy commit hash")`];i&&b.push(`[$(history) File History](${y(`ppm.blame.fileHistory`,[i,r])} "Open the file's history")`,`[$(users) Blame](${y(`ppm.blame.blameFile`,[i,r])} "Open the blame view")`,`[$(git-branch) Graph](${y(`ppm.blame.showInGraph`,[i])} "Open the commit graph")`),m.push(...v),m.push(b.join(` &nbsp; `));let x=[...(n?.removed??[]).map(e=>`-${e}`),...(n?.added??[]).map(e=>`+${e}`)];if(x.length>0){m.push(...v),m.push("```diff"),m.push(...x),m.push("```"),m.push(``);let e=(n?.removed.length??0)===0?`added in`:`in`;m.push(`Changes ${e} \`${l}\``)}return{value:m.join(`
4
- `),isTrusted:{enabledCommands:[...d]},supportThemeIcons:!0}}var x=!1;function S(e,t){window.dispatchEvent(new CustomEvent(`ext:command:execute`,{detail:{command:e,args:t}}))}function C(e){return typeof e==`string`&&/^[0-9a-f]{7,40}$/.test(e)?e:null}function w(e){return typeof e==`string`&&e.length>0?e:null}function T(e,t,n){let r=w(t),i=w(n);!r||!i||S(e,[r,i])}function E(e){x||(x=!0,e.editor.registerCommand(`ppm.blame.copySha`,(e,t)=>{let r=C(t);r&&a(r).then(e=>{n[e?`success`:`error`](e?`Copied ${r.slice(0,7)}`:`Could not copy`)})}),e.editor.registerCommand(`ppm.blame.fileHistory`,(e,t,n)=>{T(`git-graph.fileHistory`,t,n)}),e.editor.registerCommand(`ppm.blame.blameFile`,(e,t,n)=>{T(`git-graph.blame`,t,n)}),e.editor.registerCommand(`ppm.blame.showInGraph`,(e,t)=>{let n=w(t);n&&S(`git-graph.view`,[n])}))}var D=`diff`,O=!1;function k(e){if(!O){if(e.languages.getLanguages().some(e=>e.id===`diff`)){O=!0;return}e.languages.register({id:D,aliases:[`Diff`,`patch`],extensions:[`.diff`,`.patch`]}),e.languages.setMonarchTokensProvider(D,{tokenizer:{root:[[/^diff .*$/,`meta.diff.header`],[/^(index|similarity index|rename from|rename to|new file mode|deleted file mode|old mode|new mode) .*$/,`meta.diff.header`],[/^(\+\+\+|---) .*$/,`meta.diff.header`],[/^@@.*$/,`meta.diff.range`],[/^\+.*$/,`inserted`],[/^-.*$/,`deleted`],[/^\\ .*$/,`meta.diff.header`],[/^.*$/,``]]}}),O=!0}}var A=e(t(),1),j=`inline-blame-styles`,M=`
5
- .inline-blame-annotation {
6
- color: var(--color-muted-foreground);
7
- opacity: 0.6;
8
- font-style: italic;
9
- white-space: pre;
10
- }
11
- /* The hover's avatar is a markdown image, so it sits on the text baseline and
12
- hangs below the author name without this. */
13
- .monaco-hover img {
14
- vertical-align: text-bottom;
15
- }
16
- `;function N(e){let t=e.getDomNode()?.ownerDocument??document;if(t.getElementById(j))return;let n=t.createElement(`style`);n.id=j,n.textContent=M,t.head?.appendChild(n)}function P({editor:e,monaco:t,projectName:n,filePath:a,rev:c,enabled:u,readOnly:d=!1}){let[f,p]=(0,A.useState)(null),[m,h]=(0,A.useState)(!1),[g,_]=(0,A.useState)(0),[v,y]=(0,A.useState)(0),[x,S]=(0,A.useState)(null),C=(0,A.useRef)(new Map),w=(0,A.useRef)(null),T=(0,A.useRef)(0),D=i(e=>e.projects.find(e=>e.name===n)?.path),O=o(n),j=O.repo?.path??D,M=a?O.repoPath(a):null,P=(0,A.useCallback)(()=>y(e=>e+1),[]);(0,A.useEffect)(()=>{!t||!u||(k(t),E(t))},[t,u]),(0,A.useEffect)(()=>{if(!u||!n||!a||M==null){p(null);return}let e=!1,t=new URLSearchParams({path:M});return c&&t.set(`rev`,c),r.get(O.gitUrl(`/blame?${t}`)).then(t=>{e||(p(t),h(!1))}).catch(()=>{e||p(null)}),()=>{e=!0}},[u,n,a,M,c,v,O]),(0,A.useEffect)(()=>{if(!e||!u)return;_(e.getPosition()?.lineNumber??0);let t=e.onDidChangeCursorPosition(e=>_(e.position.lineNumber));if(d)return()=>t.dispose();let n=e.onDidChangeModelContent(()=>h(!0));return()=>{t.dispose(),n.dispose()}},[e,u,d]),(0,A.useEffect)(()=>{if(!e||!u||!window.matchMedia?.(`(hover: none)`).matches)return;let t=e.onMouseDown(t=>{let n=t.target.position,r=e.getModel();!n||!r||n.lineNumber===T.current&&(n.column<r.getLineMaxColumn(n.lineNumber)||e.getAction(`editor.action.showHover`)?.run())});return()=>t.dispose()},[e,u]);let F=(()=>{if(!f||m||g<=0)return null;let e=f.lines[g-1],t=e?.finalLine===g?e:f.lines.find(e=>e.finalLine===g);if(!t)return null;let n=f.commits[t.hash];return n?{commit:n,origLine:t.origLine}:null})(),I=F?.commit??null,L=I&&!s(I.hash)?I.hash:null,R=I?.filename||M||void 0,z=F?.origLine??0,B=`${L} ${z} ${R}`;return(0,A.useEffect)(()=>{if(!u||!n||!L||!R||z<1){S(null);return}let e=B,t=C.current;if(t.has(e)){S({key:e,value:t.get(e)??null});return}let i=!1,a=new URLSearchParams({hash:L,path:R,line:String(z)});return r.get(O.gitUrl(`/commit-line?${a}`)).then(n=>{i||(t.size>=200&&t.delete(t.keys().next().value),t.set(e,n??null),S({key:e,value:n??null}))}).catch(()=>{i||S(null)}),()=>{i=!0}},[u,n,L,R,z,B,O]),(0,A.useEffect)(()=>{if(!e||!t)return;if(!u||!I||g<=0){T.current=0,w.current?.clear();return}N(e);let n=e.getModel();if(!n||g>n.getLineCount()){T.current=0,w.current?.clear();return}T.current=g;let r=n.getLineMaxColumn(g),i=l(I),a={range:new t.Range(g,r,g,r),options:{after:{content:` ${i}`,inlineClassName:`inline-blame-annotation`},showIfCollapsed:!0,hoverMessage:b({commit:I,detail:x?.key===B?x.value:null,filePath:M??``,projectPath:j})}};w.current?w.current.set([a]):w.current=e.createDecorationsCollection([a])},[e,t,u,I,g,x,B,M,j]),(0,A.useEffect)(()=>()=>{w.current?.clear(),w.current=null},[]),{stale:m,refresh:P}}export{P as t};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t}from"./vendor-markdown-QKPNiWEd.js";var n=e(t(),1);function r(e){return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)}function i(){return typeof window<`u`&&window.innerWidth<768}function a(){return!1}function o(){return(0,n.useSyncExternalStore)(r,i,a)}function s(){return typeof window<`u`&&window.innerWidth<768}export{o as n,s as t};