@hienlh/ppm 0.23.11 → 0.23.12

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 (641) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/CLAUDE.md +13 -2
  3. package/assets/skills/ppm/SKILL.md +1 -1
  4. package/assets/skills/ppm/references/cli-reference.md +4 -4
  5. package/assets/skills/ppm/references/http-api.md +37 -1
  6. package/bun.lock +34 -0
  7. package/dist/web/assets/accounts-settings-section-CGe5ikvs.js +1 -0
  8. package/dist/web/assets/accounts-settings-section-CGe5ikvs.js.br +0 -0
  9. package/dist/web/assets/accounts-settings-section-CGe5ikvs.js.gz +0 -0
  10. package/dist/web/assets/{agent-session-sheet-CBMsnl_p.js → agent-session-sheet-vBhfHYrC.js} +2 -2
  11. package/dist/web/assets/agent-session-sheet-vBhfHYrC.js.br +0 -0
  12. package/dist/web/assets/agent-session-sheet-vBhfHYrC.js.gz +0 -0
  13. package/dist/web/assets/{agent-session-window-content-D9C9FA7E.js → agent-session-window-content-BxIxDN5i.js} +1 -1
  14. package/dist/web/assets/agent-session-window-content-BxIxDN5i.js.br +0 -0
  15. package/dist/web/assets/agent-session-window-content-BxIxDN5i.js.gz +0 -0
  16. package/dist/web/assets/{ai-resource-editor-DhUVgDEG.js → ai-resource-editor-Y8clBPRv.js} +1 -1
  17. package/dist/web/assets/ai-resource-editor-Y8clBPRv.js.br +0 -0
  18. package/dist/web/assets/ai-resource-editor-Y8clBPRv.js.gz +0 -0
  19. package/dist/web/assets/{ai-settings-section-DOckWvp4.js → ai-settings-section-BB8vscte.js} +1 -1
  20. package/dist/web/assets/{ai-settings-section-CETpSpYd.js → ai-settings-section-Ck8uN_Bw.js} +1 -1
  21. package/dist/web/assets/ai-settings-section-Ck8uN_Bw.js.br +0 -0
  22. package/dist/web/assets/ai-settings-section-Ck8uN_Bw.js.gz +0 -0
  23. package/dist/web/assets/android-tab-BIOUVVoW.js +2 -0
  24. package/dist/web/assets/android-tab-BIOUVVoW.js.br +0 -0
  25. package/dist/web/assets/android-tab-BIOUVVoW.js.gz +0 -0
  26. package/dist/web/assets/{api-settings-JIgKfcCx.js → api-settings-D1axn9vm.js} +1 -1
  27. package/dist/web/assets/{appearance-settings-section-BJUiLUb7.js → appearance-settings-section-Bv5_n9lH.js} +1 -1
  28. package/dist/web/assets/appearance-settings-section-Bv5_n9lH.js.br +0 -0
  29. package/dist/web/assets/appearance-settings-section-Bv5_n9lH.js.gz +0 -0
  30. package/dist/web/assets/{apps-panel-1VElRgV3.js → apps-panel-DXHF0QEv.js} +1 -1
  31. package/dist/web/assets/apps-panel-DXHF0QEv.js.br +0 -0
  32. package/dist/web/assets/apps-panel-DXHF0QEv.js.gz +0 -0
  33. package/dist/web/assets/{audio-preview-DYkyHu5X.js → audio-preview-DpjOKEm4.js} +1 -1
  34. package/dist/web/assets/audio-preview-DpjOKEm4.js.br +0 -0
  35. package/dist/web/assets/audio-preview-DpjOKEm4.js.gz +0 -0
  36. package/dist/web/assets/branch-review-tab-4dgMNadQ.js +1 -0
  37. package/dist/web/assets/branch-review-tab-4dgMNadQ.js.br +0 -0
  38. package/dist/web/assets/branch-review-tab-4dgMNadQ.js.gz +0 -0
  39. package/dist/web/assets/chat-tab-Bbe_77oJ.js +15 -0
  40. package/dist/web/assets/chat-tab-Bbe_77oJ.js.br +0 -0
  41. package/dist/web/assets/chat-tab-Bbe_77oJ.js.gz +0 -0
  42. package/dist/web/assets/chat-tab-D3i5O3dO.js +1 -0
  43. package/dist/web/assets/chat-tab-D3i5O3dO.js.br +0 -0
  44. package/dist/web/assets/chat-tab-D3i5O3dO.js.gz +0 -0
  45. package/dist/web/assets/code-editor-DXsIWoQ1.js +7 -0
  46. package/dist/web/assets/code-editor-DXsIWoQ1.js.br +0 -0
  47. package/dist/web/assets/code-editor-DXsIWoQ1.js.gz +0 -0
  48. package/dist/web/assets/{codex-reset-credit-button-Fr45FUxi.js → codex-reset-credit-button-DRhievFQ.js} +1 -1
  49. package/dist/web/assets/codex-reset-credit-button-DRhievFQ.js.br +0 -0
  50. package/dist/web/assets/codex-reset-credit-button-DRhievFQ.js.gz +0 -0
  51. package/dist/web/assets/{conflict-editor-B-wdjSXI.js → conflict-editor-D_RImo_V.js} +3 -3
  52. package/dist/web/assets/conflict-editor-D_RImo_V.js.br +0 -0
  53. package/dist/web/assets/conflict-editor-D_RImo_V.js.gz +0 -0
  54. package/dist/web/assets/{csv-preview-B6RodObB.js → csv-preview-BuFdfLo3.js} +1 -1
  55. package/dist/web/assets/csv-preview-BuFdfLo3.js.br +0 -0
  56. package/dist/web/assets/csv-preview-BuFdfLo3.js.gz +0 -0
  57. package/dist/web/assets/{database-viewer-CdPBUQPY.js → database-viewer-ChcbYn9E.js} +1 -1
  58. package/dist/web/assets/database-viewer-ChcbYn9E.js.br +0 -0
  59. package/dist/web/assets/database-viewer-ChcbYn9E.js.gz +0 -0
  60. package/dist/web/assets/{design-settings-section-BpCpaBwL.js → design-settings-section-B_xOf51h.js} +1 -1
  61. package/dist/web/assets/design-settings-section-B_xOf51h.js.br +0 -0
  62. package/dist/web/assets/design-settings-section-B_xOf51h.js.gz +0 -0
  63. package/dist/web/assets/{design-skill-suggestion-DkT2E2IV.js → design-skill-suggestion-BbEDg15Z.js} +1 -1
  64. package/dist/web/assets/design-skill-suggestion-BbEDg15Z.js.br +0 -0
  65. package/dist/web/assets/design-skill-suggestion-BbEDg15Z.js.gz +0 -0
  66. package/dist/web/assets/{design-tab-BZb9eemI.js → design-tab-BQSYJ4cS.js} +6 -6
  67. package/dist/web/assets/design-tab-BQSYJ4cS.js.br +0 -0
  68. package/dist/web/assets/design-tab-BQSYJ4cS.js.gz +0 -0
  69. package/dist/web/assets/{designs-sidebar-panel-CF4tp6j-.js → designs-sidebar-panel-AiPaYfSU.js} +1 -1
  70. package/dist/web/assets/designs-sidebar-panel-AiPaYfSU.js.br +0 -0
  71. package/dist/web/assets/designs-sidebar-panel-AiPaYfSU.js.gz +0 -0
  72. package/dist/web/assets/{diff-viewer-BqEqwSw6.js → diff-viewer-BZ6glGK-.js} +1 -1
  73. package/dist/web/assets/diff-viewer-BZ6glGK-.js.br +0 -0
  74. package/dist/web/assets/diff-viewer-BZ6glGK-.js.gz +0 -0
  75. package/dist/web/assets/{edit-diff-preview-DD4HayXY.js → edit-diff-preview-D-FNLOU2.js} +1 -1
  76. package/dist/web/assets/edit-diff-preview-D-FNLOU2.js.br +0 -0
  77. package/dist/web/assets/edit-diff-preview-D-FNLOU2.js.gz +0 -0
  78. package/dist/web/assets/{editor-language-service-CkA5sEdV.js → editor-language-service-4sbsdqBV.js} +1 -1
  79. package/dist/web/assets/editor-language-service-4sbsdqBV.js.br +0 -0
  80. package/dist/web/assets/editor-language-service-4sbsdqBV.js.gz +0 -0
  81. package/dist/web/assets/explorer-body-DbgrG1fe.js +2 -0
  82. package/dist/web/assets/explorer-body-DbgrG1fe.js.br +0 -0
  83. package/dist/web/assets/explorer-body-DbgrG1fe.js.gz +0 -0
  84. package/dist/web/assets/{explorer-window-content-CRJ2eMZ4.js → explorer-window-content-BCjWvHpp.js} +1 -1
  85. package/dist/web/assets/explorer-window-content-BCjWvHpp.js.br +0 -0
  86. package/dist/web/assets/explorer-window-content-BCjWvHpp.js.gz +0 -0
  87. package/dist/web/assets/{extension-manager-section-DwQTdCII.js → extension-manager-section-DiMF4RnT.js} +1 -1
  88. package/dist/web/assets/extension-manager-section-DiMF4RnT.js.br +0 -0
  89. package/dist/web/assets/extension-manager-section-DiMF4RnT.js.gz +0 -0
  90. package/dist/web/assets/{extension-webview-CMq-VTLu.js → extension-webview-Coti6Vfw.js} +1 -1
  91. package/dist/web/assets/extension-webview-Coti6Vfw.js.br +0 -0
  92. package/dist/web/assets/extension-webview-Coti6Vfw.js.gz +0 -0
  93. package/dist/web/assets/file-store-Cm7-pHux.js +1 -0
  94. package/dist/web/assets/file-store-Cm7-pHux.js.br +0 -0
  95. package/dist/web/assets/file-store-Cm7-pHux.js.gz +0 -0
  96. package/dist/web/assets/{files-settings-section-B2lcyh-6.js → files-settings-section-ZTVwOwx0.js} +1 -1
  97. package/dist/web/assets/files-settings-section-ZTVwOwx0.js.br +0 -0
  98. package/dist/web/assets/files-settings-section-ZTVwOwx0.js.gz +0 -0
  99. package/dist/web/assets/{general-settings-section-Doepm2sH.js → general-settings-section-B7Hjx_fb.js} +1 -1
  100. package/dist/web/assets/general-settings-section-B7Hjx_fb.js.br +0 -0
  101. package/dist/web/assets/general-settings-section-B7Hjx_fb.js.gz +0 -0
  102. package/dist/web/assets/{git-log-panel-CJakNMDc.js → git-log-panel-CbcJ_YEH.js} +1 -1
  103. package/dist/web/assets/git-log-panel-CbcJ_YEH.js.br +0 -0
  104. package/dist/web/assets/git-log-panel-CbcJ_YEH.js.gz +0 -0
  105. package/dist/web/assets/{glide-data-grid-C_SeOhSq.js → glide-data-grid-BfByGSf1.js} +3 -3
  106. package/dist/web/assets/glide-data-grid-BfByGSf1.js.br +0 -0
  107. package/dist/web/assets/glide-data-grid-BfByGSf1.js.gz +0 -0
  108. package/dist/web/assets/group-chat-tab-DCo9OP3D.js +1 -0
  109. package/dist/web/assets/group-chat-tab-DCo9OP3D.js.br +0 -0
  110. package/dist/web/assets/group-chat-tab-DCo9OP3D.js.gz +0 -0
  111. package/dist/web/assets/{image-preview-C1Frlx22.js → image-preview-Cjlps7Pt.js} +1 -1
  112. package/dist/web/assets/index-CyDLBddf.js +52 -0
  113. package/dist/web/assets/index-CyDLBddf.js.br +0 -0
  114. package/dist/web/assets/index-CyDLBddf.js.gz +0 -0
  115. package/dist/web/assets/index-Dh5apC3I.css +1 -0
  116. package/dist/web/assets/index-Dh5apC3I.css.br +0 -0
  117. package/dist/web/assets/index-Dh5apC3I.css.gz +0 -0
  118. package/dist/web/assets/{jira-watcher-section-BmkIGQFV.js → jira-watcher-section-Dz_-sUC2.js} +1 -1
  119. package/dist/web/assets/keybindings-store-BTq5Z7XP.js +1 -0
  120. package/dist/web/assets/{keyboard-shortcuts-section-BgZe3QDr.js → keyboard-shortcuts-section-Ba5NYwlG.js} +1 -1
  121. package/dist/web/assets/keyboard-shortcuts-section-Ba5NYwlG.js.br +0 -0
  122. package/dist/web/assets/keyboard-shortcuts-section-Ba5NYwlG.js.gz +0 -0
  123. package/dist/web/assets/{language-servers-section-CCMzgOaE.js → language-servers-section-DJJ7SFXo.js} +2 -2
  124. package/dist/web/assets/language-servers-section-DJJ7SFXo.js.br +0 -0
  125. package/dist/web/assets/language-servers-section-DJJ7SFXo.js.gz +0 -0
  126. package/dist/web/assets/{lsp-client-B10suuaZ.js → lsp-client-Dr3vQ1bb.js} +1 -1
  127. package/dist/web/assets/lsp-client-Dr3vQ1bb.js.br +0 -0
  128. package/dist/web/assets/lsp-client-Dr3vQ1bb.js.gz +0 -0
  129. package/dist/web/assets/{markdown-renderer-AHHFS3jc.js → markdown-renderer-CmnqFfTU.js} +3 -3
  130. package/dist/web/assets/markdown-renderer-CmnqFfTU.js.br +0 -0
  131. package/dist/web/assets/markdown-renderer-CmnqFfTU.js.gz +0 -0
  132. package/dist/web/assets/markdown-renderer-LJdVMbGl.js +1 -0
  133. package/dist/web/assets/{mobile-explorer-sheet-CqCsLWSr.js → mobile-explorer-sheet-BiIhZtJ2.js} +1 -1
  134. package/dist/web/assets/mobile-explorer-sheet-BiIhZtJ2.js.br +0 -0
  135. package/dist/web/assets/mobile-explorer-sheet-BiIhZtJ2.js.gz +0 -0
  136. package/dist/web/assets/new-design-dialog-DI_hxvFV.js +1 -0
  137. package/dist/web/assets/new-design-dialog-DI_hxvFV.js.br +0 -0
  138. package/dist/web/assets/new-design-dialog-DI_hxvFV.js.gz +0 -0
  139. package/dist/web/assets/notification-store-9lBSplOV.js +1 -0
  140. package/dist/web/assets/{notifications-settings-section-CXgzH_bK.js → notifications-settings-section-0s-2OKRv.js} +1 -1
  141. package/dist/web/assets/notifications-settings-section-0s-2OKRv.js.br +0 -0
  142. package/dist/web/assets/notifications-settings-section-0s-2OKRv.js.gz +0 -0
  143. package/dist/web/assets/{overview-panel-BYB8mgRE.js → overview-panel-3htxfZS2.js} +1 -1
  144. package/dist/web/assets/overview-panel-3htxfZS2.js.br +0 -0
  145. package/dist/web/assets/overview-panel-3htxfZS2.js.gz +0 -0
  146. package/dist/web/assets/panel-store-B6PoCwBA.js +1 -0
  147. package/dist/web/assets/panel-store-B6PoCwBA.js.br +0 -0
  148. package/dist/web/assets/panel-store-B6PoCwBA.js.gz +0 -0
  149. package/dist/web/assets/{performance-panel-Dpuq3g0W.js → performance-panel-V8gpnnf7.js} +2 -2
  150. package/dist/web/assets/performance-panel-V8gpnnf7.js.br +0 -0
  151. package/dist/web/assets/performance-panel-V8gpnnf7.js.gz +0 -0
  152. package/dist/web/assets/{postgres-viewer-DW0Gkmow.js → postgres-viewer-sWS-ogTC.js} +1 -1
  153. package/dist/web/assets/postgres-viewer-sWS-ogTC.js.br +0 -0
  154. package/dist/web/assets/postgres-viewer-sWS-ogTC.js.gz +0 -0
  155. package/dist/web/assets/{ppmbot-settings-section-DFtlGoW6.js → ppmbot-settings-section-CT8vvlzk.js} +1 -1
  156. package/dist/web/assets/ppmbot-settings-section-CT8vvlzk.js.br +0 -0
  157. package/dist/web/assets/ppmbot-settings-section-CT8vvlzk.js.gz +0 -0
  158. package/dist/web/assets/{pptx-export-CNyG32Xr.js → pptx-export-Ugjv0hso.js} +4 -4
  159. package/dist/web/assets/pptx-export-Ugjv0hso.js.br +0 -0
  160. package/dist/web/assets/pptx-export-Ugjv0hso.js.gz +0 -0
  161. package/dist/web/assets/{problems-panel-V5zqpuXq.js → problems-panel-Gcy79pSS.js} +1 -1
  162. package/dist/web/assets/problems-panel-Gcy79pSS.js.br +0 -0
  163. package/dist/web/assets/problems-panel-Gcy79pSS.js.gz +0 -0
  164. package/dist/web/assets/{process-row-format-CiJJSf_V.js → process-row-format-u6y7lOee.js} +1 -1
  165. package/dist/web/assets/process-table-BUTIp9Oy.js +1 -0
  166. package/dist/web/assets/process-table-BUTIp9Oy.js.br +0 -0
  167. package/dist/web/assets/process-table-BUTIp9Oy.js.gz +0 -0
  168. package/dist/web/assets/{proxy-settings-section-B7AVlTfY.js → proxy-settings-section-Buv_8y54.js} +1 -1
  169. package/dist/web/assets/proxy-settings-section-Buv_8y54.js.br +0 -0
  170. package/dist/web/assets/proxy-settings-section-Buv_8y54.js.gz +0 -0
  171. package/dist/web/assets/{query-audit-section-gHmRfWKr.js → query-audit-section-N2DQtgJx.js} +1 -1
  172. package/dist/web/assets/query-audit-section-N2DQtgJx.js.br +0 -0
  173. package/dist/web/assets/query-audit-section-N2DQtgJx.js.gz +0 -0
  174. package/dist/web/assets/remote-desktop-clipboard-notice-CRvJqmaz.js +1 -0
  175. package/dist/web/assets/remote-desktop-clipboard-notice-CRvJqmaz.js.br +0 -0
  176. package/dist/web/assets/remote-desktop-clipboard-notice-CRvJqmaz.js.gz +0 -0
  177. package/dist/web/assets/remote-desktop-mobile-sheet-BoYINLbJ.js +2 -0
  178. package/dist/web/assets/remote-desktop-mobile-sheet-BoYINLbJ.js.br +0 -0
  179. package/dist/web/assets/remote-desktop-mobile-sheet-BoYINLbJ.js.gz +0 -0
  180. package/dist/web/assets/remote-desktop-mobile-view-DPdP0yYu.js +1 -0
  181. package/dist/web/assets/remote-desktop-mobile-view-DPdP0yYu.js.br +0 -0
  182. package/dist/web/assets/remote-desktop-mobile-view-DPdP0yYu.js.gz +0 -0
  183. package/dist/web/assets/remote-desktop-readiness-gate-BeQ_Jrp7.js +1 -0
  184. package/dist/web/assets/remote-desktop-readiness-gate-BeQ_Jrp7.js.br +0 -0
  185. package/dist/web/assets/remote-desktop-readiness-gate-BeQ_Jrp7.js.gz +0 -0
  186. package/dist/web/assets/remote-desktop-settings-section-Bs4sHS3l.js +1 -0
  187. package/dist/web/assets/remote-desktop-settings-section-Bs4sHS3l.js.br +0 -0
  188. package/dist/web/assets/remote-desktop-settings-section-Bs4sHS3l.js.gz +0 -0
  189. package/dist/web/assets/remote-desktop-window-content-DDr__JxQ.js +1 -0
  190. package/dist/web/assets/remote-desktop-window-content-DDr__JxQ.js.br +0 -0
  191. package/dist/web/assets/remote-desktop-window-content-DDr__JxQ.js.gz +0 -0
  192. package/dist/web/assets/{run-in-terminal-DKBcEGVu.js → run-in-terminal-DCBNtYHQ.js} +1 -1
  193. package/dist/web/assets/{schedules-settings-section-sYDAsBMO.js → schedules-settings-section-_cHX2qOa.js} +1 -1
  194. package/dist/web/assets/schedules-settings-section-_cHX2qOa.js.br +0 -0
  195. package/dist/web/assets/schedules-settings-section-_cHX2qOa.js.gz +0 -0
  196. package/dist/web/assets/{send-to-chat-CCdOrKc7.js → send-to-chat-dNqNV7Y4.js} +1 -1
  197. package/dist/web/assets/send-to-chat-dNqNV7Y4.js.br +0 -0
  198. package/dist/web/assets/send-to-chat-dNqNV7Y4.js.gz +0 -0
  199. package/dist/web/assets/{services-panel-CKa2aP1d.js → services-panel-Dm54cnW3.js} +1 -1
  200. package/dist/web/assets/services-panel-Dm54cnW3.js.br +0 -0
  201. package/dist/web/assets/services-panel-Dm54cnW3.js.gz +0 -0
  202. package/dist/web/assets/settings-body-DRRQNaDA.js +1 -0
  203. package/dist/web/assets/settings-body-DRRQNaDA.js.br +0 -0
  204. package/dist/web/assets/settings-body-DRRQNaDA.js.gz +0 -0
  205. package/dist/web/assets/settings-section-content-DRaHfvm8.js +1 -0
  206. package/dist/web/assets/settings-section-content-U3mIx6hF.js +2 -0
  207. package/dist/web/assets/settings-section-content-U3mIx6hF.js.br +0 -0
  208. package/dist/web/assets/settings-section-content-U3mIx6hF.js.gz +0 -0
  209. package/dist/web/assets/{settings-store-DfuiLq_9.js → settings-store-Cyuo8ceh.js} +2 -2
  210. package/dist/web/assets/settings-store-Cyuo8ceh.js.br +0 -0
  211. package/dist/web/assets/settings-store-Cyuo8ceh.js.gz +0 -0
  212. package/dist/web/assets/settings-tab-CB_BhHTK.js +1 -0
  213. package/dist/web/assets/settings-window-content-CgZIMNX8.js +1 -0
  214. package/dist/web/assets/{slash-command-picker-CLevA_Gf.js → slash-command-picker-CQlIqMW0.js} +1 -1
  215. package/dist/web/assets/slash-command-picker-CQlIqMW0.js.br +0 -0
  216. package/dist/web/assets/slash-command-picker-CQlIqMW0.js.gz +0 -0
  217. package/dist/web/assets/{sql-query-editor-Db8b0jEr.js → sql-query-editor--Z4bcqd8.js} +1 -1
  218. package/dist/web/assets/sql-query-editor--Z4bcqd8.js.br +0 -0
  219. package/dist/web/assets/sql-query-editor--Z4bcqd8.js.gz +0 -0
  220. package/dist/web/assets/{sqlite-viewer-VzYLMqkD.js → sqlite-viewer-CSmX3qaj.js} +1 -1
  221. package/dist/web/assets/sqlite-viewer-CSmX3qaj.js.br +0 -0
  222. package/dist/web/assets/sqlite-viewer-CSmX3qaj.js.gz +0 -0
  223. package/dist/web/assets/{system-monitor-body-BR60W_mG.js → system-monitor-body-LannpU6H.js} +2 -2
  224. package/dist/web/assets/system-monitor-body-LannpU6H.js.br +0 -0
  225. package/dist/web/assets/system-monitor-body-LannpU6H.js.gz +0 -0
  226. package/dist/web/assets/system-monitor-tab-BfVucwEF.js +1 -0
  227. package/dist/web/assets/{system-monitor-window-content-BLw1QBXo.js → system-monitor-window-content-kLNW9Ln3.js} +1 -1
  228. package/dist/web/assets/{tab-host-window-content-BL61SB5m.js → tab-host-window-content-II_FtOYM.js} +1 -1
  229. package/dist/web/assets/tab-host-window-content-II_FtOYM.js.br +0 -0
  230. package/dist/web/assets/tab-host-window-content-II_FtOYM.js.gz +0 -0
  231. package/dist/web/assets/{tab-store-CbPh8CAX.js → tab-store-DCpc0g0Q.js} +1 -1
  232. package/dist/web/assets/{terminal-tab-B4y6at4h.js → terminal-tab-CTe2polt.js} +1 -1
  233. package/dist/web/assets/terminal-tab-CTe2polt.js.br +0 -0
  234. package/dist/web/assets/terminal-tab-CTe2polt.js.gz +0 -0
  235. package/dist/web/assets/{tool-cards-K0r_yxI0.js → tool-cards-rxLXbBSm.js} +5 -5
  236. package/dist/web/assets/tool-cards-rxLXbBSm.js.br +0 -0
  237. package/dist/web/assets/tool-cards-rxLXbBSm.js.gz +0 -0
  238. package/dist/web/assets/use-h264-canvas-decoder-BfO9QrlH.js +1 -0
  239. package/dist/web/assets/use-h264-canvas-decoder-BfO9QrlH.js.br +0 -0
  240. package/dist/web/assets/use-h264-canvas-decoder-BfO9QrlH.js.gz +0 -0
  241. package/dist/web/assets/{use-inline-blame-BK23icsE.js → use-inline-blame-CxZ_QWzS.js} +3 -3
  242. package/dist/web/assets/use-inline-blame-CxZ_QWzS.js.br +0 -0
  243. package/dist/web/assets/use-inline-blame-CxZ_QWzS.js.gz +0 -0
  244. package/dist/web/assets/{use-lsp-CRdCPCKW.js → use-lsp-gCNE5A9K.js} +1 -1
  245. package/dist/web/assets/use-lsp-gCNE5A9K.js.br +0 -0
  246. package/dist/web/assets/use-lsp-gCNE5A9K.js.gz +0 -0
  247. package/dist/web/assets/{use-monaco-theme-CpXT2uh3.js → use-monaco-theme-DvNGcCvz.js} +1 -1
  248. package/dist/web/assets/{use-process-kill-BWYX03KF.js → use-process-kill-Cbiu1mbY.js} +1 -1
  249. package/dist/web/assets/use-process-kill-Cbiu1mbY.js.br +0 -0
  250. package/dist/web/assets/use-process-kill-Cbiu1mbY.js.gz +0 -0
  251. package/dist/web/assets/{use-websocket-CiWQKhHr.js → use-websocket-AC7EG1LK.js} +1 -1
  252. package/dist/web/assets/video-preview-C2Y61WUE.js +1 -0
  253. package/dist/web/assets/video-preview-C2Y61WUE.js.br +0 -0
  254. package/dist/web/assets/video-preview-C2Y61WUE.js.gz +0 -0
  255. package/dist/web/assets/{voice-settings-section-Ceihggqf.js → voice-settings-section-DCXZeLYI.js} +1 -1
  256. package/dist/web/assets/voice-settings-section-DCXZeLYI.js.br +0 -0
  257. package/dist/web/assets/voice-settings-section-DCXZeLYI.js.gz +0 -0
  258. package/dist/web/assets/{window-pip-registry-mDgwpAwP.js → window-pip-registry-9Y9LQQYS.js} +1 -1
  259. package/dist/web/index.html +50 -7
  260. package/dist/web/index.html.br +0 -0
  261. package/dist/web/index.html.gz +0 -0
  262. package/dist/web/sw.js +1 -1
  263. package/dist/web/sw.js.br +0 -0
  264. package/dist/web/sw.js.gz +0 -0
  265. package/docs/architecture/android-emulator-phase0-report-260921.md +310 -0
  266. package/docs/architecture/android-emulator-phase2-report-260921.md +163 -0
  267. package/docs/architecture/android-emulator-phase3-report-260921.md +203 -0
  268. package/docs/architecture/android-emulator-phase4-report-260921.md +191 -0
  269. package/docs/architecture/android-emulator-plan-260920.md +376 -0
  270. package/docs/architecture/plugins-and-tracing.md +48 -7
  271. package/package.json +4 -2
  272. package/scripts/gen-android-proto.ts +37 -0
  273. package/scripts/release.sh +3 -1
  274. package/src/cli/commands/chat-cmd.ts +2 -2
  275. package/src/providers/claude-agent-sdk-query-options.ts +28 -0
  276. package/src/providers/claude-agent-sdk.ts +153 -71
  277. package/src/providers/claude-warm-spare.ts +176 -0
  278. package/src/providers/provider.interface.ts +1 -0
  279. package/src/server/index.ts +53 -0
  280. package/src/server/middleware/gzip-json.ts +13 -1
  281. package/src/server/routes/android.ts +616 -0
  282. package/src/server/routes/chat.ts +31 -0
  283. package/src/server/routes/files.ts +52 -5
  284. package/src/server/routes/remote-desktop.ts +95 -2
  285. package/src/server/routes/trace.ts +66 -0
  286. package/src/server/ws/android.ts +101 -0
  287. package/src/server/ws/chat.ts +12 -17
  288. package/src/server/ws/global.ts +13 -1
  289. package/src/server/ws/remote-desktop.ts +6 -1
  290. package/src/services/android/android-apk.ts +387 -0
  291. package/src/services/android/android-capabilities.ts +154 -0
  292. package/src/services/android/android-flag.ts +12 -0
  293. package/src/services/android/android-grpc.ts +124 -0
  294. package/src/services/android/android-input.ts +129 -0
  295. package/src/services/android/android-logcat.ts +169 -0
  296. package/src/services/android/android-nonce.ts +50 -0
  297. package/src/services/android/android-operations.ts +124 -0
  298. package/src/services/android/android-screenshot.ts +53 -0
  299. package/src/services/android/android-session.ts +510 -0
  300. package/src/services/android/android-video.ts +495 -0
  301. package/src/services/android/avd-list.ts +131 -0
  302. package/src/services/android/avd-manager.ts +397 -0
  303. package/src/services/android/device-registry.ts +223 -0
  304. package/src/services/android/emulator-discovery.ts +160 -0
  305. package/src/services/android/emulator-launcher.ts +290 -0
  306. package/src/services/android/proto/emulator-controller-descriptor.ts +10 -0
  307. package/src/services/android/proto/emulator_controller.proto +1791 -0
  308. package/src/services/android/sdk-discovery.ts +178 -0
  309. package/src/services/android/system-images.ts +124 -0
  310. package/src/services/chat.service.ts +81 -4
  311. package/src/services/config.service.ts +1 -1
  312. package/src/services/file-filter.service.ts +2 -61
  313. package/src/services/file-glob.ts +67 -0
  314. package/src/services/file-index/file-index-runner.ts +169 -0
  315. package/src/services/file-index/file-index-worker.ts +73 -0
  316. package/src/services/file-index/index-search.ts +152 -0
  317. package/src/services/file-index/index-walk.ts +109 -0
  318. package/src/services/file-list-index.service.ts +189 -70
  319. package/src/services/file-watcher/linux-inotify.ts +238 -0
  320. package/src/services/file-watcher/watch-tree.ts +37 -6
  321. package/src/services/file-watcher.service.ts +40 -8
  322. package/src/services/file.service.ts +17 -6
  323. package/src/services/group-chat/group-chat.service.ts +1 -1
  324. package/src/services/jira-debug-session.service.ts +1 -1
  325. package/src/services/ppmbot/ppmbot-delegation.ts +1 -1
  326. package/src/services/ppmbot/ppmbot-service.ts +1 -1
  327. package/src/services/project-content-search.service.ts +45 -11
  328. package/src/services/proxy-agent-turn.ts +7 -3
  329. package/src/services/remote-desktop/mediamtx-catalog.ts +89 -0
  330. package/src/services/remote-desktop/mediamtx-config.ts +91 -0
  331. package/src/services/remote-desktop/mediamtx-install.service.ts +191 -0
  332. package/src/services/remote-desktop/mediamtx-paths.ts +51 -0
  333. package/src/services/remote-desktop/mediamtx-process.ts +152 -0
  334. package/src/services/remote-desktop/remote-desktop-capture-wayland.ts +312 -0
  335. package/src/services/remote-desktop/remote-desktop-capture.ts +60 -4
  336. package/src/services/remote-desktop/remote-desktop-portal.ts +529 -0
  337. package/src/services/remote-desktop/remote-desktop-requirements.ts +56 -20
  338. package/src/services/remote-desktop/remote-desktop-session.ts +77 -3
  339. package/src/services/remote-desktop/remote-desktop-whep-registry.ts +36 -0
  340. package/src/services/scheduler-runner.ts +2 -3
  341. package/src/services/session-trace/browser-trace-ingest.ts +131 -0
  342. package/src/services/session-trace/session-trace-cleanup.ts +65 -0
  343. package/src/services/session-trace/session-trace-db.ts +89 -0
  344. package/src/services/session-trace/session-trace-store.ts +132 -0
  345. package/src/services/session-trace/trace-coalescer.ts +86 -0
  346. package/src/services/session-trace/trace-recorder.ts +304 -0
  347. package/src/services/session-trace/trace-writer.ts +83 -0
  348. package/src/shared/android-avd.ts +53 -0
  349. package/src/shared/android-protocol.ts +184 -0
  350. package/src/shared/file-index-limits.ts +17 -0
  351. package/src/shared/session-trace.ts +61 -0
  352. package/src/types/chat.ts +17 -0
  353. package/src/types/config.ts +27 -0
  354. package/src/types/project.ts +9 -0
  355. package/src/web/app.tsx +5 -0
  356. package/src/web/components/android/android-apk-upload.ts +75 -0
  357. package/src/web/components/android/android-avd-create-dialog.tsx +305 -0
  358. package/src/web/components/android/android-avd-destroy-dialog.tsx +151 -0
  359. package/src/web/components/android/android-clipboard-panel.tsx +94 -0
  360. package/src/web/components/android/android-controls.tsx +128 -0
  361. package/src/web/components/android/android-coords.ts +99 -0
  362. package/src/web/components/android/android-device-list.tsx +329 -0
  363. package/src/web/components/android/android-install-panel.tsx +280 -0
  364. package/src/web/components/android/android-log-filter.ts +75 -0
  365. package/src/web/components/android/android-logcat-panel.tsx +214 -0
  366. package/src/web/components/android/android-screenshot-download.ts +56 -0
  367. package/src/web/components/android/android-tab.tsx +66 -0
  368. package/src/web/components/android/android-tools-drawer.tsx +76 -0
  369. package/src/web/components/android/android-viewer.tsx +200 -0
  370. package/src/web/components/android/android-ws-url.ts +21 -0
  371. package/src/web/components/android/open-android.ts +21 -0
  372. package/src/web/components/android/use-android-available.ts +29 -0
  373. package/src/web/components/android/use-android-keyboard.ts +111 -0
  374. package/src/web/components/android/use-android-session.ts +277 -0
  375. package/src/web/components/android/use-android-touch.ts +123 -0
  376. package/src/web/components/chat/chat-tab.tsx +28 -2
  377. package/src/web/components/chat/message-input.tsx +3 -5
  378. package/src/web/components/editor/compare-picker.tsx +12 -2
  379. package/src/web/components/explorer/file-tree.tsx +6 -7
  380. package/src/web/components/explorer/use-tree-row-dnd.ts +0 -2
  381. package/src/web/components/floating-window/window-content-registry.ts +8 -8
  382. package/src/web/components/layout/command-palette.tsx +31 -9
  383. package/src/web/components/layout/mobile-drawer.tsx +8 -1
  384. package/src/web/components/layout/nav-section-rail.tsx +8 -1
  385. package/src/web/components/layout/reparenting-tab.tsx +2 -2
  386. package/src/web/components/layout/tab-content.tsx +5 -0
  387. package/src/web/components/layout/tab-pool.tsx +31 -20
  388. package/src/web/components/remote-desktop/use-h264-canvas-decoder.ts +23 -1
  389. package/src/web/components/remote-desktop/use-remote-desktop-connection.ts +64 -6
  390. package/src/web/components/remote-desktop/use-webrtc-canvas-video.ts +255 -0
  391. package/src/web/components/root-error-boundary.tsx +5 -0
  392. package/src/web/components/settings/remote-desktop-settings-section.tsx +176 -0
  393. package/src/web/components/settings/settings-categories.ts +3 -0
  394. package/src/web/components/settings/settings-section-content.tsx +25 -18
  395. package/src/web/hooks/use-chat-prewarm.ts +53 -0
  396. package/src/web/hooks/use-chat.ts +18 -4
  397. package/src/web/hooks/use-file-index-invalidation.ts +7 -5
  398. package/src/web/hooks/use-global-events.ts +12 -1
  399. package/src/web/hooks/use-remote-file-search.ts +39 -0
  400. package/src/web/hooks/use-ui-preload.ts +38 -0
  401. package/src/web/index.html +43 -0
  402. package/src/web/lib/chunk-recovery.ts +5 -1
  403. package/src/web/lib/device-id.ts +39 -0
  404. package/src/web/lib/feature-badges.ts +2 -0
  405. package/src/web/lib/lazy-with-preload.tsx +43 -0
  406. package/src/web/lib/preload-ui.ts +60 -0
  407. package/src/web/lib/score-file-search.ts +27 -14
  408. package/src/web/lib/tab-type-icons.ts +2 -1
  409. package/src/web/lib/trace-boot.ts +8 -0
  410. package/src/web/lib/trace-client.ts +516 -0
  411. package/src/web/main.tsx +12 -0
  412. package/src/web/stores/file-store.ts +124 -18
  413. package/src/web/stores/panel-utils.ts +3 -0
  414. package/src/web/stores/tab-store.ts +2 -1
  415. package/src/web/stores/window-panel-persistence.ts +3 -0
  416. package/vite.config.ts +3 -0
  417. package/dist/web/assets/accounts-settings-section-DEIm-W-D.js +0 -1
  418. package/dist/web/assets/accounts-settings-section-DEIm-W-D.js.br +0 -0
  419. package/dist/web/assets/accounts-settings-section-DEIm-W-D.js.gz +0 -0
  420. package/dist/web/assets/agent-session-sheet-CBMsnl_p.js.br +0 -0
  421. package/dist/web/assets/agent-session-sheet-CBMsnl_p.js.gz +0 -0
  422. package/dist/web/assets/agent-session-window-content-D9C9FA7E.js.br +0 -0
  423. package/dist/web/assets/agent-session-window-content-D9C9FA7E.js.gz +0 -0
  424. package/dist/web/assets/ai-resource-editor-DhUVgDEG.js.br +0 -0
  425. package/dist/web/assets/ai-resource-editor-DhUVgDEG.js.gz +0 -0
  426. package/dist/web/assets/ai-settings-section-CETpSpYd.js.br +0 -0
  427. package/dist/web/assets/ai-settings-section-CETpSpYd.js.gz +0 -0
  428. package/dist/web/assets/appearance-settings-section-BJUiLUb7.js.br +0 -0
  429. package/dist/web/assets/appearance-settings-section-BJUiLUb7.js.gz +0 -0
  430. package/dist/web/assets/apps-panel-1VElRgV3.js.br +0 -0
  431. package/dist/web/assets/apps-panel-1VElRgV3.js.gz +0 -0
  432. package/dist/web/assets/audio-preview-DYkyHu5X.js.br +0 -0
  433. package/dist/web/assets/audio-preview-DYkyHu5X.js.gz +0 -0
  434. package/dist/web/assets/branch-review-tab-DhTMSpSU.js +0 -1
  435. package/dist/web/assets/branch-review-tab-DhTMSpSU.js.br +0 -0
  436. package/dist/web/assets/branch-review-tab-DhTMSpSU.js.gz +0 -0
  437. package/dist/web/assets/chat-tab-Cg3BKugo.js +0 -15
  438. package/dist/web/assets/chat-tab-Cg3BKugo.js.br +0 -0
  439. package/dist/web/assets/chat-tab-Cg3BKugo.js.gz +0 -0
  440. package/dist/web/assets/chat-tab-tbUDK__Y.js +0 -1
  441. package/dist/web/assets/chat-tab-tbUDK__Y.js.br +0 -0
  442. package/dist/web/assets/chat-tab-tbUDK__Y.js.gz +0 -0
  443. package/dist/web/assets/code-editor-6ZiQehbr.js +0 -7
  444. package/dist/web/assets/code-editor-6ZiQehbr.js.br +0 -0
  445. package/dist/web/assets/code-editor-6ZiQehbr.js.gz +0 -0
  446. package/dist/web/assets/codex-reset-credit-button-Fr45FUxi.js.br +0 -0
  447. package/dist/web/assets/codex-reset-credit-button-Fr45FUxi.js.gz +0 -0
  448. package/dist/web/assets/conflict-editor-B-wdjSXI.js.br +0 -0
  449. package/dist/web/assets/conflict-editor-B-wdjSXI.js.gz +0 -0
  450. package/dist/web/assets/csv-preview-B6RodObB.js.br +0 -0
  451. package/dist/web/assets/csv-preview-B6RodObB.js.gz +0 -0
  452. package/dist/web/assets/database-viewer-CdPBUQPY.js.br +0 -0
  453. package/dist/web/assets/database-viewer-CdPBUQPY.js.gz +0 -0
  454. package/dist/web/assets/design-settings-section-BpCpaBwL.js.br +0 -0
  455. package/dist/web/assets/design-settings-section-BpCpaBwL.js.gz +0 -0
  456. package/dist/web/assets/design-skill-suggestion-DkT2E2IV.js.br +0 -0
  457. package/dist/web/assets/design-skill-suggestion-DkT2E2IV.js.gz +0 -0
  458. package/dist/web/assets/design-tab-BZb9eemI.js.br +0 -0
  459. package/dist/web/assets/design-tab-BZb9eemI.js.gz +0 -0
  460. package/dist/web/assets/designs-sidebar-panel-CF4tp6j-.js.br +0 -0
  461. package/dist/web/assets/designs-sidebar-panel-CF4tp6j-.js.gz +0 -0
  462. package/dist/web/assets/diff-viewer-BqEqwSw6.js.br +0 -0
  463. package/dist/web/assets/diff-viewer-BqEqwSw6.js.gz +0 -0
  464. package/dist/web/assets/edit-diff-preview-DD4HayXY.js.br +0 -0
  465. package/dist/web/assets/edit-diff-preview-DD4HayXY.js.gz +0 -0
  466. package/dist/web/assets/editor-language-service-CkA5sEdV.js.br +0 -0
  467. package/dist/web/assets/editor-language-service-CkA5sEdV.js.gz +0 -0
  468. package/dist/web/assets/explorer-body-Ds7oKuz7.js +0 -2
  469. package/dist/web/assets/explorer-body-Ds7oKuz7.js.br +0 -0
  470. package/dist/web/assets/explorer-body-Ds7oKuz7.js.gz +0 -0
  471. package/dist/web/assets/explorer-window-content-CRJ2eMZ4.js.br +0 -0
  472. package/dist/web/assets/explorer-window-content-CRJ2eMZ4.js.gz +0 -0
  473. package/dist/web/assets/extension-manager-section-DwQTdCII.js.br +0 -0
  474. package/dist/web/assets/extension-manager-section-DwQTdCII.js.gz +0 -0
  475. package/dist/web/assets/extension-webview-CMq-VTLu.js.br +0 -0
  476. package/dist/web/assets/extension-webview-CMq-VTLu.js.gz +0 -0
  477. package/dist/web/assets/file-store-DY1_0nzY.js +0 -1
  478. package/dist/web/assets/file-store-DY1_0nzY.js.br +0 -0
  479. package/dist/web/assets/file-store-DY1_0nzY.js.gz +0 -0
  480. package/dist/web/assets/files-settings-section-B2lcyh-6.js.br +0 -0
  481. package/dist/web/assets/files-settings-section-B2lcyh-6.js.gz +0 -0
  482. package/dist/web/assets/general-settings-section-Doepm2sH.js.br +0 -0
  483. package/dist/web/assets/general-settings-section-Doepm2sH.js.gz +0 -0
  484. package/dist/web/assets/git-log-panel-CJakNMDc.js.br +0 -0
  485. package/dist/web/assets/git-log-panel-CJakNMDc.js.gz +0 -0
  486. package/dist/web/assets/glide-data-grid-C_SeOhSq.js.br +0 -0
  487. package/dist/web/assets/glide-data-grid-C_SeOhSq.js.gz +0 -0
  488. package/dist/web/assets/group-chat-tab--by1xCQW.js +0 -1
  489. package/dist/web/assets/group-chat-tab--by1xCQW.js.br +0 -0
  490. package/dist/web/assets/group-chat-tab--by1xCQW.js.gz +0 -0
  491. package/dist/web/assets/index-DhWjx5iR.js +0 -52
  492. package/dist/web/assets/index-DhWjx5iR.js.br +0 -0
  493. package/dist/web/assets/index-DhWjx5iR.js.gz +0 -0
  494. package/dist/web/assets/index-oIvYSKTT.css +0 -1
  495. package/dist/web/assets/index-oIvYSKTT.css.br +0 -0
  496. package/dist/web/assets/index-oIvYSKTT.css.gz +0 -0
  497. package/dist/web/assets/keybindings-store-30LYZU0l.js +0 -1
  498. package/dist/web/assets/keyboard-shortcuts-section-BgZe3QDr.js.br +0 -0
  499. package/dist/web/assets/keyboard-shortcuts-section-BgZe3QDr.js.gz +0 -0
  500. package/dist/web/assets/language-servers-section-CCMzgOaE.js.br +0 -0
  501. package/dist/web/assets/language-servers-section-CCMzgOaE.js.gz +0 -0
  502. package/dist/web/assets/lsp-client-B10suuaZ.js.br +0 -0
  503. package/dist/web/assets/lsp-client-B10suuaZ.js.gz +0 -0
  504. package/dist/web/assets/markdown-renderer-AHHFS3jc.js.br +0 -0
  505. package/dist/web/assets/markdown-renderer-AHHFS3jc.js.gz +0 -0
  506. package/dist/web/assets/markdown-renderer-DxnXtBoj.js +0 -1
  507. package/dist/web/assets/mobile-explorer-sheet-CqCsLWSr.js.br +0 -0
  508. package/dist/web/assets/mobile-explorer-sheet-CqCsLWSr.js.gz +0 -0
  509. package/dist/web/assets/new-design-dialog-B9tgnQXq.js +0 -1
  510. package/dist/web/assets/new-design-dialog-B9tgnQXq.js.br +0 -0
  511. package/dist/web/assets/new-design-dialog-B9tgnQXq.js.gz +0 -0
  512. package/dist/web/assets/notification-store-HUVzO_bp.js +0 -1
  513. package/dist/web/assets/notifications-settings-section-CXgzH_bK.js.br +0 -0
  514. package/dist/web/assets/notifications-settings-section-CXgzH_bK.js.gz +0 -0
  515. package/dist/web/assets/overview-panel-BYB8mgRE.js.br +0 -0
  516. package/dist/web/assets/overview-panel-BYB8mgRE.js.gz +0 -0
  517. package/dist/web/assets/panel-store-CWHPmHwj.js +0 -1
  518. package/dist/web/assets/panel-store-CWHPmHwj.js.br +0 -0
  519. package/dist/web/assets/panel-store-CWHPmHwj.js.gz +0 -0
  520. package/dist/web/assets/performance-panel-Dpuq3g0W.js.br +0 -0
  521. package/dist/web/assets/performance-panel-Dpuq3g0W.js.gz +0 -0
  522. package/dist/web/assets/postgres-viewer-DW0Gkmow.js.br +0 -0
  523. package/dist/web/assets/postgres-viewer-DW0Gkmow.js.gz +0 -0
  524. package/dist/web/assets/ppmbot-settings-section-DFtlGoW6.js.br +0 -0
  525. package/dist/web/assets/ppmbot-settings-section-DFtlGoW6.js.gz +0 -0
  526. package/dist/web/assets/pptx-export-CNyG32Xr.js.br +0 -0
  527. package/dist/web/assets/pptx-export-CNyG32Xr.js.gz +0 -0
  528. package/dist/web/assets/problems-panel-V5zqpuXq.js.br +0 -0
  529. package/dist/web/assets/problems-panel-V5zqpuXq.js.gz +0 -0
  530. package/dist/web/assets/process-table-DAj46HIl.js +0 -1
  531. package/dist/web/assets/process-table-DAj46HIl.js.br +0 -0
  532. package/dist/web/assets/process-table-DAj46HIl.js.gz +0 -0
  533. package/dist/web/assets/proxy-settings-section-B7AVlTfY.js.br +0 -0
  534. package/dist/web/assets/proxy-settings-section-B7AVlTfY.js.gz +0 -0
  535. package/dist/web/assets/query-audit-section-gHmRfWKr.js.br +0 -0
  536. package/dist/web/assets/query-audit-section-gHmRfWKr.js.gz +0 -0
  537. package/dist/web/assets/remote-desktop-clipboard-notice-Cgoznh8L.js +0 -1
  538. package/dist/web/assets/remote-desktop-clipboard-notice-Cgoznh8L.js.br +0 -0
  539. package/dist/web/assets/remote-desktop-clipboard-notice-Cgoznh8L.js.gz +0 -0
  540. package/dist/web/assets/remote-desktop-mobile-sheet-X12QbPhO.js +0 -2
  541. package/dist/web/assets/remote-desktop-mobile-sheet-X12QbPhO.js.br +0 -0
  542. package/dist/web/assets/remote-desktop-mobile-sheet-X12QbPhO.js.gz +0 -0
  543. package/dist/web/assets/remote-desktop-mobile-view-DsSHawSK.js +0 -1
  544. package/dist/web/assets/remote-desktop-mobile-view-DsSHawSK.js.br +0 -0
  545. package/dist/web/assets/remote-desktop-mobile-view-DsSHawSK.js.gz +0 -0
  546. package/dist/web/assets/remote-desktop-readiness-gate-CHiQEd9Q.js +0 -1
  547. package/dist/web/assets/remote-desktop-readiness-gate-CHiQEd9Q.js.br +0 -0
  548. package/dist/web/assets/remote-desktop-readiness-gate-CHiQEd9Q.js.gz +0 -0
  549. package/dist/web/assets/remote-desktop-window-content-BnznIby3.js +0 -1
  550. package/dist/web/assets/remote-desktop-window-content-BnznIby3.js.br +0 -0
  551. package/dist/web/assets/remote-desktop-window-content-BnznIby3.js.gz +0 -0
  552. package/dist/web/assets/schedules-settings-section-sYDAsBMO.js.br +0 -0
  553. package/dist/web/assets/schedules-settings-section-sYDAsBMO.js.gz +0 -0
  554. package/dist/web/assets/send-to-chat-CCdOrKc7.js.br +0 -0
  555. package/dist/web/assets/send-to-chat-CCdOrKc7.js.gz +0 -0
  556. package/dist/web/assets/services-panel-CKa2aP1d.js.br +0 -0
  557. package/dist/web/assets/services-panel-CKa2aP1d.js.gz +0 -0
  558. package/dist/web/assets/settings-body-CEIF8lkl.js +0 -2
  559. package/dist/web/assets/settings-body-CEIF8lkl.js.br +0 -0
  560. package/dist/web/assets/settings-body-CEIF8lkl.js.gz +0 -0
  561. package/dist/web/assets/settings-store-DfuiLq_9.js.br +0 -0
  562. package/dist/web/assets/settings-store-DfuiLq_9.js.gz +0 -0
  563. package/dist/web/assets/settings-tab-Du5AUPni.js +0 -1
  564. package/dist/web/assets/settings-window-content-BTflfLez.js +0 -1
  565. package/dist/web/assets/slash-command-picker-CLevA_Gf.js.br +0 -0
  566. package/dist/web/assets/slash-command-picker-CLevA_Gf.js.gz +0 -0
  567. package/dist/web/assets/sql-query-editor-Db8b0jEr.js.br +0 -0
  568. package/dist/web/assets/sql-query-editor-Db8b0jEr.js.gz +0 -0
  569. package/dist/web/assets/sqlite-viewer-VzYLMqkD.js.br +0 -0
  570. package/dist/web/assets/sqlite-viewer-VzYLMqkD.js.gz +0 -0
  571. package/dist/web/assets/system-monitor-body-BR60W_mG.js.br +0 -0
  572. package/dist/web/assets/system-monitor-body-BR60W_mG.js.gz +0 -0
  573. package/dist/web/assets/system-monitor-tab-BYpantE2.js +0 -1
  574. package/dist/web/assets/tab-host-window-content-BL61SB5m.js.br +0 -0
  575. package/dist/web/assets/tab-host-window-content-BL61SB5m.js.gz +0 -0
  576. package/dist/web/assets/terminal-tab-B4y6at4h.js.br +0 -0
  577. package/dist/web/assets/terminal-tab-B4y6at4h.js.gz +0 -0
  578. package/dist/web/assets/tool-cards-K0r_yxI0.js.br +0 -0
  579. package/dist/web/assets/tool-cards-K0r_yxI0.js.gz +0 -0
  580. package/dist/web/assets/use-inline-blame-BK23icsE.js.br +0 -0
  581. package/dist/web/assets/use-inline-blame-BK23icsE.js.gz +0 -0
  582. package/dist/web/assets/use-lsp-CRdCPCKW.js.br +0 -0
  583. package/dist/web/assets/use-lsp-CRdCPCKW.js.gz +0 -0
  584. package/dist/web/assets/use-process-kill-BWYX03KF.js.br +0 -0
  585. package/dist/web/assets/use-process-kill-BWYX03KF.js.gz +0 -0
  586. package/dist/web/assets/video-preview-DugVkMB7.js +0 -1
  587. package/dist/web/assets/video-preview-DugVkMB7.js.br +0 -0
  588. package/dist/web/assets/video-preview-DugVkMB7.js.gz +0 -0
  589. package/dist/web/assets/voice-settings-section-Ceihggqf.js.br +0 -0
  590. package/dist/web/assets/voice-settings-section-Ceihggqf.js.gz +0 -0
  591. /package/dist/web/assets/{__vite-browser-external-B_XMEguz.js → __vite-browser-external-C5mXParC.js} +0 -0
  592. /package/dist/web/assets/{agent-session-sheet-store-DO682WSg.js → agent-session-sheet-store-_OeezCXB.js} +0 -0
  593. /package/dist/web/assets/{api-settings-CpO8SPk9.js → api-settings-Cc_CpfmC.js} +0 -0
  594. /package/dist/web/assets/{api-settings-CpO8SPk9.js.br → api-settings-Cc_CpfmC.js.br} +0 -0
  595. /package/dist/web/assets/{api-settings-CpO8SPk9.js.gz → api-settings-Cc_CpfmC.js.gz} +0 -0
  596. /package/dist/web/assets/{api-themes-CJipDH_l.js → api-themes-BtMBSjuM.js} +0 -0
  597. /package/dist/web/assets/{can-open-in-ppm-Bw_xiOXX.js → can-open-in-ppm-DeE2-kd5.js} +0 -0
  598. /package/dist/web/assets/{can-open-in-ppm-Bw_xiOXX.js.br → can-open-in-ppm-DeE2-kd5.js.br} +0 -0
  599. /package/dist/web/assets/{can-open-in-ppm-Bw_xiOXX.js.gz → can-open-in-ppm-DeE2-kd5.js.gz} +0 -0
  600. /package/dist/web/assets/{csv-parser-DcRWxcNV.js → csv-parser-CoxPdyLw.js} +0 -0
  601. /package/dist/web/assets/{csv-parser-DcRWxcNV.js.br → csv-parser-CoxPdyLw.js.br} +0 -0
  602. /package/dist/web/assets/{csv-parser-DcRWxcNV.js.gz → csv-parser-CoxPdyLw.js.gz} +0 -0
  603. /package/dist/web/assets/{design-export-client-CHffN3DM.js → design-export-client-BfdZB7xK.js} +0 -0
  604. /package/dist/web/assets/{design-export-client-CHffN3DM.js.br → design-export-client-BfdZB7xK.js.br} +0 -0
  605. /package/dist/web/assets/{design-export-client-CHffN3DM.js.gz → design-export-client-BfdZB7xK.js.gz} +0 -0
  606. /package/dist/web/assets/{design-responsive-dialog-DSCpv6O1.js → design-responsive-dialog-BiYy3ibS.js} +0 -0
  607. /package/dist/web/assets/{design-responsive-dialog-DSCpv6O1.js.br → design-responsive-dialog-BiYy3ibS.js.br} +0 -0
  608. /package/dist/web/assets/{design-responsive-dialog-DSCpv6O1.js.gz → design-responsive-dialog-BiYy3ibS.js.gz} +0 -0
  609. /package/dist/web/assets/{design-system-status-label-B_0I_3a8.js → design-system-status-label-ekiLyjKn.js} +0 -0
  610. /package/dist/web/assets/{docx-preview-B3eJyY2y.js → docx-preview-Dt6RQpfA.js} +0 -0
  611. /package/dist/web/assets/{docx-preview-B3eJyY2y.js.br → docx-preview-Dt6RQpfA.js.br} +0 -0
  612. /package/dist/web/assets/{docx-preview-B3eJyY2y.js.gz → docx-preview-Dt6RQpfA.js.gz} +0 -0
  613. /package/dist/web/assets/{editor-font-BNwo7zo5.js → editor-font-CBszn6vt.js} +0 -0
  614. /package/dist/web/assets/{format-bytes-CRZfxO2J.js → format-bytes-FQmpZ25A.js} +0 -0
  615. /package/dist/web/assets/{image-gallery-DC3gRAqk.js → image-gallery-B16hO6Ab.js} +0 -0
  616. /package/dist/web/assets/{image-preview-geometry-DN3DZQp0.js → image-preview-geometry-D4Ihz4UV.js} +0 -0
  617. /package/dist/web/assets/{lib-B9k5tn9s.js → lib-6APiJkU3.js} +0 -0
  618. /package/dist/web/assets/{lib-B9k5tn9s.js.br → lib-6APiJkU3.js.br} +0 -0
  619. /package/dist/web/assets/{lib-B9k5tn9s.js.gz → lib-6APiJkU3.js.gz} +0 -0
  620. /package/dist/web/assets/{libesm-5f7T4AHA.js → libesm-5wREk7JN.js} +0 -0
  621. /package/dist/web/assets/{libesm-5f7T4AHA.js.br → libesm-5wREk7JN.js.br} +0 -0
  622. /package/dist/web/assets/{libesm-5f7T4AHA.js.gz → libesm-5wREk7JN.js.gz} +0 -0
  623. /package/dist/web/assets/{media-url-CCGOIxzS.js → media-url-CrT-qulZ.js} +0 -0
  624. /package/dist/web/assets/{metric-chart-canvas-CjFbZuhk.js → metric-chart-canvas-D7f-LQ8x.js} +0 -0
  625. /package/dist/web/assets/{metric-chart-canvas-CjFbZuhk.js.br → metric-chart-canvas-D7f-LQ8x.js.br} +0 -0
  626. /package/dist/web/assets/{metric-chart-canvas-CjFbZuhk.js.gz → metric-chart-canvas-D7f-LQ8x.js.gz} +0 -0
  627. /package/dist/web/assets/{monaco-dotenv-language-Bwq3gQsi.js → monaco-dotenv-language-DbSss7YR.js} +0 -0
  628. /package/dist/web/assets/{onboarding-entry-CuH1Kqwu.js → onboarding-entry-CGFdGLLP.js} +0 -0
  629. /package/dist/web/assets/{onboarding-entry-CuH1Kqwu.js.br → onboarding-entry-CGFdGLLP.js.br} +0 -0
  630. /package/dist/web/assets/{onboarding-entry-CuH1Kqwu.js.gz → onboarding-entry-CGFdGLLP.js.gz} +0 -0
  631. /package/dist/web/assets/{pdf-preview-X8bdpfE9.js → pdf-preview-B8A4T-ES.js} +0 -0
  632. /package/dist/web/assets/{pdf-preview-X8bdpfE9.js.br → pdf-preview-B8A4T-ES.js.br} +0 -0
  633. /package/dist/web/assets/{pdf-preview-X8bdpfE9.js.gz → pdf-preview-B8A4T-ES.js.gz} +0 -0
  634. /package/dist/web/assets/{separator-DMu7VFQa.js → separator-dHj3Km--.js} +0 -0
  635. /package/dist/web/assets/{sortable-header-CipIP7aH.js → sortable-header-BOa8o7NJ.js} +0 -0
  636. /package/dist/web/assets/{sortable-header-CipIP7aH.js.br → sortable-header-BOa8o7NJ.js.br} +0 -0
  637. /package/dist/web/assets/{sortable-header-CipIP7aH.js.gz → sortable-header-BOa8o7NJ.js.gz} +0 -0
  638. /package/dist/web/assets/{use-blob-url-DjuRQWnR.js → use-blob-url-BC69n15x.js} +0 -0
  639. /package/dist/web/assets/{vendor-xterm-Be4L1NHd.js → vendor-xterm-CfasyE0m.js} +0 -0
  640. /package/dist/web/assets/{vendor-xterm-Be4L1NHd.js.br → vendor-xterm-CfasyE0m.js.br} +0 -0
  641. /package/dist/web/assets/{vendor-xterm-Be4L1NHd.js.gz → vendor-xterm-CfasyE0m.js.gz} +0 -0
