@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.
Files changed (35) hide show
  1. package/es/index.d.ts +1 -1
  2. package/es/index.js +1 -1
  3. package/es/open-code-widget/composables/use-persist-state.d.ts +5 -1
  4. package/es/open-code-widget/composables/use-persist-state.js +10 -2
  5. package/es/open-code-widget/composables/use-split.d.ts +5 -0
  6. package/es/open-code-widget/composables/use-split.js +46 -12
  7. package/es/open-code-widget/src/components/ChatPanel-sfc.css +1 -1
  8. package/es/open-code-widget/src/components/ChatPanel.vue.d.ts +2 -0
  9. package/es/open-code-widget/src/components/ChatPanel.vue.js +58 -10
  10. package/es/open-code-widget/src/components/Header.vue.d.ts +8 -4
  11. package/es/open-code-widget/src/components/Header.vue.js +313 -27
  12. package/es/open-code-widget/src/context.d.ts +5 -1
  13. package/es/open-code-widget/src/index-sfc.css +1 -1
  14. package/es/open-code-widget/src/index.vue.d.ts +1 -1
  15. package/es/open-code-widget/src/index.vue.js +48 -12
  16. package/lib/@vite-plugin-opencode-assistant/components.cjs.js +357 -67
  17. package/lib/@vite-plugin-opencode-assistant/components.es.js +357 -67
  18. package/lib/components.css +2 -2
  19. package/lib/index.d.ts +1 -1
  20. package/lib/index.js +1 -1
  21. package/lib/open-code-widget/composables/use-persist-state.d.ts +5 -1
  22. package/lib/open-code-widget/composables/use-persist-state.js +10 -2
  23. package/lib/open-code-widget/composables/use-split.d.ts +5 -0
  24. package/lib/open-code-widget/composables/use-split.js +46 -12
  25. package/lib/open-code-widget/src/components/ChatPanel-sfc.css +1 -1
  26. package/lib/open-code-widget/src/components/ChatPanel.vue.d.ts +2 -0
  27. package/lib/open-code-widget/src/components/ChatPanel.vue.js +58 -10
  28. package/lib/open-code-widget/src/components/Header.vue.d.ts +8 -4
  29. package/lib/open-code-widget/src/components/Header.vue.js +313 -27
  30. package/lib/open-code-widget/src/context.d.ts +5 -1
  31. package/lib/open-code-widget/src/index-sfc.css +1 -1
  32. package/lib/open-code-widget/src/index.vue.d.ts +1 -1
  33. package/lib/open-code-widget/src/index.vue.js +48 -12
  34. package/lib/web-types.json +1 -1
  35. 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 _a;
110
- (_a = frameRef.value) == null ? void 0 : _a.sendMessageToIframe(type, data);
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: toRef(props, "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 _a, _b, _c, _d;
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 = (_b = (_a = triggerRef.value) == null ? void 0 : _a.offset) != null ? _b : bubbleOffset.value;
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 _a, _b, _c;
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 = (_b = (_a = triggerRef.value) == null ? void 0 : _a.offset) != null ? _b : bubbleOffset.value) != null ? _c : { x: windowWidth.value - bubbleSize - gap, y: windowHeight.value - bubbleSize - gap };
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 _a;
463
- return (_a = props.sessionStates) != null ? _a : {};
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",