vite-plugin-opencode-assistant 1.0.41 → 1.0.43

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.
@@ -193,14 +193,17 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
193
193
  e.preventDefault();
194
194
  handleToggle(!open.value);
195
195
  });
196
- useHotkey("ctrl+p", (e) => {
197
- e.preventDefault();
196
+ const toggleSelectMode = () => {
198
197
  const win = window;
199
198
  if (win.__VUE_INSPECTOR__) {
200
- selectMode.value = !selectMode.value;
199
+ handleSelectModeChange(!selectMode.value);
201
200
  } else {
202
201
  showNotification("Vue Inspector \u672A\u52A0\u8F7D\uFF0C\u65E0\u6CD5\u4F7F\u7528\u5143\u7D20\u9009\u62E9\u529F\u80FD");
203
202
  }
203
+ };
204
+ useHotkey("ctrl+p", (e) => {
205
+ e.preventDefault();
206
+ toggleSelectMode();
204
207
  });
205
208
  watch(serviceStatus, (status, oldStatus) => {
206
209
  if (status !== "idle" && oldStatus === "idle") {
@@ -224,10 +227,18 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
224
227
  }, 1e3);
225
228
  }
226
229
  const handleIframeMessage = (event) => {
227
- var _a2;
230
+ var _a2, _b;
228
231
  if (((_a2 = event.data) == null ? void 0 : _a2.type) === "OPENCODE_READY") {
229
232
  sendThemeToIframe();
230
233
  }
234
+ if (((_b = event.data) == null ? void 0 : _b.type) === "OPENCODE_KEYDOWN") {
235
+ if (event.data.key === "Escape" && selectMode.value) {
236
+ handleSelectModeChange(false);
237
+ }
238
+ if (event.data.ctrlKey && event.data.key.toLowerCase() === "p") {
239
+ toggleSelectMode();
240
+ }
241
+ }
231
242
  };
232
243
  window.addEventListener("message", handleIframeMessage);
233
244
  });
@@ -264,7 +275,12 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
264
275
  showNotification("\u5DF2\u6E05\u9664\u6240\u6709\u9009\u4E2D\u5143\u7D20");
265
276
  };
