@vite-plugin-opencode-assistant/components 1.0.47 → 1.0.49
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 +5 -1
- package/es/open-code-widget/composables/use-persist-state.js +10 -2
- package/es/open-code-widget/composables/use-split.d.ts +5 -0
- package/es/open-code-widget/composables/use-split.js +46 -12
- package/es/open-code-widget/src/components/ChatPanel-sfc.css +1 -1
- package/es/open-code-widget/src/components/ChatPanel.vue.d.ts +2 -0
- package/es/open-code-widget/src/components/ChatPanel.vue.js +58 -10
- package/es/open-code-widget/src/components/Header.vue.d.ts +8 -4
- package/es/open-code-widget/src/components/Header.vue.js +313 -27
- package/es/open-code-widget/src/context.d.ts +5 -1
- package/es/open-code-widget/src/index-sfc.css +1 -1
- package/es/open-code-widget/src/index.vue.d.ts +1 -1
- package/es/open-code-widget/src/index.vue.js +48 -12
- package/lib/@vite-plugin-opencode-assistant/components.cjs.js +357 -67
- package/lib/@vite-plugin-opencode-assistant/components.es.js +357 -67
- package/lib/components.css +2 -2
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/open-code-widget/composables/use-persist-state.d.ts +5 -1
- package/lib/open-code-widget/composables/use-persist-state.js +10 -2
- package/lib/open-code-widget/composables/use-split.d.ts +5 -0
- package/lib/open-code-widget/composables/use-split.js +46 -12
- package/lib/open-code-widget/src/components/ChatPanel-sfc.css +1 -1
- package/lib/open-code-widget/src/components/ChatPanel.vue.d.ts +2 -0
- package/lib/open-code-widget/src/components/ChatPanel.vue.js +58 -10
- package/lib/open-code-widget/src/components/Header.vue.d.ts +8 -4
- package/lib/open-code-widget/src/components/Header.vue.js +313 -27
- package/lib/open-code-widget/src/context.d.ts +5 -1
- package/lib/open-code-widget/src/index-sfc.css +1 -1
- package/lib/open-code-widget/src/index.vue.d.ts +1 -1
- package/lib/open-code-widget/src/index.vue.js +48 -12
- package/lib/web-types.json +1 -1
- package/package.json +2 -2
|
@@ -64,6 +64,7 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
64
64
|
},
|
|
65
65
|
emits: ["update:open", "update:selectMode", "update:sessionListCollapsed", "update:currentSessionId", "update:selectedElements", "update:theme", "update:thinking", "update:splitPanelWidth", "toggle", "close", "toggle-session-list", "toggle-select-mode", "toggle-theme", "create-session", "select-session", "delete-session", "click-selected-node", "remove-selected-node", "clear-selected-nodes", "empty-action", "frame-loaded", "thinking-change", "split-panel-width-change"],
|
|
66
66
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
67
|
+
var _a, _b;
|
|
67
68
|
_useCssVars((_ctx) => ({
|
|
68
69
|
"-chatAnimationOrigin.x": chatAnimationOrigin.value.x,
|
|
69
70
|
"-chatAnimationOrigin.y": chatAnimationOrigin.value.y
|
|
@@ -106,10 +107,14 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
106
107
|
const frameRef = ref(null);
|
|
107
108
|
const triggerRef = ref(null);
|
|
108
109
|
const sendMessageToIframe = (type, data) => {
|
|
109
|
-
var
|
|
110
|
-
(
|
|
110
|
+
var _a2;
|
|
111
|
+
(_a2 = frameRef.value) == null ? void 0 : _a2.sendMessageToIframe(type, data);
|
|
111
112
|
};
|
|
112
113
|
const localSessionListCollapsed = ref(props.sessionListCollapsed);
|
|
114
|
+
const localDisplayMode = ref(props.displayMode);
|
|
115
|
+
const localSplitPosition = ref(
|
|
116
|
+
(_b = (_a = props.splitMode) == null ? void 0 : _a.position) != null ? _b : "right"
|
|
117
|
+
);
|
|
113
118
|
const minimized = ref(false);
|
|
114
119
|
const promptDockVisible = ref(true);
|
|
115
120
|
const isRestoring = ref(true);
|
|
@@ -137,6 +142,18 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
137
142
|
splitPanelWidth.value = val;
|
|
138
143
|
}
|
|
139
144
|
);
|
|
145
|
+
watch(
|
|
146
|
+
() => props.displayMode,
|
|
147
|
+
(val) => {
|
|
148
|
+
localDisplayMode.value = val;
|
|
149
|
+
}
|
|
150
|
+
);
|
|
151
|
+
const handleToggleDisplayMode = () => {
|
|
152
|
+
const modes = ["bubble", "split", "auto"];
|
|
153
|
+
const currentIndex = modes.indexOf(localDisplayMode.value);
|
|
154
|
+
const nextIndex = (currentIndex + 1) % modes.length;
|
|
155
|
+
localDisplayMode.value = modes[nextIndex];
|
|
156
|
+
};
|
|
140
157
|
const {
|
|
141
158
|
buttonActive,
|
|
142
159
|
containerClasses,
|
|
@@ -233,12 +250,15 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
233
250
|
isSplitMode,
|
|
234
251
|
panelWidth,
|
|
235
252
|
splitConfig,
|
|
253
|
+
splitPosition,
|
|
236
254
|
handleResize,
|
|
237
|
-
handleToggle: handleSplitToggle
|
|
255
|
+
handleToggle: handleSplitToggle,
|
|
256
|
+
handleTogglePosition
|
|
238
257
|
} = useSplitMode({
|
|
239
|
-
displayMode:
|
|
258
|
+
displayMode: localDisplayMode,
|
|
240
259
|
splitMode: toRef(props, "splitMode"),
|
|
241
260
|
open: toRef(props, "open"),
|
|
261
|
+
splitPosition: localSplitPosition,
|
|
242
262
|
onOpenChange: (nextOpen) => {
|
|
243
263
|
emit("update:open", nextOpen);
|
|
244
264
|
emit("toggle", nextOpen);
|
|
@@ -247,6 +267,9 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
247
267
|
splitPanelWidth.value = width;
|
|
248
268
|
emit("update:splitPanelWidth", width);
|
|
249
269
|
emit("split-panel-width-change", width);
|
|
270
|
+
},
|
|
271
|
+
onPositionChange: (position) => {
|
|
272
|
+
localSplitPosition.value = position;
|
|
250
273
|
}
|
|
251
274
|
});
|
|
252
275
|
usePersistState({
|
|
@@ -257,6 +280,8 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
257
280
|
theme: toRef(props, "theme"),
|
|
258
281
|
sessionListCollapsed: localSessionListCollapsed,
|
|
259
282
|
splitPanelWidth,
|
|
283
|
+
displayMode: localDisplayMode,
|
|
284
|
+
splitPosition: localSplitPosition,
|
|
260
285
|
onRestore: (state) => {
|
|
261
286
|
if (state.open !== void 0 && state.open !== props.open) {
|
|
262
287
|
emit("update:open", state.open);
|
|
@@ -291,6 +316,12 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
291
316
|
if (state.splitPanelWidth !== void 0 && state.splitPanelWidth !== props.splitPanelWidth) {
|
|
292
317
|
handleResize(state.splitPanelWidth);
|
|
293
318
|
}
|
|
319
|
+
if (state.displayMode !== void 0 && state.displayMode !== props.displayMode) {
|
|
320
|
+
localDisplayMode.value = state.displayMode;
|
|
321
|
+
}
|
|
322
|
+
if (state.splitPosition !== void 0) {
|
|
323
|
+
localSplitPosition.value = state.splitPosition;
|
|
324
|
+
}
|
|
294
325
|
nextTick(() => {
|
|
295
326
|
syncStateToIframe();
|
|
296
327
|
setTimeout(() => {
|
|
@@ -328,12 +359,12 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
328
359
|
}
|
|
329
360
|
});
|
|
330
361
|
const bubbleQuadrant = computed(() => {
|
|
331
|
-
var
|
|
362
|
+
var _a2, _b2, _c, _d;
|
|
332
363
|
if (typeof window === "undefined") return "bottom-right";
|
|
333
364
|
const centerX = windowWidth.value / 2;
|
|
334
365
|
const centerY = windowHeight.value / 2;
|
|
335
366
|
const bubbleSize = 44;
|
|
336
|
-
const currentOffset = (
|
|
367
|
+
const currentOffset = (_b2 = (_a2 = triggerRef.value) == null ? void 0 : _a2.offset) != null ? _b2 : bubbleOffset.value;
|
|
337
368
|
const effectiveX = ((_c = currentOffset == null ? void 0 : currentOffset.x) != null ? _c : windowWidth.value - bubbleSize - 24) + bubbleSize / 2;
|
|
338
369
|
const effectiveY = ((_d = currentOffset == null ? void 0 : currentOffset.y) != null ? _d : windowHeight.value - bubbleSize - 24) + bubbleSize / 2;
|
|
339
370
|
if (effectiveX >= centerX && effectiveY >= centerY) {
|
|
@@ -351,14 +382,14 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
351
382
|
return quadrant === "top-right" || quadrant === "bottom-right";
|
|
352
383
|
});
|
|
353
384
|
const chatPositionStyle = computed(() => {
|
|
354
|
-
var
|
|
385
|
+
var _a2, _b2, _c;
|
|
355
386
|
if (typeof window === "undefined") return {};
|
|
356
387
|
const chatWidth = minimized.value ? 300 : 700;
|
|
357
388
|
const chatHeight = minimized.value ? 300 : Math.min(windowHeight.value * 0.86, windowHeight.value - 40);
|
|
358
389
|
const gap = 24;
|
|
359
390
|
const bubbleSize = 44;
|
|
360
391
|
const screenMargin = 20;
|
|
361
|
-
const effectiveOffset = (_c = (
|
|
392
|
+
const effectiveOffset = (_c = (_b2 = (_a2 = triggerRef.value) == null ? void 0 : _a2.offset) != null ? _b2 : bubbleOffset.value) != null ? _c : { x: windowWidth.value - bubbleSize - gap, y: windowHeight.value - bubbleSize - gap };
|
|
362
393
|
const style = {};
|
|
363
394
|
if (isBubbleOnRightSide.value) {
|
|
364
395
|
let rightPos = windowWidth.value - effectiveOffset.x + gap;
|
|
@@ -458,9 +489,11 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
458
489
|
promptDockVisible,
|
|
459
490
|
bubbleOffset,
|
|
460
491
|
mode: effectiveMode,
|
|
492
|
+
displayMode: localDisplayMode,
|
|
493
|
+
splitPosition,
|
|
461
494
|
sessionStates: computed(() => {
|
|
462
|
-
var
|
|
463
|
-
return (
|
|
495
|
+
var _a2;
|
|
496
|
+
return (_a2 = props.sessionStates) != null ? _a2 : {};
|
|
464
497
|
}),
|
|
465
498
|
iframeSource,
|
|
466
499
|
buttonActive,
|
|
@@ -475,6 +508,8 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
475
508
|
handleTogglePromptDock,
|
|
476
509
|
handleToggleSessionList,
|
|
477
510
|
handleToggleTheme,
|
|
511
|
+
handleToggleDisplayMode,
|
|
512
|
+
handleToggleSplitPosition: handleTogglePosition,
|
|
478
513
|
handleEmptyAction,
|
|
479
514
|
handleCreateSession,
|
|
480
515
|
handleSelectSession,
|
|
@@ -500,7 +535,7 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
500
535
|
return dialogResolve;
|
|
501
536
|
}, set dialogResolve(v) {
|
|
502
537
|
dialogResolve = v;
|
|
503
|
-
}, showConfirmDialog, handleDialogConfirm, handleDialogCancel, frameRef, triggerRef, sendMessageToIframe, localSessionListCollapsed, minimized, promptDockVisible, isRestoring, iframeLoaded, splitPanelWidth, syncStateToIframe, handleFrameLoaded, 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, panelWidth, splitConfig, handleResize, handleSplitToggle, handleToggleMinimize, handleTogglePromptDock, windowWidth, windowHeight, handleWindowResize, bubbleQuadrant, isBubbleOnRightSide, chatPositionStyle, handleBubbleOffsetChange, handleResizeStart, handleResizeEnd, chatAnimationOrigin, isDragging, get wasOpenBeforeDrag() {
|
|
538
|
+
}, 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, panelWidth, splitConfig, splitPosition, handleResize, handleSplitToggle, handleTogglePosition, handleToggleMinimize, handleTogglePromptDock, windowWidth, windowHeight, handleWindowResize, bubbleQuadrant, isBubbleOnRightSide, chatPositionStyle, handleBubbleOffsetChange, handleResizeStart, handleResizeEnd, chatAnimationOrigin, isDragging, get wasOpenBeforeDrag() {
|
|
504
539
|
return wasOpenBeforeDrag;
|
|
505
540
|
}, set wasOpenBeforeDrag(v) {
|
|
506
541
|
wasOpenBeforeDrag = v;
|
|
@@ -576,6 +611,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
576
611
|
"notification-mode": $setup.notificationMode,
|
|
577
612
|
thinking: $props.thinking,
|
|
578
613
|
"resolved-theme": $setup.resolvedTheme,
|
|
614
|
+
"split-position": $setup.splitPosition,
|
|
579
615
|
onResize: $setup.handleResize,
|
|
580
616
|
onResizeStart: $setup.handleResizeStart,
|
|
581
617
|
onResizeEnd: $setup.handleResizeEnd,
|
|
@@ -644,7 +680,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
644
680
|
]),
|
|
645
681
|
key: "6"
|
|
646
682
|
} : void 0
|
|
647
|
-
]), 1032, ["mode", "open", "minimized", "position-style", "animation-origin", "panel-width", "resizable", "min-width", "max-width", "no-transition", "dragging", "notification-visible", "notification-message", "notification-mode", "thinking", "resolved-theme", "onResize", "onToggle"]),
|
|
683
|
+
]), 1032, ["mode", "open", "minimized", "position-style", "animation-origin", "panel-width", "resizable", "min-width", "max-width", "no-transition", "dragging", "notification-visible", "notification-message", "notification-mode", "thinking", "resolved-theme", "split-position", "onResize", "onToggle"]),
|
|
648
684
|
_createVNode($setup["SelectHint"]),
|
|
649
685
|
_withDirectives(_createElementVNode(
|
|
650
686
|
"div",
|