@vite-plugin-opencode-assistant/components 1.0.91 → 1.0.93
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.mjs +1 -1
- package/es/open-code-widget/composables/use-persist-state.d.ts +2 -0
- package/es/open-code-widget/composables/use-persist-state.mjs +2 -0
- package/es/open-code-widget/src/components/ChatPanel.vue.d.ts +2 -2
- package/es/open-code-widget/src/components/Frame.vue.mjs +7 -13
- package/es/open-code-widget/src/components/Header-sfc.css +1 -1
- package/es/open-code-widget/src/components/Header.vue.mjs +55 -23
- package/es/open-code-widget/src/components/SelectHint-sfc.css +1 -1
- package/es/open-code-widget/src/components/SelectHint.vue.mjs +2 -8
- package/es/open-code-widget/src/context.d.ts +2 -0
- package/es/open-code-widget/src/index-sfc.css +1 -1
- package/es/open-code-widget/src/index.vue.mjs +13 -1
- package/lib/@vite-plugin-opencode-assistant/components.cjs.js +65 -30
- package/lib/@vite-plugin-opencode-assistant/components.es.js +65 -30
- package/lib/components.css +3 -3
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/open-code-widget/composables/use-persist-state.cjs +2 -0
- package/lib/open-code-widget/composables/use-persist-state.d.ts +2 -0
- package/lib/open-code-widget/src/components/ChatPanel.vue.d.ts +2 -2
- package/lib/open-code-widget/src/components/Frame.vue.cjs +6 -12
- package/lib/open-code-widget/src/components/Header-sfc.css +1 -1
- package/lib/open-code-widget/src/components/Header.vue.cjs +55 -23
- package/lib/open-code-widget/src/components/SelectHint-sfc.css +1 -1
- package/lib/open-code-widget/src/components/SelectHint.vue.cjs +1 -7
- package/lib/open-code-widget/src/context.d.ts +2 -0
- package/lib/open-code-widget/src/index-sfc.css +1 -1
- package/lib/open-code-widget/src/index.vue.cjs +13 -1
- package/lib/web-types.json +1 -1
- package/package.json +2 -2
|
@@ -39,6 +39,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
39
39
|
resolvedTheme,
|
|
40
40
|
minimized,
|
|
41
41
|
promptDockVisible,
|
|
42
|
+
reviewPanelVisible,
|
|
42
43
|
mode,
|
|
43
44
|
displayMode,
|
|
44
45
|
splitPosition,
|
|
@@ -50,6 +51,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
50
51
|
handleClose,
|
|
51
52
|
handleToggleMinimize,
|
|
52
53
|
handleTogglePromptDock,
|
|
54
|
+
handleToggleReviewPanel,
|
|
53
55
|
handleRefresh
|
|
54
56
|
} = (0, import_context.useOpenCodeWidgetContext)();
|
|
55
57
|
const isSplitMode = (0, import_vue2.computed)(() => mode.value === "split");
|
|
@@ -103,7 +105,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
103
105
|
const nextPosition = splitPosition.value === "right" ? "\u5DE6\u4FA7" : "\u53F3\u4FA7";
|
|
104
106
|
return `\u5207\u6362\u5206\u680F\u4F4D\u7F6E - \u4E0B\u4E00\u4E2A: ${nextPosition}`;
|
|
105
107
|
});
|
|
106
|
-
const __returned__ = { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, theme, resolvedTheme, minimized, promptDockVisible, mode, displayMode, splitPosition, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleToggleDisplayMode, handleToggleSplitPosition, handleClose, handleToggleMinimize, handleTogglePromptDock, handleRefresh, isSplitMode, themeIconTitle, themeIconLabel, displayModeIconTitle, displayModeIconLabel, splitPositionIconTitle, splitPositionIconLabel };
|
|
108
|
+
const __returned__ = { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, theme, resolvedTheme, minimized, promptDockVisible, reviewPanelVisible, mode, displayMode, splitPosition, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleToggleDisplayMode, handleToggleSplitPosition, handleClose, handleToggleMinimize, handleTogglePromptDock, handleToggleReviewPanel, handleRefresh, isSplitMode, themeIconTitle, themeIconLabel, displayModeIconTitle, displayModeIconLabel, splitPositionIconTitle, splitPositionIconLabel };
|
|
107
109
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
108
110
|
return __returned__;
|
|
109
111
|
}
|
|
@@ -199,7 +201,8 @@ const _hoisted_17 = {
|
|
|
199
201
|
};
|
|
200
202
|
const _hoisted_18 = ["title", "aria-label", "aria-pressed"];
|
|
201
203
|
const _hoisted_19 = ["title", "aria-label", "aria-pressed"];
|
|
202
|
-
const _hoisted_20 =
|
|
204
|
+
const _hoisted_20 = ["title", "aria-label", "aria-pressed"];
|
|
205
|
+
const _hoisted_21 = {
|
|
203
206
|
key: 0,
|
|
204
207
|
viewBox: "0 0 24 24",
|
|
205
208
|
width: "14",
|
|
@@ -209,7 +212,7 @@ const _hoisted_20 = {
|
|
|
209
212
|
"stroke-width": "2",
|
|
210
213
|
"aria-hidden": "true"
|
|
211
214
|
};
|
|
212
|
-
const
|
|
215
|
+
const _hoisted_22 = {
|
|
213
216
|
key: 1,
|
|
214
217
|
viewBox: "0 0 24 24",
|
|
215
218
|
width: "14",
|
|
@@ -231,7 +234,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
231
234
|
onClick: _cache[0] || (_cache[0] = (...args) => $setup.handleToggleSessionList && $setup.handleToggleSessionList(...args))
|
|
232
235
|
}, [
|
|
233
236
|
(0, import_vue3.renderSlot)(_ctx.$slots, "session-toggle-icon", {}, () => [
|
|
234
|
-
_cache[
|
|
237
|
+
_cache[10] || (_cache[10] = (0, import_vue3.createElementVNode)(
|
|
235
238
|
"svg",
|
|
236
239
|
{
|
|
237
240
|
viewBox: "0 0 24 24",
|
|
@@ -263,7 +266,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
263
266
|
onClick: _cache[1] || (_cache[1] = (...args) => $setup.handleToggleSelectMode && $setup.handleToggleSelectMode(...args))
|
|
264
267
|
}, [
|
|
265
268
|
(0, import_vue3.renderSlot)(_ctx.$slots, "select-icon", {}, () => [
|
|
266
|
-
_cache[
|
|
269
|
+
_cache[11] || (_cache[11] = (0, import_vue3.createElementVNode)(
|
|
267
270
|
"svg",
|
|
268
271
|
{
|
|
269
272
|
viewBox: "0 0 1024 1024",
|
|
@@ -294,9 +297,9 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
294
297
|
onClick: _cache[2] || (_cache[2] = (...args) => $setup.handleToggleTheme && $setup.handleToggleTheme(...args))
|
|
295
298
|
}, [
|
|
296
299
|
(0, import_vue3.renderSlot)(_ctx.$slots, "theme-icon", {}, () => [
|
|
297
|
-
$setup.theme === "light" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_6, [..._cache[
|
|
300
|
+
$setup.theme === "light" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_6, [..._cache[12] || (_cache[12] = [
|
|
298
301
|
(0, import_vue3.createStaticVNode)('<circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>', 9)
|
|
299
|
-
])])) : $setup.theme === "dark" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_7, [..._cache[
|
|
302
|
+
])])) : $setup.theme === "dark" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_7, [..._cache[13] || (_cache[13] = [
|
|
300
303
|
(0, import_vue3.createElementVNode)(
|
|
301
304
|
"path",
|
|
302
305
|
{ d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" },
|
|
@@ -304,7 +307,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
304
307
|
-1
|
|
305
308
|
/* CACHED */
|
|
306
309
|
)
|
|
307
|
-
])])) : ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_8, [..._cache[
|
|
310
|
+
])])) : ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_8, [..._cache[14] || (_cache[14] = [
|
|
308
311
|
(0, import_vue3.createStaticVNode)('<rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line><circle cx="12" cy="10" r="3"></circle><path d="M7 7l2 2M17 7l-2 2M7 13l2-2M17 13l-2-2"></path>', 5)
|
|
309
312
|
])]))
|
|
310
313
|
])
|
|
@@ -318,7 +321,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
318
321
|
onClick: _cache[3] || (_cache[3] = (...args) => $setup.handleToggleDisplayMode && $setup.handleToggleDisplayMode(...args))
|
|
319
322
|
}, [
|
|
320
323
|
(0, import_vue3.renderSlot)(_ctx.$slots, "display-mode-icon", {}, () => [
|
|
321
|
-
$setup.displayMode === "bubble" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_10, [..._cache[
|
|
324
|
+
$setup.displayMode === "bubble" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_10, [..._cache[15] || (_cache[15] = [
|
|
322
325
|
(0, import_vue3.createElementVNode)(
|
|
323
326
|
"circle",
|
|
324
327
|
{
|
|
@@ -366,7 +369,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
366
369
|
-1
|
|
367
370
|
/* CACHED */
|
|
368
371
|
)
|
|
369
|
-
])])) : $setup.displayMode === "split" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_11, [..._cache[
|
|
372
|
+
])])) : $setup.displayMode === "split" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_11, [..._cache[16] || (_cache[16] = [
|
|
370
373
|
(0, import_vue3.createElementVNode)(
|
|
371
374
|
"rect",
|
|
372
375
|
{
|
|
@@ -392,7 +395,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
392
395
|
-1
|
|
393
396
|
/* CACHED */
|
|
394
397
|
)
|
|
395
|
-
])])) : ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_12, [..._cache[
|
|
398
|
+
])])) : ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_12, [..._cache[17] || (_cache[17] = [
|
|
396
399
|
(0, import_vue3.createElementVNode)(
|
|
397
400
|
"rect",
|
|
398
401
|
{
|
|
@@ -462,7 +465,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
462
465
|
title: "\u5237\u65B0\u9762\u677F",
|
|
463
466
|
"aria-label": "\u5237\u65B0\u9762\u677F",
|
|
464
467
|
onClick: _cache[4] || (_cache[4] = (...args) => $setup.handleRefresh && $setup.handleRefresh(...args))
|
|
465
|
-
}, [..._cache[
|
|
468
|
+
}, [..._cache[18] || (_cache[18] = [
|
|
466
469
|
(0, import_vue3.createElementVNode)(
|
|
467
470
|
"svg",
|
|
468
471
|
{
|
|
@@ -491,7 +494,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
491
494
|
onClick: _cache[5] || (_cache[5] = (...args) => $setup.handleToggleSplitPosition && $setup.handleToggleSplitPosition(...args))
|
|
492
495
|
}, [
|
|
493
496
|
(0, import_vue3.renderSlot)(_ctx.$slots, "split-position-icon", {}, () => [
|
|
494
|
-
$setup.splitPosition === "right" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_16, [..._cache[
|
|
497
|
+
$setup.splitPosition === "right" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_16, [..._cache[19] || (_cache[19] = [
|
|
495
498
|
(0, import_vue3.createElementVNode)(
|
|
496
499
|
"rect",
|
|
497
500
|
{
|
|
@@ -517,7 +520,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
517
520
|
-1
|
|
518
521
|
/* CACHED */
|
|
519
522
|
)
|
|
520
|
-
])])) : ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_17, [..._cache[
|
|
523
|
+
])])) : ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_17, [..._cache[20] || (_cache[20] = [
|
|
521
524
|
(0, import_vue3.createElementVNode)(
|
|
522
525
|
"rect",
|
|
523
526
|
{
|
|
@@ -546,6 +549,35 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
546
549
|
])]))
|
|
547
550
|
])
|
|
548
551
|
], 8, _hoisted_15)) : (0, import_vue3.createCommentVNode)("v-if", true),
|
|
552
|
+
(0, import_vue3.createElementVNode)("button", {
|
|
553
|
+
class: (0, import_vue3.normalizeClass)(["opencode-header-btn review-panel", { active: $setup.reviewPanelVisible }]),
|
|
554
|
+
type: "button",
|
|
555
|
+
title: $setup.reviewPanelVisible ? "\u6536\u8D77\u5BA1\u67E5\u9762\u677F" : "\u5C55\u5F00\u5BA1\u67E5\u9762\u677F",
|
|
556
|
+
"aria-label": $setup.reviewPanelVisible ? "\u6536\u8D77\u5BA1\u67E5\u9762\u677F" : "\u5C55\u5F00\u5BA1\u67E5\u9762\u677F",
|
|
557
|
+
"aria-pressed": $setup.reviewPanelVisible,
|
|
558
|
+
onClick: _cache[6] || (_cache[6] = (...args) => $setup.handleToggleReviewPanel && $setup.handleToggleReviewPanel(...args))
|
|
559
|
+
}, [..._cache[21] || (_cache[21] = [
|
|
560
|
+
(0, import_vue3.createElementVNode)(
|
|
561
|
+
"svg",
|
|
562
|
+
{
|
|
563
|
+
viewBox: "0 0 24 24",
|
|
564
|
+
width: "15",
|
|
565
|
+
height: "15",
|
|
566
|
+
fill: "none",
|
|
567
|
+
stroke: "currentColor",
|
|
568
|
+
"stroke-width": "2",
|
|
569
|
+
"stroke-linecap": "round",
|
|
570
|
+
"stroke-linejoin": "round",
|
|
571
|
+
"aria-hidden": "true"
|
|
572
|
+
},
|
|
573
|
+
[
|
|
574
|
+
(0, import_vue3.createElementVNode)("polyline", { points: "16 18 22 12 16 6" }),
|
|
575
|
+
(0, import_vue3.createElementVNode)("polyline", { points: "8 6 2 12 8 18" })
|
|
576
|
+
],
|
|
577
|
+
-1
|
|
578
|
+
/* CACHED */
|
|
579
|
+
)
|
|
580
|
+
])], 10, _hoisted_18),
|
|
549
581
|
!$setup.isSplitMode ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("button", {
|
|
550
582
|
key: 2,
|
|
551
583
|
class: "opencode-header-btn prompt-dock",
|
|
@@ -553,10 +585,10 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
553
585
|
title: $setup.promptDockVisible ? "\u9690\u85CF\u5BF9\u8BDD\u6846" : "\u663E\u793A\u5BF9\u8BDD\u6846",
|
|
554
586
|
"aria-label": $setup.promptDockVisible ? "\u9690\u85CF\u5BF9\u8BDD\u6846" : "\u663E\u793A\u5BF9\u8BDD\u6846",
|
|
555
587
|
"aria-pressed": $setup.promptDockVisible,
|
|
556
|
-
onClick: _cache[
|
|
588
|
+
onClick: _cache[7] || (_cache[7] = (...args) => $setup.handleTogglePromptDock && $setup.handleTogglePromptDock(...args))
|
|
557
589
|
}, [
|
|
558
590
|
(0, import_vue3.renderSlot)(_ctx.$slots, "prompt-dock-icon", {}, () => [
|
|
559
|
-
_cache[
|
|
591
|
+
_cache[22] || (_cache[22] = (0, import_vue3.createElementVNode)(
|
|
560
592
|
"svg",
|
|
561
593
|
{
|
|
562
594
|
viewBox: "0 0 24 24",
|
|
@@ -574,7 +606,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
574
606
|
/* CACHED */
|
|
575
607
|
))
|
|
576
608
|
])
|
|
577
|
-
], 8,
|
|
609
|
+
], 8, _hoisted_19)) : (0, import_vue3.createCommentVNode)("v-if", true),
|
|
578
610
|
!$setup.isSplitMode ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("button", {
|
|
579
611
|
key: 3,
|
|
580
612
|
class: "opencode-header-btn minimize",
|
|
@@ -582,10 +614,10 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
582
614
|
title: $setup.minimized ? "\u5C55\u5F00" : "\u6700\u5C0F\u5316",
|
|
583
615
|
"aria-label": $setup.minimized ? "\u5C55\u5F00\u9762\u677F" : "\u6700\u5C0F\u5316\u9762\u677F",
|
|
584
616
|
"aria-pressed": $setup.minimized,
|
|
585
|
-
onClick: _cache[
|
|
617
|
+
onClick: _cache[8] || (_cache[8] = (...args) => $setup.handleToggleMinimize && $setup.handleToggleMinimize(...args))
|
|
586
618
|
}, [
|
|
587
619
|
(0, import_vue3.renderSlot)(_ctx.$slots, "minimize-icon", {}, () => [
|
|
588
|
-
$setup.minimized ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg",
|
|
620
|
+
$setup.minimized ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_21, [..._cache[23] || (_cache[23] = [
|
|
589
621
|
(0, import_vue3.createElementVNode)(
|
|
590
622
|
"path",
|
|
591
623
|
{ 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" },
|
|
@@ -593,7 +625,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
593
625
|
-1
|
|
594
626
|
/* CACHED */
|
|
595
627
|
)
|
|
596
|
-
])])) : ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg",
|
|
628
|
+
])])) : ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_22, [..._cache[24] || (_cache[24] = [
|
|
597
629
|
(0, import_vue3.createElementVNode)(
|
|
598
630
|
"path",
|
|
599
631
|
{ 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" },
|
|
@@ -603,17 +635,17 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
603
635
|
)
|
|
604
636
|
])]))
|
|
605
637
|
])
|
|
606
|
-
], 8,
|
|
638
|
+
], 8, _hoisted_20)) : (0, import_vue3.createCommentVNode)("v-if", true),
|
|
607
639
|
!$setup.isSplitMode ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("button", {
|
|
608
640
|
key: 4,
|
|
609
641
|
class: "opencode-header-btn close",
|
|
610
642
|
type: "button",
|
|
611
643
|
title: "\u5173\u95ED",
|
|
612
644
|
"aria-label": "\u5173\u95ED\u9762\u677F",
|
|
613
|
-
onClick: _cache[
|
|
645
|
+
onClick: _cache[9] || (_cache[9] = (...args) => $setup.handleClose && $setup.handleClose(...args))
|
|
614
646
|
}, [
|
|
615
647
|
(0, import_vue3.renderSlot)(_ctx.$slots, "close-icon", {}, () => [
|
|
616
|
-
_cache[
|
|
648
|
+
_cache[25] || (_cache[25] = (0, import_vue3.createElementVNode)(
|
|
617
649
|
"svg",
|
|
618
650
|
{
|
|
619
651
|
viewBox: "0 0 24 24",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.opencode-select-mode-hint{position:fixed;top:
|
|
1
|
+
.opencode-select-mode-hint{position:fixed;top:16px;left:50%;transform:translate(-50%) translateY(-16px);width:280px;padding:8px 14px;background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;border-radius:18px;font-size:13px;font-weight:500;line-height:1.4;box-shadow:0 6px 20px #ef444480,0 0 0 3px #ef44444d;z-index:9999999;display:none;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:1px solid rgba(255,255,255,.25);opacity:0;transition:opacity .2s ease,transform .25s cubic-bezier(.16,1,.3,1);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-sizing:border-box}.opencode-select-mode-hint.visible{display:flex;opacity:1;transform:translate(-50%) translateY(0);animation:hintSlideIn .3s cubic-bezier(.16,1,.3,1),pulseHint 2s ease-in-out .3s infinite}.opencode-hint-main{display:inline-flex;align-items:center;gap:8px;min-width:0}.opencode-hint-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#fff3;color:#fff;flex-shrink:0}.opencode-hint-icon svg{display:block}.opencode-hint-text{font-size:13px;font-weight:500;letter-spacing:.2px;white-space:nowrap;text-shadow:0 1px 2px rgba(0,0,0,.15)}.opencode-hint-shortcut{display:inline-flex;align-items:center;padding:4px 10px;background:#0000002e;border-radius:999px;font-size:12px;font-weight:600;letter-spacing:.3px;border:1px solid rgba(255,255,255,.2);white-space:nowrap;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace}@keyframes hintSlideIn{0%{opacity:0;transform:translate(-50%) translateY(-16px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes pulseHint{0%,to{box-shadow:0 6px 20px #ef444480,0 0 0 3px #ef44444d}50%{box-shadow:0 6px 20px #ef444499,0 0 0 6px #ef444466}}
|
|
@@ -42,13 +42,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
42
42
|
class: (0, import_vue2.normalizeClass)(["opencode-select-mode-hint", { visible: $setup.visible }])
|
|
43
43
|
},
|
|
44
44
|
[
|
|
45
|
-
_cache[0] || (_cache[0] = (0, import_vue2.
|
|
46
|
-
"span",
|
|
47
|
-
null,
|
|
48
|
-
"\u{1F3AF} \u9009\u62E9\u6A21\u5F0F\u5DF2\u5F00\u542F - \u70B9\u51FB\u5143\u7D20\u8FDB\u884C\u9009\u62E9",
|
|
49
|
-
-1
|
|
50
|
-
/* CACHED */
|
|
51
|
-
)),
|
|
45
|
+
_cache[0] || (_cache[0] = (0, import_vue2.createStaticVNode)('<span class="opencode-hint-main"><span class="opencode-hint-icon" aria-hidden="true"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="8"></circle><circle cx="12" cy="12" r="2.5" fill="currentColor"></circle><line x1="12" y1="2" x2="12" y2="5"></line><line x1="12" y1="19" x2="12" y2="22"></line><line x1="2" y1="12" x2="5" y2="12"></line><line x1="19" y1="12" x2="22" y2="12"></line></svg></span><span class="opencode-hint-text">\u9009\u62E9\u6A21\u5F0F\u5DF2\u5F00\u542F \xB7 \u70B9\u51FB\u5143\u7D20\u8FDB\u884C\u9009\u62E9</span></span>', 1)),
|
|
52
46
|
(0, import_vue2.createElementVNode)(
|
|
53
47
|
"span",
|
|
54
48
|
_hoisted_1,
|
|
@@ -23,6 +23,7 @@ export interface OpenCodeWidgetContext {
|
|
|
23
23
|
thinking: Ref<boolean>;
|
|
24
24
|
minimized: Ref<boolean>;
|
|
25
25
|
promptDockVisible: Ref<boolean>;
|
|
26
|
+
reviewPanelVisible: Ref<boolean>;
|
|
26
27
|
bubbleOffset: Ref<FloatingBubbleOffset | undefined>;
|
|
27
28
|
mode: Ref<"bubble" | "split">;
|
|
28
29
|
displayMode: Ref<DisplayMode>;
|
|
@@ -39,6 +40,7 @@ export interface OpenCodeWidgetContext {
|
|
|
39
40
|
handleClose: () => void;
|
|
40
41
|
handleToggleMinimize: () => void;
|
|
41
42
|
handleTogglePromptDock: () => void;
|
|
43
|
+
handleToggleReviewPanel: () => void;
|
|
42
44
|
handleToggleSessionList: () => void;
|
|
43
45
|
handleToggleTheme: () => void;
|
|
44
46
|
handleToggleDisplayMode: () => 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-chat{position:fixed;bottom:20px;width:700px;height:86vh;max-height:calc(100vh - 40px);background:var(--oc-bg-main);border-radius:16px;box-shadow:var(--oc-shadow-lg);overflow:hidden;opacity:0;visibility:hidden;transform:translate3d(var(---chatAnimationOrigin\.x),var(---chatAnimationOrigin\.y),0) scale(.95);transition:all .3s ease;display:flex;flex-direction:column;z-index:99999}.opencode-chat.open{opacity:1;visibility:visible;transform:translateZ(0) scale(1)}.opencode-chat.no-transition,.opencode-chat.no-transition.open{transition:none!important}.opencode-chat.minimized{width:320px;height:320px}.opencode-chat.minimized .opencode-iframe-container{margin-top:-146px}.opencode-chat-content{display:flex;flex:1;overflow:hidden}.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 #3b82f666,0 0 0 2px #3b82f633;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;inset: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 #3b82f666,0 0 0 2px #3b82f633;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;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;box-shadow:var(--oc-shadow-md);max-width:300px;pointer-events:none;line-height:1}.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)}}body.has-opencode-split{transition:padding .3s ease;min-width:auto}body.has-opencode-split-right{padding-right:var(--opencode-split-width, 500px)}body.has-opencode-split-left{padding-left:var(--opencode-split-width, 500px)}.opencode-widget.extension-mode{position:
|
|
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-chat{position:fixed;bottom:20px;width:700px;height:86vh;max-height:calc(100vh - 40px);background:var(--oc-bg-main);border-radius:16px;box-shadow:var(--oc-shadow-lg);overflow:hidden;opacity:0;visibility:hidden;transform:translate3d(var(---chatAnimationOrigin\.x),var(---chatAnimationOrigin\.y),0) scale(.95);transition:all .3s ease;display:flex;flex-direction:column;z-index:99999}.opencode-chat.open{opacity:1;visibility:visible;transform:translateZ(0) scale(1)}.opencode-chat.no-transition,.opencode-chat.no-transition.open{transition:none!important}.opencode-chat.minimized{width:320px;height:320px}.opencode-chat.minimized .opencode-iframe-container{margin-top:-146px}.opencode-chat-content{display:flex;flex:1;overflow:hidden}.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 #3b82f666,0 0 0 2px #3b82f633;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;inset: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 #3b82f666,0 0 0 2px #3b82f633;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;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;box-shadow:var(--oc-shadow-md);max-width:300px;pointer-events:none;line-height:1}.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)}}body.has-opencode-split{transition:padding .3s ease;min-width:auto}body.has-opencode-split-right{padding-right:var(--opencode-split-width, 500px)}body.has-opencode-split-left{padding-left:var(--opencode-split-width, 500px)}.opencode-widget.extension-mode{position:relative;width:100%;height:100%;display:flex}.opencode-widget.extension-mode .opencode-select-mode-hint,.opencode-widget.extension-mode .opencode-dialog-overlay{position:absolute}
|
|
@@ -150,6 +150,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
150
150
|
);
|
|
151
151
|
const minimized = (0, import_vue2.ref)(false);
|
|
152
152
|
const promptDockVisible = (0, import_vue2.ref)(true);
|
|
153
|
+
const reviewPanelVisible = (0, import_vue2.ref)(false);
|
|
153
154
|
const isRestoring = (0, import_vue2.ref)(true);
|
|
154
155
|
const iframeLoaded = (0, import_vue2.ref)(false);
|
|
155
156
|
const splitPanelWidth = (0, import_vue2.ref)(props.splitPanelWidth);
|
|
@@ -157,6 +158,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
157
158
|
if (!iframeLoaded.value) return;
|
|
158
159
|
sendMessageToIframe(import_shared.WIDGET_MSG.PROMPT_DOCK_VISIBILITY, { visible: promptDockVisible.value });
|
|
159
160
|
sendMessageToIframe(import_shared.WIDGET_MSG.MINIMIZE_STATE, { minimized: minimized.value });
|
|
161
|
+
sendMessageToIframe(import_shared.WIDGET_MSG.REVIEW_PANEL_TOGGLE, { visible: reviewPanelVisible.value });
|
|
160
162
|
};
|
|
161
163
|
const handleFrameLoaded = () => {
|
|
162
164
|
emit("frame-loaded");
|
|
@@ -311,6 +313,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
311
313
|
open: (0, import_vue2.toRef)(props, "open"),
|
|
312
314
|
minimized,
|
|
313
315
|
promptDockVisible,
|
|
316
|
+
reviewPanelVisible,
|
|
314
317
|
bubbleOffset,
|
|
315
318
|
theme: (0, import_vue2.toRef)(props, "theme"),
|
|
316
319
|
sessionListCollapsed: localSessionListCollapsed,
|
|
@@ -348,6 +351,9 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
348
351
|
} else if (minimized.value) {
|
|
349
352
|
promptDockVisible.value = false;
|
|
350
353
|
}
|
|
354
|
+
if (state.reviewPanelVisible !== void 0) {
|
|
355
|
+
reviewPanelVisible.value = state.reviewPanelVisible;
|
|
356
|
+
}
|
|
351
357
|
if (state.splitPanelWidth !== void 0 && state.splitPanelWidth !== props.splitPanelWidth) {
|
|
352
358
|
handleResize(state.splitPanelWidth);
|
|
353
359
|
}
|
|
@@ -375,6 +381,10 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
375
381
|
promptDockVisible.value = !promptDockVisible.value;
|
|
376
382
|
sendMessageToIframe(import_shared.WIDGET_MSG.PROMPT_DOCK_VISIBILITY, { visible: promptDockVisible.value });
|
|
377
383
|
};
|
|
384
|
+
const handleToggleReviewPanel = () => {
|
|
385
|
+
reviewPanelVisible.value = !reviewPanelVisible.value;
|
|
386
|
+
sendMessageToIframe(import_shared.WIDGET_MSG.REVIEW_PANEL_TOGGLE, { visible: reviewPanelVisible.value });
|
|
387
|
+
};
|
|
378
388
|
const handleRefresh = () => {
|
|
379
389
|
window.location.reload();
|
|
380
390
|
};
|
|
@@ -525,6 +535,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
525
535
|
thinking: (0, import_vue2.toRef)(props, "thinking"),
|
|
526
536
|
minimized,
|
|
527
537
|
promptDockVisible,
|
|
538
|
+
reviewPanelVisible,
|
|
528
539
|
bubbleOffset,
|
|
529
540
|
mode: effectiveMode,
|
|
530
541
|
displayMode: localDisplayMode,
|
|
@@ -544,6 +555,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
544
555
|
handleClose,
|
|
545
556
|
handleToggleMinimize,
|
|
546
557
|
handleTogglePromptDock,
|
|
558
|
+
handleToggleReviewPanel,
|
|
547
559
|
handleToggleSessionList,
|
|
548
560
|
handleToggleTheme,
|
|
549
561
|
handleToggleDisplayMode,
|
|
@@ -574,7 +586,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
574
586
|
return dialogResolve;
|
|
575
587
|
}, set dialogResolve(v) {
|
|
576
588
|
dialogResolve = v;
|
|
577
|
-
}, showConfirmDialog, handleDialogConfirm, handleDialogCancel, frameRef, triggerRef, sendMessageToIframe, localSessionListCollapsed, localDisplayMode, localSplitPosition, minimized, promptDockVisible, isRestoring, iframeLoaded, splitPanelWidth, syncStateToIframe, handleFrameLoaded, handleToggleDisplayMode, 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, bubbleOffset, effectiveMode, isSplitMode, isExtensionMode, panelWidth, splitConfig, splitPosition, handleResize, handleSplitToggle, handleTogglePosition, handleToggleMinimize, handleTogglePromptDock, handleRefresh, windowWidth, windowHeight, handleWindowResize, bubbleQuadrant, isBubbleOnRightSide, chatPositionStyle, handleBubbleOffsetChange, handleResizeStart, handleResizeEnd, chatAnimationOrigin, isDragging, get wasOpenBeforeDrag() {
|
|
589
|
+
}, showConfirmDialog, handleDialogConfirm, handleDialogCancel, frameRef, triggerRef, sendMessageToIframe, localSessionListCollapsed, localDisplayMode, localSplitPosition, minimized, promptDockVisible, reviewPanelVisible, isRestoring, iframeLoaded, splitPanelWidth, syncStateToIframe, handleFrameLoaded, handleToggleDisplayMode, 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, bubbleOffset, effectiveMode, isSplitMode, isExtensionMode, panelWidth, splitConfig, splitPosition, handleResize, handleSplitToggle, handleTogglePosition, handleToggleMinimize, handleTogglePromptDock, handleToggleReviewPanel, handleRefresh, windowWidth, windowHeight, handleWindowResize, bubbleQuadrant, isBubbleOnRightSide, chatPositionStyle, handleBubbleOffsetChange, handleResizeStart, handleResizeEnd, chatAnimationOrigin, isDragging, get wasOpenBeforeDrag() {
|
|
578
590
|
return wasOpenBeforeDrag;
|
|
579
591
|
}, set wasOpenBeforeDrag(v) {
|
|
580
592
|
wasOpenBeforeDrag = v;
|
package/lib/web-types.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"$schema":"https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json","framework":"vue","name":"@vite-plugin-opencode-assistant/components","version":"1.0.
|
|
1
|
+
{"$schema":"https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json","framework":"vue","name":"@vite-plugin-opencode-assistant/components","version":"1.0.93","contributions":{"html":{"tags":[{"name":"open-code","attributes":[{"name":"","default":"`'bottom-right'`","description":"挂件显示的位置","value":{"type":"`'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'`","kind":"expression"}},{"name":"","default":"`false`","description":"挂件是否打开","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`'auto'`","description":"主题模式","value":{"type":"`'light' | 'dark' | 'auto'`","kind":"expression"}},{"name":"","default":"`'AI 助手'`","description":"助手头部显示的标题","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`'Ctrl+K'`","description":"快捷键提示文本","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`'按 ESC 或 Ctrl+P 退出'`","description":"选择模式快捷键提示文本","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`false`","description":"是否进入选择页面元素模式","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`true`","description":"会话列表是否折叠","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`'id'`","description":"会话列表项的唯一键字段","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`false`","description":"iframe 是否显示加载状态","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`undefined`","description":"会话列表是否加载中","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`false`","description":"是否显示会话列表骨架屏","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`false`","description":"是否显示空状态","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`false`","description":"是否显示错误状态","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`'当前项目暂无会话'`","description":"空状态显示的文本","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`'立即创建'`","description":"空状态操作按钮文本","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`''`","description":"Web UI 的 URL 来源","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`[]`","description":"会话列表数据","value":{"type":"`OpenCodeWidgetSession[]`","kind":"expression"}},{"name":"","default":"`null`","description":"当前选中的会话 ID","value":{"type":"`string | null`","kind":"expression"}},{"name":"","default":"`[]`","description":"已选中的元素列表","value":{"type":"`OpenCodeSelectedElement[]`","kind":"expression"}},{"name":"","default":"`true`","description":"是否显示\"一键清空\"按钮","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`true`","description":"是否启用选择模式","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`false`","description":"是否显示思考状态(加载中)","value":{"type":"`boolean`","kind":"expression"}}],"events":[{"name":"`update:open`","description":"当挂件打开或关闭时触发","arguments":[{"name":"open","type":"en"},{"name":"boolean"}]},{"name":"`update:selectMode`","description":"当选择模式切换时触发","arguments":[{"name":"mode","type":"de"},{"name":"boolean"}]},{"name":"`update:sessionListCollapsed`","description":"当会话列表折叠状态改变时触发","arguments":[{"name":"collapsed","type":"ed"},{"name":"boolean"}]},{"name":"`update:currentSessionId`","description":"当选中的会话 ID 改变时触发","arguments":[{"name":"sessionId","type":"Id"},{"name":"string | null"}]},{"name":"`update:selectedElements`","description":"当已选中的元素列表改变时触发","arguments":[{"name":"elements","type":"ts"},{"name":"OpenCodeSelectedElement[]"}]},{"name":"`update:theme`","description":"当主题模式改变时触发","arguments":[{"name":"theme","type":"me"},{"name":"'light' | 'dark' | 'auto'"}]},{"name":"`update:thinking`","description":"当思考状态改变时触发","arguments":[{"name":"thinking","type":"ng"},{"name":"boolean"}]},{"name":"","description":"点击触发挂件开关","arguments":[{"name":"open","type":"en"},{"name":"boolean"}]},{"name":"","description":"点击关闭按钮时触发","arguments":[]},{"name":"`toggle-session-list`","description":"点击会话列表切换按钮时触发","arguments":[{"name":"collapsed","type":"ed"},{"name":"boolean"}]},{"name":"`toggle-select-mode`","description":"点击选择模式切换按钮时触发","arguments":[{"name":"mode","type":"de"},{"name":"boolean"}]},{"name":"`toggle-theme`","description":"点击主题切换按钮时触发","arguments":[{"name":"theme","type":"me"},{"name":"'light' | 'dark' | 'auto'"}]},{"name":"`create-session`","description":"点击创建新会话时触发","arguments":[]},{"name":"`select-session`","description":"选中某个历史会话时触发","arguments":[{"name":"session","type":"on"},{"name":"OpenCodeWidgetSession"}]},{"name":"`delete-session`","description":"删除某个历史会话时触发","arguments":[{"name":"session","type":"on"},{"name":"OpenCodeWidgetSession"}]},{"name":"`click-selected-node`","description":"点击已选中的气泡或节点卡片时触发","arguments":[{"name":"element","type":"nt"},{"name":"OpenCodeSelectedElement"}]},{"name":"`remove-selected-node`","description":"删除已选中的元素时触发","arguments":[{"name":"payload","type":"ad"},{"name":"OpenCodeRemoveSelectedPayload"}]},{"name":"`clear-selected-nodes`","description":"清空所有选中元素时触发","arguments":[]},{"name":"`empty-action`","description":"点击空状态操作按钮时触发","arguments":[]},{"name":"`frame-loaded`","description":"iframe 加载完成时触发","arguments":[]},{"name":"`thinking-change`","description":"思考状态改变时触发(用于显示加载动画)","arguments":[{"name":"thinking","type":"ng"},{"name":"boolean"}]}],"slots":[{"name":"`button-icon`","description":"自定义触发按钮图标"},{"name":"`session-toggle-icon`","description":"自定义会话列表切换图标"},{"name":"`select-icon`","description":"自定义选择模式切换图标"},{"name":"`close-icon`","description":"自定义关闭按钮图标"},{"name":"`theme-icon`","description":"自定义主题切换图标"},{"name":"`sessions-empty`","description":"自定义会话列表空状态"},{"name":"`empty-state`","description":"自定义 iframe 空状态"},{"name":"","description":"自定义 iframe 加载状态"},{"name":"","description":"自定义错误状态"},{"name":"","description":"自定义 iframe 内容"}]}],"attributes":[]}},"js-types-syntax":"typescript"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vite-plugin-opencode-assistant/components",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.93",
|
|
4
4
|
"description": "Reusable OpenCode widget components built with Pagoda CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.cjs",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"css-selector-generator": "^3.9.2",
|
|
34
|
-
"@vite-plugin-opencode-assistant/shared": "1.0.
|
|
34
|
+
"@vite-plugin-opencode-assistant/shared": "1.0.93"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
37
|
"build": "pagoda-cli build",
|