@vite-plugin-opencode-assistant/components 1.0.5

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 (105) hide show
  1. package/es/env.d.ts +10 -0
  2. package/es/index.d.ts +6 -0
  3. package/es/index.js +21 -0
  4. package/es/open-code-widget/composables/use-inspector.d.ts +52 -0
  5. package/es/open-code-widget/composables/use-inspector.js +188 -0
  6. package/es/open-code-widget/composables/use-selection.d.ts +19 -0
  7. package/es/open-code-widget/composables/use-selection.js +142 -0
  8. package/es/open-code-widget/composables/use-session.d.ts +16 -0
  9. package/es/open-code-widget/composables/use-session.js +68 -0
  10. package/es/open-code-widget/composables/use-widget.d.ts +24 -0
  11. package/es/open-code-widget/composables/use-widget.js +44 -0
  12. package/es/open-code-widget/index.d.ts +3 -0
  13. package/es/open-code-widget/index.js +6 -0
  14. package/es/open-code-widget/src/components/Frame-sfc.css +1 -0
  15. package/es/open-code-widget/src/components/Frame.vue.d.ts +16 -0
  16. package/es/open-code-widget/src/components/Frame.vue.js +120 -0
  17. package/es/open-code-widget/src/components/Header-sfc.css +1 -0
  18. package/es/open-code-widget/src/components/Header.vue.d.ts +16 -0
  19. package/es/open-code-widget/src/components/Header.vue.js +140 -0
  20. package/es/open-code-widget/src/components/SelectHint-sfc.css +1 -0
  21. package/es/open-code-widget/src/components/SelectHint.vue.d.ts +2 -0
  22. package/es/open-code-widget/src/components/SelectHint.vue.js +46 -0
  23. package/es/open-code-widget/src/components/SelectedBubbles-sfc.css +1 -0
  24. package/es/open-code-widget/src/components/SelectedBubbles.vue.d.ts +2 -0
  25. package/es/open-code-widget/src/components/SelectedBubbles.vue.js +84 -0
  26. package/es/open-code-widget/src/components/SelectedNodes-sfc.css +1 -0
  27. package/es/open-code-widget/src/components/SelectedNodes.vue.d.ts +2 -0
  28. package/es/open-code-widget/src/components/SelectedNodes.vue.js +103 -0
  29. package/es/open-code-widget/src/components/SessionList-sfc.css +1 -0
  30. package/es/open-code-widget/src/components/SessionList.vue.d.ts +12 -0
  31. package/es/open-code-widget/src/components/SessionList.vue.js +209 -0
  32. package/es/open-code-widget/src/components/Trigger-sfc.css +1 -0
  33. package/es/open-code-widget/src/components/Trigger.vue.d.ts +12 -0
  34. package/es/open-code-widget/src/components/Trigger.vue.js +66 -0
  35. package/es/open-code-widget/src/context.d.ts +42 -0
  36. package/es/open-code-widget/src/context.js +16 -0
  37. package/es/open-code-widget/src/index-sfc.css +1 -0
  38. package/es/open-code-widget/src/index.vue.d.ts +83 -0
  39. package/es/open-code-widget/src/index.vue.js +464 -0
  40. package/es/open-code-widget/src/types.d.ts +74 -0
  41. package/es/open-code-widget/src/types.js +0 -0
  42. package/es/open-code-widget/style/index-pure.d.ts +0 -0
  43. package/es/open-code-widget/style/index-pure.js +0 -0
  44. package/es/open-code-widget/style/index.d.ts +0 -0
  45. package/es/open-code-widget/style/index.js +0 -0
  46. package/es/open-code-widget/style/less-pure.d.ts +0 -0
  47. package/es/open-code-widget/style/less-pure.js +0 -0
  48. package/es/open-code-widget/style/less.d.ts +0 -0
  49. package/es/open-code-widget/style/less.js +0 -0
  50. package/lib/@vite-plugin-opencode-assistant/components.cjs.js +1322 -0
  51. package/lib/@vite-plugin-opencode-assistant/components.es.js +1315 -0
  52. package/lib/components.css +9 -0
  53. package/lib/env.d.ts +10 -0
  54. package/lib/index.css +0 -0
  55. package/lib/index.d.ts +6 -0
  56. package/lib/index.js +50 -0
  57. package/lib/index.less +0 -0
  58. package/lib/open-code-widget/composables/use-inspector.d.ts +52 -0
  59. package/lib/open-code-widget/composables/use-inspector.js +207 -0
  60. package/lib/open-code-widget/composables/use-selection.d.ts +19 -0
  61. package/lib/open-code-widget/composables/use-selection.js +161 -0
  62. package/lib/open-code-widget/composables/use-session.d.ts +16 -0
  63. package/lib/open-code-widget/composables/use-session.js +87 -0
  64. package/lib/open-code-widget/composables/use-widget.d.ts +24 -0
  65. package/lib/open-code-widget/composables/use-widget.js +63 -0
  66. package/lib/open-code-widget/index.d.ts +3 -0
  67. package/lib/open-code-widget/index.js +36 -0
  68. package/lib/open-code-widget/src/components/Frame-sfc.css +1 -0
  69. package/lib/open-code-widget/src/components/Frame.vue.d.ts +16 -0
  70. package/lib/open-code-widget/src/components/Frame.vue.js +139 -0
  71. package/lib/open-code-widget/src/components/Header-sfc.css +1 -0
  72. package/lib/open-code-widget/src/components/Header.vue.d.ts +16 -0
  73. package/lib/open-code-widget/src/components/Header.vue.js +159 -0
  74. package/lib/open-code-widget/src/components/SelectHint-sfc.css +1 -0
  75. package/lib/open-code-widget/src/components/SelectHint.vue.d.ts +2 -0
  76. package/lib/open-code-widget/src/components/SelectHint.vue.js +65 -0
  77. package/lib/open-code-widget/src/components/SelectedBubbles-sfc.css +1 -0
  78. package/lib/open-code-widget/src/components/SelectedBubbles.vue.d.ts +2 -0
  79. package/lib/open-code-widget/src/components/SelectedBubbles.vue.js +103 -0
  80. package/lib/open-code-widget/src/components/SelectedNodes-sfc.css +1 -0
  81. package/lib/open-code-widget/src/components/SelectedNodes.vue.d.ts +2 -0
  82. package/lib/open-code-widget/src/components/SelectedNodes.vue.js +122 -0
  83. package/lib/open-code-widget/src/components/SessionList-sfc.css +1 -0
  84. package/lib/open-code-widget/src/components/SessionList.vue.d.ts +12 -0
  85. package/lib/open-code-widget/src/components/SessionList.vue.js +228 -0
  86. package/lib/open-code-widget/src/components/Trigger-sfc.css +1 -0
  87. package/lib/open-code-widget/src/components/Trigger.vue.d.ts +12 -0
  88. package/lib/open-code-widget/src/components/Trigger.vue.js +85 -0
  89. package/lib/open-code-widget/src/context.d.ts +42 -0
  90. package/lib/open-code-widget/src/context.js +35 -0
  91. package/lib/open-code-widget/src/index-sfc.css +1 -0
  92. package/lib/open-code-widget/src/index.vue.d.ts +83 -0
  93. package/lib/open-code-widget/src/index.vue.js +491 -0
  94. package/lib/open-code-widget/src/types.d.ts +74 -0
  95. package/lib/open-code-widget/src/types.js +15 -0
  96. package/lib/open-code-widget/style/index-pure.d.ts +0 -0
  97. package/lib/open-code-widget/style/index-pure.js +0 -0
  98. package/lib/open-code-widget/style/index.d.ts +0 -0
  99. package/lib/open-code-widget/style/index.js +0 -0
  100. package/lib/open-code-widget/style/less-pure.d.ts +0 -0
  101. package/lib/open-code-widget/style/less-pure.js +0 -0
  102. package/lib/open-code-widget/style/less.d.ts +0 -0
  103. package/lib/open-code-widget/style/less.js +0 -0
  104. package/lib/web-types.json +1 -0
  105. package/package.json +46 -0
