@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
package/es/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/es/index.js
CHANGED
|
@@ -72,7 +72,7 @@ function filterStateClasses(classes) {
|
|
|
72
72
|
function getElementDescription(element) {
|
|
73
73
|
try {
|
|
74
74
|
const selector = getCssSelector(element, {
|
|
75
|
-
selectors: ["id", "class", "tag", "
|
|
75
|
+
selectors: ["id", "class", "tag", "nthchild"],
|
|
76
76
|
combineWithinSelector: true,
|
|
77
77
|
combineBetweenSelectors: true,
|
|
78
78
|
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>;
|
|
@@ -14,10 +14,14 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
|
|
|
14
14
|
selectEnabled,
|
|
15
15
|
theme,
|
|
16
16
|
resolvedTheme,
|
|
17
|
+
minimized,
|
|
18
|
+
promptDockVisible,
|
|
17
19
|
handleToggleSessionList,
|
|
18
20
|
handleToggleSelectMode,
|
|
19
21
|
handleToggleTheme,
|
|
20
|
-
handleClose
|
|
22
|
+
handleClose,
|
|
23
|
+
handleToggleMinimize,
|
|
24
|
+
handleTogglePromptDock
|
|
21
25
|
} = useOpenCodeWidgetContext();
|
|
22
26
|
const themeIconTitle = computed(() => {
|
|
23
27
|
const themeLabels = {
|
|
@@ -35,7 +39,7 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
|
|
|
35
39
|
};
|
|
36
40
|
return `\u5207\u6362\u4E3B\u9898 - \u5F53\u524D: ${themeLabels[theme.value]}`;
|
|
37
41
|
});
|
|
38
|
-
const __returned__ = { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, theme, resolvedTheme, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleClose, themeIconTitle, themeIconLabel };
|
|
42
|
+
const __returned__ = { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, theme, resolvedTheme, minimized, promptDockVisible, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleClose, handleToggleMinimize, handleTogglePromptDock, themeIconTitle, themeIconLabel };
|
|
39
43
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
40
44
|
return __returned__;
|
|
41
45
|
}
|
|
@@ -78,6 +82,28 @@ const _hoisted_8 = {
|
|
|
78
82
|
};
|
|
79
83
|
const _hoisted_9 = { class: "opencode-chat-header-title" };
|
|
80
84
|
const _hoisted_10 = { class: "opencode-chat-header-actions" };
|
|
85
|
+
const _hoisted_11 = ["title", "aria-label", "aria-pressed"];
|
|
86
|
+
const _hoisted_12 = ["title", "aria-label", "aria-pressed"];
|
|
87
|
+
const _hoisted_13 = {
|
|
88
|
+
key: 0,
|
|
89
|
+
viewBox: "0 0 24 24",
|
|
90
|
+
width: "14",
|
|
91
|
+
height: "14",
|
|
92
|
+
fill: "none",
|
|
93
|
+
stroke: "currentColor",
|
|
94
|
+
"stroke-width": "2",
|
|
95
|
+
"aria-hidden": "true"
|
|
96
|
+
};
|
|
97
|
+
const _hoisted_14 = {
|
|
98
|
+
key: 1,
|
|
99
|
+
viewBox: "0 0 24 24",
|
|
100
|
+
width: "14",
|
|
101
|
+
height: "14",
|
|
102
|
+
fill: "none",
|
|
103
|
+
stroke: "currentColor",
|
|
104
|
+
"stroke-width": "2",
|
|
105
|
+
"aria-hidden": "true"
|
|
106
|
+
};
|
|
81
107
|
function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
82
108
|
return _openBlock(), _createElementBlock("div", _hoisted_1, [
|
|
83
109
|
_createElementVNode("div", _hoisted_2, [
|
|
@@ -90,7 +116,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
90
116
|
onClick: _cache[0] || (_cache[0] = (...args) => $setup.handleToggleSessionList && $setup.handleToggleSessionList(...args))
|
|
91
117
|
}, [
|
|
92
118
|
_renderSlot(_ctx.$slots, "session-toggle-icon", {}, () => [
|
|
93
|
-
_cache[
|
|
119
|
+
_cache[6] || (_cache[6] = _createElementVNode(
|
|
94
120
|
"svg",
|
|
95
121
|
{
|
|
96
122
|
viewBox: "0 0 24 24",
|
|
@@ -122,7 +148,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
122
148
|
onClick: _cache[1] || (_cache[1] = (...args) => $setup.handleToggleSelectMode && $setup.handleToggleSelectMode(...args))
|
|
123
149
|
}, [
|
|
124
150
|
_renderSlot(_ctx.$slots, "select-icon", {}, () => [
|
|
125
|
-
_cache[
|
|
151
|
+
_cache[7] || (_cache[7] = _createElementVNode(
|
|
126
152
|
"svg",
|
|
127
153
|
{
|
|
128
154
|
viewBox: "0 0 1024 1024",
|
|
@@ -153,9 +179,9 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
153
179
|
onClick: _cache[2] || (_cache[2] = (...args) => $setup.handleToggleTheme && $setup.handleToggleTheme(...args))
|
|
154
180
|
}, [
|
|
155
181
|
_renderSlot(_ctx.$slots, "theme-icon", {}, () => [
|
|
156
|
-
$setup.theme === "light" ? (_openBlock(), _createElementBlock("svg", _hoisted_6, [..._cache[
|
|
182
|
+
$setup.theme === "light" ? (_openBlock(), _createElementBlock("svg", _hoisted_6, [..._cache[8] || (_cache[8] = [
|
|
157
183
|
_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)
|
|
158
|
-
])])) : $setup.theme === "dark" ? (_openBlock(), _createElementBlock("svg", _hoisted_7, [..._cache[
|
|
184
|
+
])])) : $setup.theme === "dark" ? (_openBlock(), _createElementBlock("svg", _hoisted_7, [..._cache[9] || (_cache[9] = [
|
|
159
185
|
_createElementVNode(
|
|
160
186
|
"path",
|
|
161
187
|
{ d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" },
|
|
@@ -163,7 +189,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
163
189
|
-1
|
|
164
190
|
/* CACHED */
|
|
165
191
|
)
|
|
166
|
-
])])) : (_openBlock(), _createElementBlock("svg", _hoisted_8, [..._cache[
|
|
192
|
+
])])) : (_openBlock(), _createElementBlock("svg", _hoisted_8, [..._cache[10] || (_cache[10] = [
|
|
167
193
|
_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)
|
|
168
194
|
])]))
|
|
169
195
|
])
|
|
@@ -177,15 +203,71 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
177
203
|
/* TEXT */
|
|
178
204
|
),
|
|
179
205
|
_createElementVNode("div", _hoisted_10, [
|
|
206
|
+
_createElementVNode("button", {
|
|
207
|
+
class: "opencode-header-btn prompt-dock",
|
|
208
|
+
type: "button",
|
|
209
|
+
title: $setup.promptDockVisible ? "\u9690\u85CF\u5BF9\u8BDD\u6846" : "\u663E\u793A\u5BF9\u8BDD\u6846",
|
|
210
|
+
"aria-label": $setup.promptDockVisible ? "\u9690\u85CF\u5BF9\u8BDD\u6846" : "\u663E\u793A\u5BF9\u8BDD\u6846",
|
|
211
|
+
"aria-pressed": $setup.promptDockVisible,
|
|
212
|
+
onClick: _cache[3] || (_cache[3] = (...args) => $setup.handleTogglePromptDock && $setup.handleTogglePromptDock(...args))
|
|
213
|
+
}, [
|
|
214
|
+
_renderSlot(_ctx.$slots, "prompt-dock-icon", {}, () => [
|
|
215
|
+
_cache[11] || (_cache[11] = _createElementVNode(
|
|
216
|
+
"svg",
|
|
217
|
+
{
|
|
218
|
+
viewBox: "0 0 24 24",
|
|
219
|
+
width: "14",
|
|
220
|
+
height: "14",
|
|
221
|
+
fill: "none",
|
|
222
|
+
stroke: "currentColor",
|
|
223
|
+
"stroke-width": "2",
|
|
224
|
+
"aria-hidden": "true"
|
|
225
|
+
},
|
|
226
|
+
[
|
|
227
|
+
_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" })
|
|
228
|
+
],
|
|
229
|
+
-1
|
|
230
|
+
/* CACHED */
|
|
231
|
+
))
|
|
232
|
+
])
|
|
233
|
+
], 8, _hoisted_11),
|
|
234
|
+
_createElementVNode("button", {
|
|
235
|
+
class: "opencode-header-btn minimize",
|
|
236
|
+
type: "button",
|
|
237
|
+
title: $setup.minimized ? "\u5C55\u5F00" : "\u6700\u5C0F\u5316",
|
|
238
|
+
"aria-label": $setup.minimized ? "\u5C55\u5F00\u9762\u677F" : "\u6700\u5C0F\u5316\u9762\u677F",
|
|
239
|
+
"aria-pressed": $setup.minimized,
|
|
240
|
+
onClick: _cache[4] || (_cache[4] = (...args) => $setup.handleToggleMinimize && $setup.handleToggleMinimize(...args))
|
|
241
|
+
}, [
|
|
242
|
+
_renderSlot(_ctx.$slots, "minimize-icon", {}, () => [
|
|
243
|
+
$setup.minimized ? (_openBlock(), _createElementBlock("svg", _hoisted_13, [..._cache[12] || (_cache[12] = [
|
|
244
|
+
_createElementVNode(
|
|
245
|
+
"path",
|
|
246
|
+
{ 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" },
|
|
247
|
+
null,
|
|
248
|
+
-1
|
|
249
|
+
/* CACHED */
|
|
250
|
+
)
|
|
251
|
+
])])) : (_openBlock(), _createElementBlock("svg", _hoisted_14, [..._cache[13] || (_cache[13] = [
|
|
252
|
+
_createElementVNode(
|
|
253
|
+
"path",
|
|
254
|
+
{ 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" },
|
|
255
|
+
null,
|
|
256
|
+
-1
|
|
257
|
+
/* CACHED */
|
|
258
|
+
)
|
|
259
|
+
])]))
|
|
260
|
+
])
|
|
261
|
+
], 8, _hoisted_12),
|
|
180
262
|
_createElementVNode("button", {
|
|
181
263
|
class: "opencode-header-btn close",
|
|
182
264
|
type: "button",
|
|
183
265
|
title: "\u5173\u95ED",
|
|
184
266
|
"aria-label": "\u5173\u95ED\u9762\u677F",
|
|
185
|
-
onClick: _cache[
|
|
267
|
+
onClick: _cache[5] || (_cache[5] = (...args) => $setup.handleClose && $setup.handleClose(...args))
|
|
186
268
|
}, [
|
|
187
269
|
_renderSlot(_ctx.$slots, "close-icon", {}, () => [
|
|
188
|
-
_cache[
|
|
270
|
+
_cache[14] || (_cache[14] = _createElementVNode(
|
|
189
271
|
"svg",
|
|
190
272
|
{
|
|
191
273
|
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)}}
|
|
@@ -111,6 +111,8 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
111
111
|
sendMessageToIframe
|
|
112
112
|
});
|
|
113
113
|
const localSessionListCollapsed = ref(props.sessionListCollapsed);
|
|
114
|
+
const minimized = ref(false);
|
|
115
|
+
const promptDockVisible = ref(true);
|
|
114
116
|
watch(
|
|
115
117
|
() => props.sessionListCollapsed,
|
|
116
118
|
(val) => {
|
|
@@ -208,6 +210,16 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
208
210
|
emit("toggle-select-mode", false);
|
|
209
211
|
}
|
|
210
212
|
});
|
|
213
|
+
const handleToggleMinimize = () => {
|
|
214
|
+
minimized.value = !minimized.value;
|
|
215
|
+
promptDockVisible.value = !minimized.value;
|
|
216
|
+
sendMessageToIframe("prompt-dock-visibility-change", { visible: promptDockVisible.value });
|
|
217
|
+
sendMessageToIframe("minimize-state-change", { minimized: minimized.value });
|
|
218
|
+
};
|
|
219
|
+
const handleTogglePromptDock = () => {
|
|
220
|
+
promptDockVisible.value = !promptDockVisible.value;
|
|
221
|
+
sendMessageToIframe("prompt-dock-visibility-change", { visible: promptDockVisible.value });
|
|
222
|
+
};
|
|
211
223
|
provideOpenCodeWidgetContext({
|
|
212
224
|
theme: toRef(props, "theme"),
|
|
213
225
|
resolvedTheme,
|
|
@@ -228,6 +240,8 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
228
240
|
showClearAll: toRef(props, "showClearAll"),
|
|
229
241
|
open: toRef(props, "open"),
|
|
230
242
|
thinking: toRef(props, "thinking"),
|
|
243
|
+
minimized,
|
|
244
|
+
promptDockVisible,
|
|
231
245
|
iframeSource,
|
|
232
246
|
buttonActive,
|
|
233
247
|
sessionListTitle,
|
|
@@ -237,6 +251,8 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
237
251
|
selectedElementItems,
|
|
238
252
|
handleToggle,
|
|
239
253
|
handleClose,
|
|
254
|
+
handleToggleMinimize,
|
|
255
|
+
handleTogglePromptDock,
|
|
240
256
|
handleToggleSessionList,
|
|
241
257
|
handleToggleTheme,
|
|
242
258
|
handleEmptyAction,
|
|
@@ -257,7 +273,7 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
257
273
|
return dialogResolve;
|
|
258
274
|
}, set dialogResolve(v) {
|
|
259
275
|
dialogResolve = v;
|
|
260
|
-
}, 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, Header, SelectHint, SelectedNodes, SessionList, Trigger };
|
|
276
|
+
}, 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, Header, SelectHint, SelectedNodes, SessionList, Trigger };
|
|
261
277
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
262
278
|
return __returned__;
|
|
263
279
|
}
|
|
@@ -316,7 +332,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
316
332
|
_withDirectives(_createElementVNode(
|
|
317
333
|
"div",
|
|
318
334
|
{
|
|
319
|
-
class: _normalizeClass(["opencode-chat", { open: $props.open }])
|
|
335
|
+
class: _normalizeClass(["opencode-chat", { open: $props.open, minimized: $setup.minimized }])
|
|
320
336
|
},
|
|
321
337
|
[
|
|
322
338
|
_createVNode(
|
|
@@ -137,7 +137,7 @@ var __vue_sfc__$5 = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
137
137
|
__name: "Header",
|
|
138
138
|
setup(__props, { expose: __expose }) {
|
|
139
139
|
__expose();
|
|
140
|
-
const { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, theme, resolvedTheme, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleClose } = useOpenCodeWidgetContext();
|
|
140
|
+
const { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, theme, resolvedTheme, minimized, promptDockVisible, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleClose, handleToggleMinimize, handleTogglePromptDock } = useOpenCodeWidgetContext();
|
|
141
141
|
const __returned__ = {
|
|
142
142
|
title,
|
|
143
143
|
sessionListTitle,
|
|
@@ -146,10 +146,14 @@ var __vue_sfc__$5 = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
146
146
|
selectEnabled,
|
|
147
147
|
theme,
|
|
148
148
|
resolvedTheme,
|
|
149
|
+
minimized,
|
|
150
|
+
promptDockVisible,
|
|
149
151
|
handleToggleSessionList,
|
|
150
152
|
handleToggleSelectMode,
|
|
151
153
|
handleToggleTheme,
|
|
152
154
|
handleClose,
|
|
155
|
+
handleToggleMinimize,
|
|
156
|
+
handleTogglePromptDock,
|
|
153
157
|
themeIconTitle: (0, vue.computed)(() => {
|
|
154
158
|
return `\u4E3B\u9898: ${{
|
|
155
159
|
auto: "自动",
|
|
@@ -213,6 +217,36 @@ var _hoisted_8$2 = {
|
|
|
213
217
|
};
|
|
214
218
|
var _hoisted_9$2 = { class: "opencode-chat-header-title" };
|
|
215
219
|
var _hoisted_10 = { class: "opencode-chat-header-actions" };
|
|
220
|
+
var _hoisted_11 = [
|
|
221
|
+
"title",
|
|
222
|
+
"aria-label",
|
|
223
|
+
"aria-pressed"
|
|
224
|
+
];
|
|
225
|
+
var _hoisted_12 = [
|
|
226
|
+
"title",
|
|
227
|
+
"aria-label",
|
|
228
|
+
"aria-pressed"
|
|
229
|
+
];
|
|
230
|
+
var _hoisted_13 = {
|
|
231
|
+
key: 0,
|
|
232
|
+
viewBox: "0 0 24 24",
|
|
233
|
+
width: "14",
|
|
234
|
+
height: "14",
|
|
235
|
+
fill: "none",
|
|
236
|
+
stroke: "currentColor",
|
|
237
|
+
"stroke-width": "2",
|
|
238
|
+
"aria-hidden": "true"
|
|
239
|
+
};
|
|
240
|
+
var _hoisted_14 = {
|
|
241
|
+
key: 1,
|
|
242
|
+
viewBox: "0 0 24 24",
|
|
243
|
+
width: "14",
|
|
244
|
+
height: "14",
|
|
245
|
+
fill: "none",
|
|
246
|
+
stroke: "currentColor",
|
|
247
|
+
"stroke-width": "2",
|
|
248
|
+
"aria-hidden": "true"
|
|
249
|
+
};
|
|
216
250
|
function __vue_render__$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
217
251
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$5, [
|
|
218
252
|
(0, vue.createElementVNode)("div", _hoisted_2$3, [
|
|
@@ -223,7 +257,7 @@ function __vue_render__$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
223
257
|
"aria-label": $setup.sessionListTitle,
|
|
224
258
|
"aria-expanded": !$setup.sessionListCollapsed,
|
|
225
259
|
onClick: _cache[0] || (_cache[0] = (...args) => $setup.handleToggleSessionList && $setup.handleToggleSessionList(...args))
|
|
226
|
-
}, [(0, vue.renderSlot)(_ctx.$slots, "session-toggle-icon", {}, () => [_cache[
|
|
260
|
+
}, [(0, vue.renderSlot)(_ctx.$slots, "session-toggle-icon", {}, () => [_cache[6] || (_cache[6] = (0, vue.createElementVNode)("svg", {
|
|
227
261
|
viewBox: "0 0 24 24",
|
|
228
262
|
width: "16",
|
|
229
263
|
height: "16",
|
|
@@ -243,7 +277,7 @@ function __vue_render__$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
243
277
|
"aria-pressed": $setup.selectMode,
|
|
244
278
|
disabled: !$setup.selectEnabled,
|
|
245
279
|
onClick: _cache[1] || (_cache[1] = (...args) => $setup.handleToggleSelectMode && $setup.handleToggleSelectMode(...args))
|
|
246
|
-
}, [(0, vue.renderSlot)(_ctx.$slots, "select-icon", {}, () => [_cache[
|
|
280
|
+
}, [(0, vue.renderSlot)(_ctx.$slots, "select-icon", {}, () => [_cache[7] || (_cache[7] = (0, vue.createElementVNode)("svg", {
|
|
247
281
|
viewBox: "0 0 1024 1024",
|
|
248
282
|
width: "16",
|
|
249
283
|
height: "16",
|
|
@@ -261,24 +295,50 @@ function __vue_render__$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
261
295
|
title: $setup.themeIconTitle,
|
|
262
296
|
"aria-label": $setup.themeIconLabel,
|
|
263
297
|
onClick: _cache[2] || (_cache[2] = (...args) => $setup.handleToggleTheme && $setup.handleToggleTheme(...args))
|
|
264
|
-
}, [(0, vue.renderSlot)(_ctx.$slots, "theme-icon", {}, () => [$setup.theme === "light" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_6$3, [..._cache[
|
|
298
|
+
}, [(0, vue.renderSlot)(_ctx.$slots, "theme-icon", {}, () => [$setup.theme === "light" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_6$3, [..._cache[8] || (_cache[8] = [(0, vue.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" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_7$2, [..._cache[9] || (_cache[9] = [(0, vue.createElementVNode)("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" }, null, -1)])])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_8$2, [..._cache[10] || (_cache[10] = [(0, vue.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)
|
|
265
299
|
]),
|
|
266
300
|
(0, vue.createElementVNode)("span", _hoisted_9$2, (0, vue.toDisplayString)($setup.title), 1),
|
|
267
|
-
(0, vue.createElementVNode)("div", _hoisted_10, [
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
301
|
+
(0, vue.createElementVNode)("div", _hoisted_10, [
|
|
302
|
+
(0, vue.createElementVNode)("button", {
|
|
303
|
+
class: "opencode-header-btn prompt-dock",
|
|
304
|
+
type: "button",
|
|
305
|
+
title: $setup.promptDockVisible ? "隐藏对话框" : "显示对话框",
|
|
306
|
+
"aria-label": $setup.promptDockVisible ? "隐藏对话框" : "显示对话框",
|
|
307
|
+
"aria-pressed": $setup.promptDockVisible,
|
|
308
|
+
onClick: _cache[3] || (_cache[3] = (...args) => $setup.handleTogglePromptDock && $setup.handleTogglePromptDock(...args))
|
|
309
|
+
}, [(0, vue.renderSlot)(_ctx.$slots, "prompt-dock-icon", {}, () => [_cache[11] || (_cache[11] = (0, vue.createElementVNode)("svg", {
|
|
310
|
+
viewBox: "0 0 24 24",
|
|
311
|
+
width: "14",
|
|
312
|
+
height: "14",
|
|
313
|
+
fill: "none",
|
|
314
|
+
stroke: "currentColor",
|
|
315
|
+
"stroke-width": "2",
|
|
316
|
+
"aria-hidden": "true"
|
|
317
|
+
}, [(0, vue.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),
|
|
318
|
+
(0, vue.createElementVNode)("button", {
|
|
319
|
+
class: "opencode-header-btn minimize",
|
|
320
|
+
type: "button",
|
|
321
|
+
title: $setup.minimized ? "展开" : "最小化",
|
|
322
|
+
"aria-label": $setup.minimized ? "展开面板" : "最小化面板",
|
|
323
|
+
"aria-pressed": $setup.minimized,
|
|
324
|
+
onClick: _cache[4] || (_cache[4] = (...args) => $setup.handleToggleMinimize && $setup.handleToggleMinimize(...args))
|
|
325
|
+
}, [(0, vue.renderSlot)(_ctx.$slots, "minimize-icon", {}, () => [$setup.minimized ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_13, [..._cache[12] || (_cache[12] = [(0, vue.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)])])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_14, [..._cache[13] || (_cache[13] = [(0, vue.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),
|
|
326
|
+
(0, vue.createElementVNode)("button", {
|
|
327
|
+
class: "opencode-header-btn close",
|
|
328
|
+
type: "button",
|
|
329
|
+
title: "关闭",
|
|
330
|
+
"aria-label": "关闭面板",
|
|
331
|
+
onClick: _cache[5] || (_cache[5] = (...args) => $setup.handleClose && $setup.handleClose(...args))
|
|
332
|
+
}, [(0, vue.renderSlot)(_ctx.$slots, "close-icon", {}, () => [_cache[14] || (_cache[14] = (0, vue.createElementVNode)("svg", {
|
|
333
|
+
viewBox: "0 0 24 24",
|
|
334
|
+
width: "14",
|
|
335
|
+
height: "14",
|
|
336
|
+
fill: "none",
|
|
337
|
+
stroke: "currentColor",
|
|
338
|
+
"stroke-width": "2",
|
|
339
|
+
"aria-hidden": "true"
|
|
340
|
+
}, [(0, vue.createElementVNode)("path", { d: "M18 6L6 18M6 6l12 12" })], -1))])])
|
|
341
|
+
])
|
|
282
342
|
]);
|
|
283
343
|
}
|
|
284
344
|
__vue_sfc__$5.render = __vue_render__$5;
|
|
@@ -844,7 +904,6 @@ function getElementDescription(element) {
|
|
|
844
904
|
"id",
|
|
845
905
|
"class",
|
|
846
906
|
"tag",
|
|
847
|
-
"attribute",
|
|
848
907
|
"nthchild"
|
|
849
908
|
],
|
|
850
909
|
combineWithinSelector: true,
|
|
@@ -1384,6 +1443,8 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
1384
1443
|
sendMessageToIframe
|
|
1385
1444
|
});
|
|
1386
1445
|
const localSessionListCollapsed = (0, vue.ref)(props.sessionListCollapsed);
|
|
1446
|
+
const minimized = (0, vue.ref)(false);
|
|
1447
|
+
const promptDockVisible = (0, vue.ref)(true);
|
|
1387
1448
|
(0, vue.watch)(() => props.sessionListCollapsed, (val) => {
|
|
1388
1449
|
localSessionListCollapsed.value = val;
|
|
1389
1450
|
});
|
|
@@ -1459,6 +1520,16 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
1459
1520
|
emit("toggle-select-mode", false);
|
|
1460
1521
|
}
|
|
1461
1522
|
});
|
|
1523
|
+
const handleToggleMinimize = () => {
|
|
1524
|
+
minimized.value = !minimized.value;
|
|
1525
|
+
promptDockVisible.value = !minimized.value;
|
|
1526
|
+
sendMessageToIframe("prompt-dock-visibility-change", { visible: promptDockVisible.value });
|
|
1527
|
+
sendMessageToIframe("minimize-state-change", { minimized: minimized.value });
|
|
1528
|
+
};
|
|
1529
|
+
const handleTogglePromptDock = () => {
|
|
1530
|
+
promptDockVisible.value = !promptDockVisible.value;
|
|
1531
|
+
sendMessageToIframe("prompt-dock-visibility-change", { visible: promptDockVisible.value });
|
|
1532
|
+
};
|
|
1462
1533
|
provideOpenCodeWidgetContext({
|
|
1463
1534
|
theme: (0, vue.toRef)(props, "theme"),
|
|
1464
1535
|
resolvedTheme,
|
|
@@ -1479,6 +1550,8 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
1479
1550
|
showClearAll: (0, vue.toRef)(props, "showClearAll"),
|
|
1480
1551
|
open: (0, vue.toRef)(props, "open"),
|
|
1481
1552
|
thinking: (0, vue.toRef)(props, "thinking"),
|
|
1553
|
+
minimized,
|
|
1554
|
+
promptDockVisible,
|
|
1482
1555
|
iframeSource,
|
|
1483
1556
|
buttonActive,
|
|
1484
1557
|
sessionListTitle,
|
|
@@ -1488,6 +1561,8 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
1488
1561
|
selectedElementItems,
|
|
1489
1562
|
handleToggle,
|
|
1490
1563
|
handleClose,
|
|
1564
|
+
handleToggleMinimize,
|
|
1565
|
+
handleTogglePromptDock,
|
|
1491
1566
|
handleToggleSessionList,
|
|
1492
1567
|
handleToggleTheme,
|
|
1493
1568
|
handleEmptyAction,
|
|
@@ -1529,6 +1604,8 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
1529
1604
|
sendMessageToIframe,
|
|
1530
1605
|
handleFrameLoaded,
|
|
1531
1606
|
localSessionListCollapsed,
|
|
1607
|
+
minimized,
|
|
1608
|
+
promptDockVisible,
|
|
1532
1609
|
buttonActive,
|
|
1533
1610
|
containerClasses,
|
|
1534
1611
|
iframeSource,
|
|
@@ -1555,6 +1632,8 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
1555
1632
|
tooltipVisible,
|
|
1556
1633
|
tooltipStyle,
|
|
1557
1634
|
tooltipContent,
|
|
1635
|
+
handleToggleMinimize,
|
|
1636
|
+
handleTogglePromptDock,
|
|
1558
1637
|
Frame: Frame_vue_default,
|
|
1559
1638
|
Header: Header_vue_default,
|
|
1560
1639
|
SelectHint: SelectHint_vue_default,
|
|
@@ -1601,7 +1680,10 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1601
1680
|
key: "0"
|
|
1602
1681
|
} : void 0]), 1024),
|
|
1603
1682
|
(0, vue.createCommentVNode)(" <SelectedBubbles v-if=\"bubbleVisible\" /> "),
|
|
1604
|
-
(0, vue.withDirectives)((0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(["opencode-chat", {
|
|
1683
|
+
(0, vue.withDirectives)((0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(["opencode-chat", {
|
|
1684
|
+
open: $props.open,
|
|
1685
|
+
minimized: $setup.minimized
|
|
1686
|
+
}]) }, [
|
|
1605
1687
|
(0, vue.createVNode)($setup["Header"], null, (0, vue.createSlots)({ _: 2 }, [
|
|
1606
1688
|
$setup.slots["session-toggle-icon"] ? {
|
|
1607
1689
|
name: "session-toggle-icon",
|
|
@@ -1680,7 +1762,7 @@ __vue_sfc__.render = __vue_render__;
|
|
|
1680
1762
|
var open_code_widget_default = __vue_sfc__;
|
|
1681
1763
|
//#endregion
|
|
1682
1764
|
//#region es/index.js
|
|
1683
|
-
var version = "1.0.
|
|
1765
|
+
var version = "1.0.21";
|
|
1684
1766
|
function install(app, options) {
|
|
1685
1767
|
[open_code_widget_default].forEach((item) => {
|
|
1686
1768
|
if (item.install) app.use(item, options);
|