@@ -0,0 +1 @@
1
+ import{o as e,r as t}from"./api-client-F5Zi1sR0.js";import{t as n}from"./react-CzUPVyyG.js";var r=5e4;function i(e,t){return e.map(e=>({name:e.name,path:t?`${t}/${e.name}`:e.name,type:e.type,ignored:e.isIgnored}))}function a(e,t,n){return t?e.map(e=>o(e,t,n)):n.map(t=>{let n=e.find(e=>e.path===t.path);return n?{...t,children:n.children}:t})}function o(e,t,n){if(e.path===t){let t=n.map(t=>{let n=e.children?.find(e=>e.path===t.path);return n?{...t,children:n.children}:t});return{...e,children:t}}return e.children&&t.startsWith(e.path+`/`)?{...e,children:e.children.map(e=>o(e,t,n))}:e}var s=20,c=3,l=[],u=0,d=0,f=null,p=typeof requestIdleCallback==`function`?e=>requestIdleCallback(()=>e(),{timeout:1e3}):e=>setTimeout(e,200);function m(e){if(e===d)for(;u<c&&l.length>0;){let t=l.shift();u++,f(t).finally(()=>{u--,e===d&&p(()=>m(e))})}}function h(e,t,n){f=n;let r=e.filter(e=>e.type===`directory`&&!e.ignored&&!t(e.path)).slice(0,s).map(e=>e.path);if(r.length===0)return;l.push(...r.filter(e=>!l.includes(e)));let i=d;p(()=>m(i))}function g(){d++,l=[]}function _(e){return e.kind===`node`?e.node.path:`input:${e.targetPath}:${e.inline.type}`}function v(e){return[...e].sort((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1)}function y(e,t,n=null){let r=[],i=n!=null&&n.type!==`rename`,a=n?.type===`rename`?n.existingNode?.path:void 0;i&&n.parentPath===``&&r.push({kind:`input`,inline:n,depth:0,targetPath:``});function o(e,s){for(let c of v(e)){a!=null&&a===c.path?r.push({kind:`input`,inline:n,depth:s,targetPath:c.path}):r.push({kind:`node`,node:c,depth:s});let e=c.type===`directory`&&t.has(c.path);i&&e&&n.parentPath===c.path&&r.push({kind:`input`,inline:n,depth:s+1,targetPath:c.path}),e&&c.children&&o(c.children,s+1)}}return o(e,0),r}function b(e,t){return y(e,t).filter(e=>e.kind===`node`).map(e=>e.node)}function x(e,t){if(!t)return e;let n=e.includes(`\\`)?`\\`:`/`,r=n===`\\`?t.replace(/\//g,`\\`):t;return e.endsWith(n)?`${e}${r}`:`${e}${n}${r}`}function S(e,t){let n=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``),r=n(e),i=n(t);return i===r?``:i.startsWith(`${r}/`)?i.slice(r.length+1):null}function C(e,t){let n=e;for(;;){let e=n.find(e=>e.path===t||t.startsWith(`${e.path}/`));if(!e)return;if(e.path===t)return e;n=e.children??[]}}function w(e,t,n){h(n,t=>e().loadedPaths.has(t)||e().inflight.has(t),n=>e().loadChildren(t,n,{prefetch:!0}))}var T=0,E=0,D=null,O=0;function k(){T++,D=null}var A=n((n,o)=>({tree:[],fileIndex:[],loading:!1,error:null,expandedPaths:new Set,loadedPaths:new Set,inflight:new Map,indexStatus:`idle`,indexStale:!1,indexRemote:!1,indexRevision:0,indexProject:null,selectedFiles:[],inlineAction:null,clipboard:null,focusedPath:null,setInlineAction:e=>n({inlineAction:e}),clearInlineAction:()=>n({inlineAction:null}),setClipboard:e=>n({clipboard:e}),setFocusedPath:e=>n({focusedPath:e}),loadRoot:async r=>{n({loading:!0,error:null});try{let a=i(await t.get(`${e(r)}/files/list?path=`),``),s=new Set(o().loadedPaths);s.add(``),n({tree:a,loading:!1,loadedPaths:s}),w(o,r,a)}catch(e){n({error:e instanceof Error?e.message:`Failed to load files`,loading:!1})}},loadChildren:async(r,s,c)=>{let l=o();if(l.loadedPaths.has(s))return;let u=l.inflight.get(s);if(u)return c?.prefetch||(u.prefetch=!1),u.promise;let d=new AbortController,f={controller:d,promise:void 0,prefetch:!!c?.prefetch},p=new Map(l.inflight);p.set(s,f),n({inflight:p});let m=()=>{let e=new Map(o().inflight);return e.get(s)===f&&e.delete(s),e};return f.promise=(async()=>{try{let c=encodeURIComponent(s),l=await t.get(`${e(r)}/files/list?path=${c}`,{signal:d.signal});if(d.signal.aborted)return;let u=i(l,s),p=o(),h=a(p.tree,s,u),g=new Set(p.loadedPaths);g.add(s),n({tree:h,loadedPaths:g,inflight:m()}),f.prefetch||w(o,r,u)}catch(e){if(n({inflight:m()}),e instanceof Error&&e.name===`AbortError`)return}})(),f.promise},loadPathsBatch:async(r,s)=>{let c=o(),l=[...new Set(s)].filter(e=>!c.loadedPaths.has(e));if(l.length!==0){c.tree.length===0&&n({loading:!0,error:null});try{let s=await t.post(`${e(r)}/files/list-batch`,{paths:l}),c=o(),u=c.tree,d=new Set(c.loadedPaths),f=new Set(c.expandedPaths),p=[...s].sort((e,t)=>e.path.split(`/`).length-t.path.split(`/`).length);for(let e of p){if(e.error!=null||!e.entries){f.delete(e.path);continue}let t=i(e.entries,e.path);u=e.path===``?t:a(u,e.path,t),d.add(e.path)}n({tree:u,loadedPaths:d,expandedPaths:f,loading:!1}),w(o,r,u)}catch(e){n({error:o().tree.length===0?e instanceof Error?e.message:`Failed to load files`:null,loading:!1})}}},loadIndex:i=>{if(D&&o().indexProject===i)return D;let a=++T,s=E;o().indexProject===i?o().indexStatus!==`ready`&&n({indexStatus:`loading`}):n({indexProject:i,fileIndex:[],indexStatus:`loading`,indexStale:!1,indexRemote:!1});let c=(async()=>{try{let c=await t.get(`${e(i)}/files/index?max=${r}`);if(a!==T)return;let l=!Array.isArray(c);n({fileIndex:l?[]:c,indexRemote:l,indexRevision:o().indexRevision+1,indexStatus:`ready`,indexStale:E!==s})}catch{if(a!==T)return;o().indexStatus!==`ready`&&n({indexStatus:`error`})}})().finally(()=>{D===c&&(D=null)});return D=c,c},ensureIndex:e=>{let{indexProject:t,indexStatus:n,indexStale:r}=o();t===e&&n===`ready`&&!r||o().loadIndex(e)},openIndexReader:e=>{O++,o().ensureIndex(e);let t=!0;return()=>{t&&(t=!1,O--)}},indexRebuilt:e=>{o().markIndexStale(e),!(O===0||e!==o().indexProject)&&(D?D.then(()=>{O>0&&e===o().indexProject&&o().ensureIndex(e)}):o().loadIndex(e))},markIndexStale:e=>{e===o().indexProject&&(E++,o().indexStale||n({indexStale:!0}))},invalidateIndex:()=>{k(),n({indexProject:null,indexStatus:`idle`,fileIndex:[],indexStale:!1,indexRemote:!1})},invalidateFolder:async(e,t)=>{let r=o();if(!r.loadedPaths.has(t))return;let i=new Set(r.loadedPaths);i.delete(t),n({loadedPaths:i}),(!t||r.expandedPaths.has(t))&&await o().loadChildren(e,t)},toggleExpand:(e,t)=>{let r=o(),i=new Set(r.expandedPaths);if(i.has(t))i.delete(t),n({expandedPaths:i});else if(i.add(t),n({expandedPaths:i}),!r.loadedPaths.has(t))o().loadChildren(e,t);else{let n=C(o().tree,t);n?.children&&w(o,e,n.children)}},setExpanded:(e,t)=>{let r=new Set(o().expandedPaths);t?r.add(e):r.delete(e),n({expandedPaths:r})},collapseAll:()=>{n({expandedPaths:new Set})},toggleFileSelect:e=>{let t=o().selectedFiles;t.indexOf(e)>=0?n({selectedFiles:t.filter(t=>t!==e)}):n({selectedFiles:[...t,e]})},setSelectedFiles:e=>n({selectedFiles:e}),clearSelection:()=>n({selectedFiles:[]}),reset:()=>{g();for(let e of o().inflight.values())e.controller.abort();k(),n({tree:[],fileIndex:[],loading:!1,error:null,expandedPaths:new Set,loadedPaths:new Set,inflight:new Map,indexStatus:`idle`,indexStale:!1,indexRemote:!1,indexProject:null,selectedFiles:[],inlineAction:null,clipboard:null,focusedPath:null})},fetchTree:async e=>{await o().loadRoot(e),o().loadIndex(e)}})),j=`ppm-explorer-expanded:`;function M(e){try{let t=localStorage.getItem(j+e),n=t?JSON.parse(t):[];return Array.isArray(n)?n.filter(e=>typeof e==`string`):[]}catch{return[]}}function N(e,t){try{let n=[...t].filter(e=>e!==``).slice(0,50);localStorage.setItem(j+e,JSON.stringify(n))}catch{}}function P(){let{tree:e,expandedPaths:t}=A.getState();return b(e,t).map(e=>e.path)}export{N as a,_ as c,S as i,b as l,P as n,A as o,M as r,y as s,x as t};
@@ -1 +1 @@
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-P9Ym7hCv.js";import{Jr as r,Zn as i}from"./icons-CO_II6D-.js";import{r as a}from"./api-client-F5Zi1sR0.js";import{i as o}from"./project-store-CCimwgGF.js";import{o as s}from"./file-store-DY1_0nzY.js";import{t as c}from"./button-DeAyLH9U.js";import{t as l}from"./input-CG8PS8mS.js";import{Ft as u,Tt as d}from"./index-DhWjx5iR.js";import{t as f}from"./separator-DMu7VFQa.js";var p=e(t(),1);function m(){return a.get(`/api/settings/files`)}function h(e){return a.patch(`/api/settings/files`,e)}function g(e){return a.get(`/api/projects/${encodeURIComponent(e)}/settings`)}function _(e,t){return a.patch(`/api/projects/${encodeURIComponent(e)}/settings`,t)}var v=n();function y({value:e,onChange:t,placeholder:n=`e.g. **/*.log`,disabled:a=!1}){let o=(0,p.useRef)([]);function s(n,r){let i=[...e];i[n]=r,t(i)}function u(n){t(e.filter((e,t)=>t!==n)),setTimeout(()=>{let e=Math.max(n-1,0);o.current[e]?.focus()},0)}function d(){t([...e,``]),setTimeout(()=>{o.current[e.length]?.focus()},0)}function f(t,n){n.key===`Enter`?(n.preventDefault(),e[t]?.trim()&&d()):n.key===`Backspace`&&e[t]===``&&(n.preventDefault(),u(t))}return(0,v.jsxs)(`div`,{className:`space-y-1.5`,children:[e.length===0&&(0,v.jsx)(`p`,{className:`text-[11px] text-muted-foreground py-1`,children:`No patterns. Click "Add pattern" to start.`}),e.map((e,t)=>(0,v.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,v.jsx)(l,{ref:e=>{o.current[t]=e},value:e,onChange:e=>s(t,e.target.value),onKeyDown:e=>f(t,e),placeholder:n,disabled:a,className:`h-8 text-xs flex-1 font-mono`,"aria-label":`Pattern ${t+1}`}),(0,v.jsx)(`button`,{type:`button`,onClick:()=>u(t),disabled:a,"aria-label":`Remove pattern ${t+1}`,className:`shrink-0 flex items-center justify-center p-2.5 rounded-md text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors disabled:opacity-40 disabled:pointer-events-none`,children:(0,v.jsx)(r,{className:`size-3.5`})})]},t)),(0,v.jsxs)(c,{type:`button`,variant:`outline`,size:`sm`,onClick:d,disabled:a,className:`h-8 text-xs gap-1.5 w-full cursor-pointer`,children:[(0,v.jsx)(i,{className:`size-3.5`}),`Add pattern`]})]})}var b={filesExclude:[],searchExclude:[],useIgnoreFiles:!0};function x(){let e=o(e=>e.activeProject),[t,n]=(0,p.useState)(`global`),[r,i]=(0,p.useState)([]),[a,l]=(0,p.useState)([]),[x,S]=(0,p.useState)(!0),[C,w]=(0,p.useState)(!1),[T,E]=(0,p.useState)(!1),[D,O]=(0,p.useState)(null),[k,A]=(0,p.useState)(!1),j=(0,p.useRef)(null);(0,p.useEffect)(()=>{j.current?.abort();let n=new AbortController;return j.current=n,A(!0),O(null),(async()=>{try{if(t===`global`){let e=await m();if(n.signal.aborted)return;i(e.filesExclude),l(e.searchExclude),S(e.useIgnoreFiles)}else{if(!e)return;let t=await g(e.name);if(n.signal.aborted)return;let r=t.files??{};i(r.filesExclude??b.filesExclude),l(r.searchExclude??b.searchExclude),S(r.useIgnoreFiles??b.useIgnoreFiles)}}catch(e){if(n.signal.aborted)return;O(e.message)}finally{n.signal.aborted||A(!1)}})(),()=>n.abort()},[t,e?.name]);let M=async()=>{w(!0),E(!1),O(null);try{let n={filesExclude:r.filter(e=>e.trim()!==``),searchExclude:a.filter(e=>e.trim()!==``),useIgnoreFiles:x};if(t===`global`)await h(n);else{if(!e)throw Error(`No active project`);await _(e.name,{files:n})}let i=s.getState();i.invalidateIndex(),e&&i.loadIndex(e.name),E(!0),setTimeout(()=>E(!1),2e3)}catch(e){O(e.message)}finally{w(!1)}},N=!!e;return(0,v.jsxs)(`div`,{className:`space-y-4`,children:[(0,v.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`File Filters`}),(0,v.jsxs)(`div`,{className:`flex gap-1`,children:[(0,v.jsx)(`button`,{type:`button`,onClick:()=>n(`global`),className:`flex-1 py-1.5 rounded-md text-xs font-medium transition-colors cursor-pointer ${t===`global`?`bg-primary text-primary-foreground`:`bg-muted text-muted-foreground hover:bg-accent`}`,children:`Global`}),(0,v.jsx)(`button`,{type:`button`,onClick:()=>N&&n(`project`),disabled:!N,title:N?void 0:`Open a project to edit per-project overrides`,className:`flex-1 py-1.5 rounded-md text-xs font-medium transition-colors cursor-pointer disabled:opacity-40 disabled:cursor-not-allowed ${t===`project`?`bg-primary text-primary-foreground`:`bg-muted text-muted-foreground hover:bg-accent`}`,children:e?e.name:`Per-project`})]}),t===`project`&&e&&(0,v.jsxs)(`p`,{className:`text-[11px] text-muted-foreground -mt-2`,children:[`Overrides for `,(0,v.jsx)(`span`,{className:`font-medium`,children:e.name}),`. Leave empty to use global settings.`]}),k?(0,v.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading...`}):(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,v.jsx)(u,{className:`text-xs`,children:`Files to Exclude`}),(0,v.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Glob patterns hidden from the file tree and palette.`}),(0,v.jsx)(y,{value:r,onChange:i,placeholder:`e.g. **/*.log or node_modules/**`,disabled:C})]}),(0,v.jsx)(f,{}),(0,v.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,v.jsx)(u,{className:`text-xs`,children:`Search to Exclude`}),(0,v.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Glob patterns excluded from file index / palette search.`}),(0,v.jsx)(y,{value:a,onChange:l,placeholder:`e.g. dist/** or **/*.min.js`,disabled:C})]}),(0,v.jsx)(f,{}),(0,v.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,v.jsxs)(`div`,{children:[(0,v.jsx)(u,{className:`text-xs`,children:`Use .gitignore rules`}),(0,v.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Respect .gitignore when filtering the file tree and index.`})]}),(0,v.jsx)(d,{checked:x,onCheckedChange:S,disabled:C})]}),D&&(0,v.jsx)(`p`,{className:`text-[11px] text-destructive`,children:D}),(0,v.jsx)(c,{onClick:M,disabled:C||k,size:`sm`,className:`h-8 text-xs w-full cursor-pointer`,children:C?`Saving...`:T?`Saved`:`Save`})]})]})}export{x as FilesSettingsSection};
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-P9Ym7hCv.js";import{Jr as r,Zn as i}from"./icons-CO_II6D-.js";import{r as a}from"./api-client-F5Zi1sR0.js";import{i as o}from"./project-store-CCimwgGF.js";import{o as s}from"./file-store-Cm7-pHux.js";import{t as c}from"./button-DeAyLH9U.js";import{t as l}from"./input-CG8PS8mS.js";import{Et as u,Lt as d}from"./index-CyDLBddf.js";import{t as f}from"./separator-dHj3Km--.js";var p=e(t(),1);function m(){return a.get(`/api/settings/files`)}function h(e){return a.patch(`/api/settings/files`,e)}function g(e){return a.get(`/api/projects/${encodeURIComponent(e)}/settings`)}function _(e,t){return a.patch(`/api/projects/${encodeURIComponent(e)}/settings`,t)}var v=n();function y({value:e,onChange:t,placeholder:n=`e.g. **/*.log`,disabled:a=!1}){let o=(0,p.useRef)([]);function s(n,r){let i=[...e];i[n]=r,t(i)}function u(n){t(e.filter((e,t)=>t!==n)),setTimeout(()=>{let e=Math.max(n-1,0);o.current[e]?.focus()},0)}function d(){t([...e,``]),setTimeout(()=>{o.current[e.length]?.focus()},0)}function f(t,n){n.key===`Enter`?(n.preventDefault(),e[t]?.trim()&&d()):n.key===`Backspace`&&e[t]===``&&(n.preventDefault(),u(t))}return(0,v.jsxs)(`div`,{className:`space-y-1.5`,children:[e.length===0&&(0,v.jsx)(`p`,{className:`text-[11px] text-muted-foreground py-1`,children:`No patterns. Click "Add pattern" to start.`}),e.map((e,t)=>(0,v.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,v.jsx)(l,{ref:e=>{o.current[t]=e},value:e,onChange:e=>s(t,e.target.value),onKeyDown:e=>f(t,e),placeholder:n,disabled:a,className:`h-8 text-xs flex-1 font-mono`,"aria-label":`Pattern ${t+1}`}),(0,v.jsx)(`button`,{type:`button`,onClick:()=>u(t),disabled:a,"aria-label":`Remove pattern ${t+1}`,className:`shrink-0 flex items-center justify-center p-2.5 rounded-md text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors disabled:opacity-40 disabled:pointer-events-none`,children:(0,v.jsx)(r,{className:`size-3.5`})})]},t)),(0,v.jsxs)(c,{type:`button`,variant:`outline`,size:`sm`,onClick:d,disabled:a,className:`h-8 text-xs gap-1.5 w-full cursor-pointer`,children:[(0,v.jsx)(i,{className:`size-3.5`}),`Add pattern`]})]})}var b={filesExclude:[],searchExclude:[],useIgnoreFiles:!0};function x(){let e=o(e=>e.activeProject),[t,n]=(0,p.useState)(`global`),[r,i]=(0,p.useState)([]),[a,l]=(0,p.useState)([]),[x,S]=(0,p.useState)(!0),[C,w]=(0,p.useState)(!1),[T,E]=(0,p.useState)(!1),[D,O]=(0,p.useState)(null),[k,A]=(0,p.useState)(!1),j=(0,p.useRef)(null);(0,p.useEffect)(()=>{j.current?.abort();let n=new AbortController;return j.current=n,A(!0),O(null),(async()=>{try{if(t===`global`){let e=await m();if(n.signal.aborted)return;i(e.filesExclude),l(e.searchExclude),S(e.useIgnoreFiles)}else{if(!e)return;let t=await g(e.name);if(n.signal.aborted)return;let r=t.files??{};i(r.filesExclude??b.filesExclude),l(r.searchExclude??b.searchExclude),S(r.useIgnoreFiles??b.useIgnoreFiles)}}catch(e){if(n.signal.aborted)return;O(e.message)}finally{n.signal.aborted||A(!1)}})(),()=>n.abort()},[t,e?.name]);let M=async()=>{w(!0),E(!1),O(null);try{let n={filesExclude:r.filter(e=>e.trim()!==``),searchExclude:a.filter(e=>e.trim()!==``),useIgnoreFiles:x};if(t===`global`)await h(n);else{if(!e)throw Error(`No active project`);await _(e.name,{files:n})}let i=s.getState();i.invalidateIndex(),e&&i.loadIndex(e.name),E(!0),setTimeout(()=>E(!1),2e3)}catch(e){O(e.message)}finally{w(!1)}},N=!!e;return(0,v.jsxs)(`div`,{className:`space-y-4`,children:[(0,v.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`File Filters`}),(0,v.jsxs)(`div`,{className:`flex gap-1`,children:[(0,v.jsx)(`button`,{type:`button`,onClick:()=>n(`global`),className:`flex-1 py-1.5 rounded-md text-xs font-medium transition-colors cursor-pointer ${t===`global`?`bg-primary text-primary-foreground`:`bg-muted text-muted-foreground hover:bg-accent`}`,children:`Global`}),(0,v.jsx)(`button`,{type:`button`,onClick:()=>N&&n(`project`),disabled:!N,title:N?void 0:`Open a project to edit per-project overrides`,className:`flex-1 py-1.5 rounded-md text-xs font-medium transition-colors cursor-pointer disabled:opacity-40 disabled:cursor-not-allowed ${t===`project`?`bg-primary text-primary-foreground`:`bg-muted text-muted-foreground hover:bg-accent`}`,children:e?e.name:`Per-project`})]}),t===`project`&&e&&(0,v.jsxs)(`p`,{className:`text-[11px] text-muted-foreground -mt-2`,children:[`Overrides for `,(0,v.jsx)(`span`,{className:`font-medium`,children:e.name}),`. Leave empty to use global settings.`]}),k?(0,v.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading...`}):(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,v.jsx)(d,{className:`text-xs`,children:`Files to Exclude`}),(0,v.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Glob patterns hidden from the file tree and palette.`}),(0,v.jsx)(y,{value:r,onChange:i,placeholder:`e.g. **/*.log or node_modules/**`,disabled:C})]}),(0,v.jsx)(f,{}),(0,v.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,v.jsx)(d,{className:`text-xs`,children:`Search to Exclude`}),(0,v.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Glob patterns excluded from file index / palette search.`}),(0,v.jsx)(y,{value:a,onChange:l,placeholder:`e.g. dist/** or **/*.min.js`,disabled:C})]}),(0,v.jsx)(f,{}),(0,v.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,v.jsxs)(`div`,{children:[(0,v.jsx)(d,{className:`text-xs`,children:`Use .gitignore rules`}),(0,v.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Respect .gitignore when filtering the file tree and index.`})]}),(0,v.jsx)(u,{checked:x,onCheckedChange:S,disabled:C})]}),D&&(0,v.jsx)(`p`,{className:`text-[11px] text-destructive`,children:D}),(0,v.jsx)(c,{onClick:M,disabled:C||k,size:`sm`,className:`h-8 text-xs w-full cursor-pointer`,children:C?`Saving...`:T?`Saved`:`Save`})]})]})}export{x as FilesSettingsSection};
@@ -1 +1 @@
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-P9Ym7hCv.js";import{Zt as r,lt as i,ut as a,w as o,wr as s}from"./icons-CO_II6D-.js";import{r as c,s as l}from"./api-client-F5Zi1sR0.js";import{t as u}from"./settings-store-DfuiLq_9.js";import"./portal-container-context-NFSuymMu.js";import"./project-store-CCimwgGF.js";import"./use-is-mobile-BClDZJP5.js";import"./onboarding-quick-orientation-DPHYFMbA.js";import{t as d}from"./button-DeAyLH9U.js";import"./dialog-Bocc0Fgb.js";import{t as f}from"./input-CG8PS8mS.js";import{Ft as p,S as m,Tt as h,vn as g}from"./index-DhWjx5iR.js";import{t as _}from"./onboarding-entry-CuH1Kqwu.js";import{t as v}from"./separator-DMu7VFQa.js";var y=e(t(),1),b=n();function x(){let[e,t]=(0,y.useState)(!1),[n,s]=(0,y.useState)(``),[u,p]=(0,y.useState)(``),[m,h]=(0,y.useState)(!1),[g,_]=(0,y.useState)(!1),[v,x]=(0,y.useState)(!1),[S,C]=(0,y.useState)(null),w=u.length>0&&n!==u,T=n.trim().length>=4&&n===u&&!g,E=(0,y.useCallback)(async()=>{if(T){_(!0),C(null);try{let{token:e}=await c.put(`/api/settings/auth/password`,{password:n.trim(),confirm:u.trim()});l(e),x(!0),s(``),p(``),setTimeout(()=>{x(!1),t(!1)},1500)}catch(e){C(e instanceof Error?e.message:`Failed to change password`)}finally{_(!1)}}},[T,n,u]);return e?(0,b.jsxs)(`section`,{className:`space-y-2`,children:[(0,b.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Change Password`}),(0,b.jsxs)(`div`,{className:`space-y-2`,children:[(0,b.jsxs)(`div`,{className:`relative`,children:[(0,b.jsx)(f,{type:m?`text`:`password`,placeholder:`New password`,value:n,onChange:e=>s(e.target.value),className:`h-8 text-xs pr-8`,autoFocus:!0}),(0,b.jsx)(`button`,{type:`button`,className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground cursor-pointer`,onClick:()=>h(!m),tabIndex:-1,children:m?(0,b.jsx)(a,{className:`size-3.5`}):(0,b.jsx)(i,{className:`size-3.5`})})]}),(0,b.jsx)(f,{type:m?`text`:`password`,placeholder:`Confirm password`,value:u,onChange:e=>p(e.target.value),onKeyDown:e=>{e.key===`Enter`&&E()},className:`h-8 text-xs`}),w&&(0,b.jsx)(`p`,{className:`text-[11px] text-destructive`,children:`Passwords do not match`}),S&&(0,b.jsx)(`p`,{className:`text-[11px] text-destructive`,children:S}),(0,b.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,b.jsx)(d,{variant:`outline`,size:`sm`,className:`h-8 text-xs flex-1 cursor-pointer`,onClick:()=>{t(!1),s(``),p(``),C(null)},children:`Cancel`}),(0,b.jsx)(d,{variant:v?`default`:`outline`,size:`sm`,className:`h-8 text-xs flex-1 cursor-pointer`,disabled:!T,onClick:E,children:g?`...`:v?(0,b.jsx)(o,{className:`size-3.5`}):`Save`})]}),(0,b.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Min 4 characters. You'll stay logged in on this device.`})]})]}):(0,b.jsxs)(`section`,{className:`space-y-2`,children:[(0,b.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Security`}),(0,b.jsxs)(d,{variant:`outline`,size:`sm`,className:`h-8 text-xs gap-1.5 cursor-pointer`,onClick:()=>t(!0),children:[(0,b.jsx)(r,{className:`size-3.5`}),`Change Password`]})]})}function S(){let{deviceName:e,setDeviceName:t,version:n,keepScreenAwake:r,setKeepScreenAwake:i}=u(g(e=>({deviceName:e.deviceName,setDeviceName:e.setDeviceName,version:e.version,keepScreenAwake:e.keepScreenAwake,setKeepScreenAwake:e.setKeepScreenAwake}))),[a]=(0,y.useState)(m),[c,l]=(0,y.useState)(e??``),[S,C]=(0,y.useState)(!1),[w,T]=(0,y.useState)(!1),E=(0,y.useRef)(void 0),D=c.trim()!==(e??``),O=(0,y.useCallback)(async()=>{if(D){C(!0);try{await t(c),T(!0),clearTimeout(E.current),E.current=setTimeout(()=>T(!1),2e3)}finally{C(!1)}}},[c,D,t]);return(0,b.jsxs)(`div`,{className:`space-y-6`,children:[(0,b.jsxs)(`section`,{className:`space-y-2`,children:[(0,b.jsx)(`h3`,{className:`text-sm font-medium`,children:`Learn PPM`}),(0,b.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Choose your experience and a task. Guidance is saved in this browser.`}),(0,b.jsx)(_,{compact:!0})]}),(0,b.jsx)(v,{}),(0,b.jsxs)(`section`,{className:`space-y-2`,children:[(0,b.jsx)(p,{htmlFor:`device-name`,children:`Device Name`}),(0,b.jsxs)(`div`,{className:`flex gap-2`,children:[(0,b.jsx)(f,{id:`device-name`,value:c,onChange:e=>l(e.target.value),onKeyDown:e=>{e.key===`Enter`&&O()},placeholder:`My Device`,className:`flex-1`,maxLength:100}),(0,b.jsx)(d,{variant:w?`default`:`outline`,className:`cursor-pointer shrink-0`,disabled:!D||S,onClick:O,children:S?`...`:w?(0,b.jsx)(o,{className:`size-4`}):`Save`})]}),(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Shown in page title and synced to PPM Cloud.`})]}),(0,b.jsx)(v,{}),(0,b.jsxs)(`section`,{className:`flex items-center justify-between gap-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0`,children:[(0,b.jsx)(s,{className:`size-4 text-muted-foreground shrink-0`}),(0,b.jsxs)(`div`,{className:`min-w-0`,children:[(0,b.jsx)(`p`,{className:`text-sm font-medium`,children:`Keep Screen Awake`}),(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a===`insecure`?`Unavailable over plain HTTP — reach PPM through its HTTPS tunnel address to use this.`:a===`unsupported`?`This browser does not support screen wake locks.`:`Stop this device dimming while a chat turn is running.`})]})]}),(0,b.jsx)(h,{checked:r&&a===`ok`,disabled:a!==`ok`,onCheckedChange:i})]}),(0,b.jsx)(v,{}),(0,b.jsx)(x,{}),(0,b.jsx)(v,{}),(0,b.jsxs)(`section`,{className:`space-y-1`,children:[(0,b.jsx)(`h3`,{className:`text-sm font-medium`,children:`About`}),(0,b.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`PPM — Personal Project Manager`}),(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`A mobile-first web IDE for managing your projects.`}),n&&(0,b.jsxs)(`p`,{className:`text-xs text-muted-foreground tabular-nums`,children:[`Version `,n]})]})]})}export{S as GeneralSettingsSection};
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-P9Ym7hCv.js";import{Zt as r,lt as i,ut as a,w as o,wr as s}from"./icons-CO_II6D-.js";import{r as c,s as l}from"./api-client-F5Zi1sR0.js";import{t as u}from"./settings-store-Cyuo8ceh.js";import"./portal-container-context-NFSuymMu.js";import"./project-store-CCimwgGF.js";import"./use-is-mobile-BClDZJP5.js";import"./onboarding-quick-orientation-DPHYFMbA.js";import{t as d}from"./button-DeAyLH9U.js";import"./dialog-Bocc0Fgb.js";import{t as f}from"./input-CG8PS8mS.js";import{C as p,Et as m,Lt as h,bn as g}from"./index-CyDLBddf.js";import{t as _}from"./onboarding-entry-CGFdGLLP.js";import{t as v}from"./separator-dHj3Km--.js";var y=e(t(),1),b=n();function x(){let[e,t]=(0,y.useState)(!1),[n,s]=(0,y.useState)(``),[u,p]=(0,y.useState)(``),[m,h]=(0,y.useState)(!1),[g,_]=(0,y.useState)(!1),[v,x]=(0,y.useState)(!1),[S,C]=(0,y.useState)(null),w=u.length>0&&n!==u,T=n.trim().length>=4&&n===u&&!g,E=(0,y.useCallback)(async()=>{if(T){_(!0),C(null);try{let{token:e}=await c.put(`/api/settings/auth/password`,{password:n.trim(),confirm:u.trim()});l(e),x(!0),s(``),p(``),setTimeout(()=>{x(!1),t(!1)},1500)}catch(e){C(e instanceof Error?e.message:`Failed to change password`)}finally{_(!1)}}},[T,n,u]);return e?(0,b.jsxs)(`section`,{className:`space-y-2`,children:[(0,b.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Change Password`}),(0,b.jsxs)(`div`,{className:`space-y-2`,children:[(0,b.jsxs)(`div`,{className:`relative`,children:[(0,b.jsx)(f,{type:m?`text`:`password`,placeholder:`New password`,value:n,onChange:e=>s(e.target.value),className:`h-8 text-xs pr-8`,autoFocus:!0}),(0,b.jsx)(`button`,{type:`button`,className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground cursor-pointer`,onClick:()=>h(!m),tabIndex:-1,children:m?(0,b.jsx)(a,{className:`size-3.5`}):(0,b.jsx)(i,{className:`size-3.5`})})]}),(0,b.jsx)(f,{type:m?`text`:`password`,placeholder:`Confirm password`,value:u,onChange:e=>p(e.target.value),onKeyDown:e=>{e.key===`Enter`&&E()},className:`h-8 text-xs`}),w&&(0,b.jsx)(`p`,{className:`text-[11px] text-destructive`,children:`Passwords do not match`}),S&&(0,b.jsx)(`p`,{className:`text-[11px] text-destructive`,children:S}),(0,b.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,b.jsx)(d,{variant:`outline`,size:`sm`,className:`h-8 text-xs flex-1 cursor-pointer`,onClick:()=>{t(!1),s(``),p(``),C(null)},children:`Cancel`}),(0,b.jsx)(d,{variant:v?`default`:`outline`,size:`sm`,className:`h-8 text-xs flex-1 cursor-pointer`,disabled:!T,onClick:E,children:g?`...`:v?(0,b.jsx)(o,{className:`size-3.5`}):`Save`})]}),(0,b.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Min 4 characters. You'll stay logged in on this device.`})]})]}):(0,b.jsxs)(`section`,{className:`space-y-2`,children:[(0,b.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Security`}),(0,b.jsxs)(d,{variant:`outline`,size:`sm`,className:`h-8 text-xs gap-1.5 cursor-pointer`,onClick:()=>t(!0),children:[(0,b.jsx)(r,{className:`size-3.5`}),`Change Password`]})]})}function S(){let{deviceName:e,setDeviceName:t,version:n,keepScreenAwake:r,setKeepScreenAwake:i}=u(g(e=>({deviceName:e.deviceName,setDeviceName:e.setDeviceName,version:e.version,keepScreenAwake:e.keepScreenAwake,setKeepScreenAwake:e.setKeepScreenAwake}))),[a]=(0,y.useState)(p),[c,l]=(0,y.useState)(e??``),[S,C]=(0,y.useState)(!1),[w,T]=(0,y.useState)(!1),E=(0,y.useRef)(void 0),D=c.trim()!==(e??``),O=(0,y.useCallback)(async()=>{if(D){C(!0);try{await t(c),T(!0),clearTimeout(E.current),E.current=setTimeout(()=>T(!1),2e3)}finally{C(!1)}}},[c,D,t]);return(0,b.jsxs)(`div`,{className:`space-y-6`,children:[(0,b.jsxs)(`section`,{className:`space-y-2`,children:[(0,b.jsx)(`h3`,{className:`text-sm font-medium`,children:`Learn PPM`}),(0,b.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Choose your experience and a task. Guidance is saved in this browser.`}),(0,b.jsx)(_,{compact:!0})]}),(0,b.jsx)(v,{}),(0,b.jsxs)(`section`,{className:`space-y-2`,children:[(0,b.jsx)(h,{htmlFor:`device-name`,children:`Device Name`}),(0,b.jsxs)(`div`,{className:`flex gap-2`,children:[(0,b.jsx)(f,{id:`device-name`,value:c,onChange:e=>l(e.target.value),onKeyDown:e=>{e.key===`Enter`&&O()},placeholder:`My Device`,className:`flex-1`,maxLength:100}),(0,b.jsx)(d,{variant:w?`default`:`outline`,className:`cursor-pointer shrink-0`,disabled:!D||S,onClick:O,children:S?`...`:w?(0,b.jsx)(o,{className:`size-4`}):`Save`})]}),(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Shown in page title and synced to PPM Cloud.`})]}),(0,b.jsx)(v,{}),(0,b.jsxs)(`section`,{className:`flex items-center justify-between gap-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0`,children:[(0,b.jsx)(s,{className:`size-4 text-muted-foreground shrink-0`}),(0,b.jsxs)(`div`,{className:`min-w-0`,children:[(0,b.jsx)(`p`,{className:`text-sm font-medium`,children:`Keep Screen Awake`}),(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a===`insecure`?`Unavailable over plain HTTP — reach PPM through its HTTPS tunnel address to use this.`:a===`unsupported`?`This browser does not support screen wake locks.`:`Stop this device dimming while a chat turn is running.`})]})]}),(0,b.jsx)(m,{checked:r&&a===`ok`,disabled:a!==`ok`,onCheckedChange:i})]}),(0,b.jsx)(v,{}),(0,b.jsx)(x,{}),(0,b.jsx)(v,{}),(0,b.jsxs)(`section`,{className:`space-y-1`,children:[(0,b.jsx)(`h3`,{className:`text-sm font-medium`,children:`About`}),(0,b.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`PPM — Personal Project Manager`}),(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`A mobile-first web IDE for managing your projects.`}),n&&(0,b.jsxs)(`p`,{className:`text-xs text-muted-foreground tabular-nums`,children:[`Version `,n]})]})]})}export{S as GeneralSettingsSection};
@@ -1 +1 @@
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-P9Ym7hCv.js";import{Dr as r,X as i,Y as a,a as o,d as s,ir as c,un as l}from"./icons-CO_II6D-.js";import{r as u}from"./api-client-F5Zi1sR0.js";import{n as d}from"./utils-btZ8C8-R.js";import{i as f}from"./project-store-CCimwgGF.js";import"./git-repo-store-B_u5RzIM.js";import"./scroll-area-sjOeAfoD.js";import{gr as p,on as m,vn as h}from"./index-DhWjx5iR.js";var g=e(t(),1),_=n(),v=[`#2563eb`,`#16a34a`,`#d97706`,`#9333ea`,`#dc2626`,`#0891b2`,`#c026d3`,`#ea580c`];function y(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return v[Math.abs(t)%v.length]}function b({name:e,syncState:t,isHead:n,isTag:c,className:l}){let u=c?`#d97706`:y(e),f=c?r:t===`synced`?a:t===`ahead`?s:t===`behind`?o:t===`remote-only`?a:i,p=c?`Tag: ${e}`:t===`synced`?`${e} — synced with remote`:t===`ahead`?`${e} — ahead of remote`:t===`behind`?`${e} — behind remote`:t===`remote-only`?`${e} — remote only`:`${e} — local only`;return(0,_.jsxs)(`span`,{className:d(`inline-flex items-center gap-1 rounded-md border px-1.5 py-0.5 text-[11px] font-medium leading-tight max-w-[220px]`,n&&`ring-1 ring-offset-1 ring-offset-background`,t===`remote-only`&&`opacity-70`,l),style:{borderColor:u,backgroundColor:u+`1A`,color:`var(--text)`,...n?{"--tw-ring-color":u}:{}},title:p,children:[(0,_.jsx)(f,{className:`size-3 shrink-0`,style:{color:u}}),(0,_.jsx)(`span`,{className:`truncate`,children:e})]})}function x(e,t,n,r){let i=[],a=e===r;for(let e of t)e.startsWith(`tag: `)&&i.push({name:e.slice(5),syncState:`synced`,isTag:!0});let o=n.filter(t=>t.commitHash===e),s=o.filter(e=>!e.remote),c=o.filter(e=>e.remote);new Set(s.map(e=>e.name));let l=new Set;for(let e of s){let t=`local-only`;e.remotes.length>0&&(t=e.ahead>0&&e.behind===0?`ahead`:e.behind>0&&e.ahead===0?`behind`:`synced`),i.push({name:e.name,syncState:t,isHead:a&&e.current});for(let t of c){let n=t.name.replace(/^remotes\//,``),r=n.indexOf(`/`);r<0||n.slice(r+1)===e.name&&l.add(t.name)}}for(let e of c){if(l.has(e.name))continue;let t=e.name.replace(/^remotes\//,``);i.push({name:t,syncState:`remote-only`})}return i}var S=100;function C({metadata:e}){let t=e?.projectName??f(h(e=>e.activeProject))?.name,{gitUrl:n}=m(t),[r,i]=(0,g.useState)(null),[a,o]=(0,g.useState)(!1),[s,d]=(0,g.useState)(!0),v=(0,g.useRef)(null),y=(0,g.useCallback)(async(e=0,r=!1)=>{if(t){o(!0);try{let t=await u.get(n(`/graph?max=${S}&skip=${e}`));i(e=>r&&e?{...t,commits:[...e.commits,...t.commits]}:t),d(t.commits.length===S)}catch{}o(!1)}},[t]);(0,g.useEffect)(()=>{y()},[y]);let b=(0,g.useCallback)(()=>{a||!s||!r||y(r.commits.length,!0)},[a,s,r,y]),x=(0,g.useCallback)(e=>{let t=e.currentTarget;t.scrollHeight-t.scrollTop-t.clientHeight<200&&b()},[b]);return t?(0,_.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 border-b border-border shrink-0`,children:[(0,_.jsx)(p,{className:`size-4 text-text-secondary`}),(0,_.jsx)(`span`,{className:`text-xs font-medium text-text-primary`,children:`Git Log`}),(0,_.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:r?`${r.commits.length} commits`:``}),(0,_.jsx)(`div`,{className:`flex-1`}),(0,_.jsx)(`button`,{onClick:()=>y(),disabled:a,className:`p-1 rounded text-text-subtle hover:text-text-secondary transition-colors`,title:`Refresh`,children:(0,_.jsx)(c,{className:`size-3.5 ${a?`animate-spin`:``}`})})]}),!r&&a?(0,_.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,_.jsx)(l,{className:`size-5 animate-spin text-primary`})}):r&&r.commits.length===0?(0,_.jsx)(`div`,{className:`flex items-center justify-center h-full text-text-secondary text-sm`,children:`No commits yet`}):r?(0,_.jsxs)(`div`,{ref:v,className:`flex-1 overflow-y-auto min-h-0`,onScroll:x,children:[r.commits.map(e=>(0,_.jsx)(w,{commit:e,branches:r.branches,head:r.head},e.hash)),a&&(0,_.jsx)(`div`,{className:`flex items-center justify-center py-3`,children:(0,_.jsx)(l,{className:`size-4 animate-spin text-text-subtle`})}),!s&&r.commits.length>0&&(0,_.jsx)(`div`,{className:`text-center text-[10px] text-text-subtle py-3`,children:`End of history`})]}):null]}):(0,_.jsx)(`div`,{className:`flex items-center justify-center h-full text-text-secondary text-sm`,children:`Select a project to view git log`})}function w({commit:e,branches:t,head:n}){let r=e.hash===n,i=x(e.hash,e.refs,t,n);return(0,_.jsxs)(`div`,{className:`flex items-start gap-2 px-3 py-1.5 border-b border-border/50 hover:bg-surface-elevated transition-colors ${r?`bg-primary/5`:``}`,children:[(0,_.jsx)(`div`,{className:`flex items-center pt-1 shrink-0`,children:(0,_.jsx)(`span`,{className:`size-2.5 rounded-full border-2 ${r?`border-primary bg-primary`:`border-text-subtle bg-transparent`}`})}),(0,_.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[i.length>0&&(0,_.jsx)(`div`,{className:`flex flex-wrap items-center gap-1 mb-0.5`,children:i.map(e=>(0,_.jsx)(b,{...e},`${e.name}-${e.syncState}`))}),(0,_.jsx)(`p`,{className:`text-xs text-text-primary truncate leading-snug`,children:e.subject}),(0,_.jsxs)(`div`,{className:`flex items-center gap-2 mt-0.5`,children:[(0,_.jsx)(`span`,{className:`text-[10px] font-mono text-text-subtle`,children:e.abbreviatedHash}),(0,_.jsx)(`span`,{className:`text-[10px] text-text-subtle truncate`,children:e.authorName}),(0,_.jsx)(`span`,{className:`text-[10px] text-text-subtle shrink-0`,children:T(e.authorDate)})]})]})]})}function T(e){let t=new Date(e),n=Date.now()-t.getTime(),r=Math.floor(n/6e4);if(r<1)return`now`;if(r<60)return`${r}m`;let i=Math.floor(r/60);if(i<24)return`${i}h`;let a=Math.floor(i/24);return a<30?`${a}d`:t.toLocaleDateString(`en`,{month:`short`,day:`numeric`})}export{C as GitLogPanel};
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-P9Ym7hCv.js";import{Dr as r,X as i,Y as a,a as o,d as s,ir as c,un as l}from"./icons-CO_II6D-.js";import{r as u}from"./api-client-F5Zi1sR0.js";import{n as d}from"./utils-btZ8C8-R.js";import{i as f}from"./project-store-CCimwgGF.js";import"./git-repo-store-B_u5RzIM.js";import"./scroll-area-sjOeAfoD.js";import{bn as p,cn as m,yr as h}from"./index-CyDLBddf.js";var g=e(t(),1),_=n(),v=[`#2563eb`,`#16a34a`,`#d97706`,`#9333ea`,`#dc2626`,`#0891b2`,`#c026d3`,`#ea580c`];function y(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return v[Math.abs(t)%v.length]}function b({name:e,syncState:t,isHead:n,isTag:c,className:l}){let u=c?`#d97706`:y(e),f=c?r:t===`synced`?a:t===`ahead`?s:t===`behind`?o:t===`remote-only`?a:i,p=c?`Tag: ${e}`:t===`synced`?`${e} — synced with remote`:t===`ahead`?`${e} — ahead of remote`:t===`behind`?`${e} — behind remote`:t===`remote-only`?`${e} — remote only`:`${e} — local only`;return(0,_.jsxs)(`span`,{className:d(`inline-flex items-center gap-1 rounded-md border px-1.5 py-0.5 text-[11px] font-medium leading-tight max-w-[220px]`,n&&`ring-1 ring-offset-1 ring-offset-background`,t===`remote-only`&&`opacity-70`,l),style:{borderColor:u,backgroundColor:u+`1A`,color:`var(--text)`,...n?{"--tw-ring-color":u}:{}},title:p,children:[(0,_.jsx)(f,{className:`size-3 shrink-0`,style:{color:u}}),(0,_.jsx)(`span`,{className:`truncate`,children:e})]})}function x(e,t,n,r){let i=[],a=e===r;for(let e of t)e.startsWith(`tag: `)&&i.push({name:e.slice(5),syncState:`synced`,isTag:!0});let o=n.filter(t=>t.commitHash===e),s=o.filter(e=>!e.remote),c=o.filter(e=>e.remote);new Set(s.map(e=>e.name));let l=new Set;for(let e of s){let t=`local-only`;e.remotes.length>0&&(t=e.ahead>0&&e.behind===0?`ahead`:e.behind>0&&e.ahead===0?`behind`:`synced`),i.push({name:e.name,syncState:t,isHead:a&&e.current});for(let t of c){let n=t.name.replace(/^remotes\//,``),r=n.indexOf(`/`);r<0||n.slice(r+1)===e.name&&l.add(t.name)}}for(let e of c){if(l.has(e.name))continue;let t=e.name.replace(/^remotes\//,``);i.push({name:t,syncState:`remote-only`})}return i}var S=100;function C({metadata:e}){let t=e?.projectName??f(p(e=>e.activeProject))?.name,{gitUrl:n}=m(t),[r,i]=(0,g.useState)(null),[a,o]=(0,g.useState)(!1),[s,d]=(0,g.useState)(!0),v=(0,g.useRef)(null),y=(0,g.useCallback)(async(e=0,r=!1)=>{if(t){o(!0);try{let t=await u.get(n(`/graph?max=${S}&skip=${e}`));i(e=>r&&e?{...t,commits:[...e.commits,...t.commits]}:t),d(t.commits.length===S)}catch{}o(!1)}},[t]);(0,g.useEffect)(()=>{y()},[y]);let b=(0,g.useCallback)(()=>{a||!s||!r||y(r.commits.length,!0)},[a,s,r,y]),x=(0,g.useCallback)(e=>{let t=e.currentTarget;t.scrollHeight-t.scrollTop-t.clientHeight<200&&b()},[b]);return t?(0,_.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 border-b border-border shrink-0`,children:[(0,_.jsx)(h,{className:`size-4 text-text-secondary`}),(0,_.jsx)(`span`,{className:`text-xs font-medium text-text-primary`,children:`Git Log`}),(0,_.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:r?`${r.commits.length} commits`:``}),(0,_.jsx)(`div`,{className:`flex-1`}),(0,_.jsx)(`button`,{onClick:()=>y(),disabled:a,className:`p-1 rounded text-text-subtle hover:text-text-secondary transition-colors`,title:`Refresh`,children:(0,_.jsx)(c,{className:`size-3.5 ${a?`animate-spin`:``}`})})]}),!r&&a?(0,_.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,_.jsx)(l,{className:`size-5 animate-spin text-primary`})}):r&&r.commits.length===0?(0,_.jsx)(`div`,{className:`flex items-center justify-center h-full text-text-secondary text-sm`,children:`No commits yet`}):r?(0,_.jsxs)(`div`,{ref:v,className:`flex-1 overflow-y-auto min-h-0`,onScroll:x,children:[r.commits.map(e=>(0,_.jsx)(w,{commit:e,branches:r.branches,head:r.head},e.hash)),a&&(0,_.jsx)(`div`,{className:`flex items-center justify-center py-3`,children:(0,_.jsx)(l,{className:`size-4 animate-spin text-text-subtle`})}),!s&&r.commits.length>0&&(0,_.jsx)(`div`,{className:`text-center text-[10px] text-text-subtle py-3`,children:`End of history`})]}):null]}):(0,_.jsx)(`div`,{className:`flex items-center justify-center h-full text-text-secondary text-sm`,children:`Select a project to view git log`})}function w({commit:e,branches:t,head:n}){let r=e.hash===n,i=x(e.hash,e.refs,t,n);return(0,_.jsxs)(`div`,{className:`flex items-start gap-2 px-3 py-1.5 border-b border-border/50 hover:bg-surface-elevated transition-colors ${r?`bg-primary/5`:``}`,children:[(0,_.jsx)(`div`,{className:`flex items-center pt-1 shrink-0`,children:(0,_.jsx)(`span`,{className:`size-2.5 rounded-full border-2 ${r?`border-primary bg-primary`:`border-text-subtle bg-transparent`}`})}),(0,_.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[i.length>0&&(0,_.jsx)(`div`,{className:`flex flex-wrap items-center gap-1 mb-0.5`,children:i.map(e=>(0,_.jsx)(b,{...e},`${e.name}-${e.syncState}`))}),(0,_.jsx)(`p`,{className:`text-xs text-text-primary truncate leading-snug`,children:e.subject}),(0,_.jsxs)(`div`,{className:`flex items-center gap-2 mt-0.5`,children:[(0,_.jsx)(`span`,{className:`text-[10px] font-mono text-text-subtle`,children:e.abbreviatedHash}),(0,_.jsx)(`span`,{className:`text-[10px] text-text-subtle truncate`,children:e.authorName}),(0,_.jsx)(`span`,{className:`text-[10px] text-text-subtle shrink-0`,children:T(e.authorDate)})]})]})]})}function T(e){let t=new Date(e),n=Date.now()-t.getTime(),r=Math.floor(n/6e4);if(r<1)return`now`;if(r<60)return`${r}m`;let i=Math.floor(r/60);if(i<24)return`${i}h`;let a=Math.floor(i/24);return a<30?`${a}d`:t.toLocaleDateString(`en`,{month:`short`,day:`numeric`})}export{C as GitLogPanel};
@@ -1,11 +1,11 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/data-grid-overlay-editor-CeZoduke.js","assets/rolldown-runtime-C5c2KzVm.js","assets/dist-CBtAY9iX.js","assets/vendor-markdown-QKPNiWEd.js","assets/vendor-ui-P9Ym7hCv.js","assets/data-grid-types-CHD9-pon.js","assets/number-overlay-editor-CHqPl6Pv.js"])))=>i.map(i=>d[i]);
2
- import{s as e,t}from"./rolldown-runtime-C5c2KzVm.js";import{C as n,S as r}from"./vendor-markdown-QKPNiWEd.js";import{_t as i}from"./vendor-ui-P9Ym7hCv.js";import{$ as a,A as o,Fr as s,Jn as c,Jr as l,Lt as u,Mr as d,Zn as f,a as p,br as m,ct as h,d as g,j as _,lt as v,qn as y,qr as b,sr as x,st as S,un as C,ur as w,xt as T}from"./icons-CO_II6D-.js";import{t as E}from"./preload-helper-BEFjQwLd.js";import{t as D}from"./tab-store-CbPh8CAX.js";import{Hn as O,M as k,Rn as ee,j as te,vn as ne}from"./index-DhWjx5iR.js";import{A,B as re,C as j,D as ie,E as ae,F as oe,G as M,H as se,I as N,L as ce,M as le,N as ue,O as P,P as F,R as I,S as de,T as fe,U as pe,V as me,W as he,_ as ge,a as _e,b as ve,c as L,d as ye,f as be,g as xe,h as R,i as Se,j as z,k as B,l as V,m as Ce,n as H,o as U,p as we,r as Te,s as Ee,t as W,u as De,v as Oe,w as ke,x as Ae,y as je,z as Me}from"./data-grid-types-CHD9-pon.js";import{t as Ne}from"./dist-CBtAY9iX.js";import{t as Pe}from"./marked.esm-DDb9MclE.js";import{t as Fe}from"./use-monaco-theme-CpXT2uh3.js";import{n as Ie}from"./csv-parser-DcRWxcNV.js";var Le=/[A-Za-z0-9_]/,Re=/^\$([A-Za-z_][A-Za-z0-9_]*)?\$/;function ze(e){let t=[],n=1,r=-1,i=1,a=0,o=(n,a)=>{if(r===-1)return;let o=e.slice(r,n).trim();o&&t.push({sql:o,startLine:i,endLine:a}),r=-1};for(;a<e.length;){let t=e[a];if(t===`
2
+ import{s as e,t}from"./rolldown-runtime-C5c2KzVm.js";import{C as n,S as r}from"./vendor-markdown-QKPNiWEd.js";import{_t as i}from"./vendor-ui-P9Ym7hCv.js";import{$ as a,A as o,Fr as s,Jn as c,Jr as l,Lt as u,Mr as d,Zn as f,a as p,br as m,ct as h,d as g,j as _,lt as v,qn as y,qr as b,sr as x,st as S,un as C,ur as w,xt as T}from"./icons-CO_II6D-.js";import{t as E}from"./preload-helper-BEFjQwLd.js";import{t as D}from"./tab-store-DCpc0g0Q.js";import{Gn as O,M as k,N as ee,Vn as te,bn as ne}from"./index-CyDLBddf.js";import{A,B as re,C as j,D as ie,E as ae,F as oe,G as M,H as se,I as N,L as ce,M as le,N as ue,O as P,P as F,R as I,S as de,T as fe,U as pe,V as me,W as he,_ as ge,a as _e,b as ve,c as L,d as ye,f as be,g as xe,h as R,i as Se,j as z,k as B,l as V,m as Ce,n as H,o as U,p as we,r as Te,s as Ee,t as W,u as De,v as Oe,w as ke,x as Ae,y as je,z as Me}from"./data-grid-types-CHD9-pon.js";import{t as Ne}from"./dist-CBtAY9iX.js";import{t as Pe}from"./marked.esm-DDb9MclE.js";import{t as Fe}from"./use-monaco-theme-DvNGcCvz.js";import{n as Ie}from"./csv-parser-CoxPdyLw.js";var Le=/[A-Za-z0-9_]/,Re=/^\$([A-Za-z_][A-Za-z0-9_]*)?\$/;function ze(e){let t=[],n=1,r=-1,i=1,a=0,o=(n,a)=>{if(r===-1)return;let o=e.slice(r,n).trim();o&&t.push({sql:o,startLine:i,endLine:a}),r=-1};for(;a<e.length;){let t=e[a];if(t===`
3
3
  `){n++,a++;continue}if(t===` `||t===` `||t===`\r`){a++;continue}if(t===`-`&&e[a+1]===`-`){for(;a<e.length&&e[a]!==`
4
4
  `;)a++;continue}if(t===`/`&&e[a+1]===`*`){let t=1;for(a+=2;a<e.length&&t>0;){if(e[a]===`/`&&e[a+1]===`*`){t++,a+=2;continue}if(e[a]===`*`&&e[a+1]===`/`){t--,a+=2;continue}e[a]===`
5
5
  `&&n++,a++}continue}if(r===-1&&(r=a,i=n),t===`;`){o(a+1,n),a++;continue}if(t===`'`||t===`"`){let r=e[a-1],i=e[a-2],o=t===`'`&&(r===`e`||r===`E`)&&!(i!==void 0&&Le.test(i));for(a++;a<e.length;){let r=e[a];if(r===`
6
6
  `){n++,a++;continue}if(o&&r===`\\`){a+=2;continue}if(r===t){if(e[a+1]===t){a+=2;continue}a++;break}a++}continue}if(t===`$`){let t=Re.exec(e.slice(a));if(t){let r=t[0],i=e.indexOf(r,a+r.length),o=i===-1?e.length:i+r.length;for(let t=a;t<o;t++)e[t]===`
7
7
  `&&n++;a=o;continue}}a++}return o(e.length,n),t}function Be(e,t){let n=ze(e);if(n.length===0)return``;let r=n.find(e=>e.startLine<=t&&t<=e.endLine);return r?r.sql:(n.find(e=>e.startLine>t)??n[n.length-1]).sql}var Ve=`SELECT.FROM.WHERE.INSERT.INTO.VALUES.UPDATE.SET.DELETE.CREATE.TABLE.ALTER.DROP.INDEX.JOIN.LEFT.RIGHT.INNER.OUTER.ON.AND.OR.NOT.NULL.IS.IN.LIKE.BETWEEN.HAVING.LIMIT.OFFSET.AS.DISTINCT.COUNT.SUM.AVG.MIN.MAX.CASE.WHEN.THEN.ELSE.END.EXISTS.UNION.ALL.ASC.DESC.ORDER BY.GROUP BY.LEFT JOIN.RIGHT JOIN.INNER JOIN.CROSS JOIN.FULL OUTER JOIN.IS NULL.IS NOT NULL`.split(`.`),He=[`COUNT`,`SUM`,`AVG`,`MIN`,`MAX`],Ue=[`=`,`!=`,`<>`,`>`,`<`,`>=`,`<=`,`LIKE`,`ILIKE`,`IN`,`NOT IN`,`BETWEEN`,`IS NULL`,`IS NOT NULL`],We=[`ASC`,`DESC`],Ge=new Map,Ke=new Set(`WHERE.SET.ON.ORDER.GROUP.HAVING.LIMIT.LEFT.RIGHT.INNER.OUTER.CROSS.FULL.JOIN.AND.OR.VALUES.SELECT.FROM.INTO.UPDATE.DELETE.INSERT.CREATE.ALTER.DROP`.split(`.`));function qe(e){let t=new Set,n=new Map,r=e.matchAll(/\b(?:FROM|JOIN|UPDATE|INTO)\s+"?(\w+)"?(?:\s+AS\s+(\w+)|\s+(?!(?:FROM|JOIN|UPDATE|INTO|WHERE|SET|ON|ORDER|GROUP|HAVING|LIMIT|LEFT|RIGHT|INNER|OUTER|CROSS|FULL|AND|OR|VALUES|SELECT)\b)(\w+))?/gi);for(let e of r){let r=e[1];t.add(r);let i=e[2]??e[3];i&&!Ke.has(i.toUpperCase())&&n.set(i.toLowerCase(),r)}return{tableRefs:t,aliasMap:n}}function Je(e,t){return t.get(e.toLowerCase())??e}async function Ye(e,t){let n=e.toLowerCase(),r=Ge.get(n);if(!r)try{r=await t.getColumns(e),Ge.set(n,r)}catch{r=[]}return r}async function Xe(e,t,n,r){let i=[],a=new Set;for(let o of e){let e=await Ye(o,t);for(let t of e){if(a.has(t.name))continue;a.add(t.name);let e=/[A-Z]/.test(t.name);i.push({label:t.name,kind:n.languages.CompletionItemKind.Field,detail:`${o} · ${t.type}`,insertText:e?`"${t.name}"`:t.name,range:r,sortText:`0`+t.name})}}return i}function Ze(e){if(/(\w+)\.\s*$/.test(e))return`dot`;let t=e.match(/\b(?:ORDER|GROUP)\s+BY\s+(?:[\w"]+\s+(?:ASC|DESC)\s*,\s*)*[\w"]+\s+(\w*)$/i);if(t){let e=t[1].toUpperCase();return e===`ASC`||e===`DESC`?`after-direction`:`sort-direction`}return/\b(?:ORDER|GROUP)\s+BY\s+.*(?:ASC|DESC)\s*,\s*\w*$/i.test(e)?`order-by-next-col`:/\b(?:WHERE|AND|OR)\s+[\w"]+\s+\S*$/i.test(e)?`operator`:/\b(?:FROM|JOIN|INTO|UPDATE|TABLE)\s+\w*$/i.test(e)?`table`:/\bINSERT\s+INTO\s+[\w"]+\s*\(\s*(?:[\w"]+\s*,\s*)*\w*$/i.test(e)?`insert-cols`:/\b(?:SELECT|WHERE|ORDER\s+BY|GROUP\s+BY|HAVING|SET|ON|AND|OR)\s+(?:[\w"]+\s*,\s*)*\w*$/i.test(e)?`columns`:/,\s*\w*$/.test(e)?`comma-cols`:`default`}function Qe(e,t){return{triggerCharacters:[`.`,`,`],provideCompletionItems:async(n,r)=>{try{let i=n.getValueInRange({startLineNumber:1,startColumn:1,endLineNumber:r.lineNumber,endColumn:r.column}),a=n.getWordUntilPosition(r),o={startLineNumber:r.lineNumber,endLineNumber:r.lineNumber,startColumn:a.startColumn,endColumn:a.endColumn},{tableRefs:s,aliasMap:c}=qe(Be(n.getValue(),r.lineNumber)),l=[],u=Ze(i);if(u===`dot`){let n=i.match(/(\w+)\.\s*$/);if(n){let r=n[1],i=await Ye(Je(r,c),t);for(let t of i){let n=/[A-Z]/.test(t.name);l.push({label:t.name,kind:e.languages.CompletionItemKind.Field,detail:t.type,insertText:n?`"${t.name}"`:t.name,range:o})}}return{suggestions:l}}if(u===`sort-direction`){for(let t of We)l.push({label:t,kind:e.languages.CompletionItemKind.Keyword,insertText:t,range:o,sortText:`0`+t});return{suggestions:l}}if(u===`after-direction`)return{suggestions:[]};if(u===`order-by-next-col`)return l.push(...await Xe(s,t,e,o)),{suggestions:l};if(u===`operator`){for(let t of Ue)l.push({label:t,kind:e.languages.CompletionItemKind.Operator,insertText:t,range:o,sortText:`0`+t});return{suggestions:l}}if(u===`table`){for(let n of t.tables)l.push({label:n.name,kind:e.languages.CompletionItemKind.Struct,detail:n.schema,insertText:n.name,range:o,sortText:`0`+n.name});return{suggestions:l}}if(u===`insert-cols`)return l.push(...await Xe(s,t,e,o)),{suggestions:l};if(u===`columns`){if(l.push(...await Xe(s,t,e,o)),/\bSELECT\s+/i.test(i)){l.push({label:`*`,kind:e.languages.CompletionItemKind.Value,insertText:`*`,range:o,sortText:`00*`});for(let t of He)l.push({label:`${t}()`,kind:e.languages.CompletionItemKind.Function,insertText:`${t}($0)`,insertTextRules:e.languages.CompletionItemInsertTextRule.InsertAsSnippet,range:o,sortText:`1`+t})}for(let t of Ve)l.push({label:t,kind:e.languages.CompletionItemKind.Keyword,insertText:t,range:o,sortText:`3`+t});return{suggestions:l}}if(u===`comma-cols`&&s.size>0)return l.push(...await Xe(s,t,e,o)),{suggestions:l};for(let t of Ve)l.push({label:t,kind:e.languages.CompletionItemKind.Keyword,insertText:t,range:o,sortText:`2`+t});for(let n of t.tables)l.push({label:n.name,kind:e.languages.CompletionItemKind.Struct,detail:n.schema,insertText:n.name,range:o,sortText:`1`+n.name});return{suggestions:l}}catch{return{suggestions:[]}}}}}function $e(){Ge.clear()}var G=e(n(),1),K=e(i(),1),q=r();function et(e,t,n){let r=new Blob([t],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e,a.click(),URL.revokeObjectURL(i)}function tt({columns:e,rows:t,filename:n=`export`,exportAllUrl:r}){let[i,a]=(0,G.useState)(!1),[o,s]=(0,G.useState)(!1),c=(0,G.useRef)(null),l=(0,G.useRef)(null);(0,G.useEffect)(()=>{if(!i)return;let e=e=>{l.current&&!l.current.contains(e.target)&&c.current&&!c.current.contains(e.target)&&a(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[i]);let u=(0,G.useCallback)(()=>a(e=>!e),[]),d=()=>{let r=Ie(e,t.map(t=>e.map(e=>String(t[e]??``))));et(`${n}.csv`,r,`text/csv`),a(!1)},f=()=>{let e=JSON.stringify(t,null,2);et(`${n}.json`,e,`application/json`),a(!1)},p=async()=>{let n=e.join(` `),r=t.map(t=>e.map(e=>String(t[e]??``)).join(` `)).join(`
8
- `);await ee(n+`
8
+ `);await te(n+`
9
9
  `+r),a(!1)},m=async e=>{if(r){s(!0);try{let t=await(await fetch(`${r}&format=${e}&limit=10000`)).text(),i=e===`csv`?`text/csv`:`application/json`;et(`${n}-all.${e}`,t,i)}catch{}s(!1),a(!1)}};if(e.length===0||t.length===0)return null;let h=c.current?.getBoundingClientRect(),g=document.getElementById(`portal`);return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{ref:c,type:`button`,onClick:u,className:`p-1 rounded text-muted-foreground hover:text-foreground transition-colors`,title:`Export`,children:(0,q.jsx)(S,{className:`size-3.5`})}),i&&g&&h&&(0,K.createPortal)((0,q.jsxs)(`div`,{ref:l,style:{position:`fixed`,left:Math.min(h.left,window.innerWidth-170),top:h.bottom+4,zIndex:1e4},className:`bg-popover border border-border rounded-md shadow-md py-1 min-w-[160px] text-xs`,children:[(0,q.jsx)(`button`,{onClick:p,className:`w-full text-left px-3 py-1.5 hover:bg-muted transition-colors text-foreground`,children:`Copy to Clipboard (TSV)`}),(0,q.jsx)(`button`,{onClick:d,className:`w-full text-left px-3 py-1.5 hover:bg-muted transition-colors text-foreground`,children:`Export Page (CSV)`}),(0,q.jsx)(`button`,{onClick:f,className:`w-full text-left px-3 py-1.5 hover:bg-muted transition-colors text-foreground`,children:`Export Page (JSON)`}),r&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`border-t border-border my-1`}),(0,q.jsx)(`button`,{onClick:()=>m(`csv`),disabled:o,className:`w-full text-left px-3 py-1.5 hover:bg-muted transition-colors disabled:opacity-50 text-foreground`,children:o?`Exporting…`:`Export All (CSV)`}),(0,q.jsx)(`button`,{onClick:()=>m(`json`),disabled:o,className:`w-full text-left px-3 py-1.5 hover:bg-muted transition-colors disabled:opacity-50 text-foreground`,children:o?`Exporting…`:`Export All (JSON)`})]})]}),g)]})}var nt=Ne(`div`)({name:`ImageOverlayEditorStyle`,class:`gdg-i2iowwq`,propsAsIs:!1}),rt=t(((e,t)=>{t.exports=`SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED`})),it=t(((e,t)=>{var n=rt();function r(){}function i(){}i.resetWarningCache=r,t.exports=function(){function e(e,t,r,i,a,o){if(o!==n){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name=`Invariant Violation`,s}}e.isRequired=e;function t(){return e}var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return a.PropTypes=a,a}})),at=t(((e,t)=>{t.exports=it()()})),ot=t((e=>{(function(t,r){if(typeof define==`function`&&define.amd)define([`exports`,`react`,`prop-types`],r);else if(e!==void 0)r(e,n(),at());else{var i={exports:{}};r(i.exports,t.react,t.propTypes),t.reactSwipe=i.exports}})(e,function(e,t,n){Object.defineProperty(e,`__esModule`,{value:!0}),e.setHasSupportToCaptureOption=p;var r=a(t),i=a(n);function a(e){return e&&e.__esModule?e:{default:e}}var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function s(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function c(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function u(e,t){if(!e)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return t&&(typeof t==`object`||typeof t==`function`)?t:e}function d(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function, not `+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var f=!1;function p(e){f=e}try{addEventListener(`test`,null,Object.defineProperty({},`capture`,{get:function(){p(!0)}}))}catch{}function m(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{capture:!0};return f?e:e.capture}function h(e){if(`touches`in e){var t=e.touches[0];return{x:t.pageX,y:t.pageY}}return{x:e.screenX,y:e.screenY}}var g=function(e){d(t,e);function t(){var e;c(this,t);var n=[...arguments],r=u(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(n)));return r._handleSwipeStart=r._handleSwipeStart.bind(r),r._handleSwipeMove=r._handleSwipeMove.bind(r),r._handleSwipeEnd=r._handleSwipeEnd.bind(r),r._onMouseDown=r._onMouseDown.bind(r),r._onMouseMove=r._onMouseMove.bind(r),r._onMouseUp=r._onMouseUp.bind(r),r._setSwiperRef=r._setSwiperRef.bind(r),r}return l(t,[{key:`componentDidMount`,value:function(){this.swiper&&this.swiper.addEventListener(`touchmove`,this._handleSwipeMove,m({capture:!0,passive:!1}))}},{key:`componentWillUnmount`,value:function(){this.swiper&&this.swiper.removeEventListener(`touchmove`,this._handleSwipeMove,m({capture:!0,passive:!1}))}},{key:`_onMouseDown`,value:function(e){this.props.allowMouseEvents&&(this.mouseDown=!0,document.addEventListener(`mouseup`,this._onMouseUp),document.addEventListener(`mousemove`,this._onMouseMove),this._handleSwipeStart(e))}},{key:`_onMouseMove`,value:function(e){this.mouseDown&&this._handleSwipeMove(e)}},{key:`_onMouseUp`,value:function(e){this.mouseDown=!1,document.removeEventListener(`mouseup`,this._onMouseUp),document.removeEventListener(`mousemove`,this._onMouseMove),this._handleSwipeEnd(e)}},{key:`_handleSwipeStart`,value:function(e){var t=h(e);this.moveStart={x:t.x,y:t.y},this.props.onSwipeStart(e)}},{key:`_handleSwipeMove`,value:function(e){if(this.moveStart){var t=h(e),n=t.x,r=t.y,i=n-this.moveStart.x,a=r-this.moveStart.y;this.moving=!0,this.props.onSwipeMove({x:i,y:a},e)&&e.cancelable&&e.preventDefault(),this.movePosition={deltaX:i,deltaY:a}}}},{key:`_handleSwipeEnd`,value:function(e){this.props.onSwipeEnd(e);var t=this.props.tolerance;this.moving&&this.movePosition&&(this.movePosition.deltaX<-t?this.props.onSwipeLeft(1,e):this.movePosition.deltaX>t&&this.props.onSwipeRight(1,e),this.movePosition.deltaY<-t?this.props.onSwipeUp(1,e):this.movePosition.deltaY>t&&this.props.onSwipeDown(1,e)),this.moveStart=null,this.moving=!1,this.movePosition=null}},{key:`_setSwiperRef`,value:function(e){this.swiper=e,this.props.innerRef(e)}},{key:`render`,value:function(){var e=this.props;e.tagName;var t=e.className,n=e.style,i=e.children;e.allowMouseEvents,e.onSwipeUp,e.onSwipeDown,e.onSwipeLeft,e.onSwipeRight,e.onSwipeStart,e.onSwipeMove,e.onSwipeEnd,e.innerRef,e.tolerance;var a=s(e,[`tagName`,`className`,`style`,`children`,`allowMouseEvents`,`onSwipeUp`,`onSwipeDown`,`onSwipeLeft`,`onSwipeRight`,`onSwipeStart`,`onSwipeMove`,`onSwipeEnd`,`innerRef`,`tolerance`]);return r.default.createElement(this.props.tagName,o({ref:this._setSwiperRef,onMouseDown:this._onMouseDown,onTouchStart:this._handleSwipeStart,onTouchEnd:this._handleSwipeEnd,className:t,style:n},a),i)}}]),t}(t.Component);g.displayName=`ReactSwipe`,g.propTypes={tagName:i.default.string,className:i.default.string,style:i.default.object,children:i.default.node,allowMouseEvents:i.default.bool,onSwipeUp:i.default.func,onSwipeDown:i.default.func,onSwipeLeft:i.default.func,onSwipeRight:i.default.func,onSwipeStart:i.default.func,onSwipeMove:i.default.func,onSwipeEnd:i.default.func,innerRef:i.default.func,tolerance:i.default.number.isRequired},g.defaultProps={tagName:`div`,allowMouseEvents:!1,onSwipeUp:function(){},onSwipeDown:function(){},onSwipeLeft:function(){},onSwipeRight:function(){},onSwipeStart:function(){},onSwipeMove:function(){},onSwipeEnd:function(){},innerRef:function(){},tolerance:0},e.default=g})})),st=t((e=>{(function(t,n){if(typeof define==`function`&&define.amd)define([`exports`,`./react-swipe`],n);else if(e!==void 0)n(e,ot());else{var r={exports:{}};n(r.exports,t.reactSwipe),t.index=r.exports}})(e,function(e,t){Object.defineProperty(e,`__esModule`,{value:!0});var n=r(t);function r(e){return e&&e.__esModule?e:{default:e}}e.default=n.default})})),ct=t(((e,t)=>{(function(){var e={}.hasOwnProperty;function n(){for(var e=``,t=0;t<arguments.length;t++){var n=arguments[t];n&&(e=i(e,r(n)))}return e}function r(t){if(typeof t==`string`||typeof t==`number`)return t;if(typeof t!=`object`)return``;if(Array.isArray(t))return n.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes(`[native code]`))return t.toString();var r=``;for(var a in t)e.call(t,a)&&t[a]&&(r=i(r,a));return r}function i(e,t){return t?e?e+` `+t:e+t:e}t!==void 0&&t.exports?(n.default=n,t.exports=n):typeof define==`function`&&typeof define.amd==`object`&&define.amd?define(`classnames`,[],function(){return n}):window.classNames=n})()})),lt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=n(ct());function n(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.default={ROOT:function(e){return(0,t.default)(r({"carousel-root":!0},e||``,!!e))},CAROUSEL:function(e){return(0,t.default)({carousel:!0,"carousel-slider":e})},WRAPPER:function(e,n){return(0,t.default)({"thumbs-wrapper":!e,"slider-wrapper":e,"axis-horizontal":n===`horizontal`,"axis-vertical":n!==`horizontal`})},SLIDER:function(e,n){return(0,t.default)({thumbs:!e,slider:e,animated:!n})},ITEM:function(e,n,r){return(0,t.default)({thumb:!e,slide:e,selected:n,previous:r})},ARROW_PREV:function(e){return(0,t.default)({"control-arrow control-prev":!0,"control-disabled":e})},ARROW_NEXT:function(e){return(0,t.default)({"control-arrow control-next":!0,"control-disabled":e})},DOT:function(e){return(0,t.default)({dot:!0,selected:e})}}})),ut=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.outerWidth=void 0,e.outerWidth=function(e){var t=e.offsetWidth,n=getComputedStyle(e);return t+=parseInt(n.marginLeft)+parseInt(n.marginRight),t}})),dt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0,e.default=function(e,t,n){var r=e===0?e:e+t;return`translate3d`+(`(`+(n===`horizontal`?[r,0,0]:[0,r,0]).join(`,`)+`)`)}})),ft=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0,e.default=function(){return window}})),pt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=u(n()),r=c(lt()),i=ut(),a=c(dt()),o=c(st()),s=c(ft());function c(e){return e&&e.__esModule?e:{default:e}}function l(){if(typeof WeakMap!=`function`)return null;var e=new WeakMap;return l=function(){return e},e}function u(e){if(e&&e.__esModule)return e;if(e===null||d(e)!==`object`&&typeof e!=`function`)return{default:e};var t=l();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var a=r?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(n,i,a):n[i]=e[i]}return n.default=e,t&&t.set(e,n),n}function d(e){"@babel/helpers - typeof";return d=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},d(e)}function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function m(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function h(e,t,n){return t&&m(e.prototype,t),n&&m(e,n),e}function g(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_(e,t)}function _(e,t){return _=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},_(e,t)}function v(e){var t=x();return function(){var n=S(e),r;if(t){var i=S(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return y(this,r)}}function y(e,t){return t&&(d(t)===`object`||typeof t==`function`)?t:b(e)}function b(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function x(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function S(e){return S=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},S(e)}function C(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var w=function(e){return e.hasOwnProperty(`key`)},T=function(e){g(c,e);var n=v(c);function c(e){var r;return p(this,c),r=n.call(this,e),C(b(r),`itemsWrapperRef`,void 0),C(b(r),`itemsListRef`,void 0),C(b(r),`thumbsRef`,void 0),C(b(r),`setItemsWrapperRef`,function(e){r.itemsWrapperRef=e}),C(b(r),`setItemsListRef`,function(e){r.itemsListRef=e}),C(b(r),`setThumbsRef`,function(e,t){r.thumbsRef||=[],r.thumbsRef[t]=e}),C(b(r),`updateSizes`,function(){if(!(!r.props.children||!r.itemsWrapperRef||!r.thumbsRef)){var e=t.Children.count(r.props.children),n=r.itemsWrapperRef.clientWidth,a=r.props.thumbWidth?r.props.thumbWidth:(0,i.outerWidth)(r.thumbsRef[0]),o=Math.floor(n/a),s=o<e,c=s?e-o:0;r.setState(function(e,t){return{itemSize:a,visibleItems:o,firstItem:s?r.getFirstItem(t.selectedItem):0,lastPosition:c,showArrows:s}})}}),C(b(r),`handleClickItem`,function(e,t,n){if(!w(n)||n.key===`Enter`){var i=r.props.onSelectItem;typeof i==`function`&&i(e,t)}}),C(b(r),`onSwipeStart`,function(){r.setState({swiping:!0})}),C(b(r),`onSwipeEnd`,function(){r.setState({swiping:!1})}),C(b(r),`onSwipeMove`,function(e){var n=e.x;if(!r.state.itemSize||!r.itemsWrapperRef||!r.state.visibleItems)return!1;var i=0,o=t.Children.count(r.props.children),s=-(r.state.firstItem*100)/r.state.visibleItems,c=-Math.max(o-r.state.visibleItems,0)*100/r.state.visibleItems;s===i&&n>0&&(n=0),s===c&&n<0&&(n=0);var l=s+100/(r.itemsWrapperRef.clientWidth/n);return r.itemsListRef&&[`WebkitTransform`,`MozTransform`,`MsTransform`,`OTransform`,`transform`,`msTransform`].forEach(function(e){r.itemsListRef.style[e]=(0,a.default)(l,`%`,r.props.axis)}),!0}),C(b(r),`slideRight`,function(e){r.moveTo(r.state.firstItem-(typeof e==`number`?e:1))}),C(b(r),`slideLeft`,function(e){r.moveTo(r.state.firstItem+(typeof e==`number`?e:1))}),C(b(r),`moveTo`,function(e){e=e<0?0:e,e=e>=r.state.lastPosition?r.state.lastPosition:e,r.setState({firstItem:e})}),r.state={selectedItem:e.selectedItem,swiping:!1,showArrows:!1,firstItem:0,visibleItems:0,lastPosition:0},r}return h(c,[{key:`componentDidMount`,value:function(){this.setupThumbs()}},{key:`componentDidUpdate`,value:function(e){this.props.selectedItem!==this.state.selectedItem&&this.setState({selectedItem:this.props.selectedItem,firstItem:this.getFirstItem(this.props.selectedItem)}),this.props.children!==e.children&&this.updateSizes()}},{key:`componentWillUnmount`,value:function(){this.destroyThumbs()}},{key:`setupThumbs`,value:function(){(0,s.default)().addEventListener(`resize`,this.updateSizes),(0,s.default)().addEventListener(`DOMContentLoaded`,this.updateSizes),this.updateSizes()}},{key:`destroyThumbs`,value:function(){(0,s.default)().removeEventListener(`resize`,this.updateSizes),(0,s.default)().removeEventListener(`DOMContentLoaded`,this.updateSizes)}},{key:`getFirstItem`,value:function(e){var t=e;return e>=this.state.lastPosition&&(t=this.state.lastPosition),e<this.state.firstItem+this.state.visibleItems&&(t=this.state.firstItem),e<this.state.firstItem&&(t=e),t}},{key:`renderItems`,value:function(){var e=this;return this.props.children.map(function(n,i){var a={key:i,ref:function(t){return e.setThumbsRef(t,i)},className:r.default.ITEM(!1,i===e.state.selectedItem),onClick:e.handleClickItem.bind(e,i,e.props.children[i]),onKeyDown:e.handleClickItem.bind(e,i,e.props.children[i]),"aria-label":`${e.props.labels.item} ${i+1}`,style:{width:e.props.thumbWidth}};return t.default.createElement(`li`,f({},a,{role:`button`,tabIndex:0}),n)})}},{key:`render`,value:function(){var e=this;if(!this.props.children)return null;var n=t.Children.count(this.props.children)>1,i=this.state.showArrows&&this.state.firstItem>0,s=this.state.showArrows&&this.state.firstItem<this.state.lastPosition,c={},l=-this.state.firstItem*(this.state.itemSize||0),u=(0,a.default)(l,`px`,this.props.axis),d=this.props.transitionTime+`ms`;return c={WebkitTransform:u,MozTransform:u,MsTransform:u,OTransform:u,transform:u,msTransform:u,WebkitTransitionDuration:d,MozTransitionDuration:d,MsTransitionDuration:d,OTransitionDuration:d,transitionDuration:d,msTransitionDuration:d},t.default.createElement(`div`,{className:r.default.CAROUSEL(!1)},t.default.createElement(`div`,{className:r.default.WRAPPER(!1),ref:this.setItemsWrapperRef},t.default.createElement(`button`,{type:`button`,className:r.default.ARROW_PREV(!i),onClick:function(){return e.slideRight()},"aria-label":this.props.labels.leftArrow}),n?t.default.createElement(o.default,{tagName:`ul`,className:r.default.SLIDER(!1,this.state.swiping),onSwipeLeft:this.slideLeft,onSwipeRight:this.slideRight,onSwipeMove:this.onSwipeMove,onSwipeStart:this.onSwipeStart,onSwipeEnd:this.onSwipeEnd,style:c,innerRef:this.setItemsListRef,allowMouseEvents:this.props.emulateTouch},this.renderItems()):t.default.createElement(`ul`,{className:r.default.SLIDER(!1,this.state.swiping),ref:function(t){return e.setItemsListRef(t)},style:c},this.renderItems()),t.default.createElement(`button`,{type:`button`,className:r.default.ARROW_NEXT(!s),onClick:function(){return e.slideLeft()},"aria-label":this.props.labels.rightArrow})))}}]),c}(t.Component);e.default=T,C(T,`displayName`,`Thumbs`),C(T,`defaultProps`,{axis:`horizontal`,labels:{leftArrow:`previous slide / item`,rightArrow:`next slide / item`,item:`slide item`},selectedItem:0,thumbWidth:80,transitionTime:350})})),mt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0,e.default=function(){return document}})),ht=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.setPosition=e.getPosition=e.isKeyboardEvent=e.defaultStatusFormatter=e.noop=void 0;var t=n(),r=i(dt());function i(e){return e&&e.__esModule?e:{default:e}}e.noop=function(){},e.defaultStatusFormatter=function(e,t){return`${e} of ${t}`},e.isKeyboardEvent=function(e){return e?e.hasOwnProperty(`key`):!1},e.getPosition=function(e,n){if(n.infiniteLoop&&++e,e===0)return 0;var r=t.Children.count(n.children);if(n.centerMode&&n.axis===`horizontal`){var i=-e*n.centerSlidePercentage,a=r-1;return e&&(e!==a||n.infiniteLoop)?i+=(100-n.centerSlidePercentage)/2:e===a&&(i+=100-n.centerSlidePercentage),i}return-e*100},e.setPosition=function(e,t){var n={};return[`WebkitTransform`,`MozTransform`,`MsTransform`,`OTransform`,`transform`,`msTransform`].forEach(function(i){n[i]=(0,r.default)(e,`%`,t)}),n}})),gt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.fadeAnimationHandler=e.slideStopSwipingHandler=e.slideSwipeAnimationHandler=e.slideAnimationHandler=void 0;var t=n(),r=a(dt()),i=ht();function a(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?o(Object(n),!0).forEach(function(t){c(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.slideAnimationHandler=function(e,n){var a={},o=n.selectedItem,c=o,l=t.Children.count(e.children)-1;if(e.infiniteLoop&&(o<0||o>l))return c<0?e.centerMode&&e.centerSlidePercentage&&e.axis===`horizontal`?a.itemListStyle=(0,i.setPosition)(-(l+2)*e.centerSlidePercentage-(100-e.centerSlidePercentage)/2,e.axis):a.itemListStyle=(0,i.setPosition)(-(l+2)*100,e.axis):c>l&&(a.itemListStyle=(0,i.setPosition)(0,e.axis)),a;var u=(0,i.getPosition)(o,e),d=(0,r.default)(u,`%`,e.axis),f=e.transitionTime+`ms`;return a.itemListStyle={WebkitTransform:d,msTransform:d,OTransform:d,transform:d},n.swiping||(a.itemListStyle=s(s({},a.itemListStyle),{},{WebkitTransitionDuration:f,MozTransitionDuration:f,OTransitionDuration:f,transitionDuration:f,msTransitionDuration:f})),a},e.slideSwipeAnimationHandler=function(e,n,r,a){var o={},s=n.axis===`horizontal`,c=t.Children.count(n.children),l=0,u=(0,i.getPosition)(r.selectedItem,n),d=n.infiniteLoop?(0,i.getPosition)(c-1,n)-100:(0,i.getPosition)(c-1,n),f=s?e.x:e.y,p=f;u===l&&f>0&&(p=0),u===d&&f<0&&(p=0);var m=u+100/(r.itemSize/p),h=Math.abs(f)>n.swipeScrollTolerance;return n.infiniteLoop&&h&&(r.selectedItem===0&&m>-100?m-=c*100:r.selectedItem===c-1&&m<-c*100&&(m+=c*100)),(!n.preventMovementUntilSwipeScrollTolerance||h||r.swipeMovementStarted)&&(r.swipeMovementStarted||a({swipeMovementStarted:!0}),o.itemListStyle=(0,i.setPosition)(m,n.axis)),h&&!r.cancelClick&&a({cancelClick:!0}),o},e.slideStopSwipingHandler=function(e,t){var n=(0,i.getPosition)(t.selectedItem,e);return{itemListStyle:(0,i.setPosition)(n,e.axis)}},e.fadeAnimationHandler=function(e,t){var n=e.transitionTime+`ms`,r=`ease-in-out`,i={position:`absolute`,display:`block`,zIndex:-2,minHeight:`100%`,opacity:0,top:0,right:0,left:0,bottom:0,transitionTimingFunction:r,msTransitionTimingFunction:r,MozTransitionTimingFunction:r,WebkitTransitionTimingFunction:r,OTransitionTimingFunction:r};return t.swiping||(i=s(s({},i),{},{WebkitTransitionDuration:n,MozTransitionDuration:n,OTransitionDuration:n,transitionDuration:n,msTransitionDuration:n})),{slideStyle:i,selectedStyle:s(s({},i),{},{opacity:1,position:`relative`}),prevStyle:s({},i)}}})),_t=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=f(n()),r=u(st()),i=u(lt()),a=u(pt()),o=u(mt()),s=u(ft()),c=ht(),l=gt();function u(e){return e&&e.__esModule?e:{default:e}}function d(){if(typeof WeakMap!=`function`)return null;var e=new WeakMap;return d=function(){return e},e}function f(e){if(e&&e.__esModule)return e;if(e===null||p(e)!==`object`&&typeof e!=`function`)return{default:e};var t=d();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var a=r?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(n,i,a):n[i]=e[i]}return n.default=e,t&&t.set(e,n),n}function p(e){"@babel/helpers - typeof";return p=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},p(e)}function m(){return m=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},m.apply(this,arguments)}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function g(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?h(Object(n),!0).forEach(function(t){D(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function _(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function v(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function y(e,t,n){return t&&v(e.prototype,t),n&&v(e,n),e}function b(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&x(e,t)}function x(e,t){return x=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},x(e,t)}function S(e){var t=T();return function(){var n=E(e),r;if(t){var i=E(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return C(this,r)}}function C(e,t){return t&&(p(t)===`object`||typeof t==`function`)?t:w(e)}function w(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function T(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function E(e){return E=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},E(e)}function D(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var O=function(e){b(u,e);var n=S(u);function u(e){var r;_(this,u),r=n.call(this,e),D(w(r),`thumbsRef`,void 0),D(w(r),`carouselWrapperRef`,void 0),D(w(r),`listRef`,void 0),D(w(r),`itemsRef`,void 0),D(w(r),`timer`,void 0),D(w(r),`animationHandler`,void 0),D(w(r),`setThumbsRef`,function(e){r.thumbsRef=e}),D(w(r),`setCarouselWrapperRef`,function(e){r.carouselWrapperRef=e}),D(w(r),`setListRef`,function(e){r.listRef=e}),D(w(r),`setItemsRef`,function(e,t){r.itemsRef||=[],r.itemsRef[t]=e}),D(w(r),`autoPlay`,function(){t.Children.count(r.props.children)<=1||(r.clearAutoPlay(),r.props.autoPlay&&(r.timer=setTimeout(function(){r.increment()},r.props.interval)))}),D(w(r),`clearAutoPlay`,function(){r.timer&&clearTimeout(r.timer)}),D(w(r),`resetAutoPlay`,function(){r.clearAutoPlay(),r.autoPlay()}),D(w(r),`stopOnHover`,function(){r.setState({isMouseEntered:!0},r.clearAutoPlay)}),D(w(r),`startOnLeave`,function(){r.setState({isMouseEntered:!1},r.autoPlay)}),D(w(r),`isFocusWithinTheCarousel`,function(){return r.carouselWrapperRef?!!((0,o.default)().activeElement===r.carouselWrapperRef||r.carouselWrapperRef.contains((0,o.default)().activeElement)):!1}),D(w(r),`navigateWithKeyboard`,function(e){if(r.isFocusWithinTheCarousel()){var t=r.props.axis===`horizontal`,n={ArrowUp:38,ArrowRight:39,ArrowDown:40,ArrowLeft:37},i=t?n.ArrowRight:n.ArrowDown,a=t?n.ArrowLeft:n.ArrowUp;i===e.keyCode?r.increment():a===e.keyCode&&r.decrement()}}),D(w(r),`updateSizes`,function(){if(!(!r.state.initialized||!r.itemsRef||r.itemsRef.length===0)){var e=r.props.axis===`horizontal`,t=r.itemsRef[0];if(t){var n=e?t.clientWidth:t.clientHeight;r.setState({itemSize:n}),r.thumbsRef&&r.thumbsRef.updateSizes()}}}),D(w(r),`setMountState`,function(){r.setState({hasMount:!0}),r.updateSizes()}),D(w(r),`handleClickItem`,function(e,n){if(t.Children.count(r.props.children)!==0){if(r.state.cancelClick){r.setState({cancelClick:!1});return}r.props.onClickItem(e,n),e!==r.state.selectedItem&&r.setState({selectedItem:e})}}),D(w(r),`handleOnChange`,function(e,n){t.Children.count(r.props.children)<=1||r.props.onChange(e,n)}),D(w(r),`handleClickThumb`,function(e,t){r.props.onClickThumb(e,t),r.moveTo(e)}),D(w(r),`onSwipeStart`,function(e){r.setState({swiping:!0}),r.props.onSwipeStart(e)}),D(w(r),`onSwipeEnd`,function(e){r.setState({swiping:!1,cancelClick:!1,swipeMovementStarted:!1}),r.props.onSwipeEnd(e),r.clearAutoPlay(),r.state.autoPlay&&r.autoPlay()}),D(w(r),`onSwipeMove`,function(e,t){r.props.onSwipeMove(t);var n=r.props.swipeAnimationHandler(e,r.props,r.state,r.setState.bind(w(r)));return r.setState(g({},n)),!!Object.keys(n).length}),D(w(r),`decrement`,function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;r.moveTo(r.state.selectedItem-(typeof e==`number`?e:1))}),D(w(r),`increment`,function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;r.moveTo(r.state.selectedItem+(typeof e==`number`?e:1))}),D(w(r),`moveTo`,function(e){if(typeof e==`number`){var n=t.Children.count(r.props.children)-1;e<0&&(e=r.props.infiniteLoop?n:0),e>n&&(e=r.props.infiniteLoop?0:n),r.selectItem({selectedItem:e}),r.state.autoPlay&&r.state.isMouseEntered===!1&&r.resetAutoPlay()}}),D(w(r),`onClickNext`,function(){r.increment(1)}),D(w(r),`onClickPrev`,function(){r.decrement(1)}),D(w(r),`onSwipeForward`,function(){r.increment(1),r.props.emulateTouch&&r.setState({cancelClick:!0})}),D(w(r),`onSwipeBackwards`,function(){r.decrement(1),r.props.emulateTouch&&r.setState({cancelClick:!0})}),D(w(r),`changeItem`,function(e){return function(t){(!(0,c.isKeyboardEvent)(t)||t.key===`Enter`)&&r.moveTo(e)}}),D(w(r),`selectItem`,function(e){r.setState(g({previousItem:r.state.selectedItem},e),function(){r.setState(r.animationHandler(r.props,r.state))}),r.handleOnChange(e.selectedItem,t.Children.toArray(r.props.children)[e.selectedItem])}),D(w(r),`getInitialImage`,function(){var e=r.props.selectedItem,t=r.itemsRef&&r.itemsRef[e];return(t&&t.getElementsByTagName(`img`)||[])[0]}),D(w(r),`getVariableItemHeight`,function(e){var t=r.itemsRef&&r.itemsRef[e];if(r.state.hasMount&&t&&t.children.length){var n=t.children[0].getElementsByTagName(`img`)||[];if(n.length>0){var i=n[0];i.complete||i.addEventListener(`load`,function e(){r.forceUpdate(),i.removeEventListener(`load`,e)})}var a=(n[0]||t.children[0]).clientHeight;return a>0?a:null}return null});var i={initialized:!1,previousItem:e.selectedItem,selectedItem:e.selectedItem,hasMount:!1,isMouseEntered:!1,autoPlay:e.autoPlay,swiping:!1,swipeMovementStarted:!1,cancelClick:!1,itemSize:1,itemListStyle:{},slideStyle:{},selectedStyle:{},prevStyle:{}};return r.animationHandler=typeof e.animationHandler==`function`&&e.animationHandler||e.animationHandler===`fade`&&l.fadeAnimationHandler||l.slideAnimationHandler,r.state=g(g({},i),r.animationHandler(e,i)),r}return y(u,[{key:`componentDidMount`,value:function(){this.props.children&&this.setupCarousel()}},{key:`componentDidUpdate`,value:function(e,t){!e.children&&this.props.children&&!this.state.initialized&&this.setupCarousel(),!e.autoFocus&&this.props.autoFocus&&this.forceFocus(),t.swiping&&!this.state.swiping&&this.setState(g({},this.props.stopSwipingHandler(this.props,this.state))),(e.selectedItem!==this.props.selectedItem||e.centerMode!==this.props.centerMode)&&(this.updateSizes(),this.moveTo(this.props.selectedItem)),e.autoPlay!==this.props.autoPlay&&(this.props.autoPlay?this.setupAutoPlay():this.destroyAutoPlay(),this.setState({autoPlay:this.props.autoPlay}))}},{key:`componentWillUnmount`,value:function(){this.destroyCarousel()}},{key:`setupCarousel`,value:function(){var e=this;this.bindEvents(),this.state.autoPlay&&t.Children.count(this.props.children)>1&&this.setupAutoPlay(),this.props.autoFocus&&this.forceFocus(),this.setState({initialized:!0},function(){var t=e.getInitialImage();t&&!t.complete?t.addEventListener(`load`,e.setMountState):e.setMountState()})}},{key:`destroyCarousel`,value:function(){this.state.initialized&&(this.unbindEvents(),this.destroyAutoPlay())}},{key:`setupAutoPlay`,value:function(){this.autoPlay();var e=this.carouselWrapperRef;this.props.stopOnHover&&e&&(e.addEventListener(`mouseenter`,this.stopOnHover),e.addEventListener(`mouseleave`,this.startOnLeave))}},{key:`destroyAutoPlay`,value:function(){this.clearAutoPlay();var e=this.carouselWrapperRef;this.props.stopOnHover&&e&&(e.removeEventListener(`mouseenter`,this.stopOnHover),e.removeEventListener(`mouseleave`,this.startOnLeave))}},{key:`bindEvents`,value:function(){(0,s.default)().addEventListener(`resize`,this.updateSizes),(0,s.default)().addEventListener(`DOMContentLoaded`,this.updateSizes),this.props.useKeyboardArrows&&(0,o.default)().addEventListener(`keydown`,this.navigateWithKeyboard)}},{key:`unbindEvents`,value:function(){(0,s.default)().removeEventListener(`resize`,this.updateSizes),(0,s.default)().removeEventListener(`DOMContentLoaded`,this.updateSizes);var e=this.getInitialImage();e&&e.removeEventListener(`load`,this.setMountState),this.props.useKeyboardArrows&&(0,o.default)().removeEventListener(`keydown`,this.navigateWithKeyboard)}},{key:`forceFocus`,value:function(){var e;(e=this.carouselWrapperRef)==null||e.focus()}},{key:`renderItems`,value:function(e){var n=this;return this.props.children?t.Children.map(this.props.children,function(r,a){var o=a===n.state.selectedItem,s=a===n.state.previousItem,c=o&&n.state.selectedStyle||s&&n.state.prevStyle||n.state.slideStyle||{};n.props.centerMode&&n.props.axis===`horizontal`&&(c=g(g({},c),{},{minWidth:n.props.centerSlidePercentage+`%`})),n.state.swiping&&n.state.swipeMovementStarted&&(c=g(g({},c),{},{pointerEvents:`none`}));var l={ref:function(e){return n.setItemsRef(e,a)},key:`itemKey`+a+(e?`clone`:``),className:i.default.ITEM(!0,a===n.state.selectedItem,a===n.state.previousItem),onClick:n.handleClickItem.bind(n,a,r),style:c};return t.default.createElement(`li`,l,n.props.renderItem(r,{isSelected:a===n.state.selectedItem,isPrevious:a===n.state.previousItem}))}):[]}},{key:`renderControls`,value:function(){var e=this,n=this.props,r=n.showIndicators,i=n.labels,a=n.renderIndicator,o=n.children;return r?t.default.createElement(`ul`,{className:`control-dots`},t.Children.map(o,function(t,n){return a&&a(e.changeItem(n),n===e.state.selectedItem,n,i.item)})):null}},{key:`renderStatus`,value:function(){return this.props.showStatus?t.default.createElement(`p`,{className:`carousel-status`},this.props.statusFormatter(this.state.selectedItem+1,t.Children.count(this.props.children))):null}},{key:`renderThumbs`,value:function(){return!this.props.showThumbs||!this.props.children||t.Children.count(this.props.children)===0?null:t.default.createElement(a.default,{ref:this.setThumbsRef,onSelectItem:this.handleClickThumb,selectedItem:this.state.selectedItem,transitionTime:this.props.transitionTime,thumbWidth:this.props.thumbWidth,labels:this.props.labels,emulateTouch:this.props.emulateTouch},this.props.renderThumbs(this.props.children))}},{key:`render`,value:function(){var e=this;if(!this.props.children||t.Children.count(this.props.children)===0)return null;var n=this.props.swipeable&&t.Children.count(this.props.children)>1,a=this.props.axis===`horizontal`,o=this.props.showArrows&&t.Children.count(this.props.children)>1,s=o&&(this.state.selectedItem>0||this.props.infiniteLoop)||!1,c=o&&(this.state.selectedItem<t.Children.count(this.props.children)-1||this.props.infiniteLoop)||!1,l=this.renderItems(!0),u=l.shift(),d=l.pop(),f={className:i.default.SLIDER(!0,this.state.swiping),onSwipeMove:this.onSwipeMove,onSwipeStart:this.onSwipeStart,onSwipeEnd:this.onSwipeEnd,style:this.state.itemListStyle,tolerance:this.props.swipeScrollTolerance},p={};return a?(f.onSwipeLeft=this.onSwipeForward,f.onSwipeRight=this.onSwipeBackwards,this.props.dynamicHeight&&(p.height=this.getVariableItemHeight(this.state.selectedItem)||`auto`)):(f.onSwipeUp=this.props.verticalSwipe===`natural`?this.onSwipeBackwards:this.onSwipeForward,f.onSwipeDown=this.props.verticalSwipe===`natural`?this.onSwipeForward:this.onSwipeBackwards,f.style=g(g({},f.style),{},{height:this.state.itemSize}),p.height=this.state.itemSize),t.default.createElement(`div`,{"aria-label":this.props.ariaLabel,className:i.default.ROOT(this.props.className),ref:this.setCarouselWrapperRef,tabIndex:this.props.useKeyboardArrows?0:void 0},t.default.createElement(`div`,{className:i.default.CAROUSEL(!0),style:{width:this.props.width}},this.renderControls(),this.props.renderArrowPrev(this.onClickPrev,s,this.props.labels.leftArrow),t.default.createElement(`div`,{className:i.default.WRAPPER(!0,this.props.axis),style:p},n?t.default.createElement(r.default,m({tagName:`ul`,innerRef:this.setListRef},f,{allowMouseEvents:this.props.emulateTouch}),this.props.infiniteLoop&&d,this.renderItems(),this.props.infiniteLoop&&u):t.default.createElement(`ul`,{className:i.default.SLIDER(!0,this.state.swiping),ref:function(t){return e.setListRef(t)},style:this.state.itemListStyle||{}},this.props.infiniteLoop&&d,this.renderItems(),this.props.infiniteLoop&&u)),this.props.renderArrowNext(this.onClickNext,c,this.props.labels.rightArrow),this.renderStatus()),this.renderThumbs())}}]),u}(t.default.Component);e.default=O,D(O,`displayName`,`Carousel`),D(O,`defaultProps`,{ariaLabel:void 0,axis:`horizontal`,centerSlidePercentage:80,interval:3e3,labels:{leftArrow:`previous slide / item`,rightArrow:`next slide / item`,item:`slide item`},onClickItem:c.noop,onClickThumb:c.noop,onChange:c.noop,onSwipeStart:function(){},onSwipeEnd:function(){},onSwipeMove:function(){return!1},preventMovementUntilSwipeScrollTolerance:!1,renderArrowPrev:function(e,n,r){return t.default.createElement(`button`,{type:`button`,"aria-label":r,className:i.default.ARROW_PREV(!n),onClick:e})},renderArrowNext:function(e,n,r){return t.default.createElement(`button`,{type:`button`,"aria-label":r,className:i.default.ARROW_NEXT(!n),onClick:e})},renderIndicator:function(e,n,r,a){return t.default.createElement(`li`,{className:i.default.DOT(n),onClick:e,onKeyDown:e,value:r,key:r,role:`button`,tabIndex:0,"aria-label":`${a} ${r+1}`})},renderItem:function(e){return e},renderThumbs:function(e){var n=t.Children.map(e,function(e){var n=e;if(e.type!==`img`&&(n=t.Children.toArray(e.props.children).find(function(e){return e.type===`img`})),n)return n});return n.filter(function(e){return e}).length===0?(console.warn(`No images found! Can't build the thumb list without images. If you don't need thumbs, set showThumbs={false} in the Carousel. Note that it's not possible to get images rendered inside custom components. More info at https://github.com/leandrowd/react-responsive-carousel/blob/master/TROUBLESHOOTING.md`),[]):n},statusFormatter:c.defaultStatusFormatter,selectedItem:0,showArrows:!0,showIndicators:!0,showStatus:!0,showThumbs:!0,stopOnHover:!0,swipeScrollTolerance:5,swipeable:!0,transitionTime:350,verticalSwipe:`standard`,width:`100%`,animationHandler:`slide`,swipeAnimationHandler:l.slideSwipeAnimationHandler,stopSwipingHandler:l.slideStopSwipingHandler})})),vt=t((()=>{})),yt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),Object.defineProperty(e,`Carousel`,{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,`CarouselProps`,{enumerable:!0,get:function(){return n.CarouselProps}}),Object.defineProperty(e,`Thumbs`,{enumerable:!0,get:function(){return r.default}});var t=i(_t()),n=vt(),r=i(pt());function i(e){return e&&e.__esModule?e:{default:e}}})),bt=t(((e,t)=>{var n=z();t.exports=function(){return n.Date.now()}})),xt=t(((e,t)=>{var n=/\s/;function r(e){for(var t=e.length;t--&&n.test(e.charAt(t)););return t}t.exports=r})),St=t(((e,t)=>{var n=xt(),r=/^\s+/;function i(e){return e&&e.slice(0,n(e)+1).replace(r,``)}t.exports=i})),Ct=t(((e,t)=>{var n=St(),r=fe(),i=ie(),a=NaN,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt;function u(e){if(typeof e==`number`)return e;if(i(e))return a;if(r(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=r(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=n(e);var u=s.test(e);return u||c.test(e)?l(e.slice(2),u?2:8):o.test(e)?a:+e}t.exports=u})),wt=t(((e,t)=>{var n=fe(),r=bt(),i=Ct(),a=`Expected a function`,o=Math.max,s=Math.min;function c(e,t,c){var l,u,d,f,p,m,h=0,g=!1,_=!1,v=!0;if(typeof e!=`function`)throw TypeError(a);t=i(t)||0,n(c)&&(g=!!c.leading,_=`maxWait`in c,d=_?o(i(c.maxWait)||0,t):d,v=`trailing`in c?!!c.trailing:v);function y(t){var n=l,r=u;return l=u=void 0,h=t,f=e.apply(r,n),f}function b(e){return h=e,p=setTimeout(C,t),g?y(e):f}function x(e){var n=e-m,r=e-h,i=t-n;return _?s(i,d-r):i}function S(e){var n=e-m,r=e-h;return m===void 0||n>=t||n<0||_&&r>=d}function C(){var e=r();if(S(e))return w(e);p=setTimeout(C,x(e))}function w(e){return p=void 0,v&&l?y(e):(l=u=void 0,f)}function T(){p!==void 0&&clearTimeout(p),h=0,l=m=u=p=void 0}function E(){return p===void 0?f:w(r())}function D(){var e=r(),n=S(e);if(l=arguments,u=this,m=e,n){if(p===void 0)return b(m);if(_)return clearTimeout(p),p=setTimeout(C,t),y(m)}return p===void 0&&(p=setTimeout(C,t)),f}return D.cancel=T,D.flush=E,D}t.exports=c})),Tt=e(wt(),1);function Et(e,t,n,r,i=!1){let a=G.useRef();a.current=t,G.useEffect(()=>{if(n===null||n.addEventListener===void 0)return;let t=n,o=e=>{a.current?.call(t,e)};return t.addEventListener(e,o,{passive:r,capture:i}),()=>{t.removeEventListener(e,o,{capture:i})}},[e,n,r,i])}function Dt(e,t){return e===void 0?void 0:t}var Ot=Math.PI;function kt(e){return e*Ot/180}var At=(e,t,n)=>({x1:e-n/2,y1:t-n/2,x2:e+n/2,y2:t+n/2}),jt=(e,t,n,r,i)=>{switch(e){case`left`:return Math.floor(t)+r+i/2;case`center`:return Math.floor(t+n/2);case`right`:return Math.floor(t+n)-r-i/2}},Mt=(e,t,n)=>Math.min(e,t-n*2),Nt=(e,t,n)=>n.x1<=e&&e<=n.x2&&n.y1<=t&&t<=n.y2,Pt=e=>{let t=e.fgColor??`currentColor`;return G.createElement(`svg`,{viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},G.createElement(`path`,{d:`M12.7073 7.05029C7.87391 11.8837 10.4544 9.30322 6.03024 13.7273C5.77392 13.9836 5.58981 14.3071 5.50189 14.6587L4.52521 18.5655C4.38789 19.1148 4.88543 19.6123 5.43472 19.475L9.34146 18.4983C9.69313 18.4104 10.0143 18.2286 10.2706 17.9722L16.9499 11.2929`,stroke:t,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`,fill:`none`,vectorEffect:`non-scaling-stroke`}),G.createElement(`path`,{d:`M20.4854 4.92901L19.0712 3.5148C18.2901 2.73375 17.0238 2.73375 16.2428 3.5148L14.475 5.28257C15.5326 7.71912 16.4736 8.6278 18.7176 9.52521L20.4854 7.75744C21.2665 6.97639 21.2665 5.71006 20.4854 4.92901Z`,stroke:t,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`,fill:`none`,vectorEffect:`non-scaling-stroke`}))},Ft=e=>{let t=e.fgColor??`currentColor`;return G.createElement(`svg`,{viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},G.createElement(`path`,{d:`M19 6L10.3802 17L5.34071 11.8758`,vectorEffect:`non-scaling-stroke`,stroke:t,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`}))};function It(e,t,n){let[r,i]=G.useState(e),a=G.useRef(!0);G.useEffect(()=>()=>{a.current=!1},[]);let o=G.useRef((0,Tt.default)(e=>{a.current&&i(e)},n));return G.useLayoutEffect(()=>{a.current&&o.current(()=>e())},t),r}var Lt=RegExp(`^[^A-Za-zÀ-ÖØ-öø-ʸ̀-֐ࠀ-῿‎Ⰰ-﬜︀-﹯﻽-￿]*[֑-߿יִ-﷽ﹰ-ﻼ]`);function Rt(e){return Lt.test(e)?`rtl`:`not-rtl`}var zt=void 0;function Bt(){if(typeof document>`u`)return 0;if(zt!==void 0)return zt;let e=document.createElement(`p`);e.style.width=`100%`,e.style.height=`200px`;let t=document.createElement(`div`);t.id=`testScrollbar`,t.style.position=`absolute`,t.style.top=`0px`,t.style.left=`0px`,t.style.visibility=`hidden`,t.style.width=`200px`,t.style.height=`150px`,t.style.overflow=`hidden`,t.append(e),document.body.append(t);let n=e.offsetWidth;t.style.overflow=`scroll`;let r=e.offsetWidth;return n===r&&(r=t.clientWidth),t.remove(),zt=n-r,zt}var Vt=Symbol();function Ht(e){let t=G.useRef([Vt,e]);t.current[1]!==e&&(t.current[0]=e),t.current[1]=e;let[n,r]=G.useState(e),[,i]=G.useState(),a=G.useCallback(e=>{let n=t.current[0];n!==Vt&&(e=typeof e==`function`?e(n):e,e===n)||(n!==Vt&&i({}),r(t=>typeof e==`function`?e(n===Vt?t:n):e),t.current[0]=Vt)},[]),o=G.useCallback(()=>{t.current[0]=Vt,i({})},[]);return[t.current[0]===Vt?n:t.current[0],a,o]}function Ut(e){if(e.length===0)return``;let t=0,n=0;for(let r of e){if(n+=r.length,n>1e4)break;t++}return e.slice(0,t).join(`, `)}function Wt(e){let t=G.useRef(e);return N(e,t.current)||(t.current=e),t.current}var Gt=yt(),Kt=e=>{let{urls:t,canWrite:n,onEditClick:r,renderImage:i}=e,a=t.filter(e=>e!==``);if(a.length===0)return null;let o=a.length>1;return G.createElement(nt,{"data-testid":`GDG-default-image-overlay-editor`},G.createElement(Gt.Carousel,{showArrows:o,showThumbs:!1,swipeable:o,emulateTouch:o,infiniteLoop:o},a.map(e=>{let t=i?.(e)??G.createElement(`img`,{draggable:!1,src:e});return G.createElement(`div`,{className:`gdg-centering-container`,key:e},t)})),n&&r&&G.createElement(`button`,{className:`gdg-edit-icon`,onClick:r},G.createElement(Pt,null)))},qt=Ne(`div`)({name:`MarkdownContainer`,class:`gdg-mnuv029`,propsAsIs:!1}),Jt=class extends G.PureComponent{targetElement=null;renderMarkdownIntoDiv(){let{targetElement:e,props:t}=this;if(e===null)return;let{contents:n,createNode:r}=t,i=Pe(n),a=document.createRange();a.selectNodeContents(e),a.deleteContents();let o=r?.(i);if(o===void 0){let e=document.createElement(`template`);e.innerHTML=i,o=e.content}e.append(o);let s=e.getElementsByTagName(`a`);for(let e of s)e.target=`_blank`,e.rel=`noreferrer noopener`}containerRefHook=e=>{this.targetElement=e,this.renderMarkdownIntoDiv()};render(){return this.renderMarkdownIntoDiv(),G.createElement(qt,{ref:this.containerRefHook})}},Yt=Ne(`textarea`)({name:`InputBox`,class:`gdg-izpuzkl`,propsAsIs:!1}),Xt=Ne(`div`)({name:`ShadowBox`,class:`gdg-s69h75o`,propsAsIs:!1}),Zt=Ne(`div`)({name:`GrowingEntryStyle`,class:`gdg-g1y0xocz`,propsAsIs:!1}),Qt=0,$t=e=>{let{placeholder:t,value:n,onKeyDown:r,highlight:i,altNewline:a,validatedSelection:o,...s}=e,{onChange:c,className:l}=s,u=G.useRef(null),d=n??``;F(c!==void 0,`GrowingEntry must be a controlled input area`);let[f]=G.useState(()=>`input-box-`+(Qt=(Qt+1)%1e7));G.useEffect(()=>{let e=u.current;if(e===null||e.disabled)return;let t=d.toString().length;e.focus(),e.setSelectionRange(i?0:t,t)},[]),G.useLayoutEffect(()=>{if(o!==void 0){let e=typeof o==`number`?[o,null]:o;u.current?.setSelectionRange(e[0],e[1])}},[o]);let p=G.useCallback(e=>{e.key===`Enter`&&e.shiftKey&&a===!0||r?.(e)},[a,r]);return G.createElement(Zt,{className:`gdg-growing-entry`},G.createElement(Xt,{className:l},d+`
10
10
  `),G.createElement(Yt,{...s,className:(l??``)+` gdg-input`,id:f,ref:u,onKeyDown:p,value:d,placeholder:t,dir:`auto`}))},en=new Map,tn=new Map,J=new Map;function nn(){en.clear(),J.clear(),tn.clear()}function rn(e,t,n,r,i){let a=0,o={};for(let t of e)a+=n.get(t)??i,o[t]=(o[t]??0)+1;let s=t-a;for(let e of Object.keys(o)){let t=o[e],c=n.get(e)??i,l=c+s*(c*t/a)*r/t;n.set(e,l)}}function an(e,t){let n=new Map,r=0;for(let t of`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890,.-+=?`){let i=e.measureText(t).width;n.set(t,i),r+=i}let i=r/n.size,a=(t/i+3)/4,o=n.keys();for(let e of o)n.set(e,(n.get(e)??i)*a);return n}function on(e,t,n,r){let i=tn.get(n);if(r&&i!==void 0&&i.count>2e4){let r=J.get(n);if(r===void 0&&(r=an(e,i.size),J.set(n,r)),i.count>5e5){let e=0;for(let n of t)e+=r.get(n)??i.size;return e*1.01}let a=e.measureText(t);return rn(t,a.width,r,Math.max(.05,1-i.count/2e5),i.size),tn.set(n,{count:i.count+t.length,size:i.size}),a.width}let a=e.measureText(t),o=a.width/t.length;if((i?.count??0)>2e4)return a.width;if(i===void 0)tn.set(n,{count:t.length,size:o});else{let e=o-i.size,r=t.length/(i.count+t.length),a=i.size+e*r;tn.set(n,{count:i.count+t.length,size:a})}return a.width}function sn(e,t,n,r,i,a,o,s){if(t.length<=1)return t.length;if(i<n)return-1;let c=Math.floor(n/i*a),l=on(e,t.slice(0,Math.max(0,c)),r,o),u=s?.(t);if(l!==n)if(l<n){for(;l<n;)c++,l=on(e,t.slice(0,Math.max(0,c)),r,o);c--}else for(;l>n;){let n=u===void 0?t.lastIndexOf(` `,c-1):0;n>0?c=n:c--,l=on(e,t.slice(0,Math.max(0,c)),r,o)}if(t[c]!==` `){let e=0;if(u===void 0)e=t.lastIndexOf(` `,c);else for(let t of u){if(t>c)break;e=t}e>0&&(c=e)}return c}function cn(e,t,n,r,i,a){let o=`${t}_${n}_${r}px`,s=en.get(o);if(s!==void 0)return s;if(r<=0)return[];let c=[],l=t.split(`
11
11
  `),u=tn.get(n),d=u===void 0?t.length:r/u.size*1.5,f=i&&u!==void 0&&u.count>2e4;for(let t of l){let i=on(e,t.slice(0,Math.max(0,d)),n,f),o=Math.min(t.length,d);if(i<=r)c.push(t);else{for(;i>r;){let s=sn(e,t,r,n,i,o,f,a),l=t.slice(0,Math.max(0,s));t=t.slice(l.length),c.push(l),i=on(e,t.slice(0,Math.max(0,d)),n,f),o=Math.min(t.length,d)}i>0&&c.push(t)}}return c=c.map((e,t)=>t===0?e.trimEnd():e.trim()),en.set(o,c),en.size>500&&en.delete(en.keys().next().value),c}function Y(e,t){return G.useMemo(()=>e.map((e,n)=>({group:e.group,grow:e.grow,hasMenu:e.hasMenu,icon:e.icon,id:e.id,menuIcon:e.menuIcon,overlayIcon:e.overlayIcon,sourceIndex:n,sticky:n<t,style:e.style,themeOverride:e.themeOverride,title:e.title,trailingRowOptions:e.trailingRowOptions,width:e.width,growOffset:e.growOffset,rowMarker:e.rowMarker,rowMarkerChecked:e.rowMarkerChecked})),[e,t])}function ln(e,t){let[n,r]=t;if(e.columns.hasIndex(n)||e.rows.hasIndex(r))return!0;if(e.current!==void 0){if(pn(e.current.cell,t))return!0;let i=[e.current.range,...e.current.rangeStack];for(let e of i)if(n>=e.x&&n<e.x+e.width&&r>=e.y&&r<e.y+e.height)return!0}return!1}function un(e,t){return(e??``)===(t??``)}function dn(e,t,n){return n.current===void 0||e[1]!==n.current.cell[1]?!1:t.span===void 0?n.current.cell[0]===e[0]:n.current.cell[0]>=t.span[0]&&n.current.cell[0]<=t.span[1]}function fn(e,t){let[n,r]=e;return n>=t.x&&n<t.x+t.width&&r>=t.y&&r<t.y+t.height}function pn(e,t){return e?.[0]===t?.[0]&&e?.[1]===t?.[1]}function mn(e){return[e.x+e.width-1,e.y+e.height-1]}function hn(e,t,n){let r=n.x,i=n.x+n.width-1,a=n.y,o=n.y+n.height-1,[s,c]=e;if(c<a||c>o)return!1;if(t.span===void 0)return s>=r&&s<=i;let[l,u]=t.span;return l>=r&&l<=i||u>=r&&l<=i||l<r&&u>i}function gn(e,t,n,r){let i=0;if(n.current===void 0)return i;let a=n.current.range;(r||a.height*a.width>1)&&hn(e,t,a)&&i++;for(let r of n.current.rangeStack)hn(e,t,r)&&i++;return i}function _n(e,t){let n=e;if(t!==void 0){let r=[...e],i=n[t.src];t.src>t.dest?(r.splice(t.src,1),r.splice(t.dest,0,i)):(r.splice(t.dest+1,0,i),r.splice(t.src,1)),r=r.map((t,n)=>({...t,sticky:e[n].sticky})),n=r}return n}function vn(e,t){let n=0,r=_n(e,t);for(let e=0;e<r.length;e++){let t=r[e];if(t.sticky)n+=t.width;else break}return n}function yn(e,t,n){if(typeof n==`number`)return t*n;{let r=0;for(let i=e-t;i<e;i++)r+=n(i);return r}}function bn(e,t,n,r,i){let a=_n(e,r),o=[];for(let e of a)if(e.sticky)o.push(e);else break;if(o.length>0)for(let e of o)n-=e.width;let s=t,c=i??0;for(;c<=n&&s<a.length;)c+=a[s].width,s++;for(let e=t;e<s;e++){let t=a[e];t.sticky||o.push(t)}return o}function xn(e,t,n){let r=0;for(let i of t){if(e<=(i.sticky?r:r+(n??0))+i.width)return i.sourceIndex;r+=i.width}return-1}function Sn(e,t,n,r,i,a,o,s,c,l){let u=r+i;if(n&&e<=i)return-2;if(e<=u)return-1;let d=t;for(let t=0;t<l;t++){let n=a-1-t,r=typeof o==`number`?o:o(n);if(d-=r,e>=d)return n}let f=a-l,p=e-(c??0);if(typeof o==`number`){let e=Math.floor((p-u)/o)+s;return e>=f?void 0:e}else{let e=u;for(let t=s;t<f;t++){let n=o(t);if(p<=e+n)return t;e+=n}return}}var Cn=0,wn={},Tn=typeof window>`u`;async function En(){Tn||document?.fonts?.ready===void 0||(await document.fonts.ready,Cn=0,wn={},nn())}En();function Dn(e,t,n,r){return`${e}_${r??t?.font}_${n}`}function On(e,t,n,r=`middle`){let i=Dn(e,t,r,n),a=wn[i];return a===void 0&&(a=t.measureText(e),wn[i]=a,Cn++),Cn>1e4&&(wn={},Cn=0),a}function kn(e,t){let n=Dn(e,void 0,`middle`,t);return wn[n]}function An(e,t){return typeof t!=`string`&&(t=t.baseFontFull),Nn(e,t)}function jn(e,t){e.save(),e.textBaseline=t;let n=e.measureText(`ABCDEFGHIJKLMNOPQRSTUVWXYZ`);return e.restore(),n}var Mn=[];function Nn(e,t){for(let e of Mn)if(e.key===t)return e.val;let n=jn(e,`alphabetic`),r=-(jn(e,`middle`).actualBoundingBoxDescent-n.actualBoundingBoxDescent)+n.actualBoundingBoxAscent/2;return Mn.push({key:t,val:r}),r}function Pn(e,t,n,r,i,a){let{ctx:o,rect:s,theme:c}=e,l=2**53-1;return t!==void 0&&(l=n-t,l<500&&(o.globalAlpha=1-l/500,o.fillStyle=c.bgSearchResult,o.fillRect(s.x+1,s.y+1,s.width-(i?2:1),s.height-(a?2:1)),o.globalAlpha=1,r!==void 0&&(r.fillStyle=c.bgSearchResult))),l<500}function Fn(e,t,n){let{ctx:r,theme:i}=e,a=t??{},o=n??i.textDark;return o!==a.fillStyle&&(r.fillStyle=o,a.fillStyle=o),a}function In(e,t,n,r,i,a,o,s,c){c===`right`?e.fillText(t,n+i-(s.cellHorizontalPadding+.5),r+a/2+o):c===`center`?e.fillText(t,n+i/2,r+a/2+o):e.fillText(t,n+s.cellHorizontalPadding+.5,r+a/2+o)}function Ln(e,t){let n=On(`ABCi09jgqpy`,e,t);return n.actualBoundingBoxAscent+n.actualBoundingBoxDescent}function Rn(e,t){e.includes(`
@@ -138,4 +138,4 @@ import{s as e,t}from"./rolldown-runtime-C5c2KzVm.js";import{C as n,S as r}from".
138
138
  `,t.allowWrapping===!0?void 0:1),i=0;for(let t of r)i=Math.max(i,e.measureText(t).width);return i+2*n.cellHorizontalPadding},onDelete:e=>({...e,data:``}),provideEditor:e=>({disablePadding:e.allowWrapping===!0,editor:t=>{let{isHighlighted:n,onChange:r,value:i,validatedSelection:a}=t;return G.createElement($t,{style:e.allowWrapping===!0?{padding:`3px 8.5px`}:void 0,highlight:n,autoFocus:i.readonly!==!0,disabled:i.readonly===!0,altNewline:!0,value:i.data,validatedSelection:a,onChange:e=>r({...i,data:e.target.value})})}}),onPaste:(e,t,n)=>e===t.data?void 0:{...t,data:e,displayData:n.formattedString??t.displayData}},Vs=Ne(`div`)({name:`UriOverlayEditorStyle`,class:`gdg-u1rrojo`,propsAsIs:!1}),Hs=e=>{let{uri:t,onChange:n,forceEditMode:r,readonly:i,validatedSelection:a,preview:o}=e,[s,c]=G.useState(!i&&(t===``||r)),l=G.useCallback(()=>{c(!0)},[]);return s?G.createElement($t,{validatedSelection:a,highlight:!0,autoFocus:!0,value:t,onChange:n}):G.createElement(Vs,null,G.createElement(`a`,{className:`gdg-link-area`,href:t,target:`_blank`,rel:`noopener noreferrer`},o),!i&&G.createElement(`div`,{className:`gdg-edit-icon`,onClick:l},G.createElement(Pt,null)),G.createElement(`textarea`,{className:`gdg-input`,autoFocus:!0}))};function Us(e,t,n,r){let i=n.cellHorizontalPadding,a=t.height/2-e.actualBoundingBoxAscent/2,o=e.width,s=e.actualBoundingBoxAscent;return r===`right`?i=t.width-o-n.cellHorizontalPadding:r===`center`&&(i=t.width/2-o/2),{x:i,y:a,width:o,height:s}}var Ws=[ks,Ns,os,us,hs,bs,ws,Os,Is,Ls,zs,Bs,{getAccessibilityString:e=>e.data?.toString()??``,kind:H.Uri,needsHover:e=>e.hoverEffect===!0,needsHoverPosition:!0,useLabel:!0,drawPrep:Fn,draw:e=>{let{cell:t,theme:n,overrideCursor:r,hoverX:i,hoverY:a,rect:o,ctx:s}=e,c=t.displayData??t.data,l=t.hoverEffect===!0;if(r!==void 0&&l&&i!==void 0&&a!==void 0){let{x:l,y:u,width:d,height:f}=Us(On(c,s,n.baseFontFull),o,n,t.contentAlign);if(i>=l-4&&i<=l-4+d+8&&a>=u-4&&a<=u-4+f+8){let i=An(s,n.baseFontFull);r(`pointer`);let a=u-i;s.beginPath(),s.moveTo(o.x+l,Math.floor(o.y+a+f+5)+.5),s.lineTo(o.x+l+d,Math.floor(o.y+a+f+5)+.5),s.strokeStyle=n.linkColor,s.stroke(),s.save(),s.fillStyle=e.cellFillColor,X({...e,rect:{...o,x:o.x-1}},c,t.contentAlign),X({...e,rect:{...o,x:o.x-2}},c,t.contentAlign),X({...e,rect:{...o,x:o.x+1}},c,t.contentAlign),X({...e,rect:{...o,x:o.x+2}},c,t.contentAlign),s.restore()}}s.fillStyle=l?n.linkColor:n.textDark,X(e,c,t.contentAlign)},onClick:e=>{let{cell:t,bounds:n,posX:r,posY:i,theme:a}=e,o=t.displayData??t.data;if(t.hoverEffect!==!0||t.onClickUri===void 0)return;let s=kn(o,a.baseFontFull);if(s===void 0)return;let c=Us(s,n,a,t.contentAlign);Kr({x:c.x-4,y:c.y-4,width:c.width+8,height:c.height+8},r,i)&&t.onClickUri(e)},measure:(e,t,n)=>e.measureText(t.displayData??t.data).width+n.cellHorizontalPadding*2,onDelete:e=>({...e,data:``}),provideEditor:e=>t=>{let{onChange:n,value:r,forceEditMode:i,validatedSelection:a}=t;return G.createElement(Hs,{forceEditMode:r.readonly!==!0&&(i||e.hoverEffect===!0&&e.onClickUri!==void 0),uri:r.data,preview:r.displayData??r.data,validatedSelection:a,readonly:r.readonly===!0,onChange:e=>n({...r,data:e.target.value})})},onPaste:(e,t,n)=>e===t.data?void 0:{...t,data:e,displayData:n.formattedString??t.displayData}}],Gs=e(t(((e,t)=>{var n=wt(),r=fe(),i=`Expected a function`;function a(e,t,a){var o=!0,s=!0;if(typeof e!=`function`)throw TypeError(i);return r(a)&&(o=`leading`in a?!!a.leading:o,s=`trailing`in a?!!a.trailing:s),n(e,t,{leading:o,maxWait:t,trailing:s})}t.exports=a}))(),1),Ks=[],qs=class extends Yn{imageLoaded=()=>void 0;loadedLocations=[];cache={};setCallback(e){this.imageLoaded=e}sendLoaded=(0,Gs.default)(()=>{this.imageLoaded(new Zn(this.loadedLocations)),this.loadedLocations=[]},20);clearOutOfWindow=()=>{let e=Object.keys(this.cache);for(let t of e){let e=this.cache[t],n=!1;for(let t=0;t<e.cells.length;t++){let r=e.cells[t];if(this.isInWindow(r)){n=!0;break}}n?e.cells=e.cells.filter(this.isInWindow):(e.cancel(),delete this.cache[t])}};loadImage(e,t,n,r){let i=!1,a=Ks.pop()??new Image,o=!1,s={img:void 0,cells:[Gn(t,n)],url:e,cancel:()=>{o||(o=!0,Ks.length<12?Ks.unshift(a):i||(a.src=``))}},c=new Promise(e=>a.addEventListener(`load`,()=>e(null)));requestAnimationFrame(async()=>{try{a.src=e,await c,await a.decode();let t=this.cache[r];if(t!==void 0&&!o){t.img=a;for(let e of t.cells)this.loadedLocations.push(Jn(e));i=!0,this.sendLoaded()}}catch{s.cancel()}}),this.cache[r]=s}loadOrGetImage(e,t,n){let r=e,i=this.cache[r];if(i!==void 0){let e=Gn(t,n);return i.cells.includes(e)||i.cells.push(e),i.img}else this.loadImage(e,t,n,r)}},Js=G.forwardRef((e,t)=>{let n=G.useMemo(()=>({...Ir,...e.headerIcons}),[e.headerIcons]),r=G.useMemo(()=>e.imageWindowLoader??new qs,[e.imageWindowLoader]);return G.createElement(is,{...e,renderers:Ws,headerIcons:n,ref:t,imageWindowLoader:r})});function Ys(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function Xs(e,t){if(e.startsWith(`#`)){let n=e.slice(1);return`rgba(${parseInt(n.slice(0,2),16)}, ${parseInt(n.slice(2,4),16)}, ${parseInt(n.slice(4,6),16)}, ${t})`}return e}function Zs(){let e=Ys(`--color-background`),t=Ys(`--color-foreground`),n=O(Ys(`--color-muted`),e),r=Ys(`--color-muted-foreground`),i=Ys(`--color-primary`),a=Ys(`--color-primary-foreground`),o=Ys(`--color-border`),s=Ys(`--color-primary`),c=Ys(`--color-text-secondary`),l=Ys(`--color-text-subtle`),u=Ys(`--font-sans`)||`Geist, system-ui, sans-serif`;return{bgCell:e,bgCellMedium:n,bgHeader:n,bgHeaderHasFocus:s,bgHeaderHovered:s,bgBubble:s,bgBubbleSelected:i,textDark:t,textMedium:c,textLight:l,textHeader:r,textGroupHeader:r,textHeaderSelected:t,textBubble:t,accentColor:i,accentFg:a,accentLight:Xs(i,.12),borderColor:o,horizontalBorderColor:o,fontFamily:u,baseFontStyle:`13px`,headerFontStyle:`600 12px`,editorFontSize:`13px`,lineHeight:1.5,cellHorizontalPadding:8,cellVerticalPadding:4,headerIconSize:16}}function Qs(){let[e,t]=(0,G.useState)(0);return(0,G.useEffect)(()=>{let e=()=>t(e=>e+1),n=new MutationObserver(e);return n.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),window.addEventListener(`ppm:theme-change`,e),()=>{n.disconnect(),window.removeEventListener(`ppm:theme-change`,e)}},[]),(0,G.useMemo)(()=>Zs(),[e])}function $s(e,t,n){let r=e.length*9+40,i=0,a=Math.min(t.length,20);for(let n=0;n<a;n++){let r=t[n]?.[e];if(r==null)continue;let a=typeof r==`object`?12:String(r).length;i=Math.max(i,a*8)}let o=/^(int|serial|bigint|smallint|float|double|decimal|numeric|real|money|bool)/.test(n.toLowerCase())?80:100;return Math.max(o,Math.min(Math.max(r,i)+16,400))}function ec(e,t,n,r,i,a,o){let s=(0,G.useMemo)(()=>new Map(e.map(e=>[e.name,e])),[e]),c=(0,G.useMemo)(()=>{let e=new Map;for(let n of t)e.set(n,$s(n,i,s.get(n)?.type??`text`));return e},[t.join(`|`),e.map(e=>`${e.name}:${e.type}`).join(`|`),i.length>0]);return(0,G.useMemo)(()=>{let e=t.filter(e=>n.has(e)),i=t.filter(e=>!n.has(e)),l=[...e,...i];return{columns:l.map(e=>{let t=s.get(e),n=t?.pk??!1,i;return a===e?i=o===`ASC`?`sortAsc`:`sortDesc`:n?i=`headerRowID`:t?.fk&&(i=`headerFk`),{title:e,id:e,width:r.get(e)??c.get(e)??100,hasMenu:!0,icon:i}}),freezeColumns:e.length,columnOrder:l}},[s,t,n,r,c,a,o])}function tc(e){if(e==null)return!1;if(typeof e==`object`)return!0;let t=String(e);if(t.length>=200)return!0;let n=t.trimStart();return!!((n[0]===`{`||n[0]===`[`)&&(n.endsWith(`}`)||n.endsWith(`]`))||n.startsWith(`<?xml`)||n.startsWith(`<`)&&n.endsWith(`>`))}function nc(e){return e==null?`NULL`:typeof e==`object`?JSON.stringify(e):String(e)}function rc(e){let t=e.trimStart();if(t[0]===`{`||t[0]===`[`)try{return JSON.parse(t),`json`}catch{}return t.startsWith(`<?xml`)||t.startsWith(`<`)&&/<\/\w+>/.test(t)?`xml`:t.startsWith(`---`)||/^\w+:\s/m.test(t)?`yaml`:`plaintext`}function ic(e){let t=e.toLowerCase();return/^(int|serial|bigint|smallint|float|double|decimal|numeric|real|money)/.test(t)?H.Number:/^bool/.test(t)?H.Boolean:H.Text}function ac(e){let t=e.type.toLowerCase();return!!(/^(serial|bigserial|smallserial)/.test(t)||/^(int|bigint|smallint|integer)/.test(t)&&e.defaultValue&&/nextval|identity|auto_increment/i.test(e.defaultValue)||t===`integer`&&e.pk&&!e.defaultValue)}function oc(e,t=200){return e.length>t?e.slice(0,t)+`…`:e}var sc={bgCell:`rgba(251, 191, 36, 0.15)`};function cc(e,t,n,r,i,a,o=!1){let s=(0,G.useRef)(o);s.current=o;let c=(0,G.useRef)(e);c.current=e;let l=(0,G.useRef)(t);l.current=t;let u=(0,G.useRef)(new Map);return u.current=new Map(n.map(e=>[e.name,e])),{getCellContent:(0,G.useCallback)(([e,t])=>{let n=l.current[e],i=c.current[t];if(!n||!i)return{kind:H.Text,data:``,displayData:``,allowOverlay:!1};let o=u.current.get(n),d=o?ic(o.type):H.Text,f=o?.pk??!1,p=r?i[r]:void 0,m=typeof p==`string`&&p.startsWith(`__new_`),h=`${p}:${n}`,g=a.current.get(h),_=g===void 0?i[n]:g.newVal,v=g!==void 0;if(f&&m){if(o&&ac(o))return{kind:H.Text,data:``,displayData:`AUTO`,allowOverlay:!1,readonly:!0,themeOverride:{textDark:`#6b7280`}};let e=g===void 0?``:String(g.newVal??``);return{kind:H.Text,data:e,displayData:e||`Enter ID…`,allowOverlay:!0,readonly:!1,themeOverride:e?v?sc:void 0:{textDark:`#9ca3af`}}}if(_==null){let e=m?``:`NULL`;if(m&&!v&&o){let t=o.type.toLowerCase();o.defaultValue?e=o.defaultValue:/^(timestamp|datetime|date)/.test(t)?e=`NOW()`:/^(uuid)/.test(t)&&(e=`gen_random_uuid()`)}return{kind:H.Text,data:``,displayData:e,allowOverlay:!f,readonly:f||s.current,themeOverride:v?sc:m||e!==`NULL`?{textDark:`#9ca3af`}:{textDark:`#6b7280`}}}if(d===H.Number&&typeof _==`number`)return{kind:H.Number,data:_,displayData:String(_),allowOverlay:!f,readonly:f||s.current,themeOverride:v?sc:void 0};if(d===H.Boolean&&typeof _==`boolean`)return{kind:H.Boolean,data:_,readonly:f||s.current,allowOverlay:!1};let y=nc(_);return{kind:H.Text,data:y,displayData:oc(y),allowOverlay:!f,readonly:f||s.current,themeOverride:v?sc:void 0}},[]),onCellEdited:(0,G.useCallback)(([e,t],n)=>{if(!r||o)return;let a=l.current[e],s=c.current[t];if(!a||!s)return;let u=s[r],d;if(n.kind===H.Text)d=n.data===``?null:n.data;else if(n.kind===H.Number)d=n.data;else if(n.kind===H.Boolean)d=n.data;else return;i(u,a,d)},[r,o,i])}}var lc={columns:W.empty(),rows:W.empty()};function uc(){let[e,t]=(0,G.useState)(lc);return{gridSelection:e,onGridSelectionChange:(0,G.useCallback)(e=>{t(e)},[]),selectedRowIndices:(0,G.useMemo)(()=>{let t=[];if(e.rows)for(let n of e.rows)if(Array.isArray(n))for(let e=n[0];e<n[1];e++)t.push(e);else t.push(n);return t},[e.rows]),clearSelection:(0,G.useCallback)(()=>{t(lc)},[])}}function dc(e,t,n){let[r,i]=(0,G.useState)(new Map),a=(0,G.useRef)(r);a.current=r;let o=(0,G.useRef)(!1);return{pendingEdits:r,pendingRef:a,addEdit:(0,G.useCallback)((e,t,n)=>{let r=`${e}:${t}`;i(i=>new Map(i).set(r,{pkVal:e,col:t,newVal:n}))},[]),commitAll:(0,G.useCallback)(async()=>{if(!e)return;let r=new Map;for(let n of a.current.values()){let i=String(n.pkVal);i.startsWith(`__new_`)?(r.has(i)||r.set(i,{}),r.get(i)[n.col]=n.newVal):t(e,n.pkVal,n.col,n.newVal)}if(n)for(let e of r.values())await n(e);o.current=!0},[e,t,n]),discardAll:(0,G.useCallback)(()=>{i(new Map),o.current=!1},[]),hasPending:r.size>0,pendingCount:r.size,committedRef:o}}function fc(e,t){let[n,r]=(0,G.useState)(new Set);return{effectiveRows:(0,G.useMemo)(()=>{if(n.size===0||!t)return e;let r=[],i=[];for(let a of e)n.has(String(a[t]??``))?i.push(a):r.push(a);return[...r,...i]},[e,n,t]),pinnedCount:n.size,pinnedPks:n,setPinnedPks:r}}function pc(e,t){if(!t)return null;let n=e[t];return n==null?null:String(n)}function mc(e,t){if(!e)return null;let{displayRows:n,pkCol:r,selectedTable:i,connectionId:a}=t,{kind:o,rowIdx:s,pk:c,colName:l}=e,u=(r&&c!==null?n.find(e=>pc(e,r)===c):void 0)??n[s];if(!u)return null;let d=i??``,f=d?` — ${d}`:``;if(o===`row`)return{title:c?`Row #${c}${f}`:`Row${f}`,content:JSON.stringify(u,null,2),language:`json`,viewerKey:`${a}:${d}:row:${c??``}`};if(!l)return null;let p=nc(u[l]),m=c??String(s);return{title:`${l} #${m}${f}`,content:p,language:rc(p),viewerKey:`${a}:${d}:${l}:${m}`}}function hc(e){let{displayRows:t,columnOrder:n,schema:r,pkCol:i,connectionId:a,connectionName:o,selectedTable:s,selectedSchema:c,addEdit:l,gridSelection:u,containerRef:d}=e,{openTab:f}=D(ne(e=>({openTab:e.openTab}))),[p,m]=(0,G.useState)(null),h=(0,G.useRef)(t);h.current=t;let g=(0,G.useRef)(n);g.current=n;let _=(0,G.useCallback)(e=>pc(e,i),[i]),v=(0,G.useCallback)(e=>{let n=t[e];n&&m({kind:`row`,rowIdx:e,pk:_(n)})},[t,_]),y=(0,G.useCallback)((e,r)=>{let i=t[e];if(!i)return;let a=n[r];a&&m({kind:`cell`,rowIdx:e,pk:_(i),colName:a})},[t,n,_]),b=(0,G.useCallback)(()=>m(null),[]),x=(0,G.useMemo)(()=>mc(p,{displayRows:t,pkCol:i,selectedTable:s,connectionId:a}),[p,t,i,s,a]),S=(0,G.useCallback)(()=>{x&&f({type:`editor`,title:x.title,projectId:null,closable:!0,metadata:{inlineContent:x.content,inlineLanguage:x.language,viewerKey:x.viewerKey}})},[f,x]),C=(0,G.useCallback)((e,t)=>{if(!i)return!1;let[n,a]=e;for(let e=0;e<t.length;e++){let o=h.current[a+e];if(!o)continue;let s=o[i];for(let i=0;i<t[e].length;i++){let a=g.current[n+i];if(!a||r.find(e=>e.name===a)?.pk)continue;let o=t[e][i];l(s,a,o===``?null:o)}}return!1},[i,r,l]),w=(0,G.useRef)(r);w.current=r;let T=(0,G.useRef)(u);T.current=u;let E=(0,G.useRef)(l);E.current=l;let O=(0,G.useRef)(i);return O.current=i,(0,G.useEffect)(()=>{if(!d)return;let e=e=>{let t=d.current;if(!t||!t.contains(document.activeElement))return;let n=document.activeElement?.tagName;if(n===`INPUT`||n===`TEXTAREA`)return;let r=O.current;if(!r)return;let i=T.current?.current;if(!i)return;let a=e.clipboardData?.getData(`text/plain`);if(!a)return;let o=a.split(/\r?\n/).filter(e=>e.length>0).map(e=>e.split(` `));if(o.length===0)return;let[s,c]=i.cell;for(let e=0;e<o.length;e++){let t=h.current[c+e];if(!t)continue;let n=t[r];for(let t=0;t<o[e].length;t++){let r=g.current[s+t];if(!r||w.current.find(e=>e.name===r)?.pk)continue;let i=o[e][t];E.current(n,r,i===``?null:i)}}e.preventDefault()};return document.addEventListener(`paste`,e),()=>document.removeEventListener(`paste`,e)},[d]),{previewData:x,closePreview:b,openRowPreview:v,openCellPreview:y,openPreviewInTab:S,handlePaste:C,getContextFk:(0,G.useCallback)(e=>e?r.find(t=>t.name===e)?.fk??null:null,[r]),isCellViewable:(0,G.useCallback)((e,t)=>e&&t?tc(e[t]):!1,[]),openFkTable:(0,G.useCallback)((e,t)=>{t==null||!a||f({type:`database`,title:`${o??`DB`} · ${e.table}`,projectId:null,closable:!0,metadata:{connectionId:a,connectionName:o,tableName:e.table,schemaName:c??`public`,initialSql:`SELECT * FROM "${e.table}" WHERE "${e.column}" = '${String(t).replace(/'/g,`''`)}'`}})},[a,o,c,f])}}function gc({colName:e,bounds:t,isPinned:n,filterValue:r,sortState:i,onFilter:a,onSort:o,onClearSort:s,onTogglePin:u,onClose:d}){let[f,m]=(0,G.useState)(r),h=(0,G.useRef)(null),_=(0,G.useRef)(void 0);(0,G.useEffect)(()=>{let e=e=>{h.current&&!h.current.contains(e.target)&&d()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[d]),(0,G.useEffect)(()=>{let e=e=>{e.key===`Escape`&&d()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[d]);let v=e=>{m(e),clearTimeout(_.current),_.current=setTimeout(()=>a(e),300)},b=Math.min(t.x,window.innerWidth-220-8),x=t.y+t.height+2,S=document.getElementById(`portal`);return S?(0,K.createPortal)((0,q.jsxs)(`div`,{ref:h,style:{position:`fixed`,left:b,top:x,zIndex:1e4},className:`w-[220px] bg-popover border border-border rounded-md shadow-lg text-xs overflow-hidden`,children:[(0,q.jsx)(`div`,{className:`px-3 py-1.5 border-b border-border text-muted-foreground font-medium truncate`,children:e}),(0,q.jsx)(`div`,{className:`px-2 py-1.5 border-b border-border`,children:(0,q.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,q.jsx)(T,{className:`size-3 text-muted-foreground shrink-0`}),(0,q.jsx)(`input`,{autoFocus:!0,type:`text`,value:f,onChange:e=>v(e.target.value),placeholder:`Filter (ILIKE)…`,className:`flex-1 bg-transparent outline-none text-foreground placeholder:text-muted-foreground text-xs`}),f&&(0,q.jsx)(`button`,{type:`button`,onClick:()=>v(``),className:`text-muted-foreground hover:text-foreground`,children:(0,q.jsx)(l,{className:`size-3`})})]})}),(0,q.jsxs)(`div`,{className:`py-1`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{o(),d()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[i===`asc`?(0,q.jsx)(p,{className:`size-3`}):(0,q.jsx)(g,{className:`size-3`}),i===`asc`?`Sort Descending`:`Sort Ascending`]}),i&&s&&(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{s(),d()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[(0,q.jsx)(l,{className:`size-3`}),`Clear Sort`]}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{u(),d()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[n?(0,q.jsx)(c,{className:`size-3`}):(0,q.jsx)(y,{className:`size-3`}),n?`Unpin Column`:`Pin Column`]})]})]}),S):null}function _c({position:e,isPinned:t,onViewRow:n,onViewCell:r,onPinRow:i,onDeleteRow:a,onOpenFkTable:o,fkLabel:s,onClose:l}){let[u,f]=(0,G.useState)(!1),p=(0,G.useRef)(null);(0,G.useEffect)(()=>{let e=e=>{p.current&&!p.current.contains(e.target)&&l()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[l]),(0,G.useEffect)(()=>{let e=e=>{e.key===`Escape`&&l()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[l]);let m=Math.min(e.x,window.innerWidth-180-8),g=Math.min(e.y,window.innerHeight-130-8),_=document.getElementById(`portal`);return _?(0,K.createPortal)((0,q.jsxs)(`div`,{ref:p,style:{position:`fixed`,left:m,top:g,zIndex:1e4},className:`w-[180px] bg-popover border border-border rounded-md shadow-lg text-xs overflow-hidden py-1`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{n(),l()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[(0,q.jsx)(v,{className:`size-3`}),` View as JSON`]}),r&&(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{r(),l()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[(0,q.jsx)(v,{className:`size-3`}),` View Cell`]}),o&&(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{o(),l()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-primary`,children:[(0,q.jsx)(h,{className:`size-3`}),` `,s??`Open Referenced Table`]}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{i(),l()},className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-foreground`,children:[t?(0,q.jsx)(c,{className:`size-3`}):(0,q.jsx)(y,{className:`size-3`}),t?`Unpin Row`:`Pin Row`]}),(0,q.jsx)(`div`,{className:`border-t border-border my-0.5`}),u?(0,q.jsxs)(`div`,{className:`px-3 py-1.5 flex items-center gap-2`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:()=>{a(),l()},className:`text-destructive font-medium hover:underline`,children:`Delete?`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>f(!1),className:`text-muted-foreground hover:underline`,children:`Cancel`})]}):(0,q.jsxs)(`button`,{type:`button`,onClick:()=>f(!0),className:`w-full text-left px-3 py-1.5 hover:bg-muted flex items-center gap-2 text-destructive`,children:[(0,q.jsx)(d,{className:`size-3`}),` Delete Row`]})]}),_):null}function vc({columns:e,onSelect:t,onClose:n,anchorRect:r}){let[i,a]=(0,G.useState)(``),[o,s]=(0,G.useState)(0),c=(0,G.useRef)(null),l=(0,G.useRef)(null),u=i?e.filter(e=>e.toLowerCase().includes(i.toLowerCase())):e;(0,G.useEffect)(()=>{s(0)},[i]),(0,G.useEffect)(()=>{let e=l.current;e&&e.children[o]?.scrollIntoView({block:`nearest`})},[o]),(0,G.useEffect)(()=>{let e=e=>{c.current&&!c.current.contains(e.target)&&n()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[n]);let d=(0,G.useCallback)(e=>{if(e.key===`Escape`){n();return}if(e.key===`ArrowDown`){e.preventDefault(),s(e=>Math.min(e+1,u.length-1));return}if(e.key===`ArrowUp`){e.preventDefault(),s(e=>Math.max(e-1,0));return}if(e.key===`Enter`){e.preventDefault();let r=u[o];r&&(t(r),n())}},[u,o,t,n]),f=document.getElementById(`portal`);return f?(0,K.createPortal)((0,q.jsxs)(`div`,{ref:c,style:{position:`fixed`,left:Math.min(r.x,window.innerWidth-216),top:Math.min(r.y,window.innerHeight-308),zIndex:1e4},className:`w-[200px] max-h-[300px] bg-popover border border-border rounded-md shadow-lg text-xs overflow-hidden flex flex-col`,children:[(0,q.jsx)(`div`,{className:`px-2 py-1.5 border-b border-border`,children:(0,q.jsx)(`input`,{autoFocus:!0,value:i,onChange:e=>a(e.target.value),onKeyDown:d,placeholder:`Search columns…`,className:`w-full bg-transparent outline-none text-foreground placeholder:text-muted-foreground text-xs`})}),(0,q.jsxs)(`div`,{ref:l,className:`overflow-y-auto py-1`,children:[u.map((e,r)=>(0,q.jsx)(`button`,{type:`button`,onClick:()=>{t(e),n()},onMouseEnter:()=>s(r),className:`w-full text-left px-3 py-1 truncate text-foreground ${r===o?`bg-muted`:`hover:bg-muted`}`,children:e},e)),u.length===0&&(0,q.jsx)(`div`,{className:`px-3 py-2 text-muted-foreground`,children:`No columns found`})]})]}),f):null}function yc({hasSelection:e,selectedCount:t,onBulkDelete:n,onInsertRow:r,columns:i,selectedRows:o,connectionName:s,searchTerm:c,onSearchChange:u,onColumnJump:p,colSearchOpen:m,onColSearchChange:h}){let[g,_]=(0,G.useState)(!1),[v,y]=(0,G.useState)(!1),b=m??v,x=h??y,S=(0,G.useRef)(null),C=S.current?(()=>{let e=S.current.getBoundingClientRect();return{x:e.left,y:e.bottom+4}})():{x:0,y:0};return(0,q.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1 border-b border-border bg-background shrink-0`,children:[e&&(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs`,children:[(0,q.jsxs)(`span`,{className:`text-muted-foreground`,children:[t,` selected`]}),n&&(g?(0,q.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{n(),_(!1)},className:`text-destructive text-[10px] font-medium hover:underline`,children:[`Delete `,t,`?`]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>_(!1),className:`text-muted-foreground text-[10px] hover:underline`,children:`Cancel`})]}):(0,q.jsx)(`button`,{type:`button`,onClick:()=>_(!0),className:`p-0.5 text-muted-foreground hover:text-destructive`,children:(0,q.jsx)(d,{className:`size-3`})})),(0,q.jsx)(tt,{columns:i,rows:o,filename:`${s??`db`}-selected`})]}),(0,q.jsx)(`div`,{className:`flex-1`}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1 text-xs`,children:[(0,q.jsx)(w,{className:`size-3 text-muted-foreground`}),(0,q.jsx)(`input`,{value:c,onChange:e=>u(e.target.value),placeholder:`Search page…`,className:`w-24 bg-transparent outline-none text-foreground placeholder:text-muted-foreground text-xs`}),c&&(0,q.jsx)(`button`,{type:`button`,onClick:()=>u(``),className:`text-muted-foreground hover:text-foreground`,children:(0,q.jsx)(l,{className:`size-3`})})]}),p&&(0,q.jsx)(`button`,{ref:S,type:`button`,onClick:()=>x(!b),className:`p-0.5 rounded text-muted-foreground hover:text-foreground transition-colors`,title:`Jump to column (/)`,children:(0,q.jsx)(a,{className:`size-3.5`})}),r&&(0,q.jsx)(`button`,{type:`button`,onClick:r,className:`p-0.5 rounded text-muted-foreground hover:text-primary transition-colors`,title:`Insert row`,children:(0,q.jsx)(f,{className:`size-3.5`})}),b&&p&&(0,q.jsx)(vc,{columns:i,onSelect:p,onClose:()=>x(!1),anchorRect:C})]})}function bc({pendingCount:e,onSave:t,onDiscard:n}){return e===0?null:(0,q.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-t border-warning/50 bg-warning/5 shrink-0 text-xs`,children:[(0,q.jsxs)(`span`,{className:`text-warning font-medium`,children:[e,` pending edit`,e>1?`s`:``]}),(0,q.jsx)(`div`,{className:`flex-1`}),(0,q.jsxs)(`button`,{type:`button`,onClick:n,className:`flex items-center gap-1 px-2 py-0.5 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,children:[(0,q.jsx)(s,{className:`size-3`}),` Discard`]}),(0,q.jsxs)(`button`,{type:`button`,onClick:t,className:`flex items-center gap-1 px-2 py-0.5 rounded bg-primary text-primary-foreground hover:bg-primary/90 transition-colors`,children:[(0,q.jsx)(x,{className:`size-3`}),` Save`,(0,q.jsx)(`kbd`,{className:`ml-1 text-[9px] opacity-70`,children:`⌘↵`})]})]})}function xc({total:e,page:t,totalPages:n,onPageChange:r}){return(0,q.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-1.5 border-t border-border bg-background shrink-0 text-xs text-muted-foreground`,children:[(0,q.jsxs)(`span`,{children:[e.toLocaleString(),` rows`]}),(0,q.jsxs)(`div`,{className:`hidden md:flex items-center gap-2 text-[10px] text-muted-foreground/50`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`kbd`,{className:`px-1 py-0.5 rounded bg-muted text-[9px]`,children:`/`}),` columns`]}),(0,q.jsxs)(`span`,{children:[(0,q.jsxs)(`kbd`,{className:`px-1 py-0.5 rounded bg-muted text-[9px]`,children:[`⌘`,`A`]}),` select all`]}),(0,q.jsxs)(`span`,{children:[(0,q.jsxs)(`kbd`,{className:`px-1 py-0.5 rounded bg-muted text-[9px]`,children:[`⌘`,`C`]}),` copy`]})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`button`,{type:`button`,disabled:t<=1,onClick:()=>r(t-1),className:`p-0.5 rounded hover:bg-muted disabled:opacity-30`,children:(0,q.jsx)(o,{className:`size-3.5`})}),(0,q.jsxs)(`span`,{children:[t,` / `,n]}),(0,q.jsx)(`button`,{type:`button`,disabled:t>=n,onClick:()=>r(t+1),className:`p-0.5 rounded hover:bg-muted disabled:opacity-30`,children:(0,q.jsx)(_,{className:`size-3.5`})})]})]})}function Sc(e,t){if(t===`json`)try{return JSON.stringify(JSON.parse(e.trim()),null,2)}catch{return null}if(t===`xml`){let t=0;return e.trim().replace(/>\s*</g,`>
139
139
  <`).split(`
140
140
  `).map(e=>{let n=e.trim();n.startsWith(`</`)&&(t=Math.max(0,t-1));let r=` `.repeat(t)+n;return n.startsWith(`<`)&&!n.startsWith(`</`)&&!n.endsWith(`/>`)&&!n.startsWith(`<?`)&&t++,r}).join(`
141
- `)}return null}function Cc({data:e,onClose:t,onOpenInTab:n}){let r=Fe(),[i,a]=(0,G.useState)(!0),[o,s]=(0,G.useState)(!1),c=e.language===`json`||e.language===`xml`,d=(0,G.useMemo)(()=>o?Sc(e.content,e.language)??e.content:e.content,[o,e.content,e.language]),f=(0,G.useCallback)(()=>{s(t=>t?!1:Sc(e.content,e.language)!==null)},[e.content,e.language]),[p,g]=(0,G.useState)(200),_=(0,G.useCallback)(e=>{e.preventDefault();let t=e.clientY,n=p,r=e=>g(Math.max(80,n+(t-e.clientY))),i=()=>{document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)},[p]);return(0,q.jsxs)(`div`,{className:`shrink-0 border-t border-border flex flex-col`,style:{height:p},children:[(0,q.jsx)(`div`,{onMouseDown:_,className:`shrink-0 h-1.5 cursor-row-resize bg-border/50 hover:bg-primary/30 flex items-center justify-center transition-colors`,children:(0,q.jsx)(u,{className:`size-3 text-muted-foreground/50`})}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1 bg-muted/50 border-b border-border shrink-0`,children:[(0,q.jsx)(v,{className:`size-3 text-muted-foreground`}),(0,q.jsx)(`span`,{className:`text-xs font-medium text-foreground truncate flex-1`,children:e.title}),c&&(0,q.jsx)(`button`,{type:`button`,onClick:f,title:o?`Raw`:`Beautify`,className:`p-0.5 rounded transition-colors ${o?`text-primary`:`text-muted-foreground hover:text-foreground`}`,children:(0,q.jsx)(m,{className:`size-3`})}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>a(!i),title:i?`No wrap`:`Word wrap`,className:`p-0.5 rounded transition-colors ${i?`text-primary`:`text-muted-foreground hover:text-foreground`}`,children:(0,q.jsx)(b,{className:`size-3`})}),(0,q.jsxs)(`button`,{type:`button`,onClick:n,title:`Open in new tab`,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,children:[(0,q.jsx)(h,{className:`size-3`}),(0,q.jsx)(`span`,{className:`hidden sm:inline`,children:`Open in Tab`})]}),(0,q.jsx)(`button`,{type:`button`,onClick:t,title:`Close preview (Esc)`,className:`p-0.5 rounded text-muted-foreground hover:text-foreground transition-colors`,children:(0,q.jsx)(l,{className:`size-3`})})]}),(0,q.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,q.jsx)(k,{beforeMount:te,height:`100%`,language:e.language===`plaintext`?void 0:e.language,value:d,theme:r,options:{readOnly:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,wordWrap:i?`on`:`off`,lineNumbers:`on`,fontSize:12,folding:!0,bracketPairColorization:{enabled:!0},domReadOnly:!0,contextmenu:!1,overviewRulerLanes:0},loading:(0,q.jsx)(C,{className:`size-4 animate-spin text-muted-foreground`})})})]})}var wc=()=>{},Tc={sortAsc:e=>`<svg viewBox="0 0 16 16" fill="${e.fgColor}"><path d="M8 4l4 6H4z"/></svg>`,sortDesc:e=>`<svg viewBox="0 0 16 16" fill="${e.fgColor}"><path d="M8 12l4-6H4z"/></svg>`,headerFk:()=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" stroke="var(--accent)" stroke-width="1.5" stroke-linecap="round"><path d="M6 4.5H4.5a2.5 2.5 0 000 5H6M10 4.5h1.5a2.5 2.5 0 010 5H10M5 7h6"/></svg>`};function Ec(e){let{columns:t,rows:n,total:r,limit:i,schema:a,loading:o,page:s,onPageChange:c,onCellUpdate:l,onRowDelete:u,onBulkDelete:d,onInsertRow:f,orderBy:p,orderDir:m,onToggleSort:h,onClearSort:g,columnFilters:_={},onColumnFilter:v,connectionId:y,selectedTable:b,selectedSchema:x,connectionName:S,readOnly:w}=e,T=Qs(),E=(0,G.useRef)(null),D=(0,G.useRef)(null),O=(0,G.useMemo)(()=>{let e=new Set(a.map(e=>e.name));return t.filter(t=>e.has(t))},[t,a]),[k,ee]=(0,G.useState)(new Set),[te,ne]=(0,G.useState)(new Map),[A,re]=(0,G.useState)(null),[j,ie]=(0,G.useState)(null),[ae,oe]=(0,G.useState)(``),[M,se]=(0,G.useState)([]),N=(0,G.useMemo)(()=>a.find(e=>e.pk)?.name??a.find(e=>e.name.toLowerCase()===`id`)?.name??null,[a]),{effectiveRows:ce,pinnedCount:le,pinnedPks:ue,setPinnedPks:P}=fc(n,N),F=(0,G.useMemo)(()=>{if(le===0)return[...ce,...M];let e=ce.slice(0,ce.length-le),t=ce.slice(ce.length-le);return[...e,...M,...t]},[ce,M,le]),I=(0,G.useMemo)(()=>{if(!ae.trim())return F;let e=ae.toLowerCase();return F.filter(t=>O.some(n=>String(t[n]??``).toLowerCase().includes(e)))},[F,O,ae]),de=(0,G.useMemo)(()=>le===0||!N?0:ae.trim()?I.filter(e=>ue.has(String(e[N]??``))).length:le,[le,N,ae,I,ue]),fe=!!w||!N,{pendingRef:pe,addEdit:me,commitAll:he,discardAll:ge,hasPending:_e,pendingCount:ve,committedRef:L}=dc(N,l,f),{columns:ye,freezeColumns:be,columnOrder:xe}=ec(a,O,k,te,I,p,m),{getCellContent:R,onCellEdited:Se}=cc(I,xe,a,N,me,pe,fe),{gridSelection:z,onGridSelectionChange:B,selectedRowIndices:V,clearSelection:Ce}=uc(),{previewData:H,closePreview:U,openRowPreview:we,openCellPreview:Te,openPreviewInTab:Ee,handlePaste:W,getContextFk:De,isCellViewable:Oe,openFkTable:ke}=hc({displayRows:I,columnOrder:xe,schema:a,pkCol:N,connectionId:y,connectionName:S,selectedTable:b,selectedSchema:x,addEdit:fe?wc:me,gridSelection:z,containerRef:D});(0,G.useEffect)(()=>{L.current&&(L.current=!1,ge(),se([]))},[n]);let Ae=(0,G.useCallback)((e,t)=>{ne(n=>new Map(n).set(e.id??e.title,t))},[]),je=(0,G.useCallback)((e,t)=>{let n=xe[e];n&&re({colName:n,bounds:t})},[xe]),Me=(0,G.useCallback)(([e,t],n)=>{n.preventDefault(),ie({position:{x:n.bounds.x+n.localEventX,y:n.bounds.y+n.localEventY},rowIdx:t,colIdx:e})},[]),Ne=(0,G.useCallback)(e=>{ee(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),Pe=(0,G.useCallback)(e=>{if(!N)return;let t=I[e];if(!t)return;let n=String(t[N]??``);P(e=>{let t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t})},[N,I,P]),Fe=(0,G.useCallback)(e=>{if(ue.size===0||!N)return;let t=I[e];if(t&&ue.has(String(t[N]??``)))return{bgCell:T.bgCellMedium??T.bgHeader}},[ue,N,I,T]),Ie=(0,G.useCallback)(()=>{!N||!d||(d(N,V.map(e=>I[e]?.[N]).filter(e=>e!=null)),Ce())},[N,d,V,I,Ce]),[Le,Re]=(0,G.useState)(!1),ze=(0,G.useCallback)(e=>{if(e.key===`Escape`){U(),Re(!1);return}(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&_e&&(e.preventDefault(),he());let t=e.target?.tagName;e.key===`/`&&t!==`INPUT`&&t!==`TEXTAREA`&&(e.preventDefault(),Re(!0))},[_e,he,U]),Be=(0,G.useCallback)(()=>{!N||!f||se(e=>[...e,{[N]:`__new_${Date.now()}`}])},[N,f]),Ve=(0,G.useCallback)(e=>{let t=xe.indexOf(e);t>=0&&E.current?.scrollTo&&E.current.scrollTo(t,0)},[xe]),He=j?I[j.rowIdx]:null,Ue=He&&N?String(He[N]??``):``,We=j?xe[j.colIdx]:null,Ge=Oe(He??null,We??null),Ke=De(We??null),qe=He&&We?He[We]:null;return O.length?(0,q.jsxs)(`div`,{ref:D,className:`flex flex-col h-full overflow-hidden relative`,tabIndex:0,onKeyDown:ze,children:[(0,q.jsx)(yc,{hasSelection:V.length>0,selectedCount:V.length,onBulkDelete:d&&N?Ie:void 0,onInsertRow:f&&N?Be:void 0,columns:O,selectedRows:V.map(e=>I[e]).filter(Boolean),connectionName:S,searchTerm:ae,onSearchChange:oe,onColumnJump:Ve,colSearchOpen:Le,onColSearchChange:Re}),o&&(0,q.jsx)(`div`,{className:`absolute inset-0 z-30 flex items-center justify-center bg-background/60`,children:(0,q.jsx)(C,{className:`size-5 animate-spin text-primary`})}),(0,q.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,q.jsx)(Js,{ref:E,columns:ye,rows:I.length,getCellContent:R,getCellsForSelection:!0,onCellEdited:Se,onPaste:fe?!1:W,theme:T,freezeColumns:be,freezeTrailingRows:de,rowMarkers:N?`checkbox-visible`:`number`,gridSelection:z,onGridSelectionChange:B,onColumnResize:Ae,onHeaderMenuClick:je,onCellContextMenu:Me,getRowThemeOverride:Fe,trailingRowOptions:f&&N?{sticky:!0,tint:!0}:void 0,onRowAppended:f?Be:void 0,headerIcons:Tc,smoothScrollX:!0,smoothScrollY:!0,width:`100%`,height:`100%`})}),_e&&(0,q.jsx)(bc,{pendingCount:ve,onSave:he,onDiscard:()=>{ge(),se([])}}),H&&(0,q.jsx)(Cc,{data:H,onClose:U,onOpenInTab:Ee}),(0,q.jsx)(xc,{total:r,page:s,totalPages:Math.ceil(r/i)||1,onPageChange:c}),A&&(0,q.jsx)(gc,{colName:A.colName,bounds:A.bounds,isPinned:k.has(A.colName),filterValue:_[A.colName]??``,sortState:p===A.colName?m===`ASC`?`asc`:`desc`:null,onFilter:e=>{if(!v)return;let t={..._};e?t[A.colName]=e:delete t[A.colName],v(t)},onSort:()=>{h&&h(A.colName)},onClearSort:g,onTogglePin:()=>Ne(A.colName),onClose:()=>re(null)}),j&&He&&(0,q.jsx)(_c,{position:j.position,isPinned:ue.has(Ue),onViewRow:()=>we(j.rowIdx),onViewCell:Ge?()=>Te(j.rowIdx,j.colIdx):void 0,onPinRow:()=>Pe(j.rowIdx),onDeleteRow:()=>{N&&u&&He&&u(N,He[N])},onOpenFkTable:Ke&&qe!=null&&y?()=>ke(Ke,qe):void 0,fkLabel:Ke?`Open ${Ke.table}.${Ke.column}`:void 0,onClose:()=>ie(null)})]}):(0,q.jsx)(`div`,{className:`flex items-center justify-center h-full text-xs text-muted-foreground`,children:o?(0,q.jsx)(C,{className:`size-4 animate-spin`}):`Select a table`})}export{Be as a,Qe as i,tt as n,ze as o,$e as r,Ec as t};
141
+ `)}return null}function Cc({data:e,onClose:t,onOpenInTab:n}){let r=Fe(),[i,a]=(0,G.useState)(!0),[o,s]=(0,G.useState)(!1),c=e.language===`json`||e.language===`xml`,d=(0,G.useMemo)(()=>o?Sc(e.content,e.language)??e.content:e.content,[o,e.content,e.language]),f=(0,G.useCallback)(()=>{s(t=>t?!1:Sc(e.content,e.language)!==null)},[e.content,e.language]),[p,g]=(0,G.useState)(200),_=(0,G.useCallback)(e=>{e.preventDefault();let t=e.clientY,n=p,r=e=>g(Math.max(80,n+(t-e.clientY))),i=()=>{document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)},[p]);return(0,q.jsxs)(`div`,{className:`shrink-0 border-t border-border flex flex-col`,style:{height:p},children:[(0,q.jsx)(`div`,{onMouseDown:_,className:`shrink-0 h-1.5 cursor-row-resize bg-border/50 hover:bg-primary/30 flex items-center justify-center transition-colors`,children:(0,q.jsx)(u,{className:`size-3 text-muted-foreground/50`})}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1 bg-muted/50 border-b border-border shrink-0`,children:[(0,q.jsx)(v,{className:`size-3 text-muted-foreground`}),(0,q.jsx)(`span`,{className:`text-xs font-medium text-foreground truncate flex-1`,children:e.title}),c&&(0,q.jsx)(`button`,{type:`button`,onClick:f,title:o?`Raw`:`Beautify`,className:`p-0.5 rounded transition-colors ${o?`text-primary`:`text-muted-foreground hover:text-foreground`}`,children:(0,q.jsx)(m,{className:`size-3`})}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>a(!i),title:i?`No wrap`:`Word wrap`,className:`p-0.5 rounded transition-colors ${i?`text-primary`:`text-muted-foreground hover:text-foreground`}`,children:(0,q.jsx)(b,{className:`size-3`})}),(0,q.jsxs)(`button`,{type:`button`,onClick:n,title:`Open in new tab`,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,children:[(0,q.jsx)(h,{className:`size-3`}),(0,q.jsx)(`span`,{className:`hidden sm:inline`,children:`Open in Tab`})]}),(0,q.jsx)(`button`,{type:`button`,onClick:t,title:`Close preview (Esc)`,className:`p-0.5 rounded text-muted-foreground hover:text-foreground transition-colors`,children:(0,q.jsx)(l,{className:`size-3`})})]}),(0,q.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,q.jsx)(ee,{beforeMount:k,height:`100%`,language:e.language===`plaintext`?void 0:e.language,value:d,theme:r,options:{readOnly:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,wordWrap:i?`on`:`off`,lineNumbers:`on`,fontSize:12,folding:!0,bracketPairColorization:{enabled:!0},domReadOnly:!0,contextmenu:!1,overviewRulerLanes:0},loading:(0,q.jsx)(C,{className:`size-4 animate-spin text-muted-foreground`})})})]})}var wc=()=>{},Tc={sortAsc:e=>`<svg viewBox="0 0 16 16" fill="${e.fgColor}"><path d="M8 4l4 6H4z"/></svg>`,sortDesc:e=>`<svg viewBox="0 0 16 16" fill="${e.fgColor}"><path d="M8 12l4-6H4z"/></svg>`,headerFk:()=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" stroke="var(--accent)" stroke-width="1.5" stroke-linecap="round"><path d="M6 4.5H4.5a2.5 2.5 0 000 5H6M10 4.5h1.5a2.5 2.5 0 010 5H10M5 7h6"/></svg>`};function Ec(e){let{columns:t,rows:n,total:r,limit:i,schema:a,loading:o,page:s,onPageChange:c,onCellUpdate:l,onRowDelete:u,onBulkDelete:d,onInsertRow:f,orderBy:p,orderDir:m,onToggleSort:h,onClearSort:g,columnFilters:_={},onColumnFilter:v,connectionId:y,selectedTable:b,selectedSchema:x,connectionName:S,readOnly:w}=e,T=Qs(),E=(0,G.useRef)(null),D=(0,G.useRef)(null),O=(0,G.useMemo)(()=>{let e=new Set(a.map(e=>e.name));return t.filter(t=>e.has(t))},[t,a]),[k,ee]=(0,G.useState)(new Set),[te,ne]=(0,G.useState)(new Map),[A,re]=(0,G.useState)(null),[j,ie]=(0,G.useState)(null),[ae,oe]=(0,G.useState)(``),[M,se]=(0,G.useState)([]),N=(0,G.useMemo)(()=>a.find(e=>e.pk)?.name??a.find(e=>e.name.toLowerCase()===`id`)?.name??null,[a]),{effectiveRows:ce,pinnedCount:le,pinnedPks:ue,setPinnedPks:P}=fc(n,N),F=(0,G.useMemo)(()=>{if(le===0)return[...ce,...M];let e=ce.slice(0,ce.length-le),t=ce.slice(ce.length-le);return[...e,...M,...t]},[ce,M,le]),I=(0,G.useMemo)(()=>{if(!ae.trim())return F;let e=ae.toLowerCase();return F.filter(t=>O.some(n=>String(t[n]??``).toLowerCase().includes(e)))},[F,O,ae]),de=(0,G.useMemo)(()=>le===0||!N?0:ae.trim()?I.filter(e=>ue.has(String(e[N]??``))).length:le,[le,N,ae,I,ue]),fe=!!w||!N,{pendingRef:pe,addEdit:me,commitAll:he,discardAll:ge,hasPending:_e,pendingCount:ve,committedRef:L}=dc(N,l,f),{columns:ye,freezeColumns:be,columnOrder:xe}=ec(a,O,k,te,I,p,m),{getCellContent:R,onCellEdited:Se}=cc(I,xe,a,N,me,pe,fe),{gridSelection:z,onGridSelectionChange:B,selectedRowIndices:V,clearSelection:Ce}=uc(),{previewData:H,closePreview:U,openRowPreview:we,openCellPreview:Te,openPreviewInTab:Ee,handlePaste:W,getContextFk:De,isCellViewable:Oe,openFkTable:ke}=hc({displayRows:I,columnOrder:xe,schema:a,pkCol:N,connectionId:y,connectionName:S,selectedTable:b,selectedSchema:x,addEdit:fe?wc:me,gridSelection:z,containerRef:D});(0,G.useEffect)(()=>{L.current&&(L.current=!1,ge(),se([]))},[n]);let Ae=(0,G.useCallback)((e,t)=>{ne(n=>new Map(n).set(e.id??e.title,t))},[]),je=(0,G.useCallback)((e,t)=>{let n=xe[e];n&&re({colName:n,bounds:t})},[xe]),Me=(0,G.useCallback)(([e,t],n)=>{n.preventDefault(),ie({position:{x:n.bounds.x+n.localEventX,y:n.bounds.y+n.localEventY},rowIdx:t,colIdx:e})},[]),Ne=(0,G.useCallback)(e=>{ee(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),Pe=(0,G.useCallback)(e=>{if(!N)return;let t=I[e];if(!t)return;let n=String(t[N]??``);P(e=>{let t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t})},[N,I,P]),Fe=(0,G.useCallback)(e=>{if(ue.size===0||!N)return;let t=I[e];if(t&&ue.has(String(t[N]??``)))return{bgCell:T.bgCellMedium??T.bgHeader}},[ue,N,I,T]),Ie=(0,G.useCallback)(()=>{!N||!d||(d(N,V.map(e=>I[e]?.[N]).filter(e=>e!=null)),Ce())},[N,d,V,I,Ce]),[Le,Re]=(0,G.useState)(!1),ze=(0,G.useCallback)(e=>{if(e.key===`Escape`){U(),Re(!1);return}(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&_e&&(e.preventDefault(),he());let t=e.target?.tagName;e.key===`/`&&t!==`INPUT`&&t!==`TEXTAREA`&&(e.preventDefault(),Re(!0))},[_e,he,U]),Be=(0,G.useCallback)(()=>{!N||!f||se(e=>[...e,{[N]:`__new_${Date.now()}`}])},[N,f]),Ve=(0,G.useCallback)(e=>{let t=xe.indexOf(e);t>=0&&E.current?.scrollTo&&E.current.scrollTo(t,0)},[xe]),He=j?I[j.rowIdx]:null,Ue=He&&N?String(He[N]??``):``,We=j?xe[j.colIdx]:null,Ge=Oe(He??null,We??null),Ke=De(We??null),qe=He&&We?He[We]:null;return O.length?(0,q.jsxs)(`div`,{ref:D,className:`flex flex-col h-full overflow-hidden relative`,tabIndex:0,onKeyDown:ze,children:[(0,q.jsx)(yc,{hasSelection:V.length>0,selectedCount:V.length,onBulkDelete:d&&N?Ie:void 0,onInsertRow:f&&N?Be:void 0,columns:O,selectedRows:V.map(e=>I[e]).filter(Boolean),connectionName:S,searchTerm:ae,onSearchChange:oe,onColumnJump:Ve,colSearchOpen:Le,onColSearchChange:Re}),o&&(0,q.jsx)(`div`,{className:`absolute inset-0 z-30 flex items-center justify-center bg-background/60`,children:(0,q.jsx)(C,{className:`size-5 animate-spin text-primary`})}),(0,q.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,q.jsx)(Js,{ref:E,columns:ye,rows:I.length,getCellContent:R,getCellsForSelection:!0,onCellEdited:Se,onPaste:fe?!1:W,theme:T,freezeColumns:be,freezeTrailingRows:de,rowMarkers:N?`checkbox-visible`:`number`,gridSelection:z,onGridSelectionChange:B,onColumnResize:Ae,onHeaderMenuClick:je,onCellContextMenu:Me,getRowThemeOverride:Fe,trailingRowOptions:f&&N?{sticky:!0,tint:!0}:void 0,onRowAppended:f?Be:void 0,headerIcons:Tc,smoothScrollX:!0,smoothScrollY:!0,width:`100%`,height:`100%`})}),_e&&(0,q.jsx)(bc,{pendingCount:ve,onSave:he,onDiscard:()=>{ge(),se([])}}),H&&(0,q.jsx)(Cc,{data:H,onClose:U,onOpenInTab:Ee}),(0,q.jsx)(xc,{total:r,page:s,totalPages:Math.ceil(r/i)||1,onPageChange:c}),A&&(0,q.jsx)(gc,{colName:A.colName,bounds:A.bounds,isPinned:k.has(A.colName),filterValue:_[A.colName]??``,sortState:p===A.colName?m===`ASC`?`asc`:`desc`:null,onFilter:e=>{if(!v)return;let t={..._};e?t[A.colName]=e:delete t[A.colName],v(t)},onSort:()=>{h&&h(A.colName)},onClearSort:g,onTogglePin:()=>Ne(A.colName),onClose:()=>re(null)}),j&&He&&(0,q.jsx)(_c,{position:j.position,isPinned:ue.has(Ue),onViewRow:()=>we(j.rowIdx),onViewCell:Ge?()=>Te(j.rowIdx,j.colIdx):void 0,onPinRow:()=>Pe(j.rowIdx),onDeleteRow:()=>{N&&u&&He&&u(N,He[N])},onOpenFkTable:Ke&&qe!=null&&y?()=>ke(Ke,qe):void 0,fkLabel:Ke?`Open ${Ke.table}.${Ke.column}`:void 0,onClose:()=>ie(null)})]}):(0,q.jsx)(`div`,{className:`flex items-center justify-center h-full text-xs text-muted-foreground`,children:o?(0,q.jsx)(C,{className:`size-4 animate-spin`}):`Select a table`})}export{Be as a,Qe as i,tt as n,ze as o,$e as r,Ec as t};
@@ -0,0 +1 @@
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-P9Ym7hCv.js";import{Mr as r,Vr as i,Wn as a,Yn as o,b as s,dr as c,j as l,lr as u,pr as d,un as f,xr as p,zr as m}from"./icons-CO_II6D-.js";import"./api-client-F5Zi1sR0.js";import"./settings-store-Cyuo8ceh.js";import{n as h}from"./utils-btZ8C8-R.js";import"./portal-container-context-NFSuymMu.js";import"./panel-store-B6PoCwBA.js";import"./window-store-vo1N70nK.js";import{i as g}from"./project-store-CCimwgGF.js";import"./session-list-sync-triggers-ATvz-1g3.js";import"./tab-store-DCpc0g0Q.js";import"./context-menu-7OX80HDB.js";import"./file-store-Cm7-pHux.js";import{n as _}from"./use-is-mobile-BClDZJP5.js";import"./git-repo-store-B_u5RzIM.js";import{t as v}from"./button-DeAyLH9U.js";import{a as y,n as b,o as x,t as S}from"./dialog-Bocc0Fgb.js";import{t as C}from"./mobile-bottom-sheet-D4UyOatB.js";import"./use-visual-viewport-BGpcMnIx.js";import"./fs-api-IX9SHt5k.js";import"./ws-auth-Ytui7dXP.js";import{at as w,bn as T,ct as E,dn as D,dt as O,ft as k,it as A,ln as j,lt as M,nt as N,ot as P,rt as ee,st as te,un as F,ut as I,vn as L}from"./index-CyDLBddf.js";import"./agent-session-sheet-store-_OeezCXB.js";import"./libesm-5wREk7JN.js";import{n as R}from"./tool-cards-rxLXbBSm.js";import"./use-blob-url-BC69n15x.js";import{t as z}from"./use-websocket-AC7EG1LK.js";import{t as B}from"./markdown-renderer-CmnqFfTU.js";import"./run-in-terminal-DCBNtYHQ.js";var V=e(t(),1),H=8e3;function ne(e,t){let[n,r]=(0,V.useState)([]),[i,a]=(0,V.useState)([]),[o,s]=(0,V.useState)(`idle`),[c,l]=(0,V.useState)({}),[u,d]=(0,V.useState)(!1),[f,p]=(0,V.useState)(!1),[m,h]=(0,V.useState)(!1),[g,_]=(0,V.useState)(null),v=(0,V.useRef)(new Map),y=(0,V.useCallback)(e=>{l(t=>{if(!t[e])return t;let n={...t};return delete n[e],n})},[]),b=(0,V.useCallback)(e=>{let t;try{t=JSON.parse(e.data)}catch{return}switch(t.type){case`ping`:return;case`group_state`:p(!0),s(t.status),a(t.members),h(t.status===`active`);return;case`group_message`:y(t.message.fromMember),r(e=>e.some(e=>e.id===t.message.id)?e:[...e,t.message]);return;case`member_status`:a(e=>e.map(e=>e.id===t.memberId?{...e,status:t.status}:e));return;case`typing`:{l(e=>({...e,[t.member]:!0}));let e=v.current,n=e.get(t.member);n&&clearTimeout(n),e.set(t.member,setTimeout(()=>y(t.member),H));return}case`turn_done`:return;case`group_done`:h(!1),s(`idle`),l({});return;case`error`:_(t.message),h(!1);return}},[y]),{send:x}=z({url:e&&t?`/ws/project/${encodeURIComponent(t)}/group/${encodeURIComponent(e)}`:``,onMessage:b,autoConnect:!!e&&!!t});return(0,V.useEffect)(()=>{let t=!1;r([]),a([]),l({}),s(`idle`),h(!1),_(null),p(!1);for(let e of v.current.values())clearTimeout(e);if(v.current.clear(),e)return d(!0),A(e,{limit:200}).then(e=>{t||r(t=>{let n=new Set(e.messages.map(e=>e.id)),r=t.filter(e=>!n.has(e.id));return[...e.messages,...r]})}).catch(e=>{t||_(e instanceof Error?e.message:`Failed to load feed`)}).finally(()=>{t||d(!1)}),()=>{t=!0}},[e]),{messages:n,members:i,status:o,typing:c,loading:u,isConnected:f,isRunning:m,error:g,sendMessage:(0,V.useCallback)(t=>{let n=t.trim();!n||!e||(_(null),h(!0),f?x(JSON.stringify({type:`message`,content:n})):M(e,n).catch(e=>{_(e instanceof Error?e.message:`Failed to send message`),h(!1)}))},[e,f,x]),stop:(0,V.useCallback)(()=>{e&&(f?x(JSON.stringify({type:`stop`})):I(e).catch(()=>{}),s(`paused`),h(!1))},[e,f,x]),resume:(0,V.useCallback)(()=>{e&&E(e).then(()=>{s(`active`),h(!0)}).catch(e=>_(e instanceof Error?e.message:`Failed to resume`))},[e])}}var U=n();function W(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?`?`:t.length===1?t[0].slice(0,2).toUpperCase():(t[0][0]+t[t.length-1][0]).toUpperCase()}function G(e){try{let t=e<0xe8d4a51000?e*1e3:e;return new Date(t).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}catch{return``}}function K(e,t){return e.split(/(@[\p{L}\p{N}_]+)/gu).map((e,n)=>{if(e.startsWith(`@`)&&e.length>1){let r=t(e.slice(1));return(0,U.jsx)(`span`,{className:h(`font-semibold`,!r&&`text-primary`),style:r?{color:r}:void 0,children:e},n)}return e})}var re=(0,V.memo)(function({message:e,colorFor:t,isLeader:n,onViewFull:r}){let i=e.fromMember===`user`,a=i?`You`:e.fromMember,o=i?`var(--color-primary)`:t(e.fromMember)??`var(--accent)`,s=!i&&n(e.fromMember),c=e.summary??``,l=e.toMember&&e.toMember!==`all`?e.toMember:null,d=(0,U.jsxs)(`div`,{className:h(`group relative flex gap-2.5 px-3 py-2 transition-colors hover:bg-surface-elevated/50`,i&&`bg-primary/5`),style:{boxShadow:`inset 3px 0 0 0 ${o}`},children:[e.fullSessionRef&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>r(e),title:`View full transcript (AI's raw thinking / debug)`,"aria-label":`View full transcript`,className:`absolute right-1.5 top-1.5 hidden items-center rounded p-1 text-text-subtle/60 hover:bg-surface-elevated hover:text-text-secondary can-hover:group-hover:inline-flex`,children:(0,U.jsx)(u,{className:`size-3.5`})}),(0,U.jsx)(`div`,{className:`mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-full text-[11px] font-semibold text-white ring-2 ring-background`,style:{backgroundColor:o},"aria-hidden":!0,children:W(a)}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1 can-hover:pr-6`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-0.5`,children:[(0,U.jsx)(`span`,{className:`text-sm font-semibold`,style:{color:i?`var(--color-foreground)`:o},children:a}),s&&(0,U.jsx)(`span`,{className:`rounded bg-surface-elevated px-1.5 py-px text-[10px] font-medium text-text-secondary`,children:`leader`}),l&&(0,U.jsxs)(`span`,{className:`text-[11px] text-text-subtle`,children:[`→ `,l]}),(0,U.jsx)(`span`,{className:`text-[11px] text-text-subtle`,children:G(e.createdAt)})]}),(0,U.jsx)(`div`,{className:`mt-0.5 whitespace-pre-wrap break-words text-sm leading-relaxed text-text-secondary`,children:K(c,t)})]})]});return e.fullSessionRef?(0,U.jsxs)(j,{children:[(0,U.jsx)(L,{asChild:!0,children:d}),(0,U.jsx)(F,{children:(0,U.jsxs)(D,{onClick:()=>r(e),children:[(0,U.jsx)(u,{className:`size-4`}),` View full transcript`]})})]}):d}),q={idle:`bg-text-subtle`,working:`bg-primary animate-pulse`,done:`bg-emerald-500`,error:`bg-destructive`},J={idle:`Idle`,working:`Working`,done:`Done`,error:`Error`},ie=(0,V.memo)(function({members:e,liveStatus:t,typing:n,busy:i,onAdd:o,onEdit:s,onRemove:c}){return(0,U.jsxs)(`div`,{className:`flex flex-col gap-0.5 p-2`,children:[e.map(e=>{let o=n[e.name],l=t.get(e.id)??e.status;return(0,U.jsxs)(`div`,{className:`group flex items-center gap-2 rounded-md px-2 py-1.5`,children:[(0,U.jsx)(`span`,{className:`flex size-6 shrink-0 items-center justify-center rounded-full text-[10px] font-semibold text-white ring-2 ring-background`,style:{backgroundColor:e.color??`var(--accent)`},"aria-hidden":!0,children:e.name.slice(0,1).toUpperCase()}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(`span`,{className:`truncate text-xs font-medium`,style:{color:e.color??`var(--color-foreground)`},children:e.name}),e.role===`leader`&&(0,U.jsx)(`span`,{className:`rounded-sm bg-accent-wash px-1 text-[9px] font-semibold uppercase text-primary`,children:`lead`})]}),(0,U.jsx)(`span`,{className:`block truncate text-[10px] text-text-subtle`,children:o?`typing…`:e.persona||J[l]})]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5 can-hover:opacity-0 can-hover:group-hover:opacity-100`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>s(e),disabled:i,"aria-label":`Edit ${e.name}`,className:`flex size-8 items-center justify-center rounded-md text-text-subtle hover:bg-surface-elevated hover:text-foreground active:bg-surface-elevated disabled:opacity-40`,children:(0,U.jsx)(a,{className:`size-3.5`})}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>c(e),disabled:i,"aria-label":`Remove ${e.name}`,className:`flex size-8 items-center justify-center rounded-md text-text-subtle hover:bg-surface-elevated hover:text-destructive active:bg-surface-elevated disabled:opacity-40`,children:(0,U.jsx)(r,{className:`size-3.5`})})]}),(0,U.jsx)(`span`,{className:h(`size-2 shrink-0 rounded-full`,q[l]),title:J[l],"aria-hidden":!0})]},e.id)}),(0,U.jsxs)(`button`,{type:`button`,onClick:o,disabled:i,className:`mt-1 flex items-center gap-2 rounded-md px-2 py-2 text-xs font-medium text-primary hover:bg-surface-elevated active:bg-surface-elevated disabled:opacity-40`,children:[(0,U.jsx)(m,{className:`size-4`}),` Add member`]})]})}),Y=`w-full min-h-[40px] rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder:text-text-subtle focus:outline-none focus:ring-1 focus:ring-primary`;function ae({open:e,member:t,projectName:n,providerId:r=`claude`,onSubmit:i,onClose:a}){let o=_(),[s,c]=(0,V.useState)(t?.name??``),[l,u]=(0,V.useState)(t?.persona??``),[d,p]=(0,V.useState)(t?.model??null),[m,h]=(0,V.useState)(t?.role===`leader`),[g,w]=(0,V.useState)(!1),[T,E]=(0,V.useState)(null),D=(0,V.useCallback)(async()=>{let e=s.trim();if(!e){E(`Name is required`);return}w(!0),E(null);try{await i({name:e,persona:l.trim()||null,model:d,role:m?`leader`:`member`}),a()}catch(e){E(e instanceof Error?e.message:`Failed to save member`),w(!1)}},[s,l,d,m,i,a]),O=t?.role===`leader`,k=(0,U.jsxs)(`div`,{className:`flex flex-col gap-3 px-1 py-1`,children:[(0,U.jsx)(`input`,{className:Y,value:s,onChange:e=>c(e.target.value),placeholder:`Member name`,autoFocus:!0}),(0,U.jsx)(`input`,{className:Y,value:l,onChange:e=>u(e.target.value),placeholder:`Persona (optional)`}),(0,U.jsx)(N,{value:d,onChange:p,projectName:n,providerId:r}),(0,U.jsxs)(`label`,{className:X(O),children:[(0,U.jsx)(`input`,{type:`checkbox`,className:`size-4 accent-[var(--color-primary)]`,checked:m,disabled:O,onChange:e=>h(e.target.checked)}),(0,U.jsx)(`span`,{children:O?`Leader (reassign from another member)`:`Set as leader`})]}),T&&(0,U.jsx)(`p`,{className:`text-xs text-destructive`,children:T}),(0,U.jsxs)(`div`,{className:`flex justify-end gap-2 pt-1`,children:[(0,U.jsx)(v,{variant:`outline`,onClick:a,disabled:g,children:`Cancel`}),(0,U.jsxs)(v,{onClick:D,disabled:g,children:[g&&(0,U.jsx)(f,{className:`mr-1.5 size-4 animate-spin`}),t?`Save`:`Add member`]})]})]});if(!e)return null;let A=t?`Edit member`:`Add member`;return o?(0,U.jsx)(C,{open:!0,onClose:a,className:`flex max-h-[90vh] flex-col`,children:(0,U.jsxs)(`div`,{className:`flex min-h-0 flex-col px-4 pb-2`,children:[(0,U.jsx)(`h2`,{className:`mb-2 text-base font-semibold text-foreground`,children:A}),k]})}):(0,U.jsx)(S,{open:!0,onOpenChange:e=>{e||a()},children:(0,U.jsxs)(b,{className:`flex flex-col sm:max-w-md`,children:[(0,U.jsx)(y,{children:(0,U.jsx)(x,{children:A})}),k]})})}function X(e){return`flex items-center gap-2 text-sm text-text-secondary ${e?`opacity-60`:``}`}function Z({messages:e,config:t,projectName:n}){return(0,U.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[t&&(0,U.jsx)(ce,{config:t}),e.map(e=>(0,U.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,U.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide text-text-subtle`,children:e.role===`user`?`User`:e.role===`assistant`?`Assistant`:e.role}),(0,U.jsx)(oe,{message:e,projectName:n})]},e.id)),e.length===0&&(0,U.jsx)(`p`,{className:`py-6 text-center text-sm text-text-subtle`,children:`Transcript is empty.`})]})}function oe({message:e,projectName:t}){let n=e.events??[];if(n.length===0)return e.content.trim()?(0,U.jsx)(B,{content:e.content}):null;let r=new Map;for(let e of n)e.type===`tool_result`&&e.toolUseId&&r.set(e.toolUseId,e);return(0,U.jsx)(`div`,{className:`flex flex-col gap-2`,children:n.map((e,n)=>{if(e.type===`text`)return e.content.trim()?(0,U.jsx)(B,{content:e.content},n):null;if(e.type===`thinking`)return(0,U.jsx)(se,{content:e.content},n);if(e.type===`tool_use`){let i=e.toolUseId?r.get(e.toolUseId):void 0;return(0,U.jsx)(R,{tool:e,result:i,completed:!!i,projectName:t},n)}return null})})}function se({content:e}){let[t,n]=(0,V.useState)(!1);return(0,U.jsxs)(`div`,{className:`rounded-md border border-border bg-surface-elevated/40`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-1.5 px-2.5 py-1.5 text-xs text-text-subtle hover:text-text-secondary`,children:[(0,U.jsx)(l,{className:h(`size-3.5 transition-transform`,t&&`rotate-90`)}),(0,U.jsx)(s,{className:`size-3.5`}),(0,U.jsx)(`span`,{children:`Thinking`})]}),t&&(0,U.jsx)(`div`,{className:`border-t border-border px-3 py-2 text-xs leading-relaxed text-text-secondary`,children:(0,U.jsx)(B,{content:e})})]})}function ce({config:e}){let[t,n]=(0,V.useState)(!1),r=[[`Model`,e.model],[`Permission`,e.permissionMode],[`CWD`,e.cwd],[`Git branch`,e.gitBranch],[`CLI version`,e.version]].filter(([,e])=>e);return r.length===0?null:(0,U.jsxs)(`div`,{className:`rounded-md border border-border bg-surface-elevated/40`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-text-secondary hover:text-foreground`,children:[(0,U.jsx)(l,{className:h(`size-3.5 transition-transform`,t&&`rotate-90`)}),(0,U.jsx)(d,{className:`size-3.5`}),(0,U.jsx)(`span`,{children:`Input config`})]}),t&&(0,U.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 border-t border-border px-3 py-2 text-xs`,children:r.map(([e,t])=>(0,U.jsxs)(`div`,{className:`contents`,children:[(0,U.jsx)(`dt`,{className:`text-text-subtle`,children:e}),(0,U.jsx)(`dd`,{className:`break-all font-mono text-text-secondary`,children:t})]},e))})]})}function le({groupId:e,message:t,onClose:n}){let r=_(),[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(!1),[c,l]=(0,V.useState)(null),u=t?.fullSessionRef??null;if((0,V.useEffect)(()=>{if(!t||!u)return;let n=!1;return a(null),l(null),s(!0),P(e,u).then(e=>{n||a(e)}).catch(e=>{n||l(e instanceof Error?e.message:`Failed to load transcript`)}).finally(()=>{n||s(!1)}),()=>{n=!0}},[e,u,t]),!t)return null;let d=(0,U.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[o&&(0,U.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,U.jsx)(f,{className:`size-5 animate-spin text-primary`})}),c&&(0,U.jsxs)(`div`,{className:`px-1 py-4 text-sm text-text-secondary`,children:[(0,U.jsx)(`p`,{className:`mb-2 font-medium text-foreground`,children:`Full transcript unavailable`}),(0,U.jsx)(`p`,{className:`text-xs text-text-subtle`,children:c}),t.summary&&(0,U.jsx)(`pre`,{className:`mt-4 whitespace-pre-wrap break-words rounded-md bg-surface-elevated p-3 text-xs leading-relaxed text-text-secondary`,children:t.summary})]}),!o&&!c&&i!=null&&(0,U.jsx)(`div`,{className:`px-1 py-1`,children:(0,U.jsx)(Z,{messages:i.messages,config:i.config})})]}),p=`${t.fromMember} — full transcript`;return r?(0,U.jsx)(C,{open:!0,onClose:n,className:`max-h-[85vh] flex flex-col`,children:(0,U.jsxs)(`div`,{className:`flex flex-col min-h-0 px-4 pb-2`,children:[(0,U.jsx)(`h2`,{className:`mb-2 text-sm font-semibold text-foreground`,children:p}),d]})}):(0,U.jsx)(S,{open:!0,onOpenChange:e=>{e||n()},children:(0,U.jsxs)(b,{className:`flex max-h-[80vh] flex-col sm:max-w-2xl`,children:[(0,U.jsx)(y,{children:(0,U.jsx)(x,{className:`text-sm`,children:p})}),d]})})}function Q({metadata:e}){let t=e?.groupId??null,{activeProject:n}=g(T(e=>({activeProject:e.activeProject}))),r=e?.projectName??n?.name??``,a=_(),{messages:s,members:l,status:u,typing:d,loading:m,isRunning:y,error:b,sendMessage:x,stop:S,resume:E}=ne(t,r),[D,A]=(0,V.useState)(``),[j,M]=(0,V.useState)(null),[N,P]=(0,V.useState)(!1),F=(0,V.useRef)(null),[I,L]=(0,V.useState)([]),[R,z]=(0,V.useState)(null),[B,H]=(0,V.useState)(!1),[W,G]=(0,V.useState)(null),[K,q]=(0,V.useState)(null),J=(0,V.useCallback)(async()=>{if(t)try{let e=await w(t);L(e.members),z(e.maxTurns)}catch{}},[t]),Y=(0,V.useCallback)(async e=>{if(!t)return;let n=Math.max(1,Math.min(50,Math.floor(e)||1));z(n);try{await k(t,{maxTurns:n})}catch{J()}},[t,J]);(0,V.useEffect)(()=>{L([]),J()},[t,J]),(0,V.useEffect)(()=>{F.current?.scrollIntoView({block:`end`})},[s.length,d]);let X=(0,V.useMemo)(()=>new Map(l.map(e=>[e.id,e.status])),[l]),Z=I.length?I:l,oe=(0,V.useMemo)(()=>{let e=new Map(Z.map(e=>[e.name,e.color]));return t=>e.get(t)??null},[Z]),se=(0,V.useMemo)(()=>{let e=new Set(Z.filter(e=>e.role===`leader`).map(e=>e.name));return t=>e.has(t)},[Z]),ce=(0,V.useCallback)(async e=>{t&&(K?.member?await O(t,K.member.id,e):await ee(t,e),await J())},[t,K,J]),Q=(0,V.useCallback)(async e=>{if(t){H(!0),G(null);try{await te(t,e.id),await J()}catch(e){G(e instanceof Error?e.message:`Failed to remove member`)}finally{H(!1)}}},[t,J]),ue=(0,V.useCallback)(()=>{let e=D.trim();e&&(x(e),A(``))},[D,x]),$=Object.keys(d).filter(e=>d[e]);return t?(0,U.jsxs)(`div`,{className:`flex h-full min-h-0`,children:[(0,U.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,U.jsxs)(`div`,{className:`flex h-11 shrink-0 items-center justify-between border-b border-border px-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-foreground`,children:[(0,U.jsx)(`span`,{className:h(`size-2 rounded-full`,u===`active`?`bg-primary animate-pulse`:u===`paused`?`bg-amber-500`:`bg-text-subtle`)}),(0,U.jsx)(`span`,{className:`capitalize`,children:u})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[y?(0,U.jsxs)(v,{size:`sm`,variant:`outline`,onClick:S,className:`h-8`,children:[(0,U.jsx)(p,{className:`mr-1 size-3.5`}),` Stop`]}):u===`paused`?(0,U.jsxs)(v,{size:`sm`,variant:`outline`,onClick:E,className:`h-8`,children:[(0,U.jsx)(o,{className:`mr-1 size-3.5`}),` Resume`]}):null,(0,U.jsx)(`button`,{type:`button`,onClick:()=>P(e=>!e),className:`flex size-8 items-center justify-center rounded-md text-text-subtle hover:bg-surface-elevated hover:text-foreground`,"aria-label":`Toggle roster`,children:(0,U.jsx)(i,{className:`size-4`})})]})]}),(0,U.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:m?(0,U.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,U.jsx)(f,{className:`size-5 animate-spin text-primary`})}):s.length===0?(0,U.jsx)(`div`,{className:`flex h-full items-center justify-center p-4 text-center text-sm text-text-subtle`,children:`Send a message to start the group.`}):(0,U.jsxs)(`div`,{className:`flex flex-col py-2`,children:[s.map(e=>(0,U.jsx)(re,{message:e,colorFor:oe,isLeader:se,onViewFull:M},e.id)),$.length>0&&(0,U.jsxs)(`div`,{className:`px-3 py-1.5 text-xs italic text-text-subtle`,children:[$.join(`, `),` `,$.length===1?`is`:`are`,` typing…`]}),(0,U.jsx)(`div`,{ref:F})]})}),b&&(0,U.jsx)(`div`,{className:`shrink-0 border-t border-border bg-destructive/10 px-3 py-2 text-xs text-destructive`,children:b}),(0,U.jsx)(`div`,{className:`shrink-0 border-t border-border p-2`,children:(0,U.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,U.jsx)(`textarea`,{value:D,onChange:e=>A(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!a&&(e.preventDefault(),ue())},rows:1,placeholder:`Message the group…`,className:`max-h-32 min-h-[44px] flex-1 resize-none rounded-md border border-border bg-background px-3 py-2.5 text-sm text-foreground placeholder:text-text-subtle focus:outline-none focus:ring-1 focus:ring-primary`}),(0,U.jsx)(v,{onClick:ue,disabled:!D.trim(),className:`size-11 shrink-0 p-0`,"aria-label":`Send`,children:(0,U.jsx)(c,{className:`size-4`})})]})})]}),a?(0,U.jsxs)(C,{open:N,onClose:()=>P(!1),className:`flex max-h-[72vh] flex-col`,children:[(0,U.jsx)(`div`,{className:`flex h-11 shrink-0 items-center px-4 text-sm font-medium text-foreground`,children:`Members`}),(0,U.jsxs)(`div`,{className:`min-h-0 overflow-y-auto`,children:[R!==null&&(0,U.jsxs)(`label`,{className:`flex items-center gap-2 px-4 py-2 text-xs text-text-secondary`,children:[(0,U.jsx)(`span`,{children:`Reply cap`}),(0,U.jsx)(`input`,{type:`number`,min:1,max:50,value:R,onChange:e=>Y(Number(e.target.value)),className:`w-14 rounded border border-border bg-background px-1.5 py-1 text-xs text-foreground`}),(0,U.jsx)(`span`,{className:`text-text-subtle`,children:`turns/msg`})]}),W&&(0,U.jsx)(`p`,{className:`px-3 py-1 text-xs text-destructive`,children:W}),(0,U.jsx)(ie,{members:I,liveStatus:X,typing:d,busy:B,onAdd:()=>q({member:null}),onEdit:e=>q({member:e}),onRemove:Q})]})]}):N&&(0,U.jsxs)(`div`,{className:`flex w-60 shrink-0 flex-col border-l border-border bg-panel`,children:[(0,U.jsx)(`div`,{className:`flex h-11 shrink-0 items-center border-b border-border px-3 text-sm font-medium text-foreground`,children:`Members`}),(0,U.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[R!==null&&(0,U.jsxs)(`label`,{className:`flex items-center gap-2 px-3 py-2 text-xs text-text-secondary`,children:[(0,U.jsx)(`span`,{children:`Reply cap`}),(0,U.jsx)(`input`,{type:`number`,min:1,max:50,value:R,onChange:e=>Y(Number(e.target.value)),className:`w-14 rounded border border-border bg-background px-1.5 py-1 text-xs text-foreground`}),(0,U.jsx)(`span`,{className:`text-text-subtle`,children:`turns/msg`})]}),W&&(0,U.jsx)(`p`,{className:`px-3 py-1 text-xs text-destructive`,children:W}),(0,U.jsx)(ie,{members:I,liveStatus:X,typing:d,busy:B,onAdd:()=>q({member:null}),onEdit:e=>q({member:e}),onRemove:Q})]})]}),K&&(0,U.jsx)(ae,{open:!0,member:K.member,projectName:r,onSubmit:ce,onClose:()=>q(null)},K.member?.id??`add`),(0,U.jsx)(le,{groupId:t,message:j,onClose:()=>M(null)})]}):(0,U.jsx)(`div`,{className:`flex h-full items-center justify-center p-4 text-sm text-text-subtle`,children:`No group selected.`})}export{Q as GroupChatTab};
@@ -1 +1 @@
1
- import{S as e}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-P9Ym7hCv.js";import{bt as t,un as n}from"./icons-CO_II6D-.js";import"./api-client-F5Zi1sR0.js";import{t as r}from"./use-blob-url-DjuRQWnR.js";var i=e();function a({filePath:e,projectName:a}){let{blobUrl:o,error:s}=r(e,a);return s?(0,i.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,i.jsx)(t,{className:`size-10 text-text-subtle`}),(0,i.jsx)(`p`,{className:`text-sm`,children:`Failed to load image.`})]}):o?(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full p-4 bg-surface overflow-auto`,children:(0,i.jsx)(`img`,{src:o,alt:e,className:`max-w-full max-h-full object-contain`})}):(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,i.jsx)(n,{className:`size-5 animate-spin text-text-subtle`})})}export{a as ImagePreview};
1
+ import{S as e}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-P9Ym7hCv.js";import{bt as t,un as n}from"./icons-CO_II6D-.js";import"./api-client-F5Zi1sR0.js";import{t as r}from"./use-blob-url-BC69n15x.js";var i=e();function a({filePath:e,projectName:a}){let{blobUrl:o,error:s}=r(e,a);return s?(0,i.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,i.jsx)(t,{className:`size-10 text-text-subtle`}),(0,i.jsx)(`p`,{className:`text-sm`,children:`Failed to load image.`})]}):o?(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full p-4 bg-surface overflow-auto`,children:(0,i.jsx)(`img`,{src:o,alt:e,className:`max-w-full max-h-full object-contain`})}):(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,i.jsx)(n,{className:`size-5 animate-spin text-text-subtle`})})}export{a as ImagePreview};