266
277
  const handleSelectModeChange = (val) => {
278
+ var _a2;
267
279
  selectMode.value = val;
280
+ const isSplit = (_a2 = widgetRef.value) == null ? void 0 : _a2.isSplitMode;
281
+ if (val && !isSplit && open.value) {
282
+ open.value = false;
283
+ }
268
284
  if (!val && !open.value) {
269
285
  open.value = true;
270
286
  }
@@ -285,7 +301,7 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
285
301
  const handleFrameLoaded = () => {
286
302
  iframeLoading.value = false;
287
303
  };
288
- const __returned__ = { props, open, selectMode, sessionListCollapsed, loading, widgetRef, retryingWarmup, initialTheme, autoOpen, hotkey, proxyPort, proxyHost, displayMode, splitMode, widgetTheme, splitPanelWidth, proxyBaseUrl, showNotification, serviceStatus, chromeMcpFailed, chromeMcpErrorType, chromeMcpErrorMessage, loadingText, updateStatusFromTask, setStarting, selectedElements, removeElement, clearElements, theme, sendThemeToIframe, sessions, loadingSessionList, currentSessionId, iframeSrc, iframeLoading, loadSessions, createSession, deleteSession, selectSession, updateSessionInfo, updateContext, serverSSE, opencodeSSE, thinking, sessionStates, showSessionListSkeleton, computedLoading, displayLoadingText, retryWarmup, ensureServicesStarted, handleToggle, handleSelectNode, handleClearSelected, handleSelectModeChange, handleSessionListCollapsedChange, handleThemeChange, handleSplitPanelWidthChange, handleRemoveSelectedNode, handleFrameLoaded, get OpenCodeWidget() {
304
+ const __returned__ = { props, open, selectMode, sessionListCollapsed, loading, widgetRef, retryingWarmup, initialTheme, autoOpen, hotkey, proxyPort, proxyHost, displayMode, splitMode, widgetTheme, splitPanelWidth, proxyBaseUrl, showNotification, serviceStatus, chromeMcpFailed, chromeMcpErrorType, chromeMcpErrorMessage, loadingText, updateStatusFromTask, setStarting, selectedElements, removeElement, clearElements, theme, sendThemeToIframe, sessions, loadingSessionList, currentSessionId, iframeSrc, iframeLoading, loadSessions, createSession, deleteSession, selectSession, updateSessionInfo, updateContext, serverSSE, opencodeSSE, thinking, sessionStates, showSessionListSkeleton, computedLoading, displayLoadingText, retryWarmup, ensureServicesStarted, toggleSelectMode, handleToggle, handleSelectNode, handleClearSelected, handleSelectModeChange, handleSessionListCollapsedChange, handleThemeChange, handleSplitPanelWidthChange, handleRemoveSelectedNode, handleFrameLoaded, get OpenCodeWidget() {
289
305
  return OpenCodeWidget;
290
306
  }, LoadingContent, ChromeWarmupError };
291
307
  Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
@@ -4,7 +4,7 @@ function parseHotkey(hotkeyStr) {
4
4
  const parts = hotkeyStr.toLowerCase().split("+");
5
5
  const key = parts.pop();
6
6
  return {
7
- ctrl: parts.includes("ctrl") || parts.includes("cmd") || parts.includes("meta"),
7
+ ctrl: parts.includes("ctrl") || parts.includes("meta"),
8
8
  shift: parts.includes("shift"),
9
9
  alt: parts.includes("alt"),
10
10
  key: key || "k"
@@ -116,6 +116,22 @@ function generateBridgeScript(options) {
116
116
  }
117
117
  });
118
118
 
119
+ // === \u952E\u76D8\u4E8B\u4EF6\u8F6C\u53D1\uFF08\u7528\u4E8E\u9000\u51FA\u9009\u62E9\u6A21\u5F0F\uFF09 ===
120
+ window.addEventListener("keydown", function(event) {
121
+ if (event.key === "Escape" || (event.ctrlKey && event.key.toLowerCase() === "p")) {
122
+ if (window.parent !== window) {
123
+ window.parent.postMessage({
124
+ type: "OPENCODE_KEYDOWN",
125
+ key: event.key,
126
+ ctrlKey: event.ctrlKey,
127
+ metaKey: event.metaKey,
128
+ shiftKey: event.shiftKey,
129
+ altKey: event.altKey
130
+ }, "*");
131
+ }
132
+ }
133
+ }, true);
134
+
119
135
  // === \u6700\u5C0F\u5316\u72B6\u6001\u6837\u5F0F ===
120
136
  const minimizeStyles = \`
121
137
  .opencode-minimized [data-dock-surface="tray"]:not([data-slot="permission-footer"]) {
@@ -224,14 +224,17 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
224
224
  e.preventDefault();
225
225
  handleToggle(!open.value);
226
226
  });
227
- (0, import_useHotkey.useHotkey)("ctrl+p", (e) => {
228
- e.preventDefault();
227
+ const toggleSelectMode = () => {
229
228
  const win = window;
230
229
  if (win.__VUE_INSPECTOR__) {
231
- selectMode.value = !selectMode.value;
230
+ handleSelectModeChange(!selectMode.value);
232
231
  } else {
233
232
  showNotification("Vue Inspector \u672A\u52A0\u8F7D\uFF0C\u65E0\u6CD5\u4F7F\u7528\u5143\u7D20\u9009\u62E9\u529F\u80FD");
234
233
  }
234
+ };
235
+ (0, import_useHotkey.useHotkey)("ctrl+p", (e) => {
236
+ e.preventDefault();
237
+ toggleSelectMode();
235
238
  });
236
239
  (0, import_vue2.watch)(serviceStatus, (status, oldStatus) => {
237
240
  if (status !== "idle" && oldStatus === "idle") {
@@ -255,10 +258,18 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
255
258
  }, 1e3);
256
259
  }
257
260
  const handleIframeMessage = (event) => {
258
- var _a2;
261
+ var _a2, _b;
259
262
  if (((_a2 = event.data) == null ? void 0 : _a2.type) === "OPENCODE_READY") {
260
263
  sendThemeToIframe();
261
264
  }
265
+ if (((_b = event.data) == null ? void 0 : _b.type) === "OPENCODE_KEYDOWN") {
266
+ if (event.data.key === "Escape" && selectMode.value) {
267
+ handleSelectModeChange(false);
268
+ }
269
+ if (event.data.ctrlKey && event.data.key.toLowerCase() === "p") {
270
+ toggleSelectMode();
271
+ }
272
+ }
262
273
  };
263
274
  window.addEventListener("message", handleIframeMessage);
264
275
  });
@@ -295,7 +306,12 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
295
306
  showNotification("\u5DF2\u6E05\u9664\u6240\u6709\u9009\u4E2D\u5143\u7D20");
296
307
  };
297
308
  const handleSelectModeChange = (val) => {
309
+ var _a2;
298
310
  selectMode.value = val;
311
+ const isSplit = (_a2 = widgetRef.value) == null ? void 0 : _a2.isSplitMode;
312
+ if (val && !isSplit && open.value) {
313
+ open.value = false;
314
+ }
299
315
  if (!val && !open.value) {
300
316
  open.value = true;
301
317
  }
@@ -316,7 +332,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
316
332
  const handleFrameLoaded = () => {
317
333
  iframeLoading.value = false;
318
334
  };
319
- const __returned__ = { props, open, selectMode, sessionListCollapsed, loading, widgetRef, retryingWarmup, initialTheme, autoOpen, hotkey, proxyPort, proxyHost, displayMode, splitMode, widgetTheme, splitPanelWidth, proxyBaseUrl, showNotification, serviceStatus, chromeMcpFailed, chromeMcpErrorType, chromeMcpErrorMessage, loadingText, updateStatusFromTask, setStarting, selectedElements, removeElement, clearElements, theme, sendThemeToIframe, sessions, loadingSessionList, currentSessionId, iframeSrc, iframeLoading, loadSessions, createSession, deleteSession, selectSession, updateSessionInfo, updateContext, serverSSE, opencodeSSE, thinking, sessionStates, showSessionListSkeleton, computedLoading, displayLoadingText, retryWarmup, ensureServicesStarted, handleToggle, handleSelectNode, handleClearSelected, handleSelectModeChange, handleSessionListCollapsedChange, handleThemeChange, handleSplitPanelWidthChange, handleRemoveSelectedNode, handleFrameLoaded, get OpenCodeWidget() {
335
+ const __returned__ = { props, open, selectMode, sessionListCollapsed, loading, widgetRef, retryingWarmup, initialTheme, autoOpen, hotkey, proxyPort, proxyHost, displayMode, splitMode, widgetTheme, splitPanelWidth, proxyBaseUrl, showNotification, serviceStatus, chromeMcpFailed, chromeMcpErrorType, chromeMcpErrorMessage, loadingText, updateStatusFromTask, setStarting, selectedElements, removeElement, clearElements, theme, sendThemeToIframe, sessions, loadingSessionList, currentSessionId, iframeSrc, iframeLoading, loadSessions, createSession, deleteSession, selectSession, updateSessionInfo, updateContext, serverSSE, opencodeSSE, thinking, sessionStates, showSessionListSkeleton, computedLoading, displayLoadingText, retryWarmup, ensureServicesStarted, toggleSelectMode, handleToggle, handleSelectNode, handleClearSelected, handleSelectModeChange, handleSessionListCollapsedChange, handleThemeChange, handleSplitPanelWidthChange, handleRemoveSelectedNode, handleFrameLoaded, get OpenCodeWidget() {
320
336
  return import_components.OpenCodeWidget;
321
337
  }, LoadingContent: import_LoadingContent_vue.default, ChromeWarmupError: import_ChromeWarmupError_vue.default };
322
338
  Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
@@ -28,7 +28,7 @@ function parseHotkey(hotkeyStr) {
28
28
  const parts = hotkeyStr.toLowerCase().split("+");
29
29
  const key = parts.pop();
30
30
  return {
31
- ctrl: parts.includes("ctrl") || parts.includes("cmd") || parts.includes("meta"),
31
+ ctrl: parts.includes("ctrl") || parts.includes("meta"),
32
32
  shift: parts.includes("shift"),
33
33
  alt: parts.includes("alt"),
34
34
  key: key || "k"