@vite-plugin-opencode-assistant/components 1.0.13 → 1.0.14
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-inspector.js +1 -4
- package/es/open-code-widget/composables/use-selection.js +1 -6
- package/es/open-code-widget/src/components/Frame-sfc.css +1 -1
- package/es/open-code-widget/src/components/Frame.vue.d.ts +4 -2
- package/es/open-code-widget/src/components/Frame.vue.js +17 -3
- package/es/open-code-widget/src/components/SelectHint-sfc.css +1 -1
- package/es/open-code-widget/src/components/SessionList.vue.js +3 -1
- package/es/open-code-widget/src/context.d.ts +4 -1
- package/es/open-code-widget/src/index.vue.d.ts +34 -28
- package/es/open-code-widget/src/index.vue.js +24 -9
- package/es/open-code-widget/src/types.d.ts +3 -79
- package/lib/@vite-plugin-opencode-assistant/components.cjs.js +52 -30
- package/lib/@vite-plugin-opencode-assistant/components.es.js +51 -29
- 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-inspector.js +2 -5
- package/lib/open-code-widget/composables/use-selection.js +2 -7
- package/lib/open-code-widget/src/components/Frame-sfc.css +1 -1
- package/lib/open-code-widget/src/components/Frame.vue.d.ts +4 -2
- package/lib/open-code-widget/src/components/Frame.vue.js +17 -3
- package/lib/open-code-widget/src/components/SelectHint-sfc.css +1 -1
- package/lib/open-code-widget/src/components/SessionList.vue.js +3 -1
- package/lib/open-code-widget/src/context.d.ts +4 -1
- package/lib/open-code-widget/src/index.vue.d.ts +34 -28
- package/lib/open-code-widget/src/index.vue.js +24 -9
- package/lib/open-code-widget/src/types.d.ts +3 -79
- package/lib/web-types.json +1 -1
- package/package.json +4 -1
|
@@ -45,12 +45,14 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
45
45
|
__expose();
|
|
46
46
|
const iframeRef = (0, import_vue2.ref)(null);
|
|
47
47
|
const {
|
|
48
|
-
|
|
48
|
+
frameLoading,
|
|
49
49
|
showEmptyState,
|
|
50
|
+
showError,
|
|
50
51
|
iframeSource: iframeSrc,
|
|
51
52
|
emptyStateText,
|
|
52
53
|
emptyStateActionText,
|
|
53
54
|
handleEmptyAction,
|
|
55
|
+
handleFrameLoaded,
|
|
54
56
|
theme,
|
|
55
57
|
resolvedTheme
|
|
56
58
|
} = (0, import_context.useOpenCodeWidgetContext)();
|
|
@@ -76,6 +78,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
76
78
|
if (iframeRef.value) {
|
|
77
79
|
iframeRef.value.addEventListener("load", () => {
|
|
78
80
|
iframeReady.value = true;
|
|
81
|
+
handleFrameLoaded();
|
|
79
82
|
});
|
|
80
83
|
}
|
|
81
84
|
window.addEventListener("message", handleIframeMessage);
|
|
@@ -83,7 +86,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
83
86
|
(0, import_vue2.onUnmounted)(() => {
|
|
84
87
|
window.removeEventListener("message", handleIframeMessage);
|
|
85
88
|
});
|
|
86
|
-
const __returned__ = { iframeRef,
|
|
89
|
+
const __returned__ = { iframeRef, frameLoading, showEmptyState, showError, iframeSrc, emptyStateText, emptyStateActionText, handleEmptyAction, handleFrameLoaded, theme, resolvedTheme, iframeReady, sendMessageToIframe, syncIframeTheme, handleIframeMessage };
|
|
87
90
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
88
91
|
return __returned__;
|
|
89
92
|
}
|
|
@@ -149,7 +152,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
149
152
|
(0, import_vue3.createElementVNode)(
|
|
150
153
|
"div",
|
|
151
154
|
{
|
|
152
|
-
class: (0, import_vue3.normalizeClass)(["opencode-loading-overlay", { visible: $setup.
|
|
155
|
+
class: (0, import_vue3.normalizeClass)(["opencode-loading-overlay", { visible: $setup.frameLoading }])
|
|
153
156
|
},
|
|
154
157
|
[
|
|
155
158
|
(0, import_vue3.renderSlot)(_ctx.$slots, "loading", {}, () => [
|
|
@@ -172,6 +175,17 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
172
175
|
2
|
|
173
176
|
/* CLASS */
|
|
174
177
|
),
|
|
178
|
+
(0, import_vue3.createElementVNode)(
|
|
179
|
+
"div",
|
|
180
|
+
{
|
|
181
|
+
class: (0, import_vue3.normalizeClass)(["opencode-error-overlay", { visible: $setup.showError }])
|
|
182
|
+
},
|
|
183
|
+
[
|
|
184
|
+
(0, import_vue3.renderSlot)(_ctx.$slots, "error")
|
|
185
|
+
],
|
|
186
|
+
2
|
|
187
|
+
/* CLASS */
|
|
188
|
+
),
|
|
175
189
|
(0, import_vue3.renderSlot)(_ctx.$slots, "content", {}, () => [
|
|
176
190
|
(0, import_vue3.createElementVNode)("iframe", {
|
|
177
191
|
ref: "iframeRef",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.opencode-select-mode-hint{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:
|
|
1
|
+
.opencode-select-mode-hint{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:10px;background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;border-radius:12px;font-size:14px;font-weight:500;box-shadow:0 6px 20px rgba(239,68,68,.5),0 0 0 3px rgba(239,68,68,.3);z-index:9999999;display:none;align-items:center;gap:12px;border:1px solid rgba(255,255,255,.3)}.opencode-select-mode-hint.visible{display:flex;animation:slideDown .3s ease,pulseHint 2s ease-in-out infinite}.opencode-hint-shortcut{padding:4px 10px;background:rgba(255,255,255,.25);border-radius:6px;font-size:13px;font-weight:600;border:1px solid rgba(255,255,255,.4)}@keyframes pulseHint{0%,to{box-shadow:0 6px 20px rgba(239,68,68,.5),0 0 0 3px rgba(239,68,68,.3)}50%{box-shadow:0 6px 20px rgba(239,68,68,.6),0 0 0 6px rgba(239,68,68,.4)}}
|
|
@@ -33,6 +33,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
33
33
|
sessionListCollapsed: collapsed,
|
|
34
34
|
sessionItems: sessions,
|
|
35
35
|
loadingSessionList,
|
|
36
|
+
showSessionListSkeleton,
|
|
36
37
|
handleCreateSession,
|
|
37
38
|
handleSelectSession,
|
|
38
39
|
handleDeleteSession,
|
|
@@ -49,9 +50,10 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
49
50
|
});
|
|
50
51
|
const showSkeleton = (0, import_vue2.computed)(() => {
|
|
51
52
|
if (isAnimating.value) return true;
|
|
53
|
+
if (showSessionListSkeleton.value) return true;
|
|
52
54
|
return false;
|
|
53
55
|
});
|
|
54
|
-
const __returned__ = { collapsed, sessions, loadingSessionList, handleCreateSession, handleSelectSession, handleDeleteSession, sessionKey, isAnimating, get animTimer() {
|
|
56
|
+
const __returned__ = { collapsed, sessions, loadingSessionList, showSessionListSkeleton, handleCreateSession, handleSelectSession, handleDeleteSession, sessionKey, isAnimating, get animTimer() {
|
|
55
57
|
return animTimer;
|
|
56
58
|
}, set animTimer(v) {
|
|
57
59
|
animTimer = v;
|
|
@@ -10,9 +10,11 @@ export interface OpenCodeWidgetContext {
|
|
|
10
10
|
selectEnabled: Ref<boolean>;
|
|
11
11
|
sessionListCollapsed: Ref<boolean>;
|
|
12
12
|
sessionKey: Ref<string>;
|
|
13
|
-
|
|
13
|
+
frameLoading: Ref<boolean>;
|
|
14
14
|
loadingSessionList: Ref<boolean | undefined>;
|
|
15
|
+
showSessionListSkeleton: Ref<boolean>;
|
|
15
16
|
showEmptyState: Ref<boolean>;
|
|
17
|
+
showError: Ref<boolean>;
|
|
16
18
|
emptyStateText: Ref<string>;
|
|
17
19
|
emptyStateActionText: Ref<string>;
|
|
18
20
|
showClearAll: Ref<boolean>;
|
|
@@ -40,6 +42,7 @@ export interface OpenCodeWidgetContext {
|
|
|
40
42
|
source: OpenCodeRemoveSelectedPayload["source"];
|
|
41
43
|
}) => void;
|
|
42
44
|
handleClearSelectedNodes: () => void;
|
|
45
|
+
handleFrameLoaded: () => void;
|
|
43
46
|
}
|
|
44
47
|
export declare function provideOpenCodeWidgetContext(context: OpenCodeWidgetContext): void;
|
|
45
48
|
export declare function useOpenCodeWidgetContext(): OpenCodeWidgetContext;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OpenCodeWidgetProps } from "./types";
|
|
2
|
-
declare var __VLS_4: {}, __VLS_12: {}, __VLS_14: {}, __VLS_16: {}, __VLS_21: {}, __VLS_26: {}, __VLS_28: {}, __VLS_30: {};
|
|
2
|
+
declare var __VLS_4: {}, __VLS_12: {}, __VLS_14: {}, __VLS_16: {}, __VLS_21: {}, __VLS_26: {}, __VLS_28: {}, __VLS_30: {}, __VLS_32: {};
|
|
3
3
|
type __VLS_Slots = {} & {
|
|
4
4
|
'button-icon'?: (props: typeof __VLS_4) => any;
|
|
5
5
|
} & {
|
|
@@ -15,69 +15,75 @@ type __VLS_Slots = {} & {
|
|
|
15
15
|
} & {
|
|
16
16
|
loading?: (props: typeof __VLS_28) => any;
|
|
17
17
|
} & {
|
|
18
|
-
|
|
18
|
+
error?: (props: typeof __VLS_30) => any;
|
|
19
|
+
} & {
|
|
20
|
+
content?: (props: typeof __VLS_32) => any;
|
|
19
21
|
};
|
|
20
22
|
declare const __VLS_component: import("vue").DefineComponent<OpenCodeWidgetProps, {
|
|
21
23
|
showNotification: (message: string, duration?: number) => void;
|
|
22
24
|
showConfirmDialog: (message: string) => Promise<boolean>;
|
|
23
25
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
26
|
+
close: () => any;
|
|
27
|
+
toggle: (value: boolean) => any;
|
|
28
|
+
"create-session": () => any;
|
|
24
29
|
"update:open": (value: boolean) => any;
|
|
30
|
+
"delete-session": (session: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetSession) => any;
|
|
25
31
|
"update:selectMode": (value: boolean) => any;
|
|
26
32
|
"update:sessionListCollapsed": (value: boolean) => any;
|
|
27
33
|
"update:currentSessionId": (value: string | null) => any;
|
|
28
|
-
"update:selectedElements": (value: import("
|
|
29
|
-
"update:theme": (value: import("
|
|
30
|
-
toggle: (value: boolean) => any;
|
|
31
|
-
close: () => any;
|
|
34
|
+
"update:selectedElements": (value: import("@vite-plugin-opencode-assistant/shared").OpenCodeSelectedElement[]) => any;
|
|
35
|
+
"update:theme": (value: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme) => any;
|
|
32
36
|
"toggle-session-list": (value: boolean) => any;
|
|
33
37
|
"toggle-select-mode": (value: boolean) => any;
|
|
34
|
-
"toggle-theme": (value: import("
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"click-selected-node": (element: import("./types").OpenCodeSelectedElement) => any;
|
|
39
|
-
"remove-selected-node": (payload: import("./types").OpenCodeRemoveSelectedPayload) => any;
|
|
38
|
+
"toggle-theme": (value: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme) => any;
|
|
39
|
+
"select-session": (session: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetSession) => any;
|
|
40
|
+
"click-selected-node": (element: import("@vite-plugin-opencode-assistant/shared").OpenCodeSelectedElement) => any;
|
|
41
|
+
"remove-selected-node": (payload: import("@vite-plugin-opencode-assistant/shared").OpenCodeRemoveSelectedPayload) => any;
|
|
40
42
|
"clear-selected-nodes": () => any;
|
|
41
43
|
"empty-action": () => any;
|
|
44
|
+
"frame-loaded": () => any;
|
|
42
45
|
}, string, import("vue").PublicProps, Readonly<OpenCodeWidgetProps> & Readonly<{
|
|
46
|
+
onClose?: (() => any) | undefined;
|
|
47
|
+
onToggle?: ((value: boolean) => any) | undefined;
|
|
48
|
+
"onCreate-session"?: (() => any) | undefined;
|
|
43
49
|
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
50
|
+
"onDelete-session"?: ((session: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetSession) => any) | undefined;
|
|
44
51
|
"onUpdate:selectMode"?: ((value: boolean) => any) | undefined;
|
|
45
52
|
"onUpdate:sessionListCollapsed"?: ((value: boolean) => any) | undefined;
|
|
46
53
|
"onUpdate:currentSessionId"?: ((value: string | null) => any) | undefined;
|
|
47
|
-
"onUpdate:selectedElements"?: ((value: import("
|
|
48
|
-
"onUpdate:theme"?: ((value: import("
|
|
49
|
-
onToggle?: ((value: boolean) => any) | undefined;
|
|
50
|
-
onClose?: (() => any) | undefined;
|
|
54
|
+
"onUpdate:selectedElements"?: ((value: import("@vite-plugin-opencode-assistant/shared").OpenCodeSelectedElement[]) => any) | undefined;
|
|
55
|
+
"onUpdate:theme"?: ((value: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme) => any) | undefined;
|
|
51
56
|
"onToggle-session-list"?: ((value: boolean) => any) | undefined;
|
|
52
57
|
"onToggle-select-mode"?: ((value: boolean) => any) | undefined;
|
|
53
|
-
"onToggle-theme"?: ((value: import("
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"onClick-selected-node"?: ((element: import("./types").OpenCodeSelectedElement) => any) | undefined;
|
|
58
|
-
"onRemove-selected-node"?: ((payload: import("./types").OpenCodeRemoveSelectedPayload) => any) | undefined;
|
|
58
|
+
"onToggle-theme"?: ((value: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme) => any) | undefined;
|
|
59
|
+
"onSelect-session"?: ((session: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetSession) => any) | undefined;
|
|
60
|
+
"onClick-selected-node"?: ((element: import("@vite-plugin-opencode-assistant/shared").OpenCodeSelectedElement) => any) | undefined;
|
|
61
|
+
"onRemove-selected-node"?: ((payload: import("@vite-plugin-opencode-assistant/shared").OpenCodeRemoveSelectedPayload) => any) | undefined;
|
|
59
62
|
"onClear-selected-nodes"?: (() => any) | undefined;
|
|
60
63
|
"onEmpty-action"?: (() => any) | undefined;
|
|
64
|
+
"onFrame-loaded"?: (() => any) | undefined;
|
|
61
65
|
}>, {
|
|
62
|
-
|
|
63
|
-
loading: boolean;
|
|
66
|
+
frameLoading: boolean;
|
|
64
67
|
showEmptyState: boolean;
|
|
68
|
+
showError: boolean;
|
|
65
69
|
emptyStateText: string;
|
|
66
70
|
emptyStateActionText: string;
|
|
67
|
-
theme: import("
|
|
71
|
+
theme: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme;
|
|
68
72
|
iframeSrc: string;
|
|
73
|
+
title: string;
|
|
69
74
|
sessionListCollapsed: boolean;
|
|
70
75
|
selectMode: boolean;
|
|
71
76
|
selectEnabled: boolean;
|
|
72
77
|
selectShortcutLabel: string;
|
|
73
78
|
showClearAll: boolean;
|
|
79
|
+
showSessionListSkeleton: boolean;
|
|
74
80
|
sessionKey: string;
|
|
75
|
-
sessions: import("
|
|
81
|
+
sessions: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetSession[];
|
|
76
82
|
open: boolean;
|
|
77
83
|
hotkeyLabel: string;
|
|
78
|
-
position: import("
|
|
84
|
+
position: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetPosition;
|
|
79
85
|
currentSessionId: string | null;
|
|
80
|
-
selectedElements: import("
|
|
86
|
+
selectedElements: import("@vite-plugin-opencode-assistant/shared").OpenCodeSelectedElement[];
|
|
81
87
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
82
88
|
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
83
89
|
export default _default;
|
|
@@ -77,19 +77,21 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
77
77
|
selectMode: { type: Boolean, required: false, default: false },
|
|
78
78
|
sessionListCollapsed: { type: Boolean, required: false, default: true },
|
|
79
79
|
sessionKey: { type: String, required: false, default: "id" },
|
|
80
|
-
|
|
80
|
+
frameLoading: { type: Boolean, required: false, default: false },
|
|
81
81
|
loadingSessionList: { type: Boolean, required: false },
|
|
82
|
+
showSessionListSkeleton: { type: Boolean, required: false, default: false },
|
|
82
83
|
showEmptyState: { type: Boolean, required: false, default: false },
|
|
84
|
+
showError: { type: Boolean, required: false, default: false },
|
|
85
|
+
emptyStateText: { type: String, required: false, default: "\u5F53\u524D\u9879\u76EE\u6682\u65E0\u4F1A\u8BDD" },
|
|
86
|
+
emptyStateActionText: { type: String, required: false, default: "\u7ACB\u5373\u521B\u5EFA" },
|
|
83
87
|
iframeSrc: { type: String, required: false, default: "" },
|
|
84
88
|
sessions: { type: Array, required: false, default: () => [] },
|
|
85
89
|
currentSessionId: { type: [String, null], required: false, default: null },
|
|
86
90
|
selectedElements: { type: Array, required: false, default: () => [] },
|
|
87
91
|
showClearAll: { type: Boolean, required: false, default: true },
|
|
88
|
-
selectEnabled: { type: Boolean, required: false, default: true }
|
|
89
|
-
emptyStateText: { type: String, required: false, default: "\u5F53\u524D\u9879\u76EE\u6682\u65E0\u4F1A\u8BDD" },
|
|
90
|
-
emptyStateActionText: { type: String, required: false, default: "\u7ACB\u5373\u521B\u5EFA" }
|
|
92
|
+
selectEnabled: { type: Boolean, required: false, default: true }
|
|
91
93
|
},
|
|
92
|
-
emits: ["update:open", "update:selectMode", "update:sessionListCollapsed", "update:currentSessionId", "update:selectedElements", "update:theme", "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"],
|
|
94
|
+
emits: ["update:open", "update:selectMode", "update:sessionListCollapsed", "update:currentSessionId", "update:selectedElements", "update:theme", "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"],
|
|
93
95
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
94
96
|
const props = __props;
|
|
95
97
|
const emit = __emit;
|
|
@@ -123,6 +125,9 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
123
125
|
dialogVisible.value = false;
|
|
124
126
|
if (dialogResolve) dialogResolve(false);
|
|
125
127
|
};
|
|
128
|
+
const handleFrameLoaded = () => {
|
|
129
|
+
emit("frame-loaded");
|
|
130
|
+
};
|
|
126
131
|
__expose({
|
|
127
132
|
showNotification,
|
|
128
133
|
showConfirmDialog
|
|
@@ -235,9 +240,11 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
235
240
|
selectEnabled: (0, import_vue2.toRef)(props, "selectEnabled"),
|
|
236
241
|
sessionListCollapsed: localSessionListCollapsed,
|
|
237
242
|
sessionKey: (0, import_vue2.toRef)(props, "sessionKey"),
|
|
238
|
-
|
|
243
|
+
frameLoading: (0, import_vue2.toRef)(props, "frameLoading"),
|
|
239
244
|
loadingSessionList: (0, import_vue2.toRef)(props, "loadingSessionList"),
|
|
245
|
+
showSessionListSkeleton: (0, import_vue2.toRef)(props, "showSessionListSkeleton"),
|
|
240
246
|
showEmptyState: (0, import_vue2.toRef)(props, "showEmptyState"),
|
|
247
|
+
showError: (0, import_vue2.toRef)(props, "showError"),
|
|
241
248
|
emptyStateText: (0, import_vue2.toRef)(props, "emptyStateText"),
|
|
242
249
|
emptyStateActionText: (0, import_vue2.toRef)(props, "emptyStateActionText"),
|
|
243
250
|
showClearAll: (0, import_vue2.toRef)(props, "showClearAll"),
|
|
@@ -260,7 +267,8 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
260
267
|
handleToggleSelectMode,
|
|
261
268
|
handleClickSelectedNode,
|
|
262
269
|
handleRemoveSelectedNode: (payload) => handleRemoveSelectedNode(payload.item, payload.index, payload.source),
|
|
263
|
-
handleClearSelectedNodes
|
|
270
|
+
handleClearSelectedNodes,
|
|
271
|
+
handleFrameLoaded
|
|
264
272
|
});
|
|
265
273
|
const __returned__ = { props, emit, slots, notificationMessage, notificationVisible, get notificationTimer() {
|
|
266
274
|
return notificationTimer;
|
|
@@ -270,7 +278,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
|
|
|
270
278
|
return dialogResolve;
|
|
271
279
|
}, set dialogResolve(v) {
|
|
272
280
|
dialogResolve = v;
|
|
273
|
-
}, showConfirmDialog, handleDialogConfirm, handleDialogCancel, localSessionListCollapsed, 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, Frame: import_Frame_vue.default, Header: import_Header_vue.default, SelectHint: import_SelectHint_vue.default, SelectedBubbles: import_SelectedBubbles_vue.default, SelectedNodes: import_SelectedNodes_vue.default, SessionList: import_SessionList_vue.default, Trigger: import_Trigger_vue.default };
|
|
281
|
+
}, showConfirmDialog, handleDialogConfirm, handleDialogCancel, handleFrameLoaded, localSessionListCollapsed, 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, Frame: import_Frame_vue.default, Header: import_Header_vue.default, SelectHint: import_SelectHint_vue.default, SelectedBubbles: import_SelectedBubbles_vue.default, SelectedNodes: import_SelectedNodes_vue.default, SessionList: import_SessionList_vue.default, Trigger: import_Trigger_vue.default };
|
|
274
282
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
275
283
|
return __returned__;
|
|
276
284
|
}
|
|
@@ -403,12 +411,19 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
403
411
|
]),
|
|
404
412
|
key: "1"
|
|
405
413
|
} : void 0,
|
|
414
|
+
$setup.slots.error ? {
|
|
415
|
+
name: "error",
|
|
416
|
+
fn: (0, import_vue3.withCtx)(() => [
|
|
417
|
+
(0, import_vue3.renderSlot)(_ctx.$slots, "error")
|
|
418
|
+
]),
|
|
419
|
+
key: "2"
|
|
420
|
+
} : void 0,
|
|
406
421
|
$setup.slots.content ? {
|
|
407
422
|
name: "content",
|
|
408
423
|
fn: (0, import_vue3.withCtx)(() => [
|
|
409
424
|
(0, import_vue3.renderSlot)(_ctx.$slots, "content")
|
|
410
425
|
]),
|
|
411
|
-
key: "
|
|
426
|
+
key: "3"
|
|
412
427
|
} : void 0
|
|
413
428
|
]),
|
|
414
429
|
1024
|
|
@@ -1,79 +1,3 @@
|
|
|
1
|
-
export type OpenCodeWidgetPosition
|
|
2
|
-
export type
|
|
3
|
-
export
|
|
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
|
-
sessionKey?: string;
|
|
27
|
-
loading?: boolean;
|
|
28
|
-
loadingSessionList?: boolean;
|
|
29
|
-
showEmptyState?: boolean;
|
|
30
|
-
iframeSrc?: string;
|
|
31
|
-
sessions?: OpenCodeWidgetSession[];
|
|
32
|
-
currentSessionId?: string | null;
|
|
33
|
-
selectedElements?: OpenCodeSelectedElement[];
|
|
34
|
-
showClearAll?: boolean;
|
|
35
|
-
selectEnabled?: boolean;
|
|
36
|
-
emptyStateText?: string;
|
|
37
|
-
emptyStateActionText?: string;
|
|
38
|
-
}
|
|
39
|
-
export type OpenCodeWidgetEmits = {
|
|
40
|
-
(e: "update:open", value: boolean): void;
|
|
41
|
-
(e: "update:selectMode", value: boolean): void;
|
|
42
|
-
(e: "update:sessionListCollapsed", value: boolean): void;
|
|
43
|
-
(e: "update:currentSessionId", value: string | null): void;
|
|
44
|
-
(e: "update:selectedElements", value: OpenCodeSelectedElement[]): void;
|
|
45
|
-
(e: "update:theme", value: OpenCodeWidgetTheme): void;
|
|
46
|
-
(e: "toggle", value: boolean): void;
|
|
47
|
-
(e: "close"): void;
|
|
48
|
-
(e: "toggle-session-list", value: boolean): void;
|
|
49
|
-
(e: "toggle-select-mode", value: boolean): void;
|
|
50
|
-
(e: "toggle-theme", value: OpenCodeWidgetTheme): void;
|
|
51
|
-
(e: "create-session"): void;
|
|
52
|
-
(e: "select-session", session: OpenCodeWidgetSession): void;
|
|
53
|
-
(e: "delete-session", session: OpenCodeWidgetSession): void;
|
|
54
|
-
(e: "click-selected-node", element: OpenCodeSelectedElement): void;
|
|
55
|
-
(e: "remove-selected-node", payload: OpenCodeRemoveSelectedPayload): void;
|
|
56
|
-
(e: "clear-selected-nodes"): void;
|
|
57
|
-
(e: "empty-action"): void;
|
|
58
|
-
};
|
|
59
|
-
export interface OpenCodeRemoveSelectedPayload {
|
|
60
|
-
element: OpenCodeSelectedElement;
|
|
61
|
-
index: number;
|
|
62
|
-
source: "panel" | "bubble";
|
|
63
|
-
}
|
|
64
|
-
export interface OpenCodeWidgetSessionItem {
|
|
65
|
-
key: string;
|
|
66
|
-
id: string;
|
|
67
|
-
title: string;
|
|
68
|
-
meta: string;
|
|
69
|
-
active: boolean;
|
|
70
|
-
session: OpenCodeWidgetSession;
|
|
71
|
-
[key: string]: any;
|
|
72
|
-
}
|
|
73
|
-
export interface OpenCodeSelectedElementItem {
|
|
74
|
-
key: string;
|
|
75
|
-
description: string;
|
|
76
|
-
bubbleFileText: string;
|
|
77
|
-
panelFileText: string;
|
|
78
|
-
element: OpenCodeSelectedElement;
|
|
79
|
-
}
|
|
1
|
+
export type { OpenCodeWidgetPosition, OpenCodeWidgetTheme, OpenCodeWidgetSession, OpenCodeSelectedElement, OpenCodeRemoveSelectedPayload, OpenCodeWidgetSessionItem, OpenCodeSelectedElementItem, OpenCodeWidgetProps, OpenCodeWidgetEmits, } from "@vite-plugin-opencode-assistant/shared";
|
|
2
|
+
export type OpenCodeWidgetPositionLocal = "bottom-right" | "bottom-left" | "top-right" | "top-left";
|
|
3
|
+
export type OpenCodeWidgetThemeLocal = "light" | "dark" | "auto";
|
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.14","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":"`'light'`","description":"主题模式","value":{"type":"`'light' | 'dark' | 'auto'`","kind":"expression"}},{"name":"","default":"`'AI 助手'`","description":"助手头部显示的标题","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`''`","description":"Web UI 的 URL 来源","value":{"type":"`string`","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":"`OpenCodeWidgetSessionItem[]`","kind":"expression"}},{"name":"","default":"`null`","description":"当前选中的会话 ID","value":{"type":"`string | null`","kind":"expression"}},{"name":"","default":"`[]`","description":"已选中的元素列表","value":{"type":"`OpenCodeSelectedElement[]`","kind":"expression"}}],"events":[{"name":"`update:open`","description":"当挂件打开或关闭时触发","arguments":[{"name":"open","type":"en"},{"name":"boolean"}]},{"name":"","description":"点击触发挂件开关","arguments":[{"name":"open","type":"en"},{"name":"boolean"}]},{"name":"","description":"点击关闭按钮时触发","arguments":[]},{"name":"`toggle-select-mode`","description":"点击选择模式切换按钮时触发","arguments":[{"name":"mode","type":"de"},{"name":"boolean"}]},{"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":"`create-session`","description":"点击创建新会话时触发","arguments":[]},{"name":"`select-session`","description":"选中某个历史会话时触发","arguments":[{"name":"session","type":"on"},{"name":"OpenCodeWidgetSessionItem"}]},{"name":"`delete-session`","description":"删除某个历史会话时触发","arguments":[{"name":"session","type":"on"},{"name":"OpenCodeWidgetSessionItem"}]}]}],"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.14",
|
|
4
4
|
"description": "Reusable OpenCode widget components built with Pagoda CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -29,6 +29,9 @@
|
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"vue": "^3.5.0"
|
|
31
31
|
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@vite-plugin-opencode-assistant/shared": "1.0.14"
|
|
34
|
+
},
|
|
32
35
|
"devDependencies": {
|
|
33
36
|
"@vitejs/plugin-vue": "^6.0.5",
|
|
34
37
|
"@vue/test-utils": "^2.4.6",
|