@@ -0,0 +1,464 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import "./index-sfc.css";
21
+ import { defineComponent as _defineComponent } from "vue";
22
+ import { useSlots, toRef, ref, watch } from "vue";
23
+ import Frame from "./components/Frame.vue.js";
24
+ import Header from "./components/Header.vue.js";
25
+ import SelectHint from "./components/SelectHint.vue.js";
26
+ import SelectedBubbles from "./components/SelectedBubbles.vue.js";
27
+ import SelectedNodes from "./components/SelectedNodes.vue.js";
28
+ import SessionList from "./components/SessionList.vue.js";
29
+ import Trigger from "./components/Trigger.vue.js";
30
+ import { useSelection } from "../composables/use-selection";
31
+ import { useSession } from "../composables/use-session";
32
+ import { useWidget } from "../composables/use-widget";
33
+ import { useInspector } from "../composables/use-inspector";
34
+ import { provideOpenCodeWidgetContext } from "./context";
35
+ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValues({}, {
36
+ name: "OpencodeWidget"
37
+ }), {
38
+ __name: "index",
39
+ props: {
40
+ position: { type: String, required: false, default: "bottom-right" },
41
+ open: { type: Boolean, required: false, default: false },
42
+ theme: { type: String, required: false, default: "light" },
43
+ title: { type: String, required: false, default: "AI \u52A9\u624B" },
44
+ hotkeyLabel: { type: String, required: false, default: "Ctrl+K" },
45
+ selectShortcutLabel: { type: String, required: false, default: "\u6309 ESC \u6216 Ctrl+P \u9000\u51FA" },
46
+ selectMode: { type: Boolean, required: false, default: false },
47
+ sessionListCollapsed: { type: Boolean, required: false, default: true },
48
+ loading: { type: Boolean, required: false, default: false },
49
+ loadingSessionList: { type: Boolean, required: false },
50
+ showEmptyState: { type: Boolean, required: false, default: false },
51
+ iframeSrc: { type: String, required: false, default: "" },
52
+ sessions: { type: Array, required: false, default: () => [] },
53
+ currentSessionId: { type: [String, null], required: false, default: null },
54
+ selectedElements: { type: Array, required: false, default: () => [] },
55
+ showClearAll: { type: Boolean, required: false, default: true },
56
+ selectEnabled: { type: Boolean, required: false, default: true },
57
+ emptyStateText: { type: String, required: false, default: "\u5F53\u524D\u9879\u76EE\u6682\u65E0\u4F1A\u8BDD" },
58
+ emptyStateActionText: { type: String, required: false, default: "\u7ACB\u5373\u521B\u5EFA" }
59
+ },
60
+ emits: ["update:open", "update:selectMode", "update:sessionListCollapsed", "update:currentSessionId", "update:selectedElements", "toggle", "close", "toggle-session-list", "toggle-select-mode", "create-session", "select-session", "delete-session", "click-selected-node", "remove-selected-node", "clear-selected-nodes", "empty-action"],
61
+ setup(__props, { expose: __expose, emit: __emit }) {
62
+ const props = __props;
63
+ const emit = __emit;
64
+ const slots = useSlots();
65
+ const notificationMessage = ref("");
66
+ const notificationVisible = ref(false);
67
+ let notificationTimer = null;
68
+ const showNotification = (message, duration = 3e3) => {
69
+ notificationMessage.value = message;
70
+ notificationVisible.value = true;
71
+ if (notificationTimer) clearTimeout(notificationTimer);
72
+ notificationTimer = setTimeout(() => {
73
+ notificationVisible.value = false;
74
+ }, duration);
75
+ };
76
+ const dialogVisible = ref(false);
77
+ const dialogMessage = ref("");
78
+ let dialogResolve = null;
79
+ const showConfirmDialog = (message) => {
80
+ dialogMessage.value = message;
81
+ dialogVisible.value = true;
82
+ return new Promise((resolve) => {
83
+ dialogResolve = resolve;
84
+ });
85
+ };
86
+ const handleDialogConfirm = () => {
87
+ dialogVisible.value = false;
88
+ if (dialogResolve) dialogResolve(true);
89
+ };
90
+ const handleDialogCancel = () => {
91
+ dialogVisible.value = false;
92
+ if (dialogResolve) dialogResolve(false);
93
+ };
94
+ __expose({
95
+ showNotification,
96
+ showConfirmDialog
97
+ });
98
+ const localSessionListCollapsed = ref(props.sessionListCollapsed);
99
+ watch(
100
+ () => props.sessionListCollapsed,
101
+ (val) => {
102
+ localSessionListCollapsed.value = val;
103
+ }
104
+ );
105
+ const {
106
+ buttonActive,
107
+ containerClasses,
108
+ iframeSource,
109
+ sessionListTitle,
110
+ handleClose,
111
+ handleEmptyAction,
112
+ handleToggle,
113
+ handleToggleSessionList
114
+ } = useWidget({
115
+ position: toRef(props, "position"),
116
+ theme: toRef(props, "theme"),
117
+ open: toRef(props, "open"),
118
+ selectMode: toRef(props, "selectMode"),
119
+ iframeSrc: toRef(props, "iframeSrc"),
120
+ sessionListCollapsed: localSessionListCollapsed,
121
+ onToggle: (nextOpen) => {
122
+ emit("update:open", nextOpen);
123
+ emit("toggle", nextOpen);
124
+ },
125
+ onToggleSelectMode: (mode) => {
126
+ emit("update:selectMode", mode);
127
+ emit("toggle-select-mode", mode);
128
+ },
129
+ onClose: () => {
130
+ emit("update:open", false);
131
+ emit("close");
132
+ },
133
+ onToggleSessionList: (collapsed) => {
134
+ localSessionListCollapsed.value = collapsed;
135
+ emit("update:sessionListCollapsed", collapsed);
136
+ emit("toggle-session-list", collapsed);
137
+ },
138
+ onEmptyAction: () => {
139
+ emit("empty-action");
140
+ }
141
+ });
142
+ const { sessionItems, handleCreateSession, handleDeleteSession, handleSelectSession } = useSession({
143
+ sessions: toRef(props, "sessions"),
144
+ currentSessionId: toRef(props, "currentSessionId"),
145
+ onCreateSession: () => emit("create-session"),
146
+ onSelectSession: (session) => {
147
+ emit("update:currentSessionId", session.id);
148
+ emit("select-session", session);
149
+ },
150
+ onDeleteSession: (session) => emit("delete-session", session),
151
+ showConfirmDialog
152
+ });
153
+ const {
154
+ bubbleVisible,
155
+ hasSelectedElements,
156
+ selectedElementItems,
157
+ handleClearSelectedNodes,
158
+ handleClickSelectedNode,
159
+ handleRemoveSelectedNode,
160
+ handleToggleSelectMode
161
+ } = useSelection({
162
+ selectMode: toRef(props, "selectMode"),
163
+ selectedElements: toRef(props, "selectedElements"),
164
+ onToggleSelectMode: (mode) => {
165
+ emit("update:selectMode", mode);
166
+ emit("toggle-select-mode", mode);
167
+ },
168
+ onRemoveSelectedNode: (payload) => {
169
+ emit("remove-selected-node", payload);
170
+ const newElements = [...props.selectedElements];
171
+ newElements.splice(payload.index, 1);
172
+ emit("update:selectedElements", newElements);
173
+ },
174
+ onClearSelectedNodes: () => {
175
+ emit("clear-selected-nodes");
176
+ emit("update:selectedElements", []);
177
+ },
178
+ showConfirmDialog
179
+ });
180
+ const { highlightVisible, highlightStyle, tooltipVisible, tooltipStyle, tooltipContent } = useInspector({
181
+ selectMode: toRef(props, "selectMode"),
182
+ onAddSelectedNode: (element) => {
183
+ emit("click-selected-node", element);
184
+ },
185
+ onExitSelectMode: () => {
186
+ emit("update:selectMode", false);
187
+ emit("toggle-select-mode", false);
188
+ }
189
+ });
190
+ provideOpenCodeWidgetContext({
191
+ theme: toRef(props, "theme"),
192
+ title: toRef(props, "title"),
193
+ hotkeyLabel: toRef(props, "hotkeyLabel"),
194
+ selectShortcutLabel: toRef(props, "selectShortcutLabel"),
195
+ selectMode: toRef(props, "selectMode"),
196
+ selectEnabled: toRef(props, "selectEnabled"),
197
+ sessionListCollapsed: localSessionListCollapsed,
198
+ loading: toRef(props, "loading"),
199
+ loadingSessionList: toRef(props, "loadingSessionList"),
200
+ showEmptyState: toRef(props, "showEmptyState"),
201
+ emptyStateText: toRef(props, "emptyStateText"),
202
+ emptyStateActionText: toRef(props, "emptyStateActionText"),
203
+ showClearAll: toRef(props, "showClearAll"),
204
+ open: toRef(props, "open"),
205
+ iframeSource,
206
+ buttonActive,
207
+ sessionListTitle,
208
+ bubbleVisible,
209
+ hasSelectedElements,
210
+ sessionItems,
211
+ selectedElementItems,
212
+ handleToggle,
213
+ handleClose,
214
+ handleToggleSessionList,
215
+ handleEmptyAction,
216
+ handleCreateSession,
217
+ handleSelectSession,
218
+ handleDeleteSession,
219
+ handleToggleSelectMode,
220
+ handleClickSelectedNode,
221
+ handleRemoveSelectedNode: (payload) => handleRemoveSelectedNode(payload.item, payload.index, payload.source),
222
+ handleClearSelectedNodes
223
+ });
224
+ const __returned__ = { props, emit, slots, notificationMessage, notificationVisible, get notificationTimer() {
225
+ return notificationTimer;
226
+ }, set notificationTimer(v) {
227
+ notificationTimer = v;
228
+ }, showNotification, dialogVisible, dialogMessage, get dialogResolve() {
229
+ return dialogResolve;
230
+ }, set dialogResolve(v) {
231
+ dialogResolve = v;
232
+ }, showConfirmDialog, handleDialogConfirm, handleDialogCancel, localSessionListCollapsed, buttonActive, containerClasses, iframeSource, sessionListTitle, handleClose, handleEmptyAction, handleToggle, handleToggleSessionList, sessionItems, handleCreateSession, handleDeleteSession, handleSelectSession, bubbleVisible, hasSelectedElements, selectedElementItems, handleClearSelectedNodes, handleClickSelectedNode, handleRemoveSelectedNode, handleToggleSelectMode, highlightVisible, highlightStyle, tooltipVisible, tooltipStyle, tooltipContent, Frame, Header, SelectHint, SelectedBubbles, SelectedNodes, SessionList, Trigger };
233
+ Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
234
+ return __returned__;
235
+ }
236
+ }));
237
+ import { renderSlot as _renderSlot, withCtx as _withCtx, createSlots as _createSlots, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, vShow as _vShow, normalizeClass as _normalizeClass, withDirectives as _withDirectives, normalizeStyle as _normalizeStyle } from "vue";
238
+ const _hoisted_1 = {
239
+ key: 0,
240
+ class: "opencode-notification",
241
+ role: "alert"
242
+ };
243
+ const _hoisted_2 = { class: "opencode-chat-content" };
244
+ const _hoisted_3 = { class: "opencode-tooltip-tag" };
245
+ const _hoisted_4 = { class: "opencode-tooltip-file" };
246
+ const _hoisted_5 = {
247
+ key: 1,
248
+ class: "opencode-dialog-overlay"
249
+ };
250
+ const _hoisted_6 = {
251
+ class: "opencode-dialog",
252
+ role: "alertdialog",
253
+ "aria-modal": "true"
254
+ };
255
+ const _hoisted_7 = { class: "opencode-dialog-content" };
256
+ const _hoisted_8 = { class: "opencode-dialog-message" };
257
+ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
258
+ return _openBlock(), _createElementBlock(
259
+ "div",
260
+ {
261
+ class: _normalizeClass($setup.containerClasses)
262
+ },
263
+ [
264
+ _createVNode(
265
+ $setup["Trigger"],
266
+ null,
267
+ _createSlots({
268
+ _: 2
269
+ /* DYNAMIC */
270
+ }, [
271
+ $setup.slots["button-icon"] ? {
272
+ name: "default",
273
+ fn: _withCtx(() => [
274
+ _renderSlot(_ctx.$slots, "button-icon")
275
+ ]),
276
+ key: "0"
277
+ } : void 0
278
+ ]),
279
+ 1024
280
+ /* DYNAMIC_SLOTS */
281
+ ),
282
+ $setup.bubbleVisible ? (_openBlock(), _createBlock($setup["SelectedBubbles"], { key: 0 })) : _createCommentVNode("v-if", true),
283
+ _withDirectives(_createElementVNode(
284
+ "div",
285
+ {
286
+ class: _normalizeClass(["opencode-chat", { open: $props.open }])
287
+ },
288
+ [
289
+ _createVNode(
290
+ $setup["Header"],
291
+ null,
292
+ _createSlots({
293
+ _: 2
294
+ /* DYNAMIC */
295
+ }, [
296
+ $setup.slots["session-toggle-icon"] ? {
297
+ name: "session-toggle-icon",
298
+ fn: _withCtx(() => [
299
+ _renderSlot(_ctx.$slots, "session-toggle-icon")
300
+ ]),
301
+ key: "0"
302
+ } : void 0,
303
+ $setup.slots["select-icon"] ? {
304
+ name: "select-icon",
305
+ fn: _withCtx(() => [
306
+ _renderSlot(_ctx.$slots, "select-icon")
307
+ ]),
308
+ key: "1"
309
+ } : void 0,
310
+ $setup.slots["close-icon"] ? {
311
+ name: "close-icon",
312
+ fn: _withCtx(() => [
313
+ _renderSlot(_ctx.$slots, "close-icon")
314
+ ]),
315
+ key: "2"
316
+ } : void 0
317
+ ]),
318
+ 1024
319
+ /* DYNAMIC_SLOTS */
320
+ ),
321
+ _createCommentVNode(" Notification "),
322
+ $setup.notificationVisible ? (_openBlock(), _createElementBlock(
323
+ "div",
324
+ _hoisted_1,
325
+ _toDisplayString($setup.notificationMessage),
326
+ 1
327
+ /* TEXT */
328
+ )) : _createCommentVNode("v-if", true),
329
+ _createElementVNode("div", _hoisted_2, [
330
+ _createVNode($setup["SessionList"], null, {
331
+ empty: _withCtx(() => [
332
+ _renderSlot(_ctx.$slots, "sessions-empty", {}, () => [
333
+ _cache[0] || (_cache[0] = _createElementVNode(
334
+ "div",
335
+ { class: "opencode-session-empty" },
336
+ "\u6682\u65E0\u4F1A\u8BDD",
337
+ -1
338
+ /* CACHED */
339
+ ))
340
+ ])
341
+ ]),
342
+ _: 3
343
+ /* FORWARDED */
344
+ }),
345
+ _createVNode(
346
+ $setup["Frame"],
347
+ null,
348
+ _createSlots({
349
+ _: 2
350
+ /* DYNAMIC */
351
+ }, [
352
+ $setup.slots["empty-state"] ? {
353
+ name: "empty-state",
354
+ fn: _withCtx(() => [
355
+ _renderSlot(_ctx.$slots, "empty-state")
356
+ ]),
357
+ key: "0"
358
+ } : void 0,
359
+ $setup.slots.loading ? {
360
+ name: "loading",
361
+ fn: _withCtx(() => [
362
+ _renderSlot(_ctx.$slots, "loading")
363
+ ]),
364
+ key: "1"
365
+ } : void 0,
366
+ $setup.slots.content ? {
367
+ name: "content",
368
+ fn: _withCtx(() => [
369
+ _renderSlot(_ctx.$slots, "content")
370
+ ]),
371
+ key: "2"
372
+ } : void 0
373
+ ]),
374
+ 1024
375
+ /* DYNAMIC_SLOTS */
376
+ ),
377
+ _createVNode($setup["SelectedNodes"])
378
+ ])
379
+ ],
380
+ 2
381
+ /* CLASS */
382
+ ), [
383
+ [_vShow, !$props.selectMode]
384
+ ]),
385
+ _createVNode($setup["SelectHint"]),
386
+ _createCommentVNode(" Inspector Highlight "),
387
+ _withDirectives(_createElementVNode(
388
+ "div",
389
+ {
390
+ class: "opencode-element-highlight",
391
+ style: _normalizeStyle(__spreadValues({
392
+ display: $setup.highlightVisible ? "block" : "none"
393
+ }, $setup.highlightStyle))
394
+ },
395
+ null,
396
+ 4
397
+ /* STYLE */
398
+ ), [
399
+ [_vShow, $setup.highlightVisible]
400
+ ]),
401
+ _createCommentVNode(" Inspector Tooltip "),
402
+ _withDirectives(_createElementVNode(
403
+ "div",
404
+ {
405
+ class: "opencode-element-tooltip",
406
+ style: _normalizeStyle(__spreadValues({
407
+ display: $setup.tooltipVisible ? "block" : "none"
408
+ }, $setup.tooltipStyle))
409
+ },
410
+ [
411
+ _createElementVNode(
412
+ "div",
413
+ _hoisted_3,
414
+ _toDisplayString($setup.tooltipContent.description),
415
+ 1
416
+ /* TEXT */
417
+ ),
418
+ _createElementVNode(
419
+ "div",
420
+ _hoisted_4,
421
+ _toDisplayString($setup.tooltipContent.fileInfo),
422
+ 1
423
+ /* TEXT */
424
+ )
425
+ ],
426
+ 4
427
+ /* STYLE */
428
+ ), [
429
+ [_vShow, $setup.tooltipVisible]
430
+ ]),
431
+ _createCommentVNode(" Dialog "),
432
+ $setup.dialogVisible ? (_openBlock(), _createElementBlock("div", _hoisted_5, [
433
+ _createElementVNode("div", _hoisted_6, [
434
+ _createElementVNode("div", _hoisted_7, [
435
+ _createElementVNode(
436
+ "div",
437
+ _hoisted_8,
438
+ _toDisplayString($setup.dialogMessage),
439
+ 1
440
+ /* TEXT */
441
+ )
442
+ ]),
443
+ _createElementVNode("div", { class: "opencode-dialog-actions" }, [
444
+ _createElementVNode("button", {
445
+ class: "opencode-dialog-btn cancel",
446
+ onClick: $setup.handleDialogCancel
447
+ }, "\u53D6\u6D88"),
448
+ _createElementVNode("button", {
449
+ class: "opencode-dialog-btn confirm",
450
+ onClick: $setup.handleDialogConfirm
451
+ }, "\u786E\u8BA4")
452
+ ])
453
+ ])
454
+ ])) : _createCommentVNode("v-if", true)
455
+ ],
456
+ 2
457
+ /* CLASS */
458
+ );
459
+ }
460
+ __vue_sfc__.render = __vue_render__;
461
+ var index_vue_default = __vue_sfc__;
462
+ export {
463
+ index_vue_default as default
464
+ };
@@ -0,0 +1,74 @@
1
+ export type OpenCodeWidgetPosition = "bottom-right" | "bottom-left" | "top-right" | "top-left";
2
+ export type OpenCodeWidgetTheme = "light" | "dark" | "auto";
3
+ export interface OpenCodeWidgetSession {
4
+ id: string;
5
+ title?: string;
6
+ updatedAt?: string | number | Date;
7
+ meta?: string;
8
+ directory?: string;
9
+ }
10
+ export interface OpenCodeSelectedElement {
11
+ filePath: string | null;
12
+ line: number | null;
13
+ column: number | null;
14
+ innerText: string;
15
+ description: string;
16
+ }
17
+ export interface OpenCodeWidgetProps {
18
+ position?: OpenCodeWidgetPosition;
19
+ open?: boolean;
20
+ theme?: OpenCodeWidgetTheme;
21
+ title?: string;
22
+ hotkeyLabel?: string;
23
+ selectShortcutLabel?: string;
24
+ selectMode?: boolean;
25
+ sessionListCollapsed?: boolean;
26
+ loading?: boolean;
27
+ loadingSessionList?: boolean;
28
+ showEmptyState?: boolean;
29
+ iframeSrc?: string;
30
+ sessions?: OpenCodeWidgetSession[];
31
+ currentSessionId?: string | null;
32
+ selectedElements?: OpenCodeSelectedElement[];
33
+ showClearAll?: boolean;
34
+ selectEnabled?: boolean;
35
+ emptyStateText?: string;
36
+ emptyStateActionText?: string;
37
+ }
38
+ export type OpenCodeWidgetEmits = {
39
+ (e: "update:open", value: boolean): void;
40
+ (e: "update:selectMode", value: boolean): void;
41
+ (e: "update:sessionListCollapsed", value: boolean): void;
42
+ (e: "update:currentSessionId", value: string | null): void;
43
+ (e: "update:selectedElements", value: OpenCodeSelectedElement[]): void;
44
+ (e: "toggle", value: boolean): void;
45
+ (e: "close"): void;
46
+ (e: "toggle-session-list", value: boolean): void;
47
+ (e: "toggle-select-mode", value: boolean): void;
48
+ (e: "create-session"): void;
49
+ (e: "select-session", session: OpenCodeWidgetSession): void;
50
+ (e: "delete-session", session: OpenCodeWidgetSession): void;
51
+ (e: "click-selected-node", element: OpenCodeSelectedElement): void;
52
+ (e: "remove-selected-node", payload: OpenCodeRemoveSelectedPayload): void;
53
+ (e: "clear-selected-nodes"): void;
54
+ (e: "empty-action"): void;
55
+ };
56
+ export interface OpenCodeRemoveSelectedPayload {
57
+ element: OpenCodeSelectedElement;
58
+ index: number;
59
+ source: "panel" | "bubble";
60
+ }
61
+ export interface OpenCodeWidgetSessionItem {
62
+ key: string;
63
+ title: string;
64
+ meta: string;
65
+ active: boolean;
66
+ session: OpenCodeWidgetSession;
67
+ }
68
+ export interface OpenCodeSelectedElementItem {
69
+ key: string;
70
+ description: string;
71
+ bubbleFileText: string;
72
+ panelFileText: string;
73
+ element: OpenCodeSelectedElement;
74
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes