@vite-plugin-opencode-assistant/components 1.0.12 → 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 +35 -8
- 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 +84 -34
- package/lib/@vite-plugin-opencode-assistant/components.es.js +83 -33
- 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 +36 -9
- 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.14";
|
|
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++) {
|
|
@@ -32,6 +29,32 @@ function getElementDescription(element) {
|
|
|
32
29
|
if (href && href !== "#") parts.push(`[href]`);
|
|
33
30
|
return parts.join("");
|
|
34
31
|
}
|
|
32
|
+
function getPreciseElementAtPoint(x, y, boundary) {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
const highlight = document.querySelector(".opencode-element-highlight");
|
|
35
|
+
const tooltip = document.querySelector(".opencode-element-tooltip");
|
|
36
|
+
const highlightDisplay = ((_a = highlight == null ? void 0 : highlight.getAttribute("style")) == null ? void 0 : _a.includes("display: block")) ? "block" : "none";
|
|
37
|
+
const tooltipDisplay = ((_b = tooltip == null ? void 0 : tooltip.getAttribute("style")) == null ? void 0 : _b.includes("display: block")) ? "block" : "none";
|
|
38
|
+
if (highlight) highlight.style.display = "none";
|
|
39
|
+
if (tooltip) tooltip.style.display = "none";
|
|
40
|
+
let element = null;
|
|
41
|
+
try {
|
|
42
|
+
const elements = document.elementsFromPoint(x, y);
|
|
43
|
+
for (const el of elements) {
|
|
44
|
+
if (el.closest("#vue-inspector-container")) continue;
|
|
45
|
+
if (el.closest(".opencode-widget")) continue;
|
|
46
|
+
if (el.hasAttribute("data-v-inspector-ignore")) continue;
|
|
47
|
+
if (boundary.contains(el) || el === boundary) {
|
|
48
|
+
element = el;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
} finally {
|
|
53
|
+
if (highlight) highlight.style.display = highlightDisplay;
|
|
54
|
+
if (tooltip) tooltip.style.display = tooltipDisplay;
|
|
55
|
+
}
|
|
56
|
+
return element;
|
|
57
|
+
}
|
|
35
58
|
function useInspector(options) {
|
|
36
59
|
const highlightVisible = ref(false);
|
|
37
60
|
const highlightStyle = ref({
|
|
@@ -51,7 +74,9 @@ function useInspector(options) {
|
|
|
51
74
|
if (!inspector) return;
|
|
52
75
|
const { targetNode, params } = inspector.getTargetNode(e);
|
|
53
76
|
if (targetNode && params) {
|
|
54
|
-
const
|
|
77
|
+
const preciseElement = getPreciseElementAtPoint(e.clientX, e.clientY, targetNode);
|
|
78
|
+
const elementToHighlight = preciseElement || targetNode;
|
|
79
|
+
const rect = elementToHighlight.getBoundingClientRect();
|
|
55
80
|
const widget = document.querySelector(".opencode-widget");
|
|
56
81
|
let primary = "#3b82f6";
|
|
57
82
|
let primaryBg = "rgba(59, 130, 246, 0.1)";
|
|
@@ -69,7 +94,7 @@ function useInspector(options) {
|
|
|
69
94
|
border: `2px solid ${primary}`,
|
|
70
95
|
background: primaryBg
|
|
71
96
|
};
|
|
72
|
-
const description = getElementDescription(
|
|
97
|
+
const description = getElementDescription(elementToHighlight);
|
|
73
98
|
const fileName = params.file ? params.file.split("/").pop() : "";
|
|
74
99
|
let lineInfo = "";
|
|
75
100
|
if (params.line) {
|
|
@@ -111,8 +136,10 @@ function useInspector(options) {
|
|
|
111
136
|
if (options.selectMode.value) {
|
|
112
137
|
const { targetNode, params } = inspector.getTargetNode(e);
|
|
113
138
|
if (targetNode && params) {
|
|
114
|
-
const
|
|
115
|
-
const
|
|
139
|
+
const preciseElement = getPreciseElementAtPoint(e.clientX, e.clientY, targetNode);
|
|
140
|
+
const elementToSelect = preciseElement || targetNode;
|
|
141
|
+
const innerText = getDirectText(elementToSelect);
|
|
142
|
+
const description = getElementDescription(elementToSelect);
|
|
116
143
|
const elementInfo = {
|
|
117
144
|
filePath: (_a = params.file) != null ? _a : null,
|
|
118
145
|
line: (_b = params.line) != null ? _b : null,
|
|
@@ -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";
|