@vite-plugin-opencode-assistant/components 1.0.37 → 1.0.39
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-persist-state.d.ts +2 -0
- package/es/open-code-widget/composables/use-persist-state.js +24 -9
- package/es/open-code-widget/composables/use-split.d.ts +24 -0
- package/es/open-code-widget/composables/use-split.js +90 -0
- package/es/open-code-widget/src/components/ChatPanel-sfc.css +1 -0
- package/es/open-code-widget/src/components/ChatPanel.vue.d.ts +180 -0
- package/es/open-code-widget/src/components/ChatPanel.vue.js +288 -0
- package/es/open-code-widget/src/components/Header.vue.js +13 -8
- package/es/open-code-widget/src/components/ResizeHandle-sfc.css +1 -0
- package/es/open-code-widget/src/components/ResizeHandle.vue.d.ts +19 -0
- package/es/open-code-widget/src/components/ResizeHandle.vue.js +91 -0
- package/es/open-code-widget/src/components/SplitTrigger-sfc.css +1 -0
- package/es/open-code-widget/src/components/SplitTrigger.vue.d.ts +17 -0
- package/es/open-code-widget/src/components/SplitTrigger.vue.js +130 -0
- package/es/open-code-widget/src/context.d.ts +1 -0
- package/es/open-code-widget/src/index-sfc.css +1 -1
- package/es/open-code-widget/src/index.vue.d.ts +16 -53
- package/es/open-code-widget/src/index.vue.js +150 -140
- package/es/open-code-widget/src/types.d.ts +1 -1
- package/lib/@vite-plugin-opencode-assistant/components.cjs.js +806 -248
- package/lib/@vite-plugin-opencode-assistant/components.es.js +802 -244
- package/lib/components.css +5 -3
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/open-code-widget/composables/use-persist-state.d.ts +2 -0
- package/lib/open-code-widget/composables/use-persist-state.js +24 -9
- package/lib/open-code-widget/composables/use-split.d.ts +24 -0
- package/lib/open-code-widget/composables/use-split.js +109 -0
- package/lib/open-code-widget/src/components/ChatPanel-sfc.css +1 -0
- package/lib/open-code-widget/src/components/ChatPanel.vue.d.ts +180 -0
- package/lib/open-code-widget/src/components/ChatPanel.vue.js +315 -0
- package/lib/open-code-widget/src/components/Header.vue.js +12 -7
- package/lib/open-code-widget/src/components/ResizeHandle-sfc.css +1 -0
- package/lib/open-code-widget/src/components/ResizeHandle.vue.d.ts +19 -0
- package/lib/open-code-widget/src/components/ResizeHandle.vue.js +108 -0
- package/lib/open-code-widget/src/components/SplitTrigger-sfc.css +1 -0
- package/lib/open-code-widget/src/components/SplitTrigger.vue.d.ts +17 -0
- package/lib/open-code-widget/src/components/SplitTrigger.vue.js +147 -0
- package/lib/open-code-widget/src/context.d.ts +1 -0
- package/lib/open-code-widget/src/index-sfc.css +1 -1
- package/lib/open-code-widget/src/index.vue.d.ts +16 -53
- package/lib/open-code-widget/src/index.vue.js +149 -139
- package/lib/open-code-widget/src/types.d.ts +1 -1
- package/lib/web-types.json +1 -1
- package/package.json +2 -2
|
@@ -4,22 +4,22 @@ Object.defineProperties(exports, {
|
|
|
4
4
|
});
|
|
5
5
|
//#region \0rolldown/runtime.js
|
|
6
6
|
var __create = Object.create;
|
|
7
|
-
var __defProp$
|
|
7
|
+
var __defProp$5 = Object.defineProperty;
|
|
8
8
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
9
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
10
|
var __getProtoOf = Object.getPrototypeOf;
|
|
11
|
-
var __hasOwnProp$
|
|
11
|
+
var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
|
|
12
12
|
var __copyProps = (to, from, except, desc) => {
|
|
13
13
|
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
14
14
|
key = keys[i];
|
|
15
|
-
if (!__hasOwnProp$
|
|
15
|
+
if (!__hasOwnProp$5.call(to, key) && key !== except) __defProp$5(to, key, {
|
|
16
16
|
get: ((k) => from[k]).bind(null, key),
|
|
17
17
|
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
return to;
|
|
21
21
|
};
|
|
22
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp$
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp$5(target, "default", {
|
|
23
23
|
value: mod,
|
|
24
24
|
enumerable: true
|
|
25
25
|
}) : target, mod));
|
|
@@ -40,24 +40,24 @@ function useOpenCodeWidgetContext() {
|
|
|
40
40
|
}
|
|
41
41
|
//#endregion
|
|
42
42
|
//#region es/open-code-widget/src/components/Frame.vue.js
|
|
43
|
-
var __defProp$
|
|
44
|
-
var __getOwnPropSymbols$
|
|
45
|
-
var __hasOwnProp$
|
|
46
|
-
var __propIsEnum$
|
|
47
|
-
var __defNormalProp$
|
|
43
|
+
var __defProp$4 = Object.defineProperty;
|
|
44
|
+
var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
|
|
45
|
+
var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
|
|
46
|
+
var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
|
|
47
|
+
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, {
|
|
48
48
|
enumerable: true,
|
|
49
49
|
configurable: true,
|
|
50
50
|
writable: true,
|
|
51
51
|
value
|
|
52
52
|
}) : obj[key] = value;
|
|
53
|
-
var __spreadValues$
|
|
54
|
-
for (var prop in b || (b = {})) if (__hasOwnProp$
|
|
55
|
-
if (__getOwnPropSymbols$
|
|
56
|
-
for (var prop of __getOwnPropSymbols$
|
|
53
|
+
var __spreadValues$4 = (a, b) => {
|
|
54
|
+
for (var prop in b || (b = {})) if (__hasOwnProp$4.call(b, prop)) __defNormalProp$4(a, prop, b[prop]);
|
|
55
|
+
if (__getOwnPropSymbols$4) {
|
|
56
|
+
for (var prop of __getOwnPropSymbols$4(b)) if (__propIsEnum$4.call(b, prop)) __defNormalProp$4(a, prop, b[prop]);
|
|
57
57
|
}
|
|
58
58
|
return a;
|
|
59
59
|
};
|
|
60
|
-
var __vue_sfc__$
|
|
60
|
+
var __vue_sfc__$9 = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
61
61
|
__name: "Frame",
|
|
62
62
|
setup(__props, { expose: __expose }) {
|
|
63
63
|
const iframeRef = (0, vue.ref)(null);
|
|
@@ -65,7 +65,7 @@ var __vue_sfc__$7 = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
65
65
|
function sendMessageToIframe(type, data) {
|
|
66
66
|
var _a;
|
|
67
67
|
if (!((_a = iframeRef.value) == null ? void 0 : _a.contentWindow)) return;
|
|
68
|
-
iframeRef.value.contentWindow.postMessage(__spreadValues$
|
|
68
|
+
iframeRef.value.contentWindow.postMessage(__spreadValues$4({ type }, data), "*");
|
|
69
69
|
}
|
|
70
70
|
(0, vue.onMounted)(() => {
|
|
71
71
|
if (iframeRef.value) iframeRef.value.addEventListener("load", () => {
|
|
@@ -92,11 +92,11 @@ var __vue_sfc__$7 = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
92
92
|
return __returned__;
|
|
93
93
|
}
|
|
94
94
|
});
|
|
95
|
-
var _hoisted_1$
|
|
96
|
-
var _hoisted_2$
|
|
97
|
-
var _hoisted_3$
|
|
98
|
-
function __vue_render__$
|
|
99
|
-
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$
|
|
95
|
+
var _hoisted_1$7 = { class: "opencode-iframe-container" };
|
|
96
|
+
var _hoisted_2$5 = { class: "opencode-empty-state-text" };
|
|
97
|
+
var _hoisted_3$5 = ["src"];
|
|
98
|
+
function __vue_render__$9(_ctx, _cache, $props, $setup, $data, $options) {
|
|
99
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$7, [
|
|
100
100
|
(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(["opencode-empty-state-overlay", { visible: $setup.showEmptyState }]) }, [(0, vue.renderSlot)(_ctx.$slots, "empty-state", {}, () => [
|
|
101
101
|
_cache[1] || (_cache[1] = (0, vue.createElementVNode)("div", { class: "opencode-empty-state-icon" }, [(0, vue.createElementVNode)("svg", {
|
|
102
102
|
viewBox: "0 0 24 24",
|
|
@@ -111,7 +111,7 @@ function __vue_render__$7(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
111
111
|
"stroke-linejoin": "round",
|
|
112
112
|
d: "M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 0 1-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"
|
|
113
113
|
})])], -1)),
|
|
114
|
-
(0, vue.createElementVNode)("div", _hoisted_2$
|
|
114
|
+
(0, vue.createElementVNode)("div", _hoisted_2$5, (0, vue.toDisplayString)($setup.emptyStateText), 1),
|
|
115
115
|
(0, vue.createElementVNode)("button", {
|
|
116
116
|
class: "opencode-empty-state-btn",
|
|
117
117
|
type: "button",
|
|
@@ -126,18 +126,18 @@ function __vue_render__$7(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
126
126
|
src: $setup.iframeSrc,
|
|
127
127
|
allow: "clipboard-write; clipboard-read",
|
|
128
128
|
referrerpolicy: "origin"
|
|
129
|
-
}, null, 8, _hoisted_3$
|
|
129
|
+
}, null, 8, _hoisted_3$5)])
|
|
130
130
|
]);
|
|
131
131
|
}
|
|
132
|
-
__vue_sfc__$
|
|
133
|
-
var Frame_vue_default = __vue_sfc__$
|
|
132
|
+
__vue_sfc__$9.render = __vue_render__$9;
|
|
133
|
+
var Frame_vue_default = __vue_sfc__$9;
|
|
134
134
|
//#endregion
|
|
135
135
|
//#region es/open-code-widget/src/components/Header.vue.js
|
|
136
|
-
var __vue_sfc__$
|
|
136
|
+
var __vue_sfc__$8 = /* @__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, minimized, promptDockVisible, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleClose, handleToggleMinimize, handleTogglePromptDock } = useOpenCodeWidgetContext();
|
|
140
|
+
const { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, theme, resolvedTheme, minimized, promptDockVisible, mode, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleClose, handleToggleMinimize, handleTogglePromptDock } = useOpenCodeWidgetContext();
|
|
141
141
|
const __returned__ = {
|
|
142
142
|
title,
|
|
143
143
|
sessionListTitle,
|
|
@@ -148,12 +148,14 @@ var __vue_sfc__$6 = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
148
148
|
resolvedTheme,
|
|
149
149
|
minimized,
|
|
150
150
|
promptDockVisible,
|
|
151
|
+
mode,
|
|
151
152
|
handleToggleSessionList,
|
|
152
153
|
handleToggleSelectMode,
|
|
153
154
|
handleToggleTheme,
|
|
154
155
|
handleClose,
|
|
155
156
|
handleToggleMinimize,
|
|
156
157
|
handleTogglePromptDock,
|
|
158
|
+
isSplitMode: (0, vue.computed)(() => mode.value === "split"),
|
|
157
159
|
themeIconTitle: (0, vue.computed)(() => {
|
|
158
160
|
return `\u4E3B\u9898: ${{
|
|
159
161
|
auto: "自动",
|
|
@@ -176,16 +178,16 @@ var __vue_sfc__$6 = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
176
178
|
return __returned__;
|
|
177
179
|
}
|
|
178
180
|
});
|
|
179
|
-
var _hoisted_1$
|
|
180
|
-
var _hoisted_2$
|
|
181
|
-
var _hoisted_3$
|
|
181
|
+
var _hoisted_1$6 = { class: "opencode-chat-header" };
|
|
182
|
+
var _hoisted_2$4 = { class: "opencode-chat-header-left" };
|
|
183
|
+
var _hoisted_3$4 = [
|
|
182
184
|
"title",
|
|
183
185
|
"aria-label",
|
|
184
186
|
"aria-expanded"
|
|
185
187
|
];
|
|
186
|
-
var _hoisted_4$
|
|
187
|
-
var _hoisted_5$
|
|
188
|
-
var _hoisted_6$
|
|
188
|
+
var _hoisted_4$4 = ["aria-pressed", "disabled"];
|
|
189
|
+
var _hoisted_5$4 = ["title", "aria-label"];
|
|
190
|
+
var _hoisted_6$4 = {
|
|
189
191
|
key: 0,
|
|
190
192
|
viewBox: "0 0 24 24",
|
|
191
193
|
width: "16",
|
|
@@ -205,7 +207,7 @@ var _hoisted_7$2 = {
|
|
|
205
207
|
"stroke-width": "2",
|
|
206
208
|
"aria-hidden": "true"
|
|
207
209
|
};
|
|
208
|
-
var _hoisted_8$
|
|
210
|
+
var _hoisted_8$1 = {
|
|
209
211
|
key: 2,
|
|
210
212
|
viewBox: "0 0 24 24",
|
|
211
213
|
width: "16",
|
|
@@ -215,7 +217,7 @@ var _hoisted_8$2 = {
|
|
|
215
217
|
"stroke-width": "2",
|
|
216
218
|
"aria-hidden": "true"
|
|
217
219
|
};
|
|
218
|
-
var _hoisted_9$
|
|
220
|
+
var _hoisted_9$1 = { class: "opencode-chat-header-title" };
|
|
219
221
|
var _hoisted_10$1 = { class: "opencode-chat-header-actions" };
|
|
220
222
|
var _hoisted_11 = [
|
|
221
223
|
"title",
|
|
@@ -247,9 +249,9 @@ var _hoisted_14 = {
|
|
|
247
249
|
"stroke-width": "2",
|
|
248
250
|
"aria-hidden": "true"
|
|
249
251
|
};
|
|
250
|
-
function __vue_render__$
|
|
251
|
-
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$
|
|
252
|
-
(0, vue.createElementVNode)("div", _hoisted_2$
|
|
252
|
+
function __vue_render__$8(_ctx, _cache, $props, $setup, $data, $options) {
|
|
253
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$6, [
|
|
254
|
+
(0, vue.createElementVNode)("div", _hoisted_2$4, [
|
|
253
255
|
(0, vue.createElementVNode)("button", {
|
|
254
256
|
class: (0, vue.normalizeClass)(["opencode-header-btn session-toggle", { active: !$setup.sessionListCollapsed }]),
|
|
255
257
|
type: "button",
|
|
@@ -268,7 +270,7 @@ function __vue_render__$6(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
268
270
|
}, [(0, vue.createElementVNode)("path", {
|
|
269
271
|
d: "M4 6h16M4 12h16M4 18h16",
|
|
270
272
|
"stroke-linecap": "round"
|
|
271
|
-
})], -1))])], 10, _hoisted_3$
|
|
273
|
+
})], -1))])], 10, _hoisted_3$4),
|
|
272
274
|
(0, vue.createElementVNode)("button", {
|
|
273
275
|
class: (0, vue.normalizeClass)(["opencode-header-btn select-btn", { active: $setup.selectMode }]),
|
|
274
276
|
type: "button",
|
|
@@ -288,18 +290,19 @@ function __vue_render__$6(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
288
290
|
}), (0, vue.createElementVNode)("path", {
|
|
289
291
|
fill: "currentColor",
|
|
290
292
|
d: "M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32m0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32M96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32m576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32"
|
|
291
|
-
})], -1))])], 10, _hoisted_4$
|
|
293
|
+
})], -1))])], 10, _hoisted_4$4),
|
|
292
294
|
(0, vue.createElementVNode)("button", {
|
|
293
295
|
class: "opencode-header-btn theme-btn",
|
|
294
296
|
type: "button",
|
|
295
297
|
title: $setup.themeIconTitle,
|
|
296
298
|
"aria-label": $setup.themeIconLabel,
|
|
297
299
|
onClick: _cache[2] || (_cache[2] = (...args) => $setup.handleToggleTheme && $setup.handleToggleTheme(...args))
|
|
298
|
-
}, [(0, vue.renderSlot)(_ctx.$slots, "theme-icon", {}, () => [$setup.theme === "light" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_6$
|
|
300
|
+
}, [(0, vue.renderSlot)(_ctx.$slots, "theme-icon", {}, () => [$setup.theme === "light" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_6$4, [..._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$1, [..._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$4)
|
|
299
301
|
]),
|
|
300
|
-
(0, vue.createElementVNode)("span", _hoisted_9$
|
|
302
|
+
(0, vue.createElementVNode)("span", _hoisted_9$1, (0, vue.toDisplayString)($setup.title), 1),
|
|
301
303
|
(0, vue.createElementVNode)("div", _hoisted_10$1, [
|
|
302
|
-
(0, vue.
|
|
304
|
+
!$setup.isSplitMode ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
|
|
305
|
+
key: 0,
|
|
303
306
|
class: "opencode-header-btn prompt-dock",
|
|
304
307
|
type: "button",
|
|
305
308
|
title: $setup.promptDockVisible ? "隐藏对话框" : "显示对话框",
|
|
@@ -314,16 +317,18 @@ function __vue_render__$6(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
314
317
|
stroke: "currentColor",
|
|
315
318
|
"stroke-width": "2",
|
|
316
319
|
"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.
|
|
320
|
+
}, [(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)) : (0, vue.createCommentVNode)("v-if", true),
|
|
321
|
+
!$setup.isSplitMode ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
|
|
322
|
+
key: 1,
|
|
319
323
|
class: "opencode-header-btn minimize",
|
|
320
324
|
type: "button",
|
|
321
325
|
title: $setup.minimized ? "展开" : "最小化",
|
|
322
326
|
"aria-label": $setup.minimized ? "展开面板" : "最小化面板",
|
|
323
327
|
"aria-pressed": $setup.minimized,
|
|
324
328
|
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.
|
|
329
|
+
}, [(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)) : (0, vue.createCommentVNode)("v-if", true),
|
|
330
|
+
!$setup.isSplitMode ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
|
|
331
|
+
key: 2,
|
|
327
332
|
class: "opencode-header-btn close",
|
|
328
333
|
type: "button",
|
|
329
334
|
title: "关闭",
|
|
@@ -337,101 +342,15 @@ function __vue_render__$6(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
337
342
|
stroke: "currentColor",
|
|
338
343
|
"stroke-width": "2",
|
|
339
344
|
"aria-hidden": "true"
|
|
340
|
-
}, [(0, vue.createElementVNode)("path", { d: "M18 6L6 18M6 6l12 12" })], -1))])])
|
|
345
|
+
}, [(0, vue.createElementVNode)("path", { d: "M18 6L6 18M6 6l12 12" })], -1))])])) : (0, vue.createCommentVNode)("v-if", true)
|
|
341
346
|
])
|
|
342
347
|
]);
|
|
343
348
|
}
|
|
344
|
-
__vue_sfc__$
|
|
345
|
-
var Header_vue_default = __vue_sfc__$
|
|
346
|
-
//#endregion
|
|
347
|
-
//#region es/open-code-widget/src/components/SelectHint.vue.js
|
|
348
|
-
var __vue_sfc__$5 = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
349
|
-
__name: "SelectHint",
|
|
350
|
-
setup(__props, { expose: __expose }) {
|
|
351
|
-
__expose();
|
|
352
|
-
const { selectMode: visible, selectShortcutLabel: shortcutLabel } = useOpenCodeWidgetContext();
|
|
353
|
-
const __returned__ = {
|
|
354
|
-
visible,
|
|
355
|
-
shortcutLabel
|
|
356
|
-
};
|
|
357
|
-
Object.defineProperty(__returned__, "__isScriptSetup", {
|
|
358
|
-
enumerable: false,
|
|
359
|
-
value: true
|
|
360
|
-
});
|
|
361
|
-
return __returned__;
|
|
362
|
-
}
|
|
363
|
-
});
|
|
364
|
-
var _hoisted_1$4 = { class: "opencode-hint-shortcut" };
|
|
365
|
-
function __vue_render__$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
366
|
-
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)(["opencode-select-mode-hint", { visible: $setup.visible }]) }, [_cache[0] || (_cache[0] = (0, vue.createElementVNode)("span", null, "🎯 选择模式已开启 - 点击元素进行选择", -1)), (0, vue.createElementVNode)("span", _hoisted_1$4, (0, vue.toDisplayString)($setup.shortcutLabel), 1)], 2);
|
|
367
|
-
}
|
|
368
|
-
__vue_sfc__$5.render = __vue_render__$5;
|
|
369
|
-
var SelectHint_vue_default = __vue_sfc__$5;
|
|
370
|
-
//#endregion
|
|
371
|
-
//#region es/open-code-widget/src/components/SelectedNodes.vue.js
|
|
372
|
-
var __vue_sfc__$4 = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
373
|
-
__name: "SelectedNodes",
|
|
374
|
-
setup(__props, { expose: __expose }) {
|
|
375
|
-
__expose();
|
|
376
|
-
const { selectedElementItems: items, showClearAll, handleClickSelectedNode, handleRemoveSelectedNode, handleClearSelectedNodes } = useOpenCodeWidgetContext();
|
|
377
|
-
const __returned__ = {
|
|
378
|
-
items,
|
|
379
|
-
showClearAll,
|
|
380
|
-
handleClickSelectedNode,
|
|
381
|
-
handleRemoveSelectedNode,
|
|
382
|
-
handleClearSelectedNodes
|
|
383
|
-
};
|
|
384
|
-
Object.defineProperty(__returned__, "__isScriptSetup", {
|
|
385
|
-
enumerable: false,
|
|
386
|
-
value: true
|
|
387
|
-
});
|
|
388
|
-
return __returned__;
|
|
389
|
-
}
|
|
390
|
-
});
|
|
391
|
-
var _hoisted_1$3 = {
|
|
392
|
-
class: "opencode-selected-nodes",
|
|
393
|
-
role: "list",
|
|
394
|
-
"aria-label": "已选元素列表"
|
|
395
|
-
};
|
|
396
|
-
var _hoisted_2$2 = ["onClick"];
|
|
397
|
-
var _hoisted_3$2 = { class: "opencode-node-content" };
|
|
398
|
-
var _hoisted_4$2 = { class: "opencode-node-text" };
|
|
399
|
-
var _hoisted_5$2 = { class: "opencode-node-file" };
|
|
400
|
-
var _hoisted_6$2 = ["aria-label", "onClick"];
|
|
401
|
-
function __vue_render__$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
402
|
-
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)(["opencode-right-toolbar", { collapsed: $setup.items.length === 0 }]) }, [
|
|
403
|
-
_cache[1] || (_cache[1] = (0, vue.createElementVNode)("div", { class: "opencode-selected-nodes-header" }, [(0, vue.createElementVNode)("div", { class: "opencode-selected-nodes-title" }, "已选节点"), (0, vue.createElementVNode)("div", { class: "opencode-selected-nodes-desc" }, "选中的节点会在对话时一起发送给助手")], -1)),
|
|
404
|
-
(0, vue.createElementVNode)("div", _hoisted_1$3, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)($setup.items, (item, index) => {
|
|
405
|
-
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
|
|
406
|
-
key: item.key,
|
|
407
|
-
class: "opencode-selected-node",
|
|
408
|
-
role: "listitem",
|
|
409
|
-
onClick: ($event) => $setup.handleClickSelectedNode(item)
|
|
410
|
-
}, [(0, vue.createElementVNode)("div", _hoisted_3$2, [(0, vue.createElementVNode)("span", _hoisted_4$2, (0, vue.toDisplayString)(item.description), 1), (0, vue.createElementVNode)("span", _hoisted_5$2, (0, vue.toDisplayString)(item.panelFileText), 1)]), (0, vue.createElementVNode)("button", {
|
|
411
|
-
class: "opencode-node-remove",
|
|
412
|
-
type: "button",
|
|
413
|
-
"aria-label": `\u79FB\u9664\u5143\u7D20: ${item.description}`,
|
|
414
|
-
onClick: (0, vue.withModifiers)(($event) => $setup.handleRemoveSelectedNode({
|
|
415
|
-
item,
|
|
416
|
-
index,
|
|
417
|
-
source: "panel"
|
|
418
|
-
}), ["stop"])
|
|
419
|
-
}, " × ", 8, _hoisted_6$2)], 8, _hoisted_2$2);
|
|
420
|
-
}), 128))]),
|
|
421
|
-
$setup.showClearAll && $setup.items.length > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
|
|
422
|
-
key: 0,
|
|
423
|
-
class: "opencode-clear-all-btn",
|
|
424
|
-
type: "button",
|
|
425
|
-
"aria-label": "清空所有已选节点",
|
|
426
|
-
onClick: _cache[0] || (_cache[0] = (...args) => $setup.handleClearSelectedNodes && $setup.handleClearSelectedNodes(...args))
|
|
427
|
-
}, " 一键清空 ")) : (0, vue.createCommentVNode)("v-if", true)
|
|
428
|
-
], 2);
|
|
429
|
-
}
|
|
430
|
-
__vue_sfc__$4.render = __vue_render__$4;
|
|
431
|
-
var SelectedNodes_vue_default = __vue_sfc__$4;
|
|
349
|
+
__vue_sfc__$8.render = __vue_render__$8;
|
|
350
|
+
var Header_vue_default = __vue_sfc__$8;
|
|
432
351
|
//#endregion
|
|
433
352
|
//#region es/open-code-widget/src/components/SessionList.vue.js
|
|
434
|
-
var __vue_sfc__$
|
|
353
|
+
var __vue_sfc__$7 = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
435
354
|
__name: "SessionList",
|
|
436
355
|
setup(__props, { expose: __expose }) {
|
|
437
356
|
__expose();
|
|
@@ -482,36 +401,36 @@ var __vue_sfc__$3 = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
|
482
401
|
return __returned__;
|
|
483
402
|
}
|
|
484
403
|
});
|
|
485
|
-
var _hoisted_1$
|
|
404
|
+
var _hoisted_1$5 = {
|
|
486
405
|
key: 0,
|
|
487
406
|
class: "opencode-session-list-header"
|
|
488
407
|
};
|
|
489
|
-
var _hoisted_2$
|
|
408
|
+
var _hoisted_2$3 = {
|
|
490
409
|
key: 2,
|
|
491
410
|
class: "opencode-session-skeleton visible"
|
|
492
411
|
};
|
|
493
|
-
var _hoisted_3$
|
|
412
|
+
var _hoisted_3$3 = {
|
|
494
413
|
class: "opencode-session-list-content",
|
|
495
414
|
role: "listbox",
|
|
496
415
|
"aria-labelledby": "opencode-session-list-title"
|
|
497
416
|
};
|
|
498
|
-
var _hoisted_4$
|
|
417
|
+
var _hoisted_4$3 = {
|
|
499
418
|
key: 0,
|
|
500
419
|
class: "opencode-session-list-loading-overlay"
|
|
501
420
|
};
|
|
502
|
-
var _hoisted_5$
|
|
503
|
-
var _hoisted_6$
|
|
421
|
+
var _hoisted_5$3 = ["aria-selected", "onClick"];
|
|
422
|
+
var _hoisted_6$3 = { class: "opencode-session-header" };
|
|
504
423
|
var _hoisted_7$1 = { class: "opencode-session-title" };
|
|
505
|
-
var _hoisted_8
|
|
424
|
+
var _hoisted_8 = {
|
|
506
425
|
key: 0,
|
|
507
426
|
class: "opencode-thinking-loading"
|
|
508
427
|
};
|
|
509
|
-
var _hoisted_9
|
|
428
|
+
var _hoisted_9 = ["aria-label", "onClick"];
|
|
510
429
|
var _hoisted_10 = { class: "opencode-session-meta" };
|
|
511
|
-
function __vue_render__$
|
|
430
|
+
function __vue_render__$7(_ctx, _cache, $props, $setup, $data, $options) {
|
|
512
431
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)(["opencode-session-list", { collapsed: $setup.collapsed }]) }, [
|
|
513
432
|
(0, vue.createCommentVNode)(" Header "),
|
|
514
|
-
!$setup.showSkeleton ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$
|
|
433
|
+
!$setup.showSkeleton ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$5, [_cache[1] || (_cache[1] = (0, vue.createElementVNode)("span", { id: "opencode-session-list-title" }, "会话列表", -1)), (0, vue.createElementVNode)("button", {
|
|
515
434
|
class: "opencode-new-session-btn",
|
|
516
435
|
type: "button",
|
|
517
436
|
title: "新建会话",
|
|
@@ -519,12 +438,12 @@ function __vue_render__$3(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
519
438
|
onClick: _cache[0] || (_cache[0] = (...args) => $setup.handleCreateSession && $setup.handleCreateSession(...args))
|
|
520
439
|
}, " + ")])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createCommentVNode)(" Header Skeleton "), _cache[2] || (_cache[2] = (0, vue.createElementVNode)("div", { class: "opencode-session-header-skeleton visible" }, [(0, vue.createElementVNode)("div", { class: "opencode-skeleton-header-title" }), (0, vue.createElementVNode)("div", { class: "opencode-skeleton-header-btn" })], -1))], 2112)),
|
|
521
440
|
(0, vue.createCommentVNode)(" Content Skeleton "),
|
|
522
|
-
$setup.showSkeleton ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2$
|
|
441
|
+
$setup.showSkeleton ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2$3, [((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(5, (i) => {
|
|
523
442
|
return (0, vue.createElementVNode)("div", {
|
|
524
443
|
key: `skeleton-${i}`,
|
|
525
444
|
class: "opencode-skeleton-item"
|
|
526
445
|
}, [..._cache[3] || (_cache[3] = [(0, vue.createElementVNode)("div", { class: "opencode-skeleton-title" }, null, -1), (0, vue.createElementVNode)("div", { class: "opencode-skeleton-meta" }, null, -1)])]);
|
|
527
|
-
}), 64))])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 3 }, [(0, vue.createCommentVNode)(" Content "), (0, vue.createElementVNode)("div", _hoisted_3$
|
|
446
|
+
}), 64))])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 3 }, [(0, vue.createCommentVNode)(" Content "), (0, vue.createElementVNode)("div", _hoisted_3$3, [$setup.loadingSessionList ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4$3, [..._cache[4] || (_cache[4] = [(0, vue.createElementVNode)("div", { class: "opencode-loading-spinner small" }, null, -1)])])) : (0, vue.createCommentVNode)("v-if", true), $setup.sessions.length > 0 ? ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, (0, vue.renderList)($setup.sessions, (item) => {
|
|
528
447
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
|
|
529
448
|
key: item[$setup.sessionKey],
|
|
530
449
|
class: (0, vue.normalizeClass)(["opencode-session-item", {
|
|
@@ -534,17 +453,503 @@ function __vue_render__$3(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
534
453
|
role: "option",
|
|
535
454
|
"aria-selected": item.active,
|
|
536
455
|
onClick: ($event) => $setup.handleSelectSession(item)
|
|
537
|
-
}, [(0, vue.createElementVNode)("div", _hoisted_6$
|
|
456
|
+
}, [(0, vue.createElementVNode)("div", _hoisted_6$3, [(0, vue.createElementVNode)("div", _hoisted_7$1, [$setup.isSessionThinking(item.id) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_8)) : (0, vue.createCommentVNode)("v-if", true), (0, vue.createTextVNode)(" " + (0, vue.toDisplayString)(item.title), 1)]), (0, vue.createElementVNode)("button", {
|
|
538
457
|
class: "opencode-session-delete-btn",
|
|
539
458
|
type: "button",
|
|
540
459
|
"aria-label": `\u5220\u9664\u4F1A\u8BDD: ${item.title}`,
|
|
541
460
|
onClick: (0, vue.withModifiers)(($event) => $setup.handleDeleteSession(item), ["stop"])
|
|
542
|
-
}, " × ", 8, _hoisted_9
|
|
461
|
+
}, " × ", 8, _hoisted_9)]), (0, vue.createElementVNode)("div", _hoisted_10, (0, vue.toDisplayString)(item.meta), 1)], 10, _hoisted_5$3);
|
|
543
462
|
}), 128)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [(0, vue.createCommentVNode)(" Empty State "), (0, vue.renderSlot)(_ctx.$slots, "empty")], 64))])], 2112))
|
|
544
463
|
], 2);
|
|
545
464
|
}
|
|
465
|
+
__vue_sfc__$7.render = __vue_render__$7;
|
|
466
|
+
var SessionList_vue_default = __vue_sfc__$7;
|
|
467
|
+
//#endregion
|
|
468
|
+
//#region es/open-code-widget/src/components/SelectedNodes.vue.js
|
|
469
|
+
var __vue_sfc__$6 = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
470
|
+
__name: "SelectedNodes",
|
|
471
|
+
setup(__props, { expose: __expose }) {
|
|
472
|
+
__expose();
|
|
473
|
+
const { selectedElementItems: items, showClearAll, handleClickSelectedNode, handleRemoveSelectedNode, handleClearSelectedNodes } = useOpenCodeWidgetContext();
|
|
474
|
+
const __returned__ = {
|
|
475
|
+
items,
|
|
476
|
+
showClearAll,
|
|
477
|
+
handleClickSelectedNode,
|
|
478
|
+
handleRemoveSelectedNode,
|
|
479
|
+
handleClearSelectedNodes
|
|
480
|
+
};
|
|
481
|
+
Object.defineProperty(__returned__, "__isScriptSetup", {
|
|
482
|
+
enumerable: false,
|
|
483
|
+
value: true
|
|
484
|
+
});
|
|
485
|
+
return __returned__;
|
|
486
|
+
}
|
|
487
|
+
});
|
|
488
|
+
var _hoisted_1$4 = {
|
|
489
|
+
class: "opencode-selected-nodes",
|
|
490
|
+
role: "list",
|
|
491
|
+
"aria-label": "已选元素列表"
|
|
492
|
+
};
|
|
493
|
+
var _hoisted_2$2 = ["onClick"];
|
|
494
|
+
var _hoisted_3$2 = { class: "opencode-node-content" };
|
|
495
|
+
var _hoisted_4$2 = { class: "opencode-node-text" };
|
|
496
|
+
var _hoisted_5$2 = { class: "opencode-node-file" };
|
|
497
|
+
var _hoisted_6$2 = ["aria-label", "onClick"];
|
|
498
|
+
function __vue_render__$6(_ctx, _cache, $props, $setup, $data, $options) {
|
|
499
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)(["opencode-right-toolbar", { collapsed: $setup.items.length === 0 }]) }, [
|
|
500
|
+
_cache[1] || (_cache[1] = (0, vue.createElementVNode)("div", { class: "opencode-selected-nodes-header" }, [(0, vue.createElementVNode)("div", { class: "opencode-selected-nodes-title" }, "已选节点"), (0, vue.createElementVNode)("div", { class: "opencode-selected-nodes-desc" }, "选中的节点会在对话时一起发送给助手")], -1)),
|
|
501
|
+
(0, vue.createElementVNode)("div", _hoisted_1$4, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)($setup.items, (item, index) => {
|
|
502
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
|
|
503
|
+
key: item.key,
|
|
504
|
+
class: "opencode-selected-node",
|
|
505
|
+
role: "listitem",
|
|
506
|
+
onClick: ($event) => $setup.handleClickSelectedNode(item)
|
|
507
|
+
}, [(0, vue.createElementVNode)("div", _hoisted_3$2, [(0, vue.createElementVNode)("span", _hoisted_4$2, (0, vue.toDisplayString)(item.description), 1), (0, vue.createElementVNode)("span", _hoisted_5$2, (0, vue.toDisplayString)(item.panelFileText), 1)]), (0, vue.createElementVNode)("button", {
|
|
508
|
+
class: "opencode-node-remove",
|
|
509
|
+
type: "button",
|
|
510
|
+
"aria-label": `\u79FB\u9664\u5143\u7D20: ${item.description}`,
|
|
511
|
+
onClick: (0, vue.withModifiers)(($event) => $setup.handleRemoveSelectedNode({
|
|
512
|
+
item,
|
|
513
|
+
index,
|
|
514
|
+
source: "panel"
|
|
515
|
+
}), ["stop"])
|
|
516
|
+
}, " × ", 8, _hoisted_6$2)], 8, _hoisted_2$2);
|
|
517
|
+
}), 128))]),
|
|
518
|
+
$setup.showClearAll && $setup.items.length > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
|
|
519
|
+
key: 0,
|
|
520
|
+
class: "opencode-clear-all-btn",
|
|
521
|
+
type: "button",
|
|
522
|
+
"aria-label": "清空所有已选节点",
|
|
523
|
+
onClick: _cache[0] || (_cache[0] = (...args) => $setup.handleClearSelectedNodes && $setup.handleClearSelectedNodes(...args))
|
|
524
|
+
}, " 一键清空 ")) : (0, vue.createCommentVNode)("v-if", true)
|
|
525
|
+
], 2);
|
|
526
|
+
}
|
|
527
|
+
__vue_sfc__$6.render = __vue_render__$6;
|
|
528
|
+
var SelectedNodes_vue_default = __vue_sfc__$6;
|
|
529
|
+
//#endregion
|
|
530
|
+
//#region es/open-code-widget/src/components/ResizeHandle.vue.js
|
|
531
|
+
var __defProp$3 = Object.defineProperty;
|
|
532
|
+
var __defProps$3 = Object.defineProperties;
|
|
533
|
+
var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
|
|
534
|
+
var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
|
|
535
|
+
var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
|
|
536
|
+
var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
|
|
537
|
+
var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, {
|
|
538
|
+
enumerable: true,
|
|
539
|
+
configurable: true,
|
|
540
|
+
writable: true,
|
|
541
|
+
value
|
|
542
|
+
}) : obj[key] = value;
|
|
543
|
+
var __spreadValues$3 = (a, b) => {
|
|
544
|
+
for (var prop in b || (b = {})) if (__hasOwnProp$3.call(b, prop)) __defNormalProp$3(a, prop, b[prop]);
|
|
545
|
+
if (__getOwnPropSymbols$3) {
|
|
546
|
+
for (var prop of __getOwnPropSymbols$3(b)) if (__propIsEnum$3.call(b, prop)) __defNormalProp$3(a, prop, b[prop]);
|
|
547
|
+
}
|
|
548
|
+
return a;
|
|
549
|
+
};
|
|
550
|
+
var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
|
|
551
|
+
var __vue_sfc__$5 = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps$3(__spreadValues$3({}, { name: "ResizeHandle" }), {
|
|
552
|
+
__name: "ResizeHandle",
|
|
553
|
+
props: {
|
|
554
|
+
width: {
|
|
555
|
+
type: Number,
|
|
556
|
+
required: true,
|
|
557
|
+
default: 500
|
|
558
|
+
},
|
|
559
|
+
minWidth: {
|
|
560
|
+
type: Number,
|
|
561
|
+
required: false,
|
|
562
|
+
default: 400
|
|
563
|
+
},
|
|
564
|
+
maxWidth: {
|
|
565
|
+
type: Number,
|
|
566
|
+
required: false,
|
|
567
|
+
default: 800
|
|
568
|
+
}
|
|
569
|
+
},
|
|
570
|
+
emits: [
|
|
571
|
+
"resize",
|
|
572
|
+
"resize-start",
|
|
573
|
+
"resize-end"
|
|
574
|
+
],
|
|
575
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
576
|
+
__expose();
|
|
577
|
+
const props = __props;
|
|
578
|
+
const emit = __emit;
|
|
579
|
+
const isResizing = (0, vue.ref)(false);
|
|
580
|
+
const startX = (0, vue.ref)(0);
|
|
581
|
+
const startWidth = (0, vue.ref)(0);
|
|
582
|
+
const handleMouseDown = (e) => {
|
|
583
|
+
e.preventDefault();
|
|
584
|
+
isResizing.value = true;
|
|
585
|
+
startX.value = e.clientX;
|
|
586
|
+
startWidth.value = props.width;
|
|
587
|
+
emit("resize-start");
|
|
588
|
+
document.addEventListener("mousemove", handleMouseMove);
|
|
589
|
+
document.addEventListener("mouseup", handleMouseUp);
|
|
590
|
+
};
|
|
591
|
+
const handleMouseMove = (e) => {
|
|
592
|
+
if (!isResizing.value) return;
|
|
593
|
+
const deltaX = startX.value - e.clientX;
|
|
594
|
+
emit("resize", Math.max(props.minWidth, Math.min(props.maxWidth, startWidth.value + deltaX)));
|
|
595
|
+
};
|
|
596
|
+
const handleMouseUp = () => {
|
|
597
|
+
isResizing.value = false;
|
|
598
|
+
emit("resize-end");
|
|
599
|
+
document.removeEventListener("mousemove", handleMouseMove);
|
|
600
|
+
document.removeEventListener("mouseup", handleMouseUp);
|
|
601
|
+
};
|
|
602
|
+
const handleDoubleClick = () => {
|
|
603
|
+
emit("resize", 500);
|
|
604
|
+
};
|
|
605
|
+
(0, vue.onUnmounted)(() => {
|
|
606
|
+
document.removeEventListener("mousemove", handleMouseMove);
|
|
607
|
+
document.removeEventListener("mouseup", handleMouseUp);
|
|
608
|
+
});
|
|
609
|
+
const __returned__ = {
|
|
610
|
+
props,
|
|
611
|
+
emit,
|
|
612
|
+
isResizing,
|
|
613
|
+
startX,
|
|
614
|
+
startWidth,
|
|
615
|
+
handleMouseDown,
|
|
616
|
+
handleMouseMove,
|
|
617
|
+
handleMouseUp,
|
|
618
|
+
handleDoubleClick
|
|
619
|
+
};
|
|
620
|
+
Object.defineProperty(__returned__, "__isScriptSetup", {
|
|
621
|
+
enumerable: false,
|
|
622
|
+
value: true
|
|
623
|
+
});
|
|
624
|
+
return __returned__;
|
|
625
|
+
}
|
|
626
|
+
}));
|
|
627
|
+
function __vue_render__$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
628
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
|
|
629
|
+
class: (0, vue.normalizeClass)(["opencode-resize-handle", { resizing: $setup.isResizing }]),
|
|
630
|
+
onMousedown: $setup.handleMouseDown,
|
|
631
|
+
onDblclick: $setup.handleDoubleClick
|
|
632
|
+
}, null, 34);
|
|
633
|
+
}
|
|
634
|
+
__vue_sfc__$5.render = __vue_render__$5;
|
|
635
|
+
var ResizeHandle_vue_default = __vue_sfc__$5;
|
|
636
|
+
//#endregion
|
|
637
|
+
//#region es/open-code-widget/src/components/ChatPanel.vue.js
|
|
638
|
+
var __defProp$2 = Object.defineProperty;
|
|
639
|
+
var __defProps$2 = Object.defineProperties;
|
|
640
|
+
var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
|
|
641
|
+
var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
|
|
642
|
+
var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
|
|
643
|
+
var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
|
|
644
|
+
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, {
|
|
645
|
+
enumerable: true,
|
|
646
|
+
configurable: true,
|
|
647
|
+
writable: true,
|
|
648
|
+
value
|
|
649
|
+
}) : obj[key] = value;
|
|
650
|
+
var __spreadValues$2 = (a, b) => {
|
|
651
|
+
for (var prop in b || (b = {})) if (__hasOwnProp$2.call(b, prop)) __defNormalProp$2(a, prop, b[prop]);
|
|
652
|
+
if (__getOwnPropSymbols$2) {
|
|
653
|
+
for (var prop of __getOwnPropSymbols$2(b)) if (__propIsEnum$2.call(b, prop)) __defNormalProp$2(a, prop, b[prop]);
|
|
654
|
+
}
|
|
655
|
+
return a;
|
|
656
|
+
};
|
|
657
|
+
var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
|
|
658
|
+
var __vue_sfc__$4 = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps$2(__spreadValues$2({}, { name: "ChatPanel" }), {
|
|
659
|
+
__name: "ChatPanel",
|
|
660
|
+
props: {
|
|
661
|
+
mode: {
|
|
662
|
+
type: String,
|
|
663
|
+
required: false,
|
|
664
|
+
default: "bubble"
|
|
665
|
+
},
|
|
666
|
+
open: {
|
|
667
|
+
type: Boolean,
|
|
668
|
+
required: false,
|
|
669
|
+
default: false
|
|
670
|
+
},
|
|
671
|
+
minimized: {
|
|
672
|
+
type: Boolean,
|
|
673
|
+
required: false,
|
|
674
|
+
default: false
|
|
675
|
+
},
|
|
676
|
+
positionStyle: {
|
|
677
|
+
type: Object,
|
|
678
|
+
required: false,
|
|
679
|
+
default: () => ({})
|
|
680
|
+
},
|
|
681
|
+
animationOrigin: {
|
|
682
|
+
type: Object,
|
|
683
|
+
required: false,
|
|
684
|
+
default: () => ({
|
|
685
|
+
x: "20px",
|
|
686
|
+
y: "20px"
|
|
687
|
+
})
|
|
688
|
+
},
|
|
689
|
+
panelWidth: {
|
|
690
|
+
type: Number,
|
|
691
|
+
required: false,
|
|
692
|
+
default: 500
|
|
693
|
+
},
|
|
694
|
+
resizable: {
|
|
695
|
+
type: Boolean,
|
|
696
|
+
required: false,
|
|
697
|
+
default: true
|
|
698
|
+
},
|
|
699
|
+
minWidth: {
|
|
700
|
+
type: Number,
|
|
701
|
+
required: false,
|
|
702
|
+
default: 400
|
|
703
|
+
},
|
|
704
|
+
maxWidth: {
|
|
705
|
+
type: Number,
|
|
706
|
+
required: false,
|
|
707
|
+
default: 800
|
|
708
|
+
},
|
|
709
|
+
noTransition: {
|
|
710
|
+
type: Boolean,
|
|
711
|
+
required: false,
|
|
712
|
+
default: false
|
|
713
|
+
},
|
|
714
|
+
dragging: {
|
|
715
|
+
type: Boolean,
|
|
716
|
+
required: false,
|
|
717
|
+
default: false
|
|
718
|
+
},
|
|
719
|
+
notificationVisible: {
|
|
720
|
+
type: Boolean,
|
|
721
|
+
required: false,
|
|
722
|
+
default: false
|
|
723
|
+
},
|
|
724
|
+
notificationMessage: {
|
|
725
|
+
type: String,
|
|
726
|
+
required: false,
|
|
727
|
+
default: ""
|
|
728
|
+
},
|
|
729
|
+
notificationMode: {
|
|
730
|
+
type: String,
|
|
731
|
+
required: false,
|
|
732
|
+
default: "widget"
|
|
733
|
+
},
|
|
734
|
+
thinking: {
|
|
735
|
+
type: Boolean,
|
|
736
|
+
required: false,
|
|
737
|
+
default: false
|
|
738
|
+
},
|
|
739
|
+
resolvedTheme: {
|
|
740
|
+
type: String,
|
|
741
|
+
required: false,
|
|
742
|
+
default: "light"
|
|
743
|
+
}
|
|
744
|
+
},
|
|
745
|
+
emits: [
|
|
746
|
+
"resize",
|
|
747
|
+
"resize-start",
|
|
748
|
+
"resize-end",
|
|
749
|
+
"toggle"
|
|
750
|
+
],
|
|
751
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
752
|
+
(0, vue.useCssVars)((_ctx) => ({
|
|
753
|
+
"-animationOrigin.x": _ctx.animationOrigin.x,
|
|
754
|
+
"-animationOrigin.y": _ctx.animationOrigin.y
|
|
755
|
+
}));
|
|
756
|
+
const props = __props;
|
|
757
|
+
const emit = __emit;
|
|
758
|
+
const slots = (0, vue.useSlots)();
|
|
759
|
+
const frameRef = (0, vue.ref)(null);
|
|
760
|
+
const sendMessageToIframe = (type, data) => {
|
|
761
|
+
var _a;
|
|
762
|
+
(_a = frameRef.value) == null || _a.sendMessageToIframe(type, data);
|
|
763
|
+
};
|
|
764
|
+
__expose({
|
|
765
|
+
sendMessageToIframe,
|
|
766
|
+
frameRef
|
|
767
|
+
});
|
|
768
|
+
const handleResizeStart = () => {
|
|
769
|
+
emit("resize-start");
|
|
770
|
+
};
|
|
771
|
+
const handleResize = (width) => {
|
|
772
|
+
emit("resize", width);
|
|
773
|
+
};
|
|
774
|
+
const handleResizeEnd = () => {
|
|
775
|
+
emit("resize-end");
|
|
776
|
+
};
|
|
777
|
+
const handleToggle = () => {
|
|
778
|
+
emit("toggle");
|
|
779
|
+
};
|
|
780
|
+
const __returned__ = {
|
|
781
|
+
props,
|
|
782
|
+
emit,
|
|
783
|
+
slots,
|
|
784
|
+
frameRef,
|
|
785
|
+
sendMessageToIframe,
|
|
786
|
+
handleResizeStart,
|
|
787
|
+
handleResize,
|
|
788
|
+
handleResizeEnd,
|
|
789
|
+
handleToggle,
|
|
790
|
+
panelStyle: (0, vue.computed)(() => {
|
|
791
|
+
if (props.mode === "split") return { width: `${props.panelWidth}px` };
|
|
792
|
+
return props.positionStyle;
|
|
793
|
+
}),
|
|
794
|
+
panelClasses: (0, vue.computed)(() => ["opencode-chat", {
|
|
795
|
+
open: props.open,
|
|
796
|
+
minimized: props.minimized,
|
|
797
|
+
dragging: props.dragging,
|
|
798
|
+
"no-transition": props.noTransition,
|
|
799
|
+
"split-mode": props.mode === "split"
|
|
800
|
+
}]),
|
|
801
|
+
Frame: Frame_vue_default,
|
|
802
|
+
Header: Header_vue_default,
|
|
803
|
+
SessionList: SessionList_vue_default,
|
|
804
|
+
SelectedNodes: SelectedNodes_vue_default,
|
|
805
|
+
ResizeHandle: ResizeHandle_vue_default
|
|
806
|
+
};
|
|
807
|
+
Object.defineProperty(__returned__, "__isScriptSetup", {
|
|
808
|
+
enumerable: false,
|
|
809
|
+
value: true
|
|
810
|
+
});
|
|
811
|
+
return __returned__;
|
|
812
|
+
}
|
|
813
|
+
}));
|
|
814
|
+
var _hoisted_1$3 = ["aria-expanded"];
|
|
815
|
+
var _hoisted_2$1 = { class: "opencode-split-toggle-icon" };
|
|
816
|
+
var _hoisted_3$1 = {
|
|
817
|
+
key: 0,
|
|
818
|
+
viewBox: "0 0 24 24",
|
|
819
|
+
width: "16",
|
|
820
|
+
height: "16",
|
|
821
|
+
fill: "none",
|
|
822
|
+
stroke: "currentColor",
|
|
823
|
+
"stroke-width": "2"
|
|
824
|
+
};
|
|
825
|
+
var _hoisted_4$1 = {
|
|
826
|
+
key: 1,
|
|
827
|
+
viewBox: "0 0 24 24",
|
|
828
|
+
width: "16",
|
|
829
|
+
height: "16",
|
|
830
|
+
fill: "none",
|
|
831
|
+
stroke: "currentColor",
|
|
832
|
+
"stroke-width": "2"
|
|
833
|
+
};
|
|
834
|
+
var _hoisted_5$1 = {
|
|
835
|
+
key: 2,
|
|
836
|
+
class: "opencode-notification",
|
|
837
|
+
role: "alert"
|
|
838
|
+
};
|
|
839
|
+
var _hoisted_6$1 = { class: "opencode-chat-content" };
|
|
840
|
+
function __vue_render__$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
841
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
|
|
842
|
+
class: (0, vue.normalizeClass)($setup.panelClasses),
|
|
843
|
+
style: (0, vue.normalizeStyle)($setup.panelStyle)
|
|
844
|
+
}, [
|
|
845
|
+
$props.mode === "split" && $props.resizable && $props.open ? ((0, vue.openBlock)(), (0, vue.createBlock)($setup["ResizeHandle"], {
|
|
846
|
+
key: 0,
|
|
847
|
+
width: $props.panelWidth,
|
|
848
|
+
"min-width": $props.minWidth,
|
|
849
|
+
"max-width": $props.maxWidth,
|
|
850
|
+
onResize: $setup.handleResize,
|
|
851
|
+
onResizeStart: $setup.handleResizeStart,
|
|
852
|
+
onResizeEnd: $setup.handleResizeEnd
|
|
853
|
+
}, null, 8, [
|
|
854
|
+
"width",
|
|
855
|
+
"min-width",
|
|
856
|
+
"max-width"
|
|
857
|
+
])) : (0, vue.createCommentVNode)("v-if", true),
|
|
858
|
+
$props.mode === "split" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
|
|
859
|
+
key: 1,
|
|
860
|
+
type: "button",
|
|
861
|
+
class: (0, vue.normalizeClass)(["opencode-split-toggle-btn", {
|
|
862
|
+
open: $setup.props.open,
|
|
863
|
+
thinking: $setup.props.thinking,
|
|
864
|
+
"opencode-theme-dark": $props.resolvedTheme === "dark"
|
|
865
|
+
}]),
|
|
866
|
+
"aria-expanded": $props.open,
|
|
867
|
+
"aria-label": "切换面板",
|
|
868
|
+
onClick: $setup.handleToggle
|
|
869
|
+
}, [(0, vue.createElementVNode)("span", _hoisted_2$1, [$props.open ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_3$1, [..._cache[0] || (_cache[0] = [(0, vue.createElementVNode)("path", {
|
|
870
|
+
d: "M9 18l6-6-6-6",
|
|
871
|
+
"stroke-linecap": "round",
|
|
872
|
+
"stroke-linejoin": "round"
|
|
873
|
+
}, null, -1)])])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_4$1, [..._cache[1] || (_cache[1] = [(0, vue.createElementVNode)("path", {
|
|
874
|
+
d: "M15 18l-6-6 6-6",
|
|
875
|
+
"stroke-linecap": "round",
|
|
876
|
+
"stroke-linejoin": "round"
|
|
877
|
+
}, null, -1)])]))])], 10, _hoisted_1$3)) : (0, vue.createCommentVNode)("v-if", true),
|
|
878
|
+
(0, vue.createVNode)($setup["Header"], null, (0, vue.createSlots)({ _: 2 }, [
|
|
879
|
+
$setup.slots["session-toggle-icon"] ? {
|
|
880
|
+
name: "session-toggle-icon",
|
|
881
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "session-toggle-icon")]),
|
|
882
|
+
key: "0"
|
|
883
|
+
} : void 0,
|
|
884
|
+
$setup.slots["select-icon"] ? {
|
|
885
|
+
name: "select-icon",
|
|
886
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "select-icon")]),
|
|
887
|
+
key: "1"
|
|
888
|
+
} : void 0,
|
|
889
|
+
$setup.slots["close-icon"] ? {
|
|
890
|
+
name: "close-icon",
|
|
891
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "close-icon")]),
|
|
892
|
+
key: "2"
|
|
893
|
+
} : void 0
|
|
894
|
+
]), 1024),
|
|
895
|
+
$props.notificationVisible && $props.notificationMode === "widget" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_5$1, (0, vue.toDisplayString)($props.notificationMessage), 1)) : (0, vue.createCommentVNode)("v-if", true),
|
|
896
|
+
(0, vue.createElementVNode)("div", _hoisted_6$1, [
|
|
897
|
+
(0, vue.createVNode)($setup["SessionList"], null, {
|
|
898
|
+
empty: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "sessions-empty", {}, () => [_cache[2] || (_cache[2] = (0, vue.createElementVNode)("div", { class: "opencode-session-empty" }, "暂无会话", -1))])]),
|
|
899
|
+
_: 3
|
|
900
|
+
}),
|
|
901
|
+
(0, vue.createVNode)($setup["Frame"], { ref: "frameRef" }, (0, vue.createSlots)({ _: 2 }, [
|
|
902
|
+
$setup.slots["empty-state"] ? {
|
|
903
|
+
name: "empty-state",
|
|
904
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "empty-state")]),
|
|
905
|
+
key: "0"
|
|
906
|
+
} : void 0,
|
|
907
|
+
$setup.slots.loading ? {
|
|
908
|
+
name: "loading",
|
|
909
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "loading")]),
|
|
910
|
+
key: "1"
|
|
911
|
+
} : void 0,
|
|
912
|
+
$setup.slots.error ? {
|
|
913
|
+
name: "error",
|
|
914
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "error")]),
|
|
915
|
+
key: "2"
|
|
916
|
+
} : void 0,
|
|
917
|
+
$setup.slots.content ? {
|
|
918
|
+
name: "content",
|
|
919
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "content")]),
|
|
920
|
+
key: "3"
|
|
921
|
+
} : void 0
|
|
922
|
+
]), 1536),
|
|
923
|
+
(0, vue.createVNode)($setup["SelectedNodes"])
|
|
924
|
+
])
|
|
925
|
+
], 6);
|
|
926
|
+
}
|
|
927
|
+
__vue_sfc__$4.render = __vue_render__$4;
|
|
928
|
+
var ChatPanel_vue_default = __vue_sfc__$4;
|
|
929
|
+
//#endregion
|
|
930
|
+
//#region es/open-code-widget/src/components/SelectHint.vue.js
|
|
931
|
+
var __vue_sfc__$3 = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
932
|
+
__name: "SelectHint",
|
|
933
|
+
setup(__props, { expose: __expose }) {
|
|
934
|
+
__expose();
|
|
935
|
+
const { selectMode: visible, selectShortcutLabel: shortcutLabel } = useOpenCodeWidgetContext();
|
|
936
|
+
const __returned__ = {
|
|
937
|
+
visible,
|
|
938
|
+
shortcutLabel
|
|
939
|
+
};
|
|
940
|
+
Object.defineProperty(__returned__, "__isScriptSetup", {
|
|
941
|
+
enumerable: false,
|
|
942
|
+
value: true
|
|
943
|
+
});
|
|
944
|
+
return __returned__;
|
|
945
|
+
}
|
|
946
|
+
});
|
|
947
|
+
var _hoisted_1$2 = { class: "opencode-hint-shortcut" };
|
|
948
|
+
function __vue_render__$3(_ctx, _cache, $props, $setup, $data, $options) {
|
|
949
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)(["opencode-select-mode-hint", { visible: $setup.visible }]) }, [_cache[0] || (_cache[0] = (0, vue.createElementVNode)("span", null, "🎯 选择模式已开启 - 点击元素进行选择", -1)), (0, vue.createElementVNode)("span", _hoisted_1$2, (0, vue.toDisplayString)($setup.shortcutLabel), 1)], 2);
|
|
950
|
+
}
|
|
546
951
|
__vue_sfc__$3.render = __vue_render__$3;
|
|
547
|
-
var
|
|
952
|
+
var SelectHint_vue_default = __vue_sfc__$3;
|
|
548
953
|
//#endregion
|
|
549
954
|
//#region es/open-code-widget/src/components/FloatingBubble/FloatingBubble.vue.js
|
|
550
955
|
var __defProp$1 = Object.defineProperty;
|
|
@@ -1579,27 +1984,33 @@ function usePersistState(options) {
|
|
|
1579
1984
|
if (options.onRestore) options.onRestore(saved || {});
|
|
1580
1985
|
return saved;
|
|
1581
1986
|
};
|
|
1582
|
-
const getCurrentState = () =>
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1987
|
+
const getCurrentState = () => {
|
|
1988
|
+
var _a;
|
|
1989
|
+
return {
|
|
1990
|
+
open: options.open.value,
|
|
1991
|
+
minimized: options.minimized.value,
|
|
1992
|
+
promptDockVisible: options.promptDockVisible.value,
|
|
1993
|
+
bubbleOffset: options.bubbleOffset.value,
|
|
1994
|
+
theme: options.theme.value,
|
|
1995
|
+
sessionListCollapsed: options.sessionListCollapsed.value,
|
|
1996
|
+
splitPanelWidth: (_a = options.splitPanelWidth) == null ? void 0 : _a.value
|
|
1997
|
+
};
|
|
1998
|
+
};
|
|
1590
1999
|
const persistState = () => {
|
|
1591
2000
|
saveState(getCurrentState());
|
|
1592
2001
|
};
|
|
2002
|
+
const watchers = [
|
|
2003
|
+
options.open,
|
|
2004
|
+
options.minimized,
|
|
2005
|
+
options.promptDockVisible,
|
|
2006
|
+
options.bubbleOffset,
|
|
2007
|
+
options.theme,
|
|
2008
|
+
options.sessionListCollapsed
|
|
2009
|
+
];
|
|
2010
|
+
if (options.splitPanelWidth) watchers.push(options.splitPanelWidth);
|
|
1593
2011
|
(0, vue.onMounted)(() => {
|
|
1594
2012
|
restoreState();
|
|
1595
|
-
(0, vue.watch)(
|
|
1596
|
-
options.open,
|
|
1597
|
-
options.minimized,
|
|
1598
|
-
options.promptDockVisible,
|
|
1599
|
-
options.bubbleOffset,
|
|
1600
|
-
options.theme,
|
|
1601
|
-
options.sessionListCollapsed
|
|
1602
|
-
], () => {
|
|
2013
|
+
(0, vue.watch)(watchers, () => {
|
|
1603
2014
|
persistState();
|
|
1604
2015
|
}, { deep: true });
|
|
1605
2016
|
});
|
|
@@ -1609,6 +2020,85 @@ function usePersistState(options) {
|
|
|
1609
2020
|
};
|
|
1610
2021
|
}
|
|
1611
2022
|
//#endregion
|
|
2023
|
+
//#region es/open-code-widget/composables/use-split.js
|
|
2024
|
+
var AUTO_MODE_THRESHOLD = 1440;
|
|
2025
|
+
function useSplitMode(options) {
|
|
2026
|
+
const windowWidth = (0, vue.ref)(typeof window !== "undefined" ? window.innerWidth : 0);
|
|
2027
|
+
const splitConfig = (0, vue.computed)(() => {
|
|
2028
|
+
var _a, _b, _c, _d, _e, _f;
|
|
2029
|
+
const config = options.splitMode.value || {};
|
|
2030
|
+
return {
|
|
2031
|
+
width: (_a = config.width) != null ? _a : 500,
|
|
2032
|
+
minWidth: (_b = config.minWidth) != null ? _b : 400,
|
|
2033
|
+
maxWidth: (_c = config.maxWidth) != null ? _c : 800,
|
|
2034
|
+
resizable: (_d = config.resizable) != null ? _d : true,
|
|
2035
|
+
shrinkPage: (_e = config.shrinkPage) != null ? _e : true,
|
|
2036
|
+
defaultOpen: (_f = config.defaultOpen) != null ? _f : true
|
|
2037
|
+
};
|
|
2038
|
+
});
|
|
2039
|
+
const panelWidth = (0, vue.ref)(splitConfig.value.width);
|
|
2040
|
+
const effectiveMode = (0, vue.computed)(() => {
|
|
2041
|
+
if (options.displayMode.value === "bubble") return "bubble";
|
|
2042
|
+
if (options.displayMode.value === "split") return "split";
|
|
2043
|
+
return windowWidth.value >= AUTO_MODE_THRESHOLD ? "split" : "bubble";
|
|
2044
|
+
});
|
|
2045
|
+
const isSplitMode = (0, vue.computed)(() => effectiveMode.value === "split");
|
|
2046
|
+
const handleResize = (width) => {
|
|
2047
|
+
var _a;
|
|
2048
|
+
panelWidth.value = width;
|
|
2049
|
+
(_a = options.onWidthChange) == null || _a.call(options, width);
|
|
2050
|
+
};
|
|
2051
|
+
const handleToggle = () => {
|
|
2052
|
+
var _a;
|
|
2053
|
+
const nextOpen = !options.open.value;
|
|
2054
|
+
(_a = options.onOpenChange) == null || _a.call(options, nextOpen);
|
|
2055
|
+
};
|
|
2056
|
+
const handleWindowResize = () => {
|
|
2057
|
+
if (typeof window !== "undefined") windowWidth.value = window.innerWidth;
|
|
2058
|
+
};
|
|
2059
|
+
const updateBodyClass = () => {
|
|
2060
|
+
if (typeof document === "undefined") return;
|
|
2061
|
+
if (isSplitMode.value && options.open.value && splitConfig.value.shrinkPage) {
|
|
2062
|
+
document.body.classList.add("has-opencode-split");
|
|
2063
|
+
document.body.style.setProperty("--opencode-split-width", `${panelWidth.value}px`);
|
|
2064
|
+
} else {
|
|
2065
|
+
document.body.classList.remove("has-opencode-split");
|
|
2066
|
+
document.body.style.removeProperty("--opencode-split-width");
|
|
2067
|
+
}
|
|
2068
|
+
};
|
|
2069
|
+
(0, vue.watch)([
|
|
2070
|
+
isSplitMode,
|
|
2071
|
+
options.open,
|
|
2072
|
+
panelWidth
|
|
2073
|
+
], updateBodyClass, { immediate: true });
|
|
2074
|
+
(0, vue.watch)(splitConfig, (config) => {
|
|
2075
|
+
if (panelWidth.value < config.minWidth) panelWidth.value = config.minWidth;
|
|
2076
|
+
if (panelWidth.value > config.maxWidth) panelWidth.value = config.maxWidth;
|
|
2077
|
+
});
|
|
2078
|
+
(0, vue.onMounted)(() => {
|
|
2079
|
+
var _a;
|
|
2080
|
+
if (typeof window !== "undefined") {
|
|
2081
|
+
window.addEventListener("resize", handleWindowResize);
|
|
2082
|
+
if (isSplitMode.value && splitConfig.value.defaultOpen && !options.open.value) (_a = options.onOpenChange) == null || _a.call(options, true);
|
|
2083
|
+
}
|
|
2084
|
+
});
|
|
2085
|
+
(0, vue.onUnmounted)(() => {
|
|
2086
|
+
if (typeof window !== "undefined") {
|
|
2087
|
+
window.removeEventListener("resize", handleWindowResize);
|
|
2088
|
+
document.body.classList.remove("has-opencode-split");
|
|
2089
|
+
document.body.style.removeProperty("--opencode-split-width");
|
|
2090
|
+
}
|
|
2091
|
+
});
|
|
2092
|
+
return {
|
|
2093
|
+
effectiveMode,
|
|
2094
|
+
isSplitMode,
|
|
2095
|
+
panelWidth,
|
|
2096
|
+
splitConfig,
|
|
2097
|
+
handleResize,
|
|
2098
|
+
handleToggle
|
|
2099
|
+
};
|
|
2100
|
+
}
|
|
2101
|
+
//#endregion
|
|
1612
2102
|
//#region es/open-code-widget/src/index.vue.js
|
|
1613
2103
|
var __defProp = Object.defineProperty;
|
|
1614
2104
|
var __defProps = Object.defineProperties;
|
|
@@ -1745,6 +2235,21 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
1745
2235
|
sessionStates: {
|
|
1746
2236
|
type: Object,
|
|
1747
2237
|
required: false
|
|
2238
|
+
},
|
|
2239
|
+
displayMode: {
|
|
2240
|
+
type: String,
|
|
2241
|
+
required: false,
|
|
2242
|
+
default: "bubble"
|
|
2243
|
+
},
|
|
2244
|
+
splitMode: {
|
|
2245
|
+
type: Object,
|
|
2246
|
+
required: false,
|
|
2247
|
+
default: void 0
|
|
2248
|
+
},
|
|
2249
|
+
splitPanelWidth: {
|
|
2250
|
+
type: Number,
|
|
2251
|
+
required: false,
|
|
2252
|
+
default: 500
|
|
1748
2253
|
}
|
|
1749
2254
|
},
|
|
1750
2255
|
emits: [
|
|
@@ -1755,6 +2260,7 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
1755
2260
|
"update:selectedElements",
|
|
1756
2261
|
"update:theme",
|
|
1757
2262
|
"update:thinking",
|
|
2263
|
+
"update:splitPanelWidth",
|
|
1758
2264
|
"toggle",
|
|
1759
2265
|
"close",
|
|
1760
2266
|
"toggle-session-list",
|
|
@@ -1768,7 +2274,8 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
1768
2274
|
"clear-selected-nodes",
|
|
1769
2275
|
"empty-action",
|
|
1770
2276
|
"frame-loaded",
|
|
1771
|
-
"thinking-change"
|
|
2277
|
+
"thinking-change",
|
|
2278
|
+
"split-panel-width-change"
|
|
1772
2279
|
],
|
|
1773
2280
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
1774
2281
|
(0, vue.useCssVars)((_ctx) => ({
|
|
@@ -1821,6 +2328,7 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
1821
2328
|
const promptDockVisible = (0, vue.ref)(true);
|
|
1822
2329
|
const isRestoring = (0, vue.ref)(true);
|
|
1823
2330
|
const iframeLoaded = (0, vue.ref)(false);
|
|
2331
|
+
const splitPanelWidth = (0, vue.ref)(props.splitPanelWidth);
|
|
1824
2332
|
const syncStateToIframe = () => {
|
|
1825
2333
|
if (!iframeLoaded.value) return;
|
|
1826
2334
|
sendMessageToIframe("prompt-dock-visibility-change", { visible: promptDockVisible.value });
|
|
@@ -1839,6 +2347,9 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
1839
2347
|
(0, vue.watch)(() => props.sessionListCollapsed, (val) => {
|
|
1840
2348
|
localSessionListCollapsed.value = val;
|
|
1841
2349
|
});
|
|
2350
|
+
(0, vue.watch)(() => props.splitPanelWidth, (val) => {
|
|
2351
|
+
splitPanelWidth.value = val;
|
|
2352
|
+
});
|
|
1842
2353
|
const { buttonActive, containerClasses, iframeSource, sessionListTitle, resolvedTheme, handleClose, handleEmptyAction, handleToggle, handleToggleSessionList, handleToggleTheme } = useWidget({
|
|
1843
2354
|
theme: (0, vue.toRef)(props, "theme"),
|
|
1844
2355
|
open: (0, vue.toRef)(props, "open"),
|
|
@@ -1911,6 +2422,20 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
1911
2422
|
}
|
|
1912
2423
|
});
|
|
1913
2424
|
const bubbleOffset = (0, vue.ref)(void 0);
|
|
2425
|
+
const { effectiveMode, isSplitMode, panelWidth, splitConfig, handleResize, handleToggle: handleSplitToggle } = useSplitMode({
|
|
2426
|
+
displayMode: (0, vue.toRef)(props, "displayMode"),
|
|
2427
|
+
splitMode: (0, vue.toRef)(props, "splitMode"),
|
|
2428
|
+
open: (0, vue.toRef)(props, "open"),
|
|
2429
|
+
onOpenChange: (nextOpen) => {
|
|
2430
|
+
emit("update:open", nextOpen);
|
|
2431
|
+
emit("toggle", nextOpen);
|
|
2432
|
+
},
|
|
2433
|
+
onWidthChange: (width) => {
|
|
2434
|
+
splitPanelWidth.value = width;
|
|
2435
|
+
emit("update:splitPanelWidth", width);
|
|
2436
|
+
emit("split-panel-width-change", width);
|
|
2437
|
+
}
|
|
2438
|
+
});
|
|
1914
2439
|
usePersistState({
|
|
1915
2440
|
open: (0, vue.toRef)(props, "open"),
|
|
1916
2441
|
minimized,
|
|
@@ -1918,6 +2443,7 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
1918
2443
|
bubbleOffset,
|
|
1919
2444
|
theme: (0, vue.toRef)(props, "theme"),
|
|
1920
2445
|
sessionListCollapsed: localSessionListCollapsed,
|
|
2446
|
+
splitPanelWidth,
|
|
1921
2447
|
onRestore: (state) => {
|
|
1922
2448
|
if (state.open !== void 0 && state.open !== props.open) {
|
|
1923
2449
|
emit("update:open", state.open);
|
|
@@ -2034,6 +2560,12 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
2034
2560
|
const handleBubbleOffsetChange = (offset) => {
|
|
2035
2561
|
bubbleOffset.value = offset;
|
|
2036
2562
|
};
|
|
2563
|
+
const handleResizeStart = () => {
|
|
2564
|
+
isDragging.value = true;
|
|
2565
|
+
};
|
|
2566
|
+
const handleResizeEnd = () => {
|
|
2567
|
+
isDragging.value = false;
|
|
2568
|
+
};
|
|
2037
2569
|
const chatAnimationOrigin = (0, vue.computed)(() => {
|
|
2038
2570
|
switch (bubbleQuadrant.value) {
|
|
2039
2571
|
case "top-left": return {
|
|
@@ -2088,6 +2620,7 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
2088
2620
|
minimized,
|
|
2089
2621
|
promptDockVisible,
|
|
2090
2622
|
bubbleOffset,
|
|
2623
|
+
mode: effectiveMode,
|
|
2091
2624
|
sessionStates: (0, vue.computed)(() => {
|
|
2092
2625
|
var _a;
|
|
2093
2626
|
return (_a = props.sessionStates) != null ? _a : {};
|
|
@@ -2149,6 +2682,7 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
2149
2682
|
promptDockVisible,
|
|
2150
2683
|
isRestoring,
|
|
2151
2684
|
iframeLoaded,
|
|
2685
|
+
splitPanelWidth,
|
|
2152
2686
|
syncStateToIframe,
|
|
2153
2687
|
handleFrameLoaded,
|
|
2154
2688
|
buttonActive,
|
|
@@ -2178,6 +2712,12 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
2178
2712
|
tooltipStyle,
|
|
2179
2713
|
tooltipContent,
|
|
2180
2714
|
bubbleOffset,
|
|
2715
|
+
effectiveMode,
|
|
2716
|
+
isSplitMode,
|
|
2717
|
+
panelWidth,
|
|
2718
|
+
splitConfig,
|
|
2719
|
+
handleResize,
|
|
2720
|
+
handleSplitToggle,
|
|
2181
2721
|
handleToggleMinimize,
|
|
2182
2722
|
handleTogglePromptDock,
|
|
2183
2723
|
windowWidth,
|
|
@@ -2187,6 +2727,8 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
2187
2727
|
isBubbleOnRightSide,
|
|
2188
2728
|
chatPositionStyle,
|
|
2189
2729
|
handleBubbleOffsetChange,
|
|
2730
|
+
handleResizeStart,
|
|
2731
|
+
handleResizeEnd,
|
|
2190
2732
|
chatAnimationOrigin,
|
|
2191
2733
|
isDragging,
|
|
2192
2734
|
get wasOpenBeforeDrag() {
|
|
@@ -2197,11 +2739,8 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
2197
2739
|
},
|
|
2198
2740
|
handleDragStart,
|
|
2199
2741
|
handleDragEnd,
|
|
2200
|
-
|
|
2201
|
-
Header: Header_vue_default,
|
|
2742
|
+
ChatPanel: ChatPanel_vue_default,
|
|
2202
2743
|
SelectHint: SelectHint_vue_default,
|
|
2203
|
-
SelectedNodes: SelectedNodes_vue_default,
|
|
2204
|
-
SessionList: SessionList_vue_default,
|
|
2205
2744
|
Trigger: Trigger_vue_default
|
|
2206
2745
|
};
|
|
2207
2746
|
Object.defineProperty(__returned__, "__isScriptSetup", {
|
|
@@ -2211,33 +2750,28 @@ var __vue_sfc__ = /* @__PURE__ */ (0, vue.defineComponent)(__spreadProps(__sprea
|
|
|
2211
2750
|
return __returned__;
|
|
2212
2751
|
}
|
|
2213
2752
|
}));
|
|
2214
|
-
var _hoisted_1 = {
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
};
|
|
2219
|
-
var _hoisted_2 = { class: "opencode-chat-content" };
|
|
2220
|
-
var _hoisted_3 = { class: "opencode-tooltip-tag" };
|
|
2221
|
-
var _hoisted_4 = { class: "opencode-tooltip-file" };
|
|
2222
|
-
var _hoisted_5 = {
|
|
2223
|
-
key: 0,
|
|
2753
|
+
var _hoisted_1 = { class: "opencode-tooltip-tag" };
|
|
2754
|
+
var _hoisted_2 = { class: "opencode-tooltip-file" };
|
|
2755
|
+
var _hoisted_3 = {
|
|
2756
|
+
key: 1,
|
|
2224
2757
|
class: "opencode-dialog-overlay"
|
|
2225
2758
|
};
|
|
2226
|
-
var
|
|
2759
|
+
var _hoisted_4 = {
|
|
2227
2760
|
class: "opencode-dialog",
|
|
2228
2761
|
role: "alertdialog",
|
|
2229
2762
|
"aria-modal": "true"
|
|
2230
2763
|
};
|
|
2231
|
-
var
|
|
2232
|
-
var
|
|
2233
|
-
var
|
|
2764
|
+
var _hoisted_5 = { class: "opencode-dialog-content" };
|
|
2765
|
+
var _hoisted_6 = { class: "opencode-dialog-message" };
|
|
2766
|
+
var _hoisted_7 = {
|
|
2234
2767
|
key: 0,
|
|
2235
2768
|
class: "opencode-page-notification",
|
|
2236
2769
|
role: "alert"
|
|
2237
2770
|
};
|
|
2238
2771
|
function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
2239
2772
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)($setup.containerClasses) }, [
|
|
2240
|
-
(0, vue.
|
|
2773
|
+
!$setup.isSplitMode ? ((0, vue.openBlock)(), (0, vue.createBlock)($setup["Trigger"], {
|
|
2774
|
+
key: 0,
|
|
2241
2775
|
ref: "triggerRef",
|
|
2242
2776
|
onDragStart: $setup.handleDragStart,
|
|
2243
2777
|
onDragEnd: $setup.handleDragEnd
|
|
@@ -2245,64 +2779,88 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
2245
2779
|
name: "default",
|
|
2246
2780
|
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "button-icon")]),
|
|
2247
2781
|
key: "0"
|
|
2248
|
-
} : void 0]), 1536),
|
|
2249
|
-
(0, vue.
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2782
|
+
} : void 0]), 1536)) : (0, vue.createCommentVNode)("v-if", true),
|
|
2783
|
+
(0, vue.createVNode)($setup["ChatPanel"], {
|
|
2784
|
+
ref: "frameRef",
|
|
2785
|
+
mode: $setup.effectiveMode,
|
|
2786
|
+
open: $props.open,
|
|
2787
|
+
minimized: $setup.minimized,
|
|
2788
|
+
"position-style": $setup.chatPositionStyle,
|
|
2789
|
+
"animation-origin": $setup.chatAnimationOrigin,
|
|
2790
|
+
"panel-width": $setup.panelWidth,
|
|
2791
|
+
resizable: $setup.splitConfig.resizable,
|
|
2792
|
+
"min-width": $setup.splitConfig.minWidth,
|
|
2793
|
+
"max-width": $setup.splitConfig.maxWidth,
|
|
2794
|
+
"no-transition": $setup.isRestoring,
|
|
2795
|
+
dragging: $setup.isDragging,
|
|
2796
|
+
"notification-visible": $setup.notificationVisible,
|
|
2797
|
+
"notification-message": $setup.notificationMessage,
|
|
2798
|
+
"notification-mode": $setup.notificationMode,
|
|
2799
|
+
thinking: $props.thinking,
|
|
2800
|
+
"resolved-theme": $setup.resolvedTheme,
|
|
2801
|
+
onResize: $setup.handleResize,
|
|
2802
|
+
onResizeStart: $setup.handleResizeStart,
|
|
2803
|
+
onResizeEnd: $setup.handleResizeEnd,
|
|
2804
|
+
onToggle: $setup.handleSplitToggle
|
|
2805
|
+
}, (0, vue.createSlots)({
|
|
2806
|
+
"sessions-empty": (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "sessions-empty", {}, () => [_cache[0] || (_cache[0] = (0, vue.createElementVNode)("div", { class: "opencode-session-empty" }, "暂无会话", -1))])]),
|
|
2807
|
+
_: 2
|
|
2257
2808
|
}, [
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2809
|
+
$setup.slots["session-toggle-icon"] ? {
|
|
2810
|
+
name: "session-toggle-icon",
|
|
2811
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "session-toggle-icon")]),
|
|
2812
|
+
key: "0"
|
|
2813
|
+
} : void 0,
|
|
2814
|
+
$setup.slots["select-icon"] ? {
|
|
2815
|
+
name: "select-icon",
|
|
2816
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "select-icon")]),
|
|
2817
|
+
key: "1"
|
|
2818
|
+
} : void 0,
|
|
2819
|
+
$setup.slots["close-icon"] ? {
|
|
2820
|
+
name: "close-icon",
|
|
2821
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "close-icon")]),
|
|
2822
|
+
key: "2"
|
|
2823
|
+
} : void 0,
|
|
2824
|
+
$setup.slots["empty-state"] ? {
|
|
2825
|
+
name: "empty-state",
|
|
2826
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "empty-state")]),
|
|
2827
|
+
key: "3"
|
|
2828
|
+
} : void 0,
|
|
2829
|
+
$setup.slots.loading ? {
|
|
2830
|
+
name: "loading",
|
|
2831
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "loading")]),
|
|
2832
|
+
key: "4"
|
|
2833
|
+
} : void 0,
|
|
2834
|
+
$setup.slots.error ? {
|
|
2835
|
+
name: "error",
|
|
2836
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "error")]),
|
|
2837
|
+
key: "5"
|
|
2838
|
+
} : void 0,
|
|
2839
|
+
$setup.slots.content ? {
|
|
2840
|
+
name: "content",
|
|
2841
|
+
fn: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "content")]),
|
|
2842
|
+
key: "6"
|
|
2843
|
+
} : void 0
|
|
2844
|
+
]), 1032, [
|
|
2845
|
+
"mode",
|
|
2846
|
+
"open",
|
|
2847
|
+
"minimized",
|
|
2848
|
+
"position-style",
|
|
2849
|
+
"animation-origin",
|
|
2850
|
+
"panel-width",
|
|
2851
|
+
"resizable",
|
|
2852
|
+
"min-width",
|
|
2853
|
+
"max-width",
|
|
2854
|
+
"no-transition",
|
|
2855
|
+
"dragging",
|
|
2856
|
+
"notification-visible",
|
|
2857
|
+
"notification-message",
|
|
2858
|
+
"notification-mode",
|
|
2859
|
+
"thinking",
|
|
2860
|
+
"resolved-theme",
|
|
2861
|
+
"onResize",
|
|
2862
|
+
"onToggle"
|
|
2863
|
+
]),
|
|
2306
2864
|
(0, vue.createVNode)($setup["SelectHint"]),
|
|
2307
2865
|
(0, vue.withDirectives)((0, vue.createElementVNode)("div", {
|
|
2308
2866
|
class: "opencode-element-highlight",
|
|
@@ -2311,15 +2869,15 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
2311
2869
|
(0, vue.withDirectives)((0, vue.createElementVNode)("div", {
|
|
2312
2870
|
class: "opencode-element-tooltip",
|
|
2313
2871
|
style: (0, vue.normalizeStyle)($setup.tooltipStyle)
|
|
2314
|
-
}, [(0, vue.createElementVNode)("div",
|
|
2315
|
-
$setup.dialogVisible ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div",
|
|
2872
|
+
}, [(0, vue.createElementVNode)("div", _hoisted_1, (0, vue.toDisplayString)($setup.tooltipContent.description), 1), (0, vue.createElementVNode)("div", _hoisted_2, (0, vue.toDisplayString)($setup.tooltipContent.fileInfo), 1)], 4), [[vue.vShow, $setup.tooltipVisible]]),
|
|
2873
|
+
$setup.dialogVisible ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3, [(0, vue.createElementVNode)("div", _hoisted_4, [(0, vue.createElementVNode)("div", _hoisted_5, [(0, vue.createElementVNode)("div", _hoisted_6, (0, vue.toDisplayString)($setup.dialogMessage), 1)]), (0, vue.createElementVNode)("div", { class: "opencode-dialog-actions" }, [(0, vue.createElementVNode)("button", {
|
|
2316
2874
|
class: "opencode-dialog-btn cancel",
|
|
2317
2875
|
onClick: $setup.handleDialogCancel
|
|
2318
2876
|
}, "取消"), (0, vue.createElementVNode)("button", {
|
|
2319
2877
|
class: "opencode-dialog-btn confirm",
|
|
2320
2878
|
onClick: $setup.handleDialogConfirm
|
|
2321
2879
|
}, "确认")])])])) : (0, vue.createCommentVNode)("v-if", true),
|
|
2322
|
-
((0, vue.openBlock)(), (0, vue.createBlock)(vue.Teleport, { to: "body" }, [$setup.notificationVisible && $setup.notificationMode === "page" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div",
|
|
2880
|
+
((0, vue.openBlock)(), (0, vue.createBlock)(vue.Teleport, { to: "body" }, [$setup.notificationVisible && $setup.notificationMode === "page" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_7, (0, vue.toDisplayString)($setup.notificationMessage), 1)) : (0, vue.createCommentVNode)("v-if", true)]))
|
|
2323
2881
|
], 2);
|
|
2324
2882
|
}
|
|
2325
2883
|
__vue_sfc__.render = __vue_render__;
|
|
@@ -2328,7 +2886,7 @@ __vue_sfc__.render = __vue_render__;
|
|
|
2328
2886
|
var open_code_widget_default = __vue_sfc__;
|
|
2329
2887
|
//#endregion
|
|
2330
2888
|
//#region es/index.js
|
|
2331
|
-
var version = "1.0.
|
|
2889
|
+
var version = "1.0.39";
|
|
2332
2890
|
function install(app, options) {
|
|
2333
2891
|
[open_code_widget_default].forEach((item) => {
|
|
2334
2892
|
if (item.install) app.use(item, options);
|