@vite-plugin-opencode-assistant/components 1.0.19 → 1.0.21
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.
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/open-code-widget/composables/use-inspector.js +1 -1
- package/es/open-code-widget/src/components/Header.vue.d.ts +6 -2
- package/es/open-code-widget/src/components/Header.vue.js +91 -9
- package/es/open-code-widget/src/context.d.ts +4 -0
- package/es/open-code-widget/src/index-sfc.css +1 -1
- package/es/open-code-widget/src/index.vue.js +18 -2
- package/lib/@vite-plugin-opencode-assistant/components.cjs.js +104 -22
- package/lib/@vite-plugin-opencode-assistant/components.es.js +104 -22
- package/lib/components.css +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/open-code-widget/composables/use-inspector.js +1 -1
- package/lib/open-code-widget/src/components/Header.vue.d.ts +6 -2
- package/lib/open-code-widget/src/components/Header.vue.js +91 -9
- package/lib/open-code-widget/src/context.d.ts +4 -0
- package/lib/open-code-widget/src/index-sfc.css +1 -1
- package/lib/open-code-widget/src/index.vue.js +18 -2
- package/lib/web-types.json +1 -1
- package/package.json +2 -2
|
@@ -110,7 +110,7 @@ var __vue_sfc__$5 = /* @__PURE__ */ defineComponent({
|
|
|
110
110
|
__name: "Header",
|
|
111
111
|
setup(__props, { expose: __expose }) {
|
|
112
112
|
__expose();
|
|
113
|
-
const { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, theme, resolvedTheme, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleClose } = useOpenCodeWidgetContext();
|
|
113
|
+
const { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, theme, resolvedTheme, minimized, promptDockVisible, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleClose, handleToggleMinimize, handleTogglePromptDock } = useOpenCodeWidgetContext();
|
|
114
114
|
const __returned__ = {
|
|
115
115
|
title,
|
|
116
116
|
sessionListTitle,
|
|
@@ -119,10 +119,14 @@ var __vue_sfc__$5 = /* @__PURE__ */ defineComponent({
|
|
|
119
119
|
selectEnabled,
|
|
120
120
|
theme,
|
|
121
121
|
resolvedTheme,
|
|
122
|
+
minimized,
|
|
123
|
+
promptDockVisible,
|
|
122
124
|
handleToggleSessionList,
|
|
123
125
|
handleToggleSelectMode,
|
|
124
126
|
handleToggleTheme,
|
|
125
127
|
handleClose,
|
|
128
|
+
handleToggleMinimize,
|
|
129
|
+
handleTogglePromptDock,
|
|
126
130
|
themeIconTitle: computed(() => {
|
|
127
131
|
return `\u4E3B\u9898: ${{
|
|
128
132
|
auto: "自动",
|
|
@@ -186,6 +190,36 @@ var _hoisted_8$2 = {
|
|
|
186
190
|
};
|
|
187
191
|
var _hoisted_9$2 = { class: "opencode-chat-header-title" };
|
|
188
192
|
var _hoisted_10 = { class: "opencode-chat-header-actions" };
|
|
193
|
+
var _hoisted_11 = [
|
|
194
|
+
"title",
|
|
195
|
+
"aria-label",
|
|
196
|
+
"aria-pressed"
|
|
197
|
+
];
|
|
198
|
+
var _hoisted_12 = [
|
|
199
|
+
"title",
|
|
200
|
+
"aria-label",
|
|
201
|
+
"aria-pressed"
|
|
202
|
+
];
|
|
203
|
+
var _hoisted_13 = {
|
|
204
|
+
key: 0,
|
|
205
|
+
viewBox: "0 0 24 24",
|
|
206
|
+
width: "14",
|
|
207
|
+
height: "14",
|
|
208
|
+
fill: "none",
|
|
209
|
+
stroke: "currentColor",
|
|
210
|
+
"stroke-width": "2",
|
|
211
|
+
"aria-hidden": "true"
|
|
212
|
+
};
|
|
213
|
+
var _hoisted_14 = {
|
|
214
|
+
key: 1,
|
|
215
|
+
viewBox: "0 0 24 24",
|
|
216
|
+
width: "14",
|
|
217
|
+
height: "14",
|
|
218
|
+
fill: "none",
|
|
219
|
+
stroke: "currentColor",
|
|
220
|
+
"stroke-width": "2",
|
|
221
|
+
"aria-hidden": "true"
|
|
222
|
+
};
|
|
189
223
|
function __vue_render__$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
190
224
|
return openBlock(), createElementBlock("div", _hoisted_1$5, [
|
|
191
225
|
createElementVNode("div", _hoisted_2$3, [
|
|
@@ -196,7 +230,7 @@ function __vue_render__$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
196
230
|
"aria-label": $setup.sessionListTitle,
|
|
197
231
|
"aria-expanded": !$setup.sessionListCollapsed,
|
|
198
232
|
onClick: _cache[0] || (_cache[0] = (...args) => $setup.handleToggleSessionList && $setup.handleToggleSessionList(...args))
|
|
199
|
-
}, [renderSlot(_ctx.$slots, "session-toggle-icon", {}, () => [_cache[
|
|
233
|
+
}, [renderSlot(_ctx.$slots, "session-toggle-icon", {}, () => [_cache[6] || (_cache[6] = createElementVNode("svg", {
|
|
200
234
|
viewBox: "0 0 24 24",
|
|
201
235
|
width: "16",
|
|
202
236
|
height: "16",
|
|
@@ -216,7 +250,7 @@ function __vue_render__$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
216
250
|
"aria-pressed": $setup.selectMode,
|
|
217
251
|
disabled: !$setup.selectEnabled,
|
|
218
252
|
onClick: _cache[1] || (_cache[1] = (...args) => $setup.handleToggleSelectMode && $setup.handleToggleSelectMode(...args))
|
|
219
|
-
}, [renderSlot(_ctx.$slots, "select-icon", {}, () => [_cache[
|
|
253
|
+
}, [renderSlot(_ctx.$slots, "select-icon", {}, () => [_cache[7] || (_cache[7] = createElementVNode("svg", {
|
|
220
254
|
viewBox: "0 0 1024 1024",
|
|
221
255
|
width: "16",
|
|
222
256
|
height: "16",
|
|
@@ -234,24 +268,50 @@ function __vue_render__$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
234
268
|
title: $setup.themeIconTitle,
|
|
235
269
|
"aria-label": $setup.themeIconLabel,
|
|
236
270
|
onClick: _cache[2] || (_cache[2] = (...args) => $setup.handleToggleTheme && $setup.handleToggleTheme(...args))
|
|
237
|
-
}, [renderSlot(_ctx.$slots, "theme-icon", {}, () => [$setup.theme === "light" ? (openBlock(), createElementBlock("svg", _hoisted_6$3, [..._cache[
|
|
271
|
+
}, [renderSlot(_ctx.$slots, "theme-icon", {}, () => [$setup.theme === "light" ? (openBlock(), createElementBlock("svg", _hoisted_6$3, [..._cache[8] || (_cache[8] = [createStaticVNode("<circle cx=\"12\" cy=\"12\" r=\"5\"></circle><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"></line><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"></line><line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"></line><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"></line><line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"></line><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"></line><line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"></line><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"></line>", 9)])])) : $setup.theme === "dark" ? (openBlock(), createElementBlock("svg", _hoisted_7$2, [..._cache[9] || (_cache[9] = [createElementVNode("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" }, null, -1)])])) : (openBlock(), createElementBlock("svg", _hoisted_8$2, [..._cache[10] || (_cache[10] = [createStaticVNode("<rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"></rect><line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\"></line><line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\"></line><circle cx=\"12\" cy=\"10\" r=\"3\"></circle><path d=\"M7 7l2 2M17 7l-2 2M7 13l2-2M17 13l-2-2\"></path>", 5)])]))])], 8, _hoisted_5$3)
|
|
238
272
|
]),
|
|
239
273
|
createElementVNode("span", _hoisted_9$2, toDisplayString($setup.title), 1),
|
|
240
|
-
createElementVNode("div", _hoisted_10, [
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
274
|
+
createElementVNode("div", _hoisted_10, [
|
|
275
|
+
createElementVNode("button", {
|
|
276
|
+
class: "opencode-header-btn prompt-dock",
|
|
277
|
+
type: "button",
|
|
278
|
+
title: $setup.promptDockVisible ? "隐藏对话框" : "显示对话框",
|
|
279
|
+
"aria-label": $setup.promptDockVisible ? "隐藏对话框" : "显示对话框",
|
|
280
|
+
"aria-pressed": $setup.promptDockVisible,
|
|
281
|
+
onClick: _cache[3] || (_cache[3] = (...args) => $setup.handleTogglePromptDock && $setup.handleTogglePromptDock(...args))
|
|
282
|
+
}, [renderSlot(_ctx.$slots, "prompt-dock-icon", {}, () => [_cache[11] || (_cache[11] = createElementVNode("svg", {
|
|
283
|
+
viewBox: "0 0 24 24",
|
|
284
|
+
width: "14",
|
|
285
|
+
height: "14",
|
|
286
|
+
fill: "none",
|
|
287
|
+
stroke: "currentColor",
|
|
288
|
+
"stroke-width": "2",
|
|
289
|
+
"aria-hidden": "true"
|
|
290
|
+
}, [createElementVNode("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" })], -1))])], 8, _hoisted_11),
|
|
291
|
+
createElementVNode("button", {
|
|
292
|
+
class: "opencode-header-btn minimize",
|
|
293
|
+
type: "button",
|
|
294
|
+
title: $setup.minimized ? "展开" : "最小化",
|
|
295
|
+
"aria-label": $setup.minimized ? "展开面板" : "最小化面板",
|
|
296
|
+
"aria-pressed": $setup.minimized,
|
|
297
|
+
onClick: _cache[4] || (_cache[4] = (...args) => $setup.handleToggleMinimize && $setup.handleToggleMinimize(...args))
|
|
298
|
+
}, [renderSlot(_ctx.$slots, "minimize-icon", {}, () => [$setup.minimized ? (openBlock(), createElementBlock("svg", _hoisted_13, [..._cache[12] || (_cache[12] = [createElementVNode("path", { d: "M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3" }, null, -1)])])) : (openBlock(), createElementBlock("svg", _hoisted_14, [..._cache[13] || (_cache[13] = [createElementVNode("path", { d: "M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3" }, null, -1)])]))])], 8, _hoisted_12),
|
|
299
|
+
createElementVNode("button", {
|
|
300
|
+
class: "opencode-header-btn close",
|
|
301
|
+
type: "button",
|
|
302
|
+
title: "关闭",
|
|
303
|
+
"aria-label": "关闭面板",
|
|
304
|
+
onClick: _cache[5] || (_cache[5] = (...args) => $setup.handleClose && $setup.handleClose(...args))
|
|
305
|
+
}, [renderSlot(_ctx.$slots, "close-icon", {}, () => [_cache[14] || (_cache[14] = createElementVNode("svg", {
|
|
306
|
+
viewBox: "0 0 24 24",
|
|
307
|
+
width: "14",
|
|
308
|
+
height: "14",
|
|
309
|
+
fill: "none",
|
|
310
|
+
stroke: "currentColor",
|
|
311
|
+
"stroke-width": "2",
|
|
312
|
+
"aria-hidden": "true"
|
|
313
|
+
}, [createElementVNode("path", { d: "M18 6L6 18M6 6l12 12" })], -1))])])
|
|
314
|
+
])
|
|
255
315
|
]);
|
|
256
316
|
}
|
|
257
317
|
__vue_sfc__$5.render = __vue_render__$5;
|
|
@@ -817,7 +877,6 @@ function getElementDescription(element) {
|
|
|
817
877
|
"id",
|
|
818
878
|
"class",
|
|
819
879
|
"tag",
|
|
820
|
-
"attribute",
|
|
821
880
|
"nthchild"
|
|
822
881
|
],
|
|
823
882
|
combineWithinSelector: true,
|
|
@@ -1357,6 +1416,8 @@ var __vue_sfc__ = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({
|
|
|
1357
1416
|
sendMessageToIframe
|
|
1358
1417
|
});
|
|
1359
1418
|
const localSessionListCollapsed = ref(props.sessionListCollapsed);
|
|
1419
|
+
const minimized = ref(false);
|
|
1420
|
+
const promptDockVisible = ref(true);
|
|
1360
1421
|
watch(() => props.sessionListCollapsed, (val) => {
|
|
1361
1422
|
localSessionListCollapsed.value = val;
|
|
1362
1423
|
});
|
|
@@ -1432,6 +1493,16 @@ var __vue_sfc__ = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({
|
|
|
1432
1493
|
emit("toggle-select-mode", false);
|
|
1433
1494
|
}
|
|
1434
1495
|
});
|
|
1496
|
+
const handleToggleMinimize = () => {
|
|
1497
|
+
minimized.value = !minimized.value;
|
|
1498
|
+
promptDockVisible.value = !minimized.value;
|
|
1499
|
+
sendMessageToIframe("prompt-dock-visibility-change", { visible: promptDockVisible.value });
|
|
1500
|
+
sendMessageToIframe("minimize-state-change", { minimized: minimized.value });
|
|
1501
|
+
};
|
|
1502
|
+
const handleTogglePromptDock = () => {
|
|
1503
|
+
promptDockVisible.value = !promptDockVisible.value;
|
|
1504
|
+
sendMessageToIframe("prompt-dock-visibility-change", { visible: promptDockVisible.value });
|
|
1505
|
+
};
|
|
1435
1506
|
provideOpenCodeWidgetContext({
|
|
1436
1507
|
theme: toRef(props, "theme"),
|
|
1437
1508
|
resolvedTheme,
|
|
@@ -1452,6 +1523,8 @@ var __vue_sfc__ = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({
|
|
|
1452
1523
|
showClearAll: toRef(props, "showClearAll"),
|
|
1453
1524
|
open: toRef(props, "open"),
|
|
1454
1525
|
thinking: toRef(props, "thinking"),
|
|
1526
|
+
minimized,
|
|
1527
|
+
promptDockVisible,
|
|
1455
1528
|
iframeSource,
|
|
1456
1529
|
buttonActive,
|
|
1457
1530
|
sessionListTitle,
|
|
@@ -1461,6 +1534,8 @@ var __vue_sfc__ = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({
|
|
|
1461
1534
|
selectedElementItems,
|
|
1462
1535
|
handleToggle,
|
|
1463
1536
|
handleClose,
|
|
1537
|
+
handleToggleMinimize,
|
|
1538
|
+
handleTogglePromptDock,
|
|
1464
1539
|
handleToggleSessionList,
|
|
1465
1540
|
handleToggleTheme,
|
|
1466
1541
|
handleEmptyAction,
|
|
@@ -1502,6 +1577,8 @@ var __vue_sfc__ = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({
|
|
|
1502
1577
|
sendMessageToIframe,
|
|
1503
1578
|
handleFrameLoaded,
|
|
1504
1579
|
localSessionListCollapsed,
|
|
1580
|
+
minimized,
|
|
1581
|
+
promptDockVisible,
|
|
1505
1582
|
buttonActive,
|
|
1506
1583
|
containerClasses,
|
|
1507
1584
|
iframeSource,
|
|
@@ -1528,6 +1605,8 @@ var __vue_sfc__ = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({
|
|
|
1528
1605
|
tooltipVisible,
|
|
1529
1606
|
tooltipStyle,
|
|
1530
1607
|
tooltipContent,
|
|
1608
|
+
handleToggleMinimize,
|
|
1609
|
+
handleTogglePromptDock,
|
|
1531
1610
|
Frame: Frame_vue_default,
|
|
1532
1611
|
Header: Header_vue_default,
|
|
1533
1612
|
SelectHint: SelectHint_vue_default,
|
|
@@ -1574,7 +1653,10 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1574
1653
|
key: "0"
|
|
1575
1654
|
} : void 0]), 1024),
|
|
1576
1655
|
createCommentVNode(" <SelectedBubbles v-if=\"bubbleVisible\" /> "),
|
|
1577
|
-
withDirectives(createElementVNode("div", { class: normalizeClass(["opencode-chat", {
|
|
1656
|
+
withDirectives(createElementVNode("div", { class: normalizeClass(["opencode-chat", {
|
|
1657
|
+
open: $props.open,
|
|
1658
|
+
minimized: $setup.minimized
|
|
1659
|
+
}]) }, [
|
|
1578
1660
|
createVNode($setup["Header"], null, createSlots({ _: 2 }, [
|
|
1579
1661
|
$setup.slots["session-toggle-icon"] ? {
|
|
1580
1662
|
name: "session-toggle-icon",
|
|
@@ -1653,7 +1735,7 @@ __vue_sfc__.render = __vue_render__;
|
|
|
1653
1735
|
var open_code_widget_default = __vue_sfc__;
|
|
1654
1736
|
//#endregion
|
|
1655
1737
|
//#region es/index.js
|
|
1656
|
-
var version = "1.0.
|
|
1738
|
+
var version = "1.0.21";
|
|
1657
1739
|
function install(app, options) {
|
|
1658
1740
|
[open_code_widget_default].forEach((item) => {
|
|
1659
1741
|
if (item.install) app.use(item, options);
|
package/lib/components.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.opencode-widget{--oc-bg-main: #ffffff;--oc-bg-secondary: #f8f9fa;--oc-bg-tertiary: #f3f4f6;--oc-overlay-bg: rgba(255, 255, 255, .9);--oc-bg-inverse: #1e1e1e;--oc-text-primary: #282828;--oc-text-secondary: #4b5563;--oc-text-tertiary: #6b7280;--oc-text-placeholder: #9ca3af;--oc-text-inverse: #ffffff;--oc-border-primary: #e5e7eb;--oc-border-secondary: #d1d5db;--oc-primary: #3b82f6;--oc-primary-hover: #2563eb;--oc-primary-bg: rgba(59, 130, 246, .1);--oc-danger: #ef4444;--oc-danger-hover: #dc2626;--oc-danger-active: #b91c1c;--oc-success: #10b981;--oc-overlay: rgba(0, 0, 0, .5);--oc-tooltip-bg: #1e1e1e;--oc-dialog-overlay: rgba(0, 0, 0, .5);--oc-thinking-gradient-1: #10b981;--oc-thinking-gradient-2: #059669;--oc-thinking-glow: rgba(16, 185, 129, .3);--oc-thinking-glow-strong: rgba(16, 185, 129, .6);--oc-skeleton-bg: #e5e7eb;--oc-skeleton-gradient: linear-gradient(90deg, #e5e7eb 25%, #f3f4f6 50%, #e5e7eb 75%);--oc-shadow-sm: 0 2px 4px rgba(0, 0, 0, .1);--oc-shadow-md: 0 4px 12px rgba(0, 0, 0, .15);--oc-shadow-lg: 0 8px 32px rgba(0, 0, 0, .12);--oc-shadow-xl: 0 20px 60px rgba(0, 0, 0, .3);--oc-shadow-primary: 0 2px 4px rgba(59, 130, 246, .2);--oc-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .3);--oc-shadow-danger: 0 4px 12px rgba(239, 68, 68, .3);--oc-trigger-bg: #3b82f6;--oc-trigger-bg-hover: #2563eb;--oc-trigger-bg-active: #1d4ed8;--oc-trigger-shadow: 0 2px 8px rgba(59, 130, 246, .3);--oc-trigger-shadow-hover: 0 4px 12px rgba(59, 130, 246, .4);--oc-trigger-shadow-active: 0 4px 12px rgba(59, 130, 246, .5);position:fixed;z-index:999999;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.opencode-widget.opencode-theme-dark{--oc-bg-main: #1a1a1a;--oc-bg-secondary: #1e1e1e;--oc-bg-tertiary: #282828;--oc-overlay-bg: rgba(26, 26, 26, .9);--oc-bg-inverse: #ffffff;--oc-text-primary: #f3f4f6;--oc-text-secondary: #d1d5db;--oc-text-tertiary: #9ca3af;--oc-text-placeholder: #6b7280;--oc-text-inverse: #282828;--oc-border-primary: #282828;--oc-border-secondary: #4b5563;--oc-primary: #3b82f6;--oc-primary-hover: #2563eb;--oc-primary-bg: rgba(59, 130, 246, .15);--oc-danger: #ef4444;--oc-danger-hover: #dc2626;--oc-danger-active: #b91c1c;--oc-success: #10b981;--oc-overlay: rgba(26, 26, 26, .9);--oc-tooltip-bg: #282828;--oc-dialog-overlay: rgba(0, 0, 0, .7);--oc-thinking-gradient-1: #34d399;--oc-thinking-gradient-2: #10b981;--oc-thinking-glow: rgba(52, 211, 153, .3);--oc-thinking-glow-strong: rgba(52, 211, 153, .6);--oc-skeleton-bg: #151515;--oc-skeleton-gradient: linear-gradient(90deg, #282828 25%, #4b5563 50%, #282828 75%);--oc-shadow-sm: 0 2px 4px rgba(0, 0, 0, .3);--oc-shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--oc-shadow-lg: 0 8px 32px rgba(0, 0, 0, .4);--oc-shadow-xl: 0 20px 60px rgba(0, 0, 0, .6);--oc-shadow-primary: 0 2px 4px rgba(59, 130, 246, .3);--oc-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .4);--oc-shadow-danger: 0 4px 12px rgba(239, 68, 68, .4);--oc-trigger-bg: #60a5fa;--oc-trigger-bg-hover: #3b82f6;--oc-trigger-bg-active: #2563eb;--oc-trigger-shadow: 0 2px 8px rgba(96, 165, 250, .4);--oc-trigger-shadow-hover: 0 4px 12px rgba(96, 165, 250, .5);--oc-trigger-shadow-active: 0 4px 12px rgba(96, 165, 250, .6)}.opencode-widget.bottom-right{bottom:20px;right:20px}.opencode-widget.bottom-left{bottom:20px;left:20px}.opencode-widget.top-right{top:20px;right:20px}.opencode-widget.top-left{top:20px;left:20px}.opencode-chat{position:absolute;width:700px;height:86vh;background:var(--oc-bg-main);border-radius:16px;box-shadow:var(--oc-shadow-lg);overflow:hidden;opacity:0;visibility:hidden;transform:translateY(20px) scale(.95);transition:all .3s ease;display:flex;flex-direction:column}.opencode-chat-content{display:flex;flex:1;overflow:hidden}.opencode-widget.bottom-right .opencode-chat{bottom:56px;right:0}.opencode-widget.bottom-left .opencode-chat{bottom:56px;left:0}.opencode-widget.top-right .opencode-chat{top:56px;right:0}.opencode-widget.top-left .opencode-chat{top:56px;left:0}.opencode-widget.bottom-right .opencode-selected-bubbles{bottom:56px;right:0}.opencode-widget.bottom-left .opencode-selected-bubbles{bottom:56px;left:0}.opencode-widget.top-right .opencode-selected-bubbles{top:56px;bottom:auto;right:0}.opencode-widget.top-left .opencode-selected-bubbles{top:56px;bottom:auto;left:0}.opencode-chat.open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}.opencode-notification{position:absolute;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:10px;font-size:14px;font-weight:500;box-shadow:0 4px 16px rgba(59,130,246,.4),0 0 0 2px rgba(59,130,246,.2);animation:slideDown .3s ease;z-index:10000000;display:flex;align-items:center;gap:10px}.opencode-notification:before{content:"\1f4a1";font-size:16px}.opencode-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--oc-dialog-overlay);display:flex;align-items:center;justify-content:center;z-index:9999999;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.opencode-dialog{background:var(--oc-bg-main);border-radius:12px;padding:24px;min-width:320px;max-width:400px;box-shadow:var(--oc-shadow-xl);animation:scaleIn .2s ease}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.opencode-dialog-content{margin-bottom:20px}.opencode-dialog-message{font-size:15px;color:var(--oc-text-primary);line-height:1.5}.opencode-dialog-actions{display:flex;gap:12px;justify-content:flex-end}.opencode-dialog-btn{padding:10px 20px;border-radius:8px;border:none;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.opencode-dialog-btn.cancel{background:var(--oc-bg-tertiary);color:var(--oc-text-primary)}.opencode-dialog-btn.cancel:hover{background:var(--oc-text-primary);color:var(--oc-bg-main)}.opencode-dialog-btn.confirm{background:var(--oc-danger);color:#fff}.opencode-dialog-btn.confirm:hover{background:var(--oc-danger-hover)}@keyframes slideDown{0%{transform:translate(-50%) translateY(-100%);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.opencode-page-notification{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:10px;font-size:14px;font-weight:500;box-shadow:0 4px 16px rgba(59,130,246,.4),0 0 0 2px rgba(59,130,246,.2);animation:slideDown .3s ease;z-index:2147483647;display:flex;align-items:center;gap:10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.opencode-page-notification:before{content:"\1f4a1";font-size:16px}.opencode-element-highlight{position:fixed;pointer-events:none;z-index:999998;display:none;transition:all .1s ease;border-radius:4px}#vue-inspector-container{display:none!important}.opencode-element-tooltip{position:fixed;background:var(--oc-tooltip-bg);color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;z-index:9999998;display:none;box-shadow:var(--oc-shadow-md);max-width:300px;pointer-events:none}.opencode-tooltip-tag{font-weight:500;margin-bottom:4px;word-break:break-all}.opencode-tooltip-file{font-size:11px;color:var(--oc-text-placeholder);word-break:break-all}.opencode-element-highlight-temp{position:absolute;pointer-events:none;z-index:999998;border-radius:4px;animation:highlight-pulse 2s ease-out forwards}@keyframes highlight-pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.02)}to{opacity:0;transform:scale(1)}}@media(max-width:768px){.opencode-chat{width:calc(100vw - 40px);height:calc(100vh - 100px)}}
|
|
1
|
+
.opencode-widget{--oc-bg-main: #ffffff;--oc-bg-secondary: #f8f9fa;--oc-bg-tertiary: #f3f4f6;--oc-overlay-bg: rgba(255, 255, 255, .9);--oc-bg-inverse: #1e1e1e;--oc-text-primary: #282828;--oc-text-secondary: #4b5563;--oc-text-tertiary: #6b7280;--oc-text-placeholder: #9ca3af;--oc-text-inverse: #ffffff;--oc-border-primary: #e5e7eb;--oc-border-secondary: #d1d5db;--oc-primary: #3b82f6;--oc-primary-hover: #2563eb;--oc-primary-bg: rgba(59, 130, 246, .1);--oc-danger: #ef4444;--oc-danger-hover: #dc2626;--oc-danger-active: #b91c1c;--oc-success: #10b981;--oc-overlay: rgba(0, 0, 0, .5);--oc-tooltip-bg: #1e1e1e;--oc-dialog-overlay: rgba(0, 0, 0, .5);--oc-thinking-gradient-1: #10b981;--oc-thinking-gradient-2: #059669;--oc-thinking-glow: rgba(16, 185, 129, .3);--oc-thinking-glow-strong: rgba(16, 185, 129, .6);--oc-skeleton-bg: #e5e7eb;--oc-skeleton-gradient: linear-gradient(90deg, #e5e7eb 25%, #f3f4f6 50%, #e5e7eb 75%);--oc-shadow-sm: 0 2px 4px rgba(0, 0, 0, .1);--oc-shadow-md: 0 4px 12px rgba(0, 0, 0, .15);--oc-shadow-lg: 0 8px 32px rgba(0, 0, 0, .12);--oc-shadow-xl: 0 20px 60px rgba(0, 0, 0, .3);--oc-shadow-primary: 0 2px 4px rgba(59, 130, 246, .2);--oc-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .3);--oc-shadow-danger: 0 4px 12px rgba(239, 68, 68, .3);--oc-trigger-bg: #3b82f6;--oc-trigger-bg-hover: #2563eb;--oc-trigger-bg-active: #1d4ed8;--oc-trigger-shadow: 0 2px 8px rgba(59, 130, 246, .3);--oc-trigger-shadow-hover: 0 4px 12px rgba(59, 130, 246, .4);--oc-trigger-shadow-active: 0 4px 12px rgba(59, 130, 246, .5);position:fixed;z-index:999999;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.opencode-widget.opencode-theme-dark{--oc-bg-main: #1a1a1a;--oc-bg-secondary: #1e1e1e;--oc-bg-tertiary: #282828;--oc-overlay-bg: rgba(26, 26, 26, .9);--oc-bg-inverse: #ffffff;--oc-text-primary: #f3f4f6;--oc-text-secondary: #d1d5db;--oc-text-tertiary: #9ca3af;--oc-text-placeholder: #6b7280;--oc-text-inverse: #282828;--oc-border-primary: #282828;--oc-border-secondary: #4b5563;--oc-primary: #3b82f6;--oc-primary-hover: #2563eb;--oc-primary-bg: rgba(59, 130, 246, .15);--oc-danger: #ef4444;--oc-danger-hover: #dc2626;--oc-danger-active: #b91c1c;--oc-success: #10b981;--oc-overlay: rgba(26, 26, 26, .9);--oc-tooltip-bg: #282828;--oc-dialog-overlay: rgba(0, 0, 0, .7);--oc-thinking-gradient-1: #34d399;--oc-thinking-gradient-2: #10b981;--oc-thinking-glow: rgba(52, 211, 153, .3);--oc-thinking-glow-strong: rgba(52, 211, 153, .6);--oc-skeleton-bg: #151515;--oc-skeleton-gradient: linear-gradient(90deg, #282828 25%, #4b5563 50%, #282828 75%);--oc-shadow-sm: 0 2px 4px rgba(0, 0, 0, .3);--oc-shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--oc-shadow-lg: 0 8px 32px rgba(0, 0, 0, .4);--oc-shadow-xl: 0 20px 60px rgba(0, 0, 0, .6);--oc-shadow-primary: 0 2px 4px rgba(59, 130, 246, .3);--oc-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .4);--oc-shadow-danger: 0 4px 12px rgba(239, 68, 68, .4);--oc-trigger-bg: #60a5fa;--oc-trigger-bg-hover: #3b82f6;--oc-trigger-bg-active: #2563eb;--oc-trigger-shadow: 0 2px 8px rgba(96, 165, 250, .4);--oc-trigger-shadow-hover: 0 4px 12px rgba(96, 165, 250, .5);--oc-trigger-shadow-active: 0 4px 12px rgba(96, 165, 250, .6)}.opencode-widget.bottom-right{bottom:20px;right:20px}.opencode-widget.bottom-left{bottom:20px;left:20px}.opencode-widget.top-right{top:20px;right:20px}.opencode-widget.top-left{top:20px;left:20px}.opencode-chat{position:absolute;width:700px;height:86vh;background:var(--oc-bg-main);border-radius:16px;box-shadow:var(--oc-shadow-lg);overflow:hidden;opacity:0;visibility:hidden;transform:translateY(20px) scale(.95);transition:all .3s ease;display:flex;flex-direction:column}.opencode-chat.minimized{width:300px;height:300px}.opencode-chat.minimized .opencode-iframe-container{margin-top:-146px}.opencode-chat-content{display:flex;flex:1;overflow:hidden}.opencode-widget.bottom-right .opencode-chat{bottom:56px;right:0}.opencode-widget.bottom-left .opencode-chat{bottom:56px;left:0}.opencode-widget.top-right .opencode-chat{top:56px;right:0}.opencode-widget.top-left .opencode-chat{top:56px;left:0}.opencode-widget.bottom-right .opencode-selected-bubbles{bottom:56px;right:0}.opencode-widget.bottom-left .opencode-selected-bubbles{bottom:56px;left:0}.opencode-widget.top-right .opencode-selected-bubbles{top:56px;bottom:auto;right:0}.opencode-widget.top-left .opencode-selected-bubbles{top:56px;bottom:auto;left:0}.opencode-chat.open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}.opencode-notification{position:absolute;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:10px;font-size:14px;font-weight:500;box-shadow:0 4px 16px rgba(59,130,246,.4),0 0 0 2px rgba(59,130,246,.2);animation:slideDown .3s ease;z-index:10000000;display:flex;align-items:center;gap:10px}.opencode-notification:before{content:"\1f4a1";font-size:16px}.opencode-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--oc-dialog-overlay);display:flex;align-items:center;justify-content:center;z-index:9999999;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.opencode-dialog{background:var(--oc-bg-main);border-radius:12px;padding:24px;min-width:320px;max-width:400px;box-shadow:var(--oc-shadow-xl);animation:scaleIn .2s ease}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.opencode-dialog-content{margin-bottom:20px}.opencode-dialog-message{font-size:15px;color:var(--oc-text-primary);line-height:1.5}.opencode-dialog-actions{display:flex;gap:12px;justify-content:flex-end}.opencode-dialog-btn{padding:10px 20px;border-radius:8px;border:none;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.opencode-dialog-btn.cancel{background:var(--oc-bg-tertiary);color:var(--oc-text-primary)}.opencode-dialog-btn.cancel:hover{background:var(--oc-text-primary);color:var(--oc-bg-main)}.opencode-dialog-btn.confirm{background:var(--oc-danger);color:#fff}.opencode-dialog-btn.confirm:hover{background:var(--oc-danger-hover)}@keyframes slideDown{0%{transform:translate(-50%) translateY(-100%);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.opencode-page-notification{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:10px;font-size:14px;font-weight:500;box-shadow:0 4px 16px rgba(59,130,246,.4),0 0 0 2px rgba(59,130,246,.2);animation:slideDown .3s ease;z-index:2147483647;display:flex;align-items:center;gap:10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.opencode-page-notification:before{content:"\1f4a1";font-size:16px}.opencode-element-highlight{position:fixed;pointer-events:none;z-index:999998;display:none;transition:all .1s ease;border-radius:4px}#vue-inspector-container{display:none!important}.opencode-element-tooltip{position:fixed;background:var(--oc-tooltip-bg);color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;z-index:9999998;display:none;box-shadow:var(--oc-shadow-md);max-width:300px;pointer-events:none}.opencode-tooltip-tag{font-weight:500;margin-bottom:4px;word-break:break-all}.opencode-tooltip-file{font-size:11px;color:var(--oc-text-placeholder);word-break:break-all}.opencode-element-highlight-temp{position:absolute;pointer-events:none;z-index:999998;border-radius:4px;animation:highlight-pulse 2s ease-out forwards}@keyframes highlight-pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.02)}to{opacity:0;transform:scale(1)}}@media(max-width:768px){.opencode-chat{width:calc(100vw - 40px);height:calc(100vh - 100px)}}
|
|
2
2
|
.opencode-iframe-container{flex:1;position:relative;overflow:hidden;display:flex;flex-direction:column;margin-top:-42px}.opencode-loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--oc-overlay-bg);display:none;flex-direction:column;align-items:center;justify-content:center;z-index:10;transition:opacity .3s ease}.opencode-loading-overlay.visible{display:flex}.opencode-loading-spinner{width:40px;height:40px;border:3px solid var(--oc-border-primary);border-top-color:var(--oc-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.opencode-loading-text{margin-top:12px;font-size:14px;color:var(--oc-text-placeholder)}.opencode-error-overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:15;margin-top:42px;display:none}.opencode-error-overlay.visible{display:flex}.opencode-empty-state-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--oc-bg-secondary);display:none;flex-direction:column;align-items:center;justify-content:center;z-index:5;transition:opacity .3s ease;margin-top:42px}.opencode-empty-state-overlay.visible{display:flex}.opencode-empty-state-icon{color:var(--oc-text-placeholder);margin-bottom:16px}.opencode-empty-state-text{color:var(--oc-text-primary);font-size:16px;font-weight:500;margin-bottom:24px}.opencode-empty-state-btn{padding:10px 24px;border-radius:8px;border:none;background:var(--oc-primary);color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;box-shadow:var(--oc-shadow-primary)}.opencode-empty-state-btn:hover{background:var(--oc-primary-hover);transform:translateY(-1px);box-shadow:var(--oc-shadow-primary-hover)}.opencode-empty-state-btn:active{transform:translateY(0)}.opencode-iframe{width:100%;height:100%;border:none}
|
|
3
3
|
.opencode-chat-header{position:relative;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 12px;height:40px;background:var(--oc-bg-secondary);border-bottom:1px solid var(--oc-border-primary);z-index:5}.opencode-chat-header-left{display:flex;align-items:center;gap:4px}.opencode-chat-header-title{font-size:14px;font-weight:600;color:var(--oc-text-primary);position:absolute;left:50%;transform:translate(-50%)}.opencode-chat-header-actions{display:flex;gap:4px}.opencode-header-btn{width:28px;height:28px;border-radius:6px;border:none;background:transparent;color:var(--oc-text-placeholder);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.opencode-header-btn:hover{background:var(--oc-bg-tertiary);color:var(--oc-text-primary)}.opencode-header-btn.close:hover{background:var(--oc-danger);color:#fff}.opencode-header-btn.select-btn.active,.opencode-header-btn.session-toggle.active{background:var(--oc-primary);color:#fff}
|
|
4
4
|
.opencode-select-mode-hint{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:10px;background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;border-radius:12px;font-size:14px;font-weight:500;box-shadow:0 6px 20px rgba(239,68,68,.5),0 0 0 3px rgba(239,68,68,.3);z-index:9999999;display:none;align-items:center;gap:12px;border:1px solid rgba(255,255,255,.3)}.opencode-select-mode-hint.visible{display:flex;animation:slideDown .3s ease,pulseHint 2s ease-in-out infinite}.opencode-hint-shortcut{padding:4px 10px;background:rgba(255,255,255,.25);border-radius:6px;font-size:13px;font-weight:600;border:1px solid rgba(255,255,255,.4)}@keyframes pulseHint{0%,to{box-shadow:0 6px 20px rgba(239,68,68,.5),0 0 0 3px rgba(239,68,68,.3)}50%{box-shadow:0 6px 20px rgba(239,68,68,.6),0 0 0 6px rgba(239,68,68,.4)}}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import OpenCodeWidget from './open-code-widget';
|
|
2
2
|
import type { App } from 'vue';
|
|
3
|
-
declare const version = "1.0.
|
|
3
|
+
declare const version = "1.0.21";
|
|
4
4
|
declare function install(app: App<any>, options?: any): void;
|
|
5
5
|
export { install, version, OpenCodeWidget };
|
|
6
6
|
export default install;
|
package/lib/index.js
CHANGED
|
@@ -34,7 +34,7 @@ __export(lib_exports, {
|
|
|
34
34
|
});
|
|
35
35
|
module.exports = __toCommonJS(lib_exports);
|
|
36
36
|
var import_open_code_widget = __toESM(require("./open-code-widget"));
|
|
37
|
-
const version = "1.0.
|
|
37
|
+
const version = "1.0.21";
|
|
38
38
|
function install(app, options) {
|
|
39
39
|
const components = [
|
|
40
40
|
import_open_code_widget.default
|
|
@@ -104,7 +104,7 @@ function filterStateClasses(classes) {
|
|
|
104
104
|
function getElementDescription(element) {
|
|
105
105
|
try {
|
|
106
106
|
const selector = (0, import_css_selector_generator.default)(element, {
|
|
107
|
-
selectors: ["id", "class", "tag", "
|
|
107
|
+
selectors: ["id", "class", "tag", "nthchild"],
|
|
108
108
|
combineWithinSelector: true,
|
|
109
109
|
combineBetweenSelectors: true,
|
|
110
110
|
maxCombinations: 100,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {};
|
|
1
|
+
declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {}, __VLS_9: {}, __VLS_11: {};
|
|
2
2
|
type __VLS_Slots = {} & {
|
|
3
3
|
'session-toggle-icon'?: (props: typeof __VLS_1) => any;
|
|
4
4
|
} & {
|
|
@@ -6,7 +6,11 @@ type __VLS_Slots = {} & {
|
|
|
6
6
|
} & {
|
|
7
7
|
'theme-icon'?: (props: typeof __VLS_5) => any;
|
|
8
8
|
} & {
|
|
9
|
-
'
|
|
9
|
+
'prompt-dock-icon'?: (props: typeof __VLS_7) => any;
|
|
10
|
+
} & {
|
|
11
|
+
'minimize-icon'?: (props: typeof __VLS_9) => any;
|
|
12
|
+
} & {
|
|
13
|
+
'close-icon'?: (props: typeof __VLS_11) => any;
|
|
10
14
|
};
|
|
11
15
|
declare const __VLS_component: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
12
16
|
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
@@ -37,10 +37,14 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
37
37
|
selectEnabled,
|
|
38
38
|
theme,
|
|
39
39
|
resolvedTheme,
|
|
40
|
+
minimized,
|
|
41
|
+
promptDockVisible,
|
|
40
42
|
handleToggleSessionList,
|
|
41
43
|
handleToggleSelectMode,
|
|
42
44
|
handleToggleTheme,
|
|
43
|
-
handleClose
|
|
45
|
+
handleClose,
|
|
46
|
+
handleToggleMinimize,
|
|
47
|
+
handleTogglePromptDock
|
|
44
48
|
} = (0, import_context.useOpenCodeWidgetContext)();
|
|
45
49
|
const themeIconTitle = (0, import_vue2.computed)(() => {
|
|
46
50
|
const themeLabels = {
|
|
@@ -58,7 +62,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
58
62
|
};
|
|
59
63
|
return `\u5207\u6362\u4E3B\u9898 - \u5F53\u524D: ${themeLabels[theme.value]}`;
|
|
60
64
|
});
|
|
61
|
-
const __returned__ = { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, theme, resolvedTheme, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleClose, themeIconTitle, themeIconLabel };
|
|
65
|
+
const __returned__ = { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, theme, resolvedTheme, minimized, promptDockVisible, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleClose, handleToggleMinimize, handleTogglePromptDock, themeIconTitle, themeIconLabel };
|
|
62
66
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
63
67
|
return __returned__;
|
|
64
68
|
}
|
|
@@ -100,6 +104,28 @@ const _hoisted_8 = {
|
|
|
100
104
|
};
|
|
101
105
|
const _hoisted_9 = { class: "opencode-chat-header-title" };
|
|
102
106
|
const _hoisted_10 = { class: "opencode-chat-header-actions" };
|
|
107
|
+
const _hoisted_11 = ["title", "aria-label", "aria-pressed"];
|
|
108
|
+
const _hoisted_12 = ["title", "aria-label", "aria-pressed"];
|
|
109
|
+
const _hoisted_13 = {
|
|
110
|
+
key: 0,
|
|
111
|
+
viewBox: "0 0 24 24",
|
|
112
|
+
width: "14",
|
|
113
|
+
height: "14",
|
|
114
|
+
fill: "none",
|
|
115
|
+
stroke: "currentColor",
|
|
116
|
+
"stroke-width": "2",
|
|
117
|
+
"aria-hidden": "true"
|
|
118
|
+
};
|
|
119
|
+
const _hoisted_14 = {
|
|
120
|
+
key: 1,
|
|
121
|
+
viewBox: "0 0 24 24",
|
|
122
|
+
width: "14",
|
|
123
|
+
height: "14",
|
|
124
|
+
fill: "none",
|
|
125
|
+
stroke: "currentColor",
|
|
126
|
+
"stroke-width": "2",
|
|
127
|
+
"aria-hidden": "true"
|
|
128
|
+
};
|
|
103
129
|
function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
104
130
|
return (0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("div", _hoisted_1, [
|
|
105
131
|
(0, import_vue3.createElementVNode)("div", _hoisted_2, [
|
|
@@ -112,7 +138,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
112
138
|
onClick: _cache[0] || (_cache[0] = (...args) => $setup.handleToggleSessionList && $setup.handleToggleSessionList(...args))
|
|
113
139
|
}, [
|
|
114
140
|
(0, import_vue3.renderSlot)(_ctx.$slots, "session-toggle-icon", {}, () => [
|
|
115
|
-
_cache[
|
|
141
|
+
_cache[6] || (_cache[6] = (0, import_vue3.createElementVNode)(
|
|
116
142
|
"svg",
|
|
117
143
|
{
|
|
118
144
|
viewBox: "0 0 24 24",
|
|
@@ -144,7 +170,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
144
170
|
onClick: _cache[1] || (_cache[1] = (...args) => $setup.handleToggleSelectMode && $setup.handleToggleSelectMode(...args))
|
|
145
171
|
}, [
|
|
146
172
|
(0, import_vue3.renderSlot)(_ctx.$slots, "select-icon", {}, () => [
|
|
147
|
-
_cache[
|
|
173
|
+
_cache[7] || (_cache[7] = (0, import_vue3.createElementVNode)(
|
|
148
174
|
"svg",
|
|
149
175
|
{
|
|
150
176
|
viewBox: "0 0 1024 1024",
|
|
@@ -175,9 +201,9 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
175
201
|
onClick: _cache[2] || (_cache[2] = (...args) => $setup.handleToggleTheme && $setup.handleToggleTheme(...args))
|
|
176
202
|
}, [
|
|
177
203
|
(0, import_vue3.renderSlot)(_ctx.$slots, "theme-icon", {}, () => [
|
|
178
|
-
$setup.theme === "light" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_6, [..._cache[
|
|
204
|
+
$setup.theme === "light" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_6, [..._cache[8] || (_cache[8] = [
|
|
179
205
|
(0, import_vue3.createStaticVNode)('<circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>', 9)
|
|
180
|
-
])])) : $setup.theme === "dark" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_7, [..._cache[
|
|
206
|
+
])])) : $setup.theme === "dark" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_7, [..._cache[9] || (_cache[9] = [
|
|
181
207
|
(0, import_vue3.createElementVNode)(
|
|
182
208
|
"path",
|
|
183
209
|
{ d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" },
|
|
@@ -185,7 +211,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
185
211
|
-1
|
|
186
212
|
/* CACHED */
|
|
187
213
|
)
|
|
188
|
-
])])) : ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_8, [..._cache[
|
|
214
|
+
])])) : ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_8, [..._cache[10] || (_cache[10] = [
|
|
189
215
|
(0, import_vue3.createStaticVNode)('<rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line><circle cx="12" cy="10" r="3"></circle><path d="M7 7l2 2M17 7l-2 2M7 13l2-2M17 13l-2-2"></path>', 5)
|
|
190
216
|
])]))
|
|
191
217
|
])
|
|
@@ -199,15 +225,71 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
199
225
|
/* TEXT */
|
|
200
226
|
),
|
|
201
227
|
(0, import_vue3.createElementVNode)("div", _hoisted_10, [
|
|
228
|
+
(0, import_vue3.createElementVNode)("button", {
|
|
229
|
+
class: "opencode-header-btn prompt-dock",
|
|
230
|
+
type: "button",
|
|
231
|
+
title: $setup.promptDockVisible ? "\u9690\u85CF\u5BF9\u8BDD\u6846" : "\u663E\u793A\u5BF9\u8BDD\u6846",
|
|
232
|
+
"aria-label": $setup.promptDockVisible ? "\u9690\u85CF\u5BF9\u8BDD\u6846" : "\u663E\u793A\u5BF9\u8BDD\u6846",
|
|
233
|
+
"aria-pressed": $setup.promptDockVisible,
|
|
234
|
+
onClick: _cache[3] || (_cache[3] = (...args) => $setup.handleTogglePromptDock && $setup.handleTogglePromptDock(...args))
|
|
235
|
+
}, [
|
|
236
|
+
(0, import_vue3.renderSlot)(_ctx.$slots, "prompt-dock-icon", {}, () => [
|
|
237
|
+
_cache[11] || (_cache[11] = (0, import_vue3.createElementVNode)(
|
|
238
|
+
"svg",
|
|
239
|
+
{
|
|
240
|
+
viewBox: "0 0 24 24",
|
|
241
|
+
width: "14",
|
|
242
|
+
height: "14",
|
|
243
|
+
fill: "none",
|
|
244
|
+
stroke: "currentColor",
|
|
245
|
+
"stroke-width": "2",
|
|
246
|
+
"aria-hidden": "true"
|
|
247
|
+
},
|
|
248
|
+
[
|
|
249
|
+
(0, import_vue3.createElementVNode)("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" })
|
|
250
|
+
],
|
|
251
|
+
-1
|
|
252
|
+
/* CACHED */
|
|
253
|
+
))
|
|
254
|
+
])
|
|
255
|
+
], 8, _hoisted_11),
|
|
256
|
+
(0, import_vue3.createElementVNode)("button", {
|
|
257
|
+
class: "opencode-header-btn minimize",
|
|
258
|
+
type: "button",
|
|
259
|
+
title: $setup.minimized ? "\u5C55\u5F00" : "\u6700\u5C0F\u5316",
|
|
260
|
+
"aria-label": $setup.minimized ? "\u5C55\u5F00\u9762\u677F" : "\u6700\u5C0F\u5316\u9762\u677F",
|
|
261
|
+
"aria-pressed": $setup.minimized,
|
|
262
|
+
onClick: _cache[4] || (_cache[4] = (...args) => $setup.handleToggleMinimize && $setup.handleToggleMinimize(...args))
|
|
263
|
+
}, [
|
|
264
|
+
(0, import_vue3.renderSlot)(_ctx.$slots, "minimize-icon", {}, () => [
|
|
265
|
+
$setup.minimized ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_13, [..._cache[12] || (_cache[12] = [
|
|
266
|
+
(0, import_vue3.createElementVNode)(
|
|
267
|
+
"path",
|
|
268
|
+
{ d: "M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3" },
|
|
269
|
+
null,
|
|
270
|
+
-1
|
|
271
|
+
/* CACHED */
|
|
272
|
+
)
|
|
273
|
+
])])) : ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_14, [..._cache[13] || (_cache[13] = [
|
|
274
|
+
(0, import_vue3.createElementVNode)(
|
|
275
|
+
"path",
|
|
276
|
+
{ d: "M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3" },
|
|
277
|
+
null,
|
|
278
|
+
-1
|
|
279
|
+
/* CACHED */
|
|
280
|
+
)
|
|
281
|
+
])]))
|
|
282
|
+
])
|
|
283
|
+
], 8, _hoisted_12),
|
|
202
284
|
(0, import_vue3.createElementVNode)("button", {
|
|
203
285
|
class: "opencode-header-btn close",
|
|
204
286
|
type: "button",
|
|
205
287
|
title: "\u5173\u95ED",
|
|
206
288
|
"aria-label": "\u5173\u95ED\u9762\u677F",
|
|
207
|
-
onClick: _cache[
|
|
289
|
+
onClick: _cache[5] || (_cache[5] = (...args) => $setup.handleClose && $setup.handleClose(...args))
|
|
208
290
|
}, [
|
|
209
291
|
(0, import_vue3.renderSlot)(_ctx.$slots, "close-icon", {}, () => [
|
|
210
|
-
_cache[
|
|
292
|
+
_cache[14] || (_cache[14] = (0, import_vue3.createElementVNode)(
|
|
211
293
|
"svg",
|
|
212
294
|
{
|
|
213
295
|
viewBox: "0 0 24 24",
|
|
@@ -20,6 +20,8 @@ export interface OpenCodeWidgetContext {
|
|
|
20
20
|
showClearAll: Ref<boolean>;
|
|
21
21
|
open: Ref<boolean>;
|
|
22
22
|
thinking: Ref<boolean>;
|
|
23
|
+
minimized: Ref<boolean>;
|
|
24
|
+
promptDockVisible: Ref<boolean>;
|
|
23
25
|
iframeSource: Ref<string>;
|
|
24
26
|
buttonActive: Ref<boolean>;
|
|
25
27
|
sessionListTitle: Ref<string>;
|
|
@@ -29,6 +31,8 @@ export interface OpenCodeWidgetContext {
|
|
|
29
31
|
selectedElementItems: Ref<OpenCodeSelectedElementItem[]>;
|
|
30
32
|
handleToggle: () => void;
|
|
31
33
|
handleClose: () => void;
|
|
34
|
+
handleToggleMinimize: () => void;
|
|
35
|
+
handleTogglePromptDock: () => void;
|
|
32
36
|
handleToggleSessionList: () => void;
|
|
33
37
|
handleToggleTheme: () => void;
|
|
34
38
|
handleEmptyAction: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.opencode-widget{--oc-bg-main: #ffffff;--oc-bg-secondary: #f8f9fa;--oc-bg-tertiary: #f3f4f6;--oc-overlay-bg: rgba(255, 255, 255, .9);--oc-bg-inverse: #1e1e1e;--oc-text-primary: #282828;--oc-text-secondary: #4b5563;--oc-text-tertiary: #6b7280;--oc-text-placeholder: #9ca3af;--oc-text-inverse: #ffffff;--oc-border-primary: #e5e7eb;--oc-border-secondary: #d1d5db;--oc-primary: #3b82f6;--oc-primary-hover: #2563eb;--oc-primary-bg: rgba(59, 130, 246, .1);--oc-danger: #ef4444;--oc-danger-hover: #dc2626;--oc-danger-active: #b91c1c;--oc-success: #10b981;--oc-overlay: rgba(0, 0, 0, .5);--oc-tooltip-bg: #1e1e1e;--oc-dialog-overlay: rgba(0, 0, 0, .5);--oc-thinking-gradient-1: #10b981;--oc-thinking-gradient-2: #059669;--oc-thinking-glow: rgba(16, 185, 129, .3);--oc-thinking-glow-strong: rgba(16, 185, 129, .6);--oc-skeleton-bg: #e5e7eb;--oc-skeleton-gradient: linear-gradient(90deg, #e5e7eb 25%, #f3f4f6 50%, #e5e7eb 75%);--oc-shadow-sm: 0 2px 4px rgba(0, 0, 0, .1);--oc-shadow-md: 0 4px 12px rgba(0, 0, 0, .15);--oc-shadow-lg: 0 8px 32px rgba(0, 0, 0, .12);--oc-shadow-xl: 0 20px 60px rgba(0, 0, 0, .3);--oc-shadow-primary: 0 2px 4px rgba(59, 130, 246, .2);--oc-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .3);--oc-shadow-danger: 0 4px 12px rgba(239, 68, 68, .3);--oc-trigger-bg: #3b82f6;--oc-trigger-bg-hover: #2563eb;--oc-trigger-bg-active: #1d4ed8;--oc-trigger-shadow: 0 2px 8px rgba(59, 130, 246, .3);--oc-trigger-shadow-hover: 0 4px 12px rgba(59, 130, 246, .4);--oc-trigger-shadow-active: 0 4px 12px rgba(59, 130, 246, .5);position:fixed;z-index:999999;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.opencode-widget.opencode-theme-dark{--oc-bg-main: #1a1a1a;--oc-bg-secondary: #1e1e1e;--oc-bg-tertiary: #282828;--oc-overlay-bg: rgba(26, 26, 26, .9);--oc-bg-inverse: #ffffff;--oc-text-primary: #f3f4f6;--oc-text-secondary: #d1d5db;--oc-text-tertiary: #9ca3af;--oc-text-placeholder: #6b7280;--oc-text-inverse: #282828;--oc-border-primary: #282828;--oc-border-secondary: #4b5563;--oc-primary: #3b82f6;--oc-primary-hover: #2563eb;--oc-primary-bg: rgba(59, 130, 246, .15);--oc-danger: #ef4444;--oc-danger-hover: #dc2626;--oc-danger-active: #b91c1c;--oc-success: #10b981;--oc-overlay: rgba(26, 26, 26, .9);--oc-tooltip-bg: #282828;--oc-dialog-overlay: rgba(0, 0, 0, .7);--oc-thinking-gradient-1: #34d399;--oc-thinking-gradient-2: #10b981;--oc-thinking-glow: rgba(52, 211, 153, .3);--oc-thinking-glow-strong: rgba(52, 211, 153, .6);--oc-skeleton-bg: #151515;--oc-skeleton-gradient: linear-gradient(90deg, #282828 25%, #4b5563 50%, #282828 75%);--oc-shadow-sm: 0 2px 4px rgba(0, 0, 0, .3);--oc-shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--oc-shadow-lg: 0 8px 32px rgba(0, 0, 0, .4);--oc-shadow-xl: 0 20px 60px rgba(0, 0, 0, .6);--oc-shadow-primary: 0 2px 4px rgba(59, 130, 246, .3);--oc-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .4);--oc-shadow-danger: 0 4px 12px rgba(239, 68, 68, .4);--oc-trigger-bg: #60a5fa;--oc-trigger-bg-hover: #3b82f6;--oc-trigger-bg-active: #2563eb;--oc-trigger-shadow: 0 2px 8px rgba(96, 165, 250, .4);--oc-trigger-shadow-hover: 0 4px 12px rgba(96, 165, 250, .5);--oc-trigger-shadow-active: 0 4px 12px rgba(96, 165, 250, .6)}.opencode-widget.bottom-right{bottom:20px;right:20px}.opencode-widget.bottom-left{bottom:20px;left:20px}.opencode-widget.top-right{top:20px;right:20px}.opencode-widget.top-left{top:20px;left:20px}.opencode-chat{position:absolute;width:700px;height:86vh;background:var(--oc-bg-main);border-radius:16px;box-shadow:var(--oc-shadow-lg);overflow:hidden;opacity:0;visibility:hidden;transform:translateY(20px) scale(.95);transition:all .3s ease;display:flex;flex-direction:column}.opencode-chat-content{display:flex;flex:1;overflow:hidden}.opencode-widget.bottom-right .opencode-chat{bottom:56px;right:0}.opencode-widget.bottom-left .opencode-chat{bottom:56px;left:0}.opencode-widget.top-right .opencode-chat{top:56px;right:0}.opencode-widget.top-left .opencode-chat{top:56px;left:0}.opencode-widget.bottom-right .opencode-selected-bubbles{bottom:56px;right:0}.opencode-widget.bottom-left .opencode-selected-bubbles{bottom:56px;left:0}.opencode-widget.top-right .opencode-selected-bubbles{top:56px;bottom:auto;right:0}.opencode-widget.top-left .opencode-selected-bubbles{top:56px;bottom:auto;left:0}.opencode-chat.open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}.opencode-notification{position:absolute;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:10px;font-size:14px;font-weight:500;box-shadow:0 4px 16px rgba(59,130,246,.4),0 0 0 2px rgba(59,130,246,.2);animation:slideDown .3s ease;z-index:10000000;display:flex;align-items:center;gap:10px}.opencode-notification:before{content:"\1f4a1";font-size:16px}.opencode-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--oc-dialog-overlay);display:flex;align-items:center;justify-content:center;z-index:9999999;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.opencode-dialog{background:var(--oc-bg-main);border-radius:12px;padding:24px;min-width:320px;max-width:400px;box-shadow:var(--oc-shadow-xl);animation:scaleIn .2s ease}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.opencode-dialog-content{margin-bottom:20px}.opencode-dialog-message{font-size:15px;color:var(--oc-text-primary);line-height:1.5}.opencode-dialog-actions{display:flex;gap:12px;justify-content:flex-end}.opencode-dialog-btn{padding:10px 20px;border-radius:8px;border:none;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.opencode-dialog-btn.cancel{background:var(--oc-bg-tertiary);color:var(--oc-text-primary)}.opencode-dialog-btn.cancel:hover{background:var(--oc-text-primary);color:var(--oc-bg-main)}.opencode-dialog-btn.confirm{background:var(--oc-danger);color:#fff}.opencode-dialog-btn.confirm:hover{background:var(--oc-danger-hover)}@keyframes slideDown{0%{transform:translate(-50%) translateY(-100%);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.opencode-page-notification{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:10px;font-size:14px;font-weight:500;box-shadow:0 4px 16px rgba(59,130,246,.4),0 0 0 2px rgba(59,130,246,.2);animation:slideDown .3s ease;z-index:2147483647;display:flex;align-items:center;gap:10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.opencode-page-notification:before{content:"\1f4a1";font-size:16px}.opencode-element-highlight{position:fixed;pointer-events:none;z-index:999998;display:none;transition:all .1s ease;border-radius:4px}#vue-inspector-container{display:none!important}.opencode-element-tooltip{position:fixed;background:var(--oc-tooltip-bg);color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;z-index:9999998;display:none;box-shadow:var(--oc-shadow-md);max-width:300px;pointer-events:none}.opencode-tooltip-tag{font-weight:500;margin-bottom:4px;word-break:break-all}.opencode-tooltip-file{font-size:11px;color:var(--oc-text-placeholder);word-break:break-all}.opencode-element-highlight-temp{position:absolute;pointer-events:none;z-index:999998;border-radius:4px;animation:highlight-pulse 2s ease-out forwards}@keyframes highlight-pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.02)}to{opacity:0;transform:scale(1)}}@media(max-width:768px){.opencode-chat{width:calc(100vw - 40px);height:calc(100vh - 100px)}}
|
|
1
|
+
.opencode-widget{--oc-bg-main: #ffffff;--oc-bg-secondary: #f8f9fa;--oc-bg-tertiary: #f3f4f6;--oc-overlay-bg: rgba(255, 255, 255, .9);--oc-bg-inverse: #1e1e1e;--oc-text-primary: #282828;--oc-text-secondary: #4b5563;--oc-text-tertiary: #6b7280;--oc-text-placeholder: #9ca3af;--oc-text-inverse: #ffffff;--oc-border-primary: #e5e7eb;--oc-border-secondary: #d1d5db;--oc-primary: #3b82f6;--oc-primary-hover: #2563eb;--oc-primary-bg: rgba(59, 130, 246, .1);--oc-danger: #ef4444;--oc-danger-hover: #dc2626;--oc-danger-active: #b91c1c;--oc-success: #10b981;--oc-overlay: rgba(0, 0, 0, .5);--oc-tooltip-bg: #1e1e1e;--oc-dialog-overlay: rgba(0, 0, 0, .5);--oc-thinking-gradient-1: #10b981;--oc-thinking-gradient-2: #059669;--oc-thinking-glow: rgba(16, 185, 129, .3);--oc-thinking-glow-strong: rgba(16, 185, 129, .6);--oc-skeleton-bg: #e5e7eb;--oc-skeleton-gradient: linear-gradient(90deg, #e5e7eb 25%, #f3f4f6 50%, #e5e7eb 75%);--oc-shadow-sm: 0 2px 4px rgba(0, 0, 0, .1);--oc-shadow-md: 0 4px 12px rgba(0, 0, 0, .15);--oc-shadow-lg: 0 8px 32px rgba(0, 0, 0, .12);--oc-shadow-xl: 0 20px 60px rgba(0, 0, 0, .3);--oc-shadow-primary: 0 2px 4px rgba(59, 130, 246, .2);--oc-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .3);--oc-shadow-danger: 0 4px 12px rgba(239, 68, 68, .3);--oc-trigger-bg: #3b82f6;--oc-trigger-bg-hover: #2563eb;--oc-trigger-bg-active: #1d4ed8;--oc-trigger-shadow: 0 2px 8px rgba(59, 130, 246, .3);--oc-trigger-shadow-hover: 0 4px 12px rgba(59, 130, 246, .4);--oc-trigger-shadow-active: 0 4px 12px rgba(59, 130, 246, .5);position:fixed;z-index:999999;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.opencode-widget.opencode-theme-dark{--oc-bg-main: #1a1a1a;--oc-bg-secondary: #1e1e1e;--oc-bg-tertiary: #282828;--oc-overlay-bg: rgba(26, 26, 26, .9);--oc-bg-inverse: #ffffff;--oc-text-primary: #f3f4f6;--oc-text-secondary: #d1d5db;--oc-text-tertiary: #9ca3af;--oc-text-placeholder: #6b7280;--oc-text-inverse: #282828;--oc-border-primary: #282828;--oc-border-secondary: #4b5563;--oc-primary: #3b82f6;--oc-primary-hover: #2563eb;--oc-primary-bg: rgba(59, 130, 246, .15);--oc-danger: #ef4444;--oc-danger-hover: #dc2626;--oc-danger-active: #b91c1c;--oc-success: #10b981;--oc-overlay: rgba(26, 26, 26, .9);--oc-tooltip-bg: #282828;--oc-dialog-overlay: rgba(0, 0, 0, .7);--oc-thinking-gradient-1: #34d399;--oc-thinking-gradient-2: #10b981;--oc-thinking-glow: rgba(52, 211, 153, .3);--oc-thinking-glow-strong: rgba(52, 211, 153, .6);--oc-skeleton-bg: #151515;--oc-skeleton-gradient: linear-gradient(90deg, #282828 25%, #4b5563 50%, #282828 75%);--oc-shadow-sm: 0 2px 4px rgba(0, 0, 0, .3);--oc-shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--oc-shadow-lg: 0 8px 32px rgba(0, 0, 0, .4);--oc-shadow-xl: 0 20px 60px rgba(0, 0, 0, .6);--oc-shadow-primary: 0 2px 4px rgba(59, 130, 246, .3);--oc-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .4);--oc-shadow-danger: 0 4px 12px rgba(239, 68, 68, .4);--oc-trigger-bg: #60a5fa;--oc-trigger-bg-hover: #3b82f6;--oc-trigger-bg-active: #2563eb;--oc-trigger-shadow: 0 2px 8px rgba(96, 165, 250, .4);--oc-trigger-shadow-hover: 0 4px 12px rgba(96, 165, 250, .5);--oc-trigger-shadow-active: 0 4px 12px rgba(96, 165, 250, .6)}.opencode-widget.bottom-right{bottom:20px;right:20px}.opencode-widget.bottom-left{bottom:20px;left:20px}.opencode-widget.top-right{top:20px;right:20px}.opencode-widget.top-left{top:20px;left:20px}.opencode-chat{position:absolute;width:700px;height:86vh;background:var(--oc-bg-main);border-radius:16px;box-shadow:var(--oc-shadow-lg);overflow:hidden;opacity:0;visibility:hidden;transform:translateY(20px) scale(.95);transition:all .3s ease;display:flex;flex-direction:column}.opencode-chat.minimized{width:300px;height:300px}.opencode-chat.minimized .opencode-iframe-container{margin-top:-146px}.opencode-chat-content{display:flex;flex:1;overflow:hidden}.opencode-widget.bottom-right .opencode-chat{bottom:56px;right:0}.opencode-widget.bottom-left .opencode-chat{bottom:56px;left:0}.opencode-widget.top-right .opencode-chat{top:56px;right:0}.opencode-widget.top-left .opencode-chat{top:56px;left:0}.opencode-widget.bottom-right .opencode-selected-bubbles{bottom:56px;right:0}.opencode-widget.bottom-left .opencode-selected-bubbles{bottom:56px;left:0}.opencode-widget.top-right .opencode-selected-bubbles{top:56px;bottom:auto;right:0}.opencode-widget.top-left .opencode-selected-bubbles{top:56px;bottom:auto;left:0}.opencode-chat.open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}.opencode-notification{position:absolute;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:10px;font-size:14px;font-weight:500;box-shadow:0 4px 16px rgba(59,130,246,.4),0 0 0 2px rgba(59,130,246,.2);animation:slideDown .3s ease;z-index:10000000;display:flex;align-items:center;gap:10px}.opencode-notification:before{content:"\1f4a1";font-size:16px}.opencode-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--oc-dialog-overlay);display:flex;align-items:center;justify-content:center;z-index:9999999;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.opencode-dialog{background:var(--oc-bg-main);border-radius:12px;padding:24px;min-width:320px;max-width:400px;box-shadow:var(--oc-shadow-xl);animation:scaleIn .2s ease}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.opencode-dialog-content{margin-bottom:20px}.opencode-dialog-message{font-size:15px;color:var(--oc-text-primary);line-height:1.5}.opencode-dialog-actions{display:flex;gap:12px;justify-content:flex-end}.opencode-dialog-btn{padding:10px 20px;border-radius:8px;border:none;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.opencode-dialog-btn.cancel{background:var(--oc-bg-tertiary);color:var(--oc-text-primary)}.opencode-dialog-btn.cancel:hover{background:var(--oc-text-primary);color:var(--oc-bg-main)}.opencode-dialog-btn.confirm{background:var(--oc-danger);color:#fff}.opencode-dialog-btn.confirm:hover{background:var(--oc-danger-hover)}@keyframes slideDown{0%{transform:translate(-50%) translateY(-100%);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.opencode-page-notification{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:10px;font-size:14px;font-weight:500;box-shadow:0 4px 16px rgba(59,130,246,.4),0 0 0 2px rgba(59,130,246,.2);animation:slideDown .3s ease;z-index:2147483647;display:flex;align-items:center;gap:10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.opencode-page-notification:before{content:"\1f4a1";font-size:16px}.opencode-element-highlight{position:fixed;pointer-events:none;z-index:999998;display:none;transition:all .1s ease;border-radius:4px}#vue-inspector-container{display:none!important}.opencode-element-tooltip{position:fixed;background:var(--oc-tooltip-bg);color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;z-index:9999998;display:none;box-shadow:var(--oc-shadow-md);max-width:300px;pointer-events:none}.opencode-tooltip-tag{font-weight:500;margin-bottom:4px;word-break:break-all}.opencode-tooltip-file{font-size:11px;color:var(--oc-text-placeholder);word-break:break-all}.opencode-element-highlight-temp{position:absolute;pointer-events:none;z-index:999998;border-radius:4px;animation:highlight-pulse 2s ease-out forwards}@keyframes highlight-pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.02)}to{opacity:0;transform:scale(1)}}@media(max-width:768px){.opencode-chat{width:calc(100vw - 40px);height:calc(100vh - 100px)}}
|
|
@@ -142,6 +142,8 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
142
142
|
sendMessageToIframe
|
|
143
143
|
});
|
|
144
144
|
const localSessionListCollapsed = (0, import_vue2.ref)(props.sessionListCollapsed);
|
|
145
|
+
const minimized = (0, import_vue2.ref)(false);
|
|
146
|
+
const promptDockVisible = (0, import_vue2.ref)(true);
|
|
145
147
|
(0, import_vue2.watch)(
|
|
146
148
|
() => props.sessionListCollapsed,
|
|
147
149
|
(val) => {
|
|
@@ -239,6 +241,16 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
239
241
|
emit("toggle-select-mode", false);
|
|
240
242
|
}
|
|
241
243
|
});
|
|
244
|
+
const handleToggleMinimize = () => {
|
|
245
|
+
minimized.value = !minimized.value;
|
|
246
|
+
promptDockVisible.value = !minimized.value;
|
|
247
|
+
sendMessageToIframe("prompt-dock-visibility-change", { visible: promptDockVisible.value });
|
|
248
|
+
sendMessageToIframe("minimize-state-change", { minimized: minimized.value });
|
|
249
|
+
};
|
|
250
|
+
const handleTogglePromptDock = () => {
|
|
251
|
+
promptDockVisible.value = !promptDockVisible.value;
|
|
252
|
+
sendMessageToIframe("prompt-dock-visibility-change", { visible: promptDockVisible.value });
|
|
253
|
+
};
|
|
242
254
|
(0, import_context.provideOpenCodeWidgetContext)({
|
|
243
255
|
theme: (0, import_vue2.toRef)(props, "theme"),
|
|
244
256
|
resolvedTheme,
|
|
@@ -259,6 +271,8 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
259
271
|
showClearAll: (0, import_vue2.toRef)(props, "showClearAll"),
|
|
260
272
|
open: (0, import_vue2.toRef)(props, "open"),
|
|
261
273
|
thinking: (0, import_vue2.toRef)(props, "thinking"),
|
|
274
|
+
minimized,
|
|
275
|
+
promptDockVisible,
|
|
262
276
|
iframeSource,
|
|
263
277
|
buttonActive,
|
|
264
278
|
sessionListTitle,
|
|
@@ -268,6 +282,8 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
268
282
|
selectedElementItems,
|
|
269
283
|
handleToggle,
|
|
270
284
|
handleClose,
|
|
285
|
+
handleToggleMinimize,
|
|
286
|
+
handleTogglePromptDock,
|
|
271
287
|
handleToggleSessionList,
|
|
272
288
|
handleToggleTheme,
|
|
273
289
|
handleEmptyAction,
|
|
@@ -288,7 +304,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
288
304
|
return dialogResolve;
|
|
289
305
|
}, set dialogResolve(v) {
|
|
290
306
|
dialogResolve = v;
|
|
291
|
-
}, showConfirmDialog, handleDialogConfirm, handleDialogCancel, frameRef, sendMessageToIframe, handleFrameLoaded, localSessionListCollapsed, buttonActive, containerClasses, iframeSource, sessionListTitle, resolvedTheme, handleClose, handleEmptyAction, handleToggle, handleToggleSessionList, handleToggleTheme, sessionItems, handleCreateSession, handleDeleteSession, handleSelectSession, bubbleVisible, hasSelectedElements, selectedElementItems, handleClearSelectedNodes, handleClickSelectedNode, handleRemoveSelectedNode, handleToggleSelectMode, highlightVisible, highlightStyle, tooltipVisible, tooltipStyle, tooltipContent, Frame: import_Frame_vue.default, Header: import_Header_vue.default, SelectHint: import_SelectHint_vue.default, SelectedNodes: import_SelectedNodes_vue.default, SessionList: import_SessionList_vue.default, Trigger: import_Trigger_vue.default };
|
|
307
|
+
}, showConfirmDialog, handleDialogConfirm, handleDialogCancel, frameRef, sendMessageToIframe, handleFrameLoaded, localSessionListCollapsed, minimized, promptDockVisible, buttonActive, containerClasses, iframeSource, sessionListTitle, resolvedTheme, handleClose, handleEmptyAction, handleToggle, handleToggleSessionList, handleToggleTheme, sessionItems, handleCreateSession, handleDeleteSession, handleSelectSession, bubbleVisible, hasSelectedElements, selectedElementItems, handleClearSelectedNodes, handleClickSelectedNode, handleRemoveSelectedNode, handleToggleSelectMode, highlightVisible, highlightStyle, tooltipVisible, tooltipStyle, tooltipContent, handleToggleMinimize, handleTogglePromptDock, Frame: import_Frame_vue.default, Header: import_Header_vue.default, SelectHint: import_SelectHint_vue.default, SelectedNodes: import_SelectedNodes_vue.default, SessionList: import_SessionList_vue.default, Trigger: import_Trigger_vue.default };
|
|
292
308
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
293
309
|
return __returned__;
|
|
294
310
|
}
|
|
@@ -346,7 +362,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
346
362
|
(0, import_vue3.withDirectives)((0, import_vue3.createElementVNode)(
|
|
347
363
|
"div",
|
|
348
364
|
{
|
|
349
|
-
class: (0, import_vue3.normalizeClass)(["opencode-chat", { open: $props.open }])
|
|
365
|
+
class: (0, import_vue3.normalizeClass)(["opencode-chat", { open: $props.open, minimized: $setup.minimized }])
|
|
350
366
|
},
|
|
351
367
|
[
|
|
352
368
|
(0, import_vue3.createVNode)(
|