@vite-plugin-opencode-assistant/components 1.0.13 → 1.0.15
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
package/es/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import OpenCodeWidget from './open-code-widget';
|
|
2
2
|
import type { App } from 'vue';
|
|
3
|
-
declare const version = "1.0.
|
|
3
|
+
declare const version = "1.0.15";
|
|
4
4
|
declare function install(app: App<any>, options?: any): void;
|
|
5
5
|
export { install, version, OpenCodeWidget };
|
|
6
6
|
export default install;
|
package/es/index.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { ref, watch, onMounted, onUnmounted } from "vue";
|
|
2
|
-
|
|
3
|
-
if (!str) return "";
|
|
4
|
-
return str.length > maxLength ? str.substring(0, maxLength) + "..." : str;
|
|
5
|
-
}
|
|
2
|
+
import { truncate } from "@vite-plugin-opencode-assistant/shared";
|
|
6
3
|
function getDirectText(element) {
|
|
7
4
|
let text = "";
|
|
8
5
|
for (let i = 0; i < element.childNodes.length; i++) {
|
|
@@ -19,12 +19,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
19
19
|
});
|
|
20
20
|
};
|
|
21
21
|
import { computed } from "vue";
|
|
22
|
-
|
|
23
|
-
if (value.length <= maxLength) {
|
|
24
|
-
return value;
|
|
25
|
-
}
|
|
26
|
-
return `${value.slice(0, maxLength)}...`;
|
|
27
|
-
}
|
|
22
|
+
import { truncate } from "@vite-plugin-opencode-assistant/shared";
|
|
28
23
|
function getElementKey(element, index) {
|
|
29
24
|
var _a;
|
|
30
25
|
if (element.filePath && element.line) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.opencode-iframe-container{flex:1;position:relative;overflow:hidden;display:flex;flex-direction:column;margin-top:-42px}.opencode-loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--oc-overlay-bg);display:none;flex-direction:column;align-items:center;justify-content:center;z-index:10;transition:opacity .3s ease}.opencode-loading-overlay.visible{display:flex}.opencode-loading-spinner{width:40px;height:40px;border:3px solid var(--oc-border-primary);border-top-color:var(--oc-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.opencode-loading-text{margin-top:12px;font-size:14px;color:var(--oc-text-placeholder)}.opencode-empty-state-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--oc-bg-secondary);display:none;flex-direction:column;align-items:center;justify-content:center;z-index:5;transition:opacity .3s ease;margin-top:42px}.opencode-empty-state-overlay.visible{display:flex}.opencode-empty-state-icon{color:var(--oc-text-placeholder);margin-bottom:16px}.opencode-empty-state-text{color:var(--oc-text-primary);font-size:16px;font-weight:500;margin-bottom:24px}.opencode-empty-state-btn{padding:10px 24px;border-radius:8px;border:none;background:var(--oc-primary);color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;box-shadow:var(--oc-shadow-primary)}.opencode-empty-state-btn:hover{background:var(--oc-primary-hover);transform:translateY(-1px);box-shadow:var(--oc-shadow-primary-hover)}.opencode-empty-state-btn:active{transform:translateY(0)}.opencode-iframe{width:100%;height:100%;border:none}
|
|
1
|
+
.opencode-iframe-container{flex:1;position:relative;overflow:hidden;display:flex;flex-direction:column;margin-top:-42px}.opencode-loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--oc-overlay-bg);display:none;flex-direction:column;align-items:center;justify-content:center;z-index:10;transition:opacity .3s ease}.opencode-loading-overlay.visible{display:flex}.opencode-loading-spinner{width:40px;height:40px;border:3px solid var(--oc-border-primary);border-top-color:var(--oc-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.opencode-loading-text{margin-top:12px;font-size:14px;color:var(--oc-text-placeholder)}.opencode-error-overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:15;margin-top:42px;display:none}.opencode-error-overlay.visible{display:flex}.opencode-empty-state-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--oc-bg-secondary);display:none;flex-direction:column;align-items:center;justify-content:center;z-index:5;transition:opacity .3s ease;margin-top:42px}.opencode-empty-state-overlay.visible{display:flex}.opencode-empty-state-icon{color:var(--oc-text-placeholder);margin-bottom:16px}.opencode-empty-state-text{color:var(--oc-text-primary);font-size:16px;font-weight:500;margin-bottom:24px}.opencode-empty-state-btn{padding:10px 24px;border-radius:8px;border:none;background:var(--oc-primary);color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;box-shadow:var(--oc-shadow-primary)}.opencode-empty-state-btn:hover{background:var(--oc-primary-hover);transform:translateY(-1px);box-shadow:var(--oc-shadow-primary-hover)}.opencode-empty-state-btn:active{transform:translateY(0)}.opencode-iframe{width:100%;height:100%;border:none}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
|
|
1
|
+
declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {};
|
|
2
2
|
type __VLS_Slots = {} & {
|
|
3
3
|
'empty-state'?: (props: typeof __VLS_1) => any;
|
|
4
4
|
} & {
|
|
5
5
|
loading?: (props: typeof __VLS_3) => any;
|
|
6
6
|
} & {
|
|
7
|
-
|
|
7
|
+
error?: (props: typeof __VLS_5) => any;
|
|
8
|
+
} & {
|
|
9
|
+
content?: (props: typeof __VLS_7) => any;
|
|
8
10
|
};
|
|
9
11
|
declare const __VLS_component: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
10
12
|
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
@@ -24,12 +24,14 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
|
|
|
24
24
|
__expose();
|
|
25
25
|
const iframeRef = ref(null);
|
|
26
26
|
const {
|
|
27
|
-
|
|
27
|
+
frameLoading,
|
|
28
28
|
showEmptyState,
|
|
29
|
+
showError,
|
|
29
30
|
iframeSource: iframeSrc,
|
|
30
31
|
emptyStateText,
|
|
31
32
|
emptyStateActionText,
|
|
32
33
|
handleEmptyAction,
|
|
34
|
+
handleFrameLoaded,
|
|
33
35
|
theme,
|
|
34
36
|
resolvedTheme
|
|
35
37
|
} = useOpenCodeWidgetContext();
|
|
@@ -55,6 +57,7 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
|
|
|
55
57
|
if (iframeRef.value) {
|
|
56
58
|
iframeRef.value.addEventListener("load", () => {
|
|
57
59
|
iframeReady.value = true;
|
|
60
|
+
handleFrameLoaded();
|
|
58
61
|
});
|
|
59
62
|
}
|
|
60
63
|
window.addEventListener("message", handleIframeMessage);
|
|
@@ -62,7 +65,7 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
|
|
|
62
65
|
onUnmounted(() => {
|
|
63
66
|
window.removeEventListener("message", handleIframeMessage);
|
|
64
67
|
});
|
|
65
|
-
const __returned__ = { iframeRef,
|
|
68
|
+
const __returned__ = { iframeRef, frameLoading, showEmptyState, showError, iframeSrc, emptyStateText, emptyStateActionText, handleEmptyAction, handleFrameLoaded, theme, resolvedTheme, iframeReady, sendMessageToIframe, syncIframeTheme, handleIframeMessage };
|
|
66
69
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
67
70
|
return __returned__;
|
|
68
71
|
}
|
|
@@ -129,7 +132,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
129
132
|
_createElementVNode(
|
|
130
133
|
"div",
|
|
131
134
|
{
|
|
132
|
-
class: _normalizeClass(["opencode-loading-overlay", { visible: $setup.
|
|
135
|
+
class: _normalizeClass(["opencode-loading-overlay", { visible: $setup.frameLoading }])
|
|
133
136
|
},
|
|
134
137
|
[
|
|
135
138
|
_renderSlot(_ctx.$slots, "loading", {}, () => [
|
|
@@ -152,6 +155,17 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
152
155
|
2
|
|
153
156
|
/* CLASS */
|
|
154
157
|
),
|
|
158
|
+
_createElementVNode(
|
|
159
|
+
"div",
|
|
160
|
+
{
|
|
161
|
+
class: _normalizeClass(["opencode-error-overlay", { visible: $setup.showError }])
|
|
162
|
+
},
|
|
163
|
+
[
|
|
164
|
+
_renderSlot(_ctx.$slots, "error")
|
|
165
|
+
],
|
|
166
|
+
2
|
|
167
|
+
/* CLASS */
|
|
168
|
+
),
|
|
155
169
|
_renderSlot(_ctx.$slots, "content", {}, () => [
|
|
156
170
|
_createElementVNode("iframe", {
|
|
157
171
|
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)}}
|
|
@@ -10,6 +10,7 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
|
|
|
10
10
|
sessionListCollapsed: collapsed,
|
|
11
11
|
sessionItems: sessions,
|
|
12
12
|
loadingSessionList,
|
|
13
|
+
showSessionListSkeleton,
|
|
13
14
|
handleCreateSession,
|
|
14
15
|
handleSelectSession,
|
|
15
16
|
handleDeleteSession,
|
|
@@ -26,9 +27,10 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
|
|
|
26
27
|
});
|
|
27
28
|
const showSkeleton = computed(() => {
|
|
28
29
|
if (isAnimating.value) return true;
|
|
30
|
+
if (showSessionListSkeleton.value) return true;
|
|
29
31
|
return false;
|
|
30
32
|
});
|
|
31
|
-
const __returned__ = { collapsed, sessions, loadingSessionList, handleCreateSession, handleSelectSession, handleDeleteSession, sessionKey, isAnimating, get animTimer() {
|
|
33
|
+
const __returned__ = { collapsed, sessions, loadingSessionList, showSessionListSkeleton, handleCreateSession, handleSelectSession, handleDeleteSession, sessionKey, isAnimating, get animTimer() {
|
|
32
34
|
return animTimer;
|
|
33
35
|
}, set animTimer(v) {
|
|
34
36
|
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;
|
|
@@ -46,19 +46,21 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
46
46
|
selectMode: { type: Boolean, required: false, default: false },
|
|
47
47
|
sessionListCollapsed: { type: Boolean, required: false, default: true },
|
|
48
48
|
sessionKey: { type: String, required: false, default: "id" },
|
|
49
|
-
|
|
49
|
+
frameLoading: { type: Boolean, required: false, default: false },
|
|
50
50
|
loadingSessionList: { type: Boolean, required: false },
|
|
51
|
+
showSessionListSkeleton: { type: Boolean, required: false, default: false },
|
|
51
52
|
showEmptyState: { type: Boolean, required: false, default: false },
|
|
53
|
+
showError: { type: Boolean, required: false, default: false },
|
|
54
|
+
emptyStateText: { type: String, required: false, default: "\u5F53\u524D\u9879\u76EE\u6682\u65E0\u4F1A\u8BDD" },
|
|
55
|
+
emptyStateActionText: { type: String, required: false, default: "\u7ACB\u5373\u521B\u5EFA" },
|
|
52
56
|
iframeSrc: { type: String, required: false, default: "" },
|
|
53
57
|
sessions: { type: Array, required: false, default: () => [] },
|
|
54
58
|
currentSessionId: { type: [String, null], required: false, default: null },
|
|
55
59
|
selectedElements: { type: Array, required: false, default: () => [] },
|
|
56
60
|
showClearAll: { type: Boolean, required: false, default: true },
|
|
57
|
-
selectEnabled: { type: Boolean, required: false, default: true }
|
|
58
|
-
emptyStateText: { type: String, required: false, default: "\u5F53\u524D\u9879\u76EE\u6682\u65E0\u4F1A\u8BDD" },
|
|
59
|
-
emptyStateActionText: { type: String, required: false, default: "\u7ACB\u5373\u521B\u5EFA" }
|
|
61
|
+
selectEnabled: { type: Boolean, required: false, default: true }
|
|
60
62
|
},
|
|
61
|
-
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"],
|
|
63
|
+
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"],
|
|
62
64
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
63
65
|
const props = __props;
|
|
64
66
|
const emit = __emit;
|
|
@@ -92,6 +94,9 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
92
94
|
dialogVisible.value = false;
|
|
93
95
|
if (dialogResolve) dialogResolve(false);
|
|
94
96
|
};
|
|
97
|
+
const handleFrameLoaded = () => {
|
|
98
|
+
emit("frame-loaded");
|
|
99
|
+
};
|
|
95
100
|
__expose({
|
|
96
101
|
showNotification,
|
|
97
102
|
showConfirmDialog
|
|
@@ -204,9 +209,11 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
204
209
|
selectEnabled: toRef(props, "selectEnabled"),
|
|
205
210
|
sessionListCollapsed: localSessionListCollapsed,
|
|
206
211
|
sessionKey: toRef(props, "sessionKey"),
|
|
207
|
-
|
|
212
|
+
frameLoading: toRef(props, "frameLoading"),
|
|
208
213
|
loadingSessionList: toRef(props, "loadingSessionList"),
|
|
214
|
+
showSessionListSkeleton: toRef(props, "showSessionListSkeleton"),
|
|
209
215
|
showEmptyState: toRef(props, "showEmptyState"),
|
|
216
|
+
showError: toRef(props, "showError"),
|
|
210
217
|
emptyStateText: toRef(props, "emptyStateText"),
|
|
211
218
|
emptyStateActionText: toRef(props, "emptyStateActionText"),
|
|
212
219
|
showClearAll: toRef(props, "showClearAll"),
|
|
@@ -229,7 +236,8 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
229
236
|
handleToggleSelectMode,
|
|
230
237
|
handleClickSelectedNode,
|
|
231
238
|
handleRemoveSelectedNode: (payload) => handleRemoveSelectedNode(payload.item, payload.index, payload.source),
|
|
232
|
-
handleClearSelectedNodes
|
|
239
|
+
handleClearSelectedNodes,
|
|
240
|
+
handleFrameLoaded
|
|
233
241
|
});
|
|
234
242
|
const __returned__ = { props, emit, slots, notificationMessage, notificationVisible, get notificationTimer() {
|
|
235
243
|
return notificationTimer;
|
|
@@ -239,7 +247,7 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValue
|
|
|
239
247
|
return dialogResolve;
|
|
240
248
|
}, set dialogResolve(v) {
|
|
241
249
|
dialogResolve = v;
|
|
242
|
-
}, 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, Header, SelectHint, SelectedBubbles, SelectedNodes, SessionList, Trigger };
|
|
250
|
+
}, 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, Header, SelectHint, SelectedBubbles, SelectedNodes, SessionList, Trigger };
|
|
243
251
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
244
252
|
return __returned__;
|
|
245
253
|
}
|
|
@@ -373,12 +381,19 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
373
381
|
]),
|
|
374
382
|
key: "1"
|
|
375
383
|
} : void 0,
|
|
384
|
+
$setup.slots.error ? {
|
|
385
|
+
name: "error",
|
|
386
|
+
fn: _withCtx(() => [
|
|
387
|
+
_renderSlot(_ctx.$slots, "error")
|
|
388
|
+
]),
|
|
389
|
+
key: "2"
|
|
390
|
+
} : void 0,
|
|
376
391
|
$setup.slots.content ? {
|
|
377
392
|
name: "content",
|
|
378
393
|
fn: _withCtx(() => [
|
|
379
394
|
_renderSlot(_ctx.$slots, "content")
|
|
380
395
|
]),
|
|
381
|
-
key: "
|
|
396
|
+
key: "3"
|
|
382
397
|
} : void 0
|
|
383
398
|
]),
|
|
384
399
|
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";
|