@aipanel/ui 1.2.0-beta.0
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/AI-panel-widget/composables/use-inspector.d.ts +52 -0
- package/es/AI-panel-widget/composables/use-inspector.mjs +437 -0
- package/es/AI-panel-widget/composables/use-persist-state.d.ts +32 -0
- package/es/AI-panel-widget/composables/use-persist-state.mjs +83 -0
- package/es/AI-panel-widget/composables/use-selection.d.ts +19 -0
- package/es/AI-panel-widget/composables/use-selection.mjs +112 -0
- package/es/AI-panel-widget/composables/use-session.d.ts +16 -0
- package/es/AI-panel-widget/composables/use-session.mjs +47 -0
- package/es/AI-panel-widget/composables/use-split.d.ts +30 -0
- package/es/AI-panel-widget/composables/use-split.mjs +133 -0
- package/es/AI-panel-widget/composables/use-widget.d.ts +27 -0
- package/es/AI-panel-widget/composables/use-widget.mjs +78 -0
- package/es/AI-panel-widget/index.d.ts +5 -0
- package/es/AI-panel-widget/index.mjs +9 -0
- package/es/AI-panel-widget/src/assets/logo.svg +13 -0
- package/es/AI-panel-widget/src/components/AIPanelLogo-sfc.css +1 -0
- package/es/AI-panel-widget/src/components/AIPanelLogo.vue.d.ts +8 -0
- package/es/AI-panel-widget/src/components/AIPanelLogo.vue.mjs +40 -0
- package/es/AI-panel-widget/src/components/ChatPanel-sfc.css +1 -0
- package/es/AI-panel-widget/src/components/ChatPanel.vue.d.ts +179 -0
- package/es/AI-panel-widget/src/components/ChatPanel.vue.mjs +308 -0
- package/es/AI-panel-widget/src/components/FloatingBubble/FloatingBubble-sfc.css +1 -0
- package/es/AI-panel-widget/src/components/FloatingBubble/FloatingBubble.vue.d.ts +44 -0
- package/es/AI-panel-widget/src/components/FloatingBubble/FloatingBubble.vue.mjs +311 -0
- package/es/AI-panel-widget/src/components/FloatingBubble/index.d.ts +3 -0
- package/es/AI-panel-widget/src/components/FloatingBubble/index.mjs +5 -0
- package/es/AI-panel-widget/src/components/FloatingBubble/types.d.ts +24 -0
- package/es/AI-panel-widget/src/components/FloatingBubble/types.mjs +0 -0
- package/es/AI-panel-widget/src/components/Frame-sfc.css +1 -0
- package/es/AI-panel-widget/src/components/Frame.vue.d.ts +22 -0
- package/es/AI-panel-widget/src/components/Frame.vue.mjs +143 -0
- package/es/AI-panel-widget/src/components/Header-sfc.css +1 -0
- package/es/AI-panel-widget/src/components/Header.vue.d.ts +27 -0
- package/es/AI-panel-widget/src/components/Header.vue.mjs +683 -0
- package/es/AI-panel-widget/src/components/ResizeHandle-sfc.css +1 -0
- package/es/AI-panel-widget/src/components/ResizeHandle.vue.d.ts +22 -0
- package/es/AI-panel-widget/src/components/ResizeHandle.vue.mjs +79 -0
- package/es/AI-panel-widget/src/components/SelectHint-sfc.css +1 -0
- package/es/AI-panel-widget/src/components/SelectHint.vue.d.ts +3 -0
- package/es/AI-panel-widget/src/components/SelectHint.vue.mjs +40 -0
- package/es/AI-panel-widget/src/components/SelectedBubbles-sfc.css +1 -0
- package/es/AI-panel-widget/src/components/SelectedBubbles.vue.d.ts +3 -0
- package/es/AI-panel-widget/src/components/SelectedBubbles.vue.mjs +84 -0
- package/es/AI-panel-widget/src/components/SelectedNodes-sfc.css +1 -0
- package/es/AI-panel-widget/src/components/SelectedNodes.vue.d.ts +3 -0
- package/es/AI-panel-widget/src/components/SelectedNodes.vue.mjs +103 -0
- package/es/AI-panel-widget/src/components/SessionList-sfc.css +1 -0
- package/es/AI-panel-widget/src/components/SessionList.vue.d.ts +13 -0
- package/es/AI-panel-widget/src/components/SessionList.vue.mjs +222 -0
- package/es/AI-panel-widget/src/components/SplitTrigger-sfc.css +1 -0
- package/es/AI-panel-widget/src/components/SplitTrigger.vue.d.ts +18 -0
- package/es/AI-panel-widget/src/components/SplitTrigger.vue.mjs +112 -0
- package/es/AI-panel-widget/src/components/Trigger-sfc.css +1 -0
- package/es/AI-panel-widget/src/components/Trigger.vue.d.ts +28 -0
- package/es/AI-panel-widget/src/components/Trigger.vue.mjs +74 -0
- package/es/AI-panel-widget/src/context.d.ts +67 -0
- package/es/AI-panel-widget/src/context.mjs +16 -0
- package/es/AI-panel-widget/src/index-sfc.css +1 -0
- package/es/AI-panel-widget/src/index.vue.d.ts +69 -0
- package/es/AI-panel-widget/src/index.vue.mjs +782 -0
- package/es/AI-panel-widget/src/types.d.ts +2 -0
- package/es/AI-panel-widget/src/types.mjs +0 -0
- package/es/AI-panel-widget/style/index-pure.d.ts +0 -0
- package/es/AI-panel-widget/style/index-pure.mjs +0 -0
- package/es/AI-panel-widget/style/index.d.ts +0 -0
- package/es/AI-panel-widget/style/index.mjs +0 -0
- package/es/AI-panel-widget/style/less-pure.d.ts +0 -0
- package/es/AI-panel-widget/style/less-pure.mjs +0 -0
- package/es/AI-panel-widget/style/less.d.ts +0 -0
- package/es/AI-panel-widget/style/less.mjs +0 -0
- package/es/env.d.ts +15 -0
- package/es/index.d.ts +7 -0
- package/es/index.mjs +22 -0
- package/es/setup.d.ts +1 -0
- package/es/setup.mjs +4 -0
- package/lib/AI-panel-widget/composables/use-inspector.cjs +466 -0
- package/lib/AI-panel-widget/composables/use-inspector.d.ts +52 -0
- package/lib/AI-panel-widget/composables/use-persist-state.cjs +102 -0
- package/lib/AI-panel-widget/composables/use-persist-state.d.ts +32 -0
- package/lib/AI-panel-widget/composables/use-selection.cjs +131 -0
- package/lib/AI-panel-widget/composables/use-selection.d.ts +19 -0
- package/lib/AI-panel-widget/composables/use-session.cjs +66 -0
- package/lib/AI-panel-widget/composables/use-session.d.ts +16 -0
- package/lib/AI-panel-widget/composables/use-split.cjs +152 -0
- package/lib/AI-panel-widget/composables/use-split.d.ts +30 -0
- package/lib/AI-panel-widget/composables/use-widget.cjs +97 -0
- package/lib/AI-panel-widget/composables/use-widget.d.ts +27 -0
- package/lib/AI-panel-widget/index.cjs +39 -0
- package/lib/AI-panel-widget/index.d.ts +5 -0
- package/lib/AI-panel-widget/src/assets/logo.svg +13 -0
- package/lib/AI-panel-widget/src/components/AIPanelLogo-sfc.css +1 -0
- package/lib/AI-panel-widget/src/components/AIPanelLogo.vue.cjs +69 -0
- package/lib/AI-panel-widget/src/components/AIPanelLogo.vue.d.ts +8 -0
- package/lib/AI-panel-widget/src/components/ChatPanel-sfc.css +1 -0
- package/lib/AI-panel-widget/src/components/ChatPanel.vue.cjs +337 -0
- package/lib/AI-panel-widget/src/components/ChatPanel.vue.d.ts +179 -0
- package/lib/AI-panel-widget/src/components/FloatingBubble/FloatingBubble-sfc.css +1 -0
- package/lib/AI-panel-widget/src/components/FloatingBubble/FloatingBubble.vue.cjs +330 -0
- package/lib/AI-panel-widget/src/components/FloatingBubble/FloatingBubble.vue.d.ts +44 -0
- package/lib/AI-panel-widget/src/components/FloatingBubble/index.cjs +35 -0
- package/lib/AI-panel-widget/src/components/FloatingBubble/index.d.ts +3 -0
- package/lib/AI-panel-widget/src/components/FloatingBubble/types.cjs +15 -0
- package/lib/AI-panel-widget/src/components/FloatingBubble/types.d.ts +24 -0
- package/lib/AI-panel-widget/src/components/Frame-sfc.css +1 -0
- package/lib/AI-panel-widget/src/components/Frame.vue.cjs +162 -0
- package/lib/AI-panel-widget/src/components/Frame.vue.d.ts +22 -0
- package/lib/AI-panel-widget/src/components/Header-sfc.css +1 -0
- package/lib/AI-panel-widget/src/components/Header.vue.cjs +702 -0
- package/lib/AI-panel-widget/src/components/Header.vue.d.ts +27 -0
- package/lib/AI-panel-widget/src/components/ResizeHandle-sfc.css +1 -0
- package/lib/AI-panel-widget/src/components/ResizeHandle.vue.cjs +98 -0
- package/lib/AI-panel-widget/src/components/ResizeHandle.vue.d.ts +22 -0
- package/lib/AI-panel-widget/src/components/SelectHint-sfc.css +1 -0
- package/lib/AI-panel-widget/src/components/SelectHint.vue.cjs +59 -0
- package/lib/AI-panel-widget/src/components/SelectHint.vue.d.ts +3 -0
- package/lib/AI-panel-widget/src/components/SelectedBubbles-sfc.css +1 -0
- package/lib/AI-panel-widget/src/components/SelectedBubbles.vue.cjs +103 -0
- package/lib/AI-panel-widget/src/components/SelectedBubbles.vue.d.ts +3 -0
- package/lib/AI-panel-widget/src/components/SelectedNodes-sfc.css +1 -0
- package/lib/AI-panel-widget/src/components/SelectedNodes.vue.cjs +122 -0
- package/lib/AI-panel-widget/src/components/SelectedNodes.vue.d.ts +3 -0
- package/lib/AI-panel-widget/src/components/SessionList-sfc.css +1 -0
- package/lib/AI-panel-widget/src/components/SessionList.vue.cjs +241 -0
- package/lib/AI-panel-widget/src/components/SessionList.vue.d.ts +13 -0
- package/lib/AI-panel-widget/src/components/SplitTrigger-sfc.css +1 -0
- package/lib/AI-panel-widget/src/components/SplitTrigger.vue.cjs +131 -0
- package/lib/AI-panel-widget/src/components/SplitTrigger.vue.d.ts +18 -0
- package/lib/AI-panel-widget/src/components/Trigger-sfc.css +1 -0
- package/lib/AI-panel-widget/src/components/Trigger.vue.cjs +103 -0
- package/lib/AI-panel-widget/src/components/Trigger.vue.d.ts +28 -0
- package/lib/AI-panel-widget/src/context.cjs +35 -0
- package/lib/AI-panel-widget/src/context.d.ts +67 -0
- package/lib/AI-panel-widget/src/index-sfc.css +1 -0
- package/lib/AI-panel-widget/src/index.vue.cjs +811 -0
- package/lib/AI-panel-widget/src/index.vue.d.ts +69 -0
- package/lib/AI-panel-widget/src/types.cjs +15 -0
- package/lib/AI-panel-widget/src/types.d.ts +2 -0
- package/lib/AI-panel-widget/style/index-pure.cjs +0 -0
- package/lib/AI-panel-widget/style/index-pure.d.ts +0 -0
- package/lib/AI-panel-widget/style/index.cjs +0 -0
- package/lib/AI-panel-widget/style/index.d.ts +0 -0
- package/lib/AI-panel-widget/style/less-pure.cjs +0 -0
- package/lib/AI-panel-widget/style/less-pure.d.ts +0 -0
- package/lib/AI-panel-widget/style/less.cjs +0 -0
- package/lib/AI-panel-widget/style/less.d.ts +0 -0
- package/lib/env.d.ts +15 -0
- package/lib/index.cjs +42 -0
- package/lib/index.css +0 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.less +0 -0
- package/lib/setup.cjs +23 -0
- package/lib/setup.d.ts +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {}, __VLS_9: {}, __VLS_11: {}, __VLS_13: {}, __VLS_15: {};
|
|
2
|
+
type __VLS_Slots = {} & {
|
|
3
|
+
'session-toggle-icon'?: (props: typeof __VLS_1) => any;
|
|
4
|
+
} & {
|
|
5
|
+
'select-icon'?: (props: typeof __VLS_3) => any;
|
|
6
|
+
} & {
|
|
7
|
+
'theme-icon'?: (props: typeof __VLS_5) => any;
|
|
8
|
+
} & {
|
|
9
|
+
'display-mode-icon'?: (props: typeof __VLS_7) => any;
|
|
10
|
+
} & {
|
|
11
|
+
'split-position-icon'?: (props: typeof __VLS_9) => any;
|
|
12
|
+
} & {
|
|
13
|
+
'prompt-dock-icon'?: (props: typeof __VLS_11) => any;
|
|
14
|
+
} & {
|
|
15
|
+
'minimize-icon'?: (props: typeof __VLS_13) => any;
|
|
16
|
+
} & {
|
|
17
|
+
'close-icon'?: (props: typeof __VLS_15) => any;
|
|
18
|
+
};
|
|
19
|
+
declare const __VLS_base: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
20
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
21
|
+
declare const _default: typeof __VLS_export;
|
|
22
|
+
export default _default;
|
|
23
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
24
|
+
new (): {
|
|
25
|
+
$slots: S;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.aipanel-resize-handle{position:absolute;left:0;top:0;bottom:0;width:6px;cursor:col-resize;background:transparent;z-index:10;transition:background .2s ease}.aipanel-resize-handle.handle-left{left:auto;right:0}.aipanel-resize-handle:hover,.aipanel-resize-handle.resizing{background:var(--ap-primary-bg)}.aipanel-resize-handle:after{content:"";position:absolute;left:2px;top:50%;transform:translateY(-50%);width:2px;height:40px;background:var(--ap-border-secondary);border-radius:1px;opacity:0;transition:opacity .2s ease}.aipanel-resize-handle.handle-left:after{left:auto;right:2px}.aipanel-resize-handle:hover:after,.aipanel-resize-handle.resizing:after{opacity:1}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var ResizeHandle_vue_exports = {};
|
|
19
|
+
__export(ResizeHandle_vue_exports, {
|
|
20
|
+
default: () => ResizeHandle_vue_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(ResizeHandle_vue_exports);
|
|
23
|
+
var import_ResizeHandle_sfc = require("./ResizeHandle-sfc.css");
|
|
24
|
+
var import_vue = require("vue");
|
|
25
|
+
var import_vue2 = require("vue");
|
|
26
|
+
var import_vue3 = require("vue");
|
|
27
|
+
const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
28
|
+
...{
|
|
29
|
+
name: "ResizeHandle"
|
|
30
|
+
},
|
|
31
|
+
__name: "ResizeHandle",
|
|
32
|
+
props: {
|
|
33
|
+
width: { type: Number, required: false, default: 500 },
|
|
34
|
+
minWidth: { type: Number, required: false, default: 400 },
|
|
35
|
+
maxWidth: { type: Number, required: false, default: 800 },
|
|
36
|
+
position: { type: String, required: false, default: "right" }
|
|
37
|
+
},
|
|
38
|
+
emits: ["resize", "resize-start", "resize-end"],
|
|
39
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
40
|
+
__expose();
|
|
41
|
+
const props = __props;
|
|
42
|
+
const emit = __emit;
|
|
43
|
+
const isResizing = (0, import_vue2.ref)(false);
|
|
44
|
+
const startX = (0, import_vue2.ref)(0);
|
|
45
|
+
const startWidth = (0, import_vue2.ref)(0);
|
|
46
|
+
const handleMouseDown = (e) => {
|
|
47
|
+
e.preventDefault();
|
|
48
|
+
isResizing.value = true;
|
|
49
|
+
startX.value = e.clientX;
|
|
50
|
+
startWidth.value = props.width;
|
|
51
|
+
emit("resize-start");
|
|
52
|
+
document.addEventListener("mousemove", handleMouseMove);
|
|
53
|
+
document.addEventListener("mouseup", handleMouseUp);
|
|
54
|
+
};
|
|
55
|
+
const handleMouseMove = (e) => {
|
|
56
|
+
if (!isResizing.value) return;
|
|
57
|
+
let deltaX;
|
|
58
|
+
if (props.position === "right") {
|
|
59
|
+
deltaX = startX.value - e.clientX;
|
|
60
|
+
} else {
|
|
61
|
+
deltaX = e.clientX - startX.value;
|
|
62
|
+
}
|
|
63
|
+
const newWidth = Math.max(props.minWidth, Math.min(props.maxWidth, startWidth.value + deltaX));
|
|
64
|
+
emit("resize", newWidth);
|
|
65
|
+
};
|
|
66
|
+
const handleMouseUp = () => {
|
|
67
|
+
isResizing.value = false;
|
|
68
|
+
emit("resize-end");
|
|
69
|
+
document.removeEventListener("mousemove", handleMouseMove);
|
|
70
|
+
document.removeEventListener("mouseup", handleMouseUp);
|
|
71
|
+
};
|
|
72
|
+
const handleDoubleClick = () => {
|
|
73
|
+
emit("resize", 500);
|
|
74
|
+
};
|
|
75
|
+
(0, import_vue2.onUnmounted)(() => {
|
|
76
|
+
document.removeEventListener("mousemove", handleMouseMove);
|
|
77
|
+
document.removeEventListener("mouseup", handleMouseUp);
|
|
78
|
+
});
|
|
79
|
+
const __returned__ = { props, emit, isResizing, startX, startWidth, handleMouseDown, handleMouseMove, handleMouseUp, handleDoubleClick };
|
|
80
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
81
|
+
return __returned__;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
85
|
+
return (0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)(
|
|
86
|
+
"div",
|
|
87
|
+
{
|
|
88
|
+
class: (0, import_vue3.normalizeClass)(["aipanel-resize-handle", { resizing: $setup.isResizing, "handle-left": $props.position === "left" }]),
|
|
89
|
+
onMousedown: $setup.handleMouseDown,
|
|
90
|
+
onDblclick: $setup.handleDoubleClick
|
|
91
|
+
},
|
|
92
|
+
null,
|
|
93
|
+
34
|
|
94
|
+
/* CLASS, NEED_HYDRATION */
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
__vue_sfc__.render = __vue_render__;
|
|
98
|
+
var ResizeHandle_vue_default = __vue_sfc__;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
width?: number;
|
|
3
|
+
minWidth?: number;
|
|
4
|
+
maxWidth?: number;
|
|
5
|
+
position?: "left" | "right";
|
|
6
|
+
};
|
|
7
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
8
|
+
resize: (width: number) => any;
|
|
9
|
+
"resize-start": () => any;
|
|
10
|
+
"resize-end": () => any;
|
|
11
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
12
|
+
onResize?: ((width: number) => any) | undefined;
|
|
13
|
+
"onResize-start"?: (() => any) | undefined;
|
|
14
|
+
"onResize-end"?: (() => any) | undefined;
|
|
15
|
+
}>, {
|
|
16
|
+
width: number;
|
|
17
|
+
minWidth: number;
|
|
18
|
+
maxWidth: number;
|
|
19
|
+
position: "left" | "right";
|
|
20
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
21
|
+
declare const _default: typeof __VLS_export;
|
|
22
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.aipanel-select-mode-hint{position:fixed;top:16px;left:50%;transform:translate(-50%) translateY(-16px);width:280px;padding:8px 14px;background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;border-radius:18px;font-size:13px;font-weight:500;line-height:1.4;box-shadow:0 6px 20px #ef444480,0 0 0 3px #ef44444d;z-index:9999999;display:none;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:1px solid rgba(255,255,255,.25);opacity:0;transition:opacity .2s ease,transform .25s cubic-bezier(.16,1,.3,1);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-sizing:border-box}.aipanel-select-mode-hint.visible{display:flex;opacity:1;transform:translate(-50%) translateY(0);animation:hintSlideIn .3s cubic-bezier(.16,1,.3,1),pulseHint 2s ease-in-out .3s infinite}.aipanel-hint-main{display:inline-flex;align-items:center;gap:8px;min-width:0}.aipanel-hint-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#fff3;color:#fff;flex-shrink:0}.aipanel-hint-icon svg{display:block}.aipanel-hint-text{font-size:13px;font-weight:500;letter-spacing:.2px;white-space:nowrap;text-shadow:0 1px 2px rgba(0,0,0,.15)}.aipanel-hint-shortcut{display:inline-flex;align-items:center;padding:4px 10px;background:#0000002e;border-radius:999px;font-size:12px;font-weight:600;letter-spacing:.3px;border:1px solid rgba(255,255,255,.2);white-space:nowrap;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace}@keyframes hintSlideIn{0%{opacity:0;transform:translate(-50%) translateY(-16px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes pulseHint{0%,to{box-shadow:0 6px 20px #ef444480,0 0 0 3px #ef44444d}50%{box-shadow:0 6px 20px #ef444499,0 0 0 6px #ef444466}}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var SelectHint_vue_exports = {};
|
|
19
|
+
__export(SelectHint_vue_exports, {
|
|
20
|
+
default: () => SelectHint_vue_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(SelectHint_vue_exports);
|
|
23
|
+
var import_SelectHint_sfc = require("./SelectHint-sfc.css");
|
|
24
|
+
var import_vue = require("vue");
|
|
25
|
+
var import_context = require("../context.cjs");
|
|
26
|
+
var import_vue2 = require("vue");
|
|
27
|
+
const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
28
|
+
__name: "SelectHint",
|
|
29
|
+
setup(__props, { expose: __expose }) {
|
|
30
|
+
__expose();
|
|
31
|
+
const { selectMode: visible, selectShortcutLabel: shortcutLabel } = (0, import_context.useAIPanelWidgetContext)();
|
|
32
|
+
const __returned__ = { visible, shortcutLabel };
|
|
33
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
34
|
+
return __returned__;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
const _hoisted_1 = { class: "aipanel-hint-shortcut" };
|
|
38
|
+
function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
39
|
+
return (0, import_vue2.openBlock)(), (0, import_vue2.createElementBlock)(
|
|
40
|
+
"div",
|
|
41
|
+
{
|
|
42
|
+
class: (0, import_vue2.normalizeClass)(["aipanel-select-mode-hint", { visible: $setup.visible }])
|
|
43
|
+
},
|
|
44
|
+
[
|
|
45
|
+
_cache[0] || (_cache[0] = (0, import_vue2.createStaticVNode)('<span class="aipanel-hint-main"><span class="aipanel-hint-icon" aria-hidden="true"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="8"></circle><circle cx="12" cy="12" r="2.5" fill="currentColor"></circle><line x1="12" y1="2" x2="12" y2="5"></line><line x1="12" y1="19" x2="12" y2="22"></line><line x1="2" y1="12" x2="5" y2="12"></line><line x1="19" y1="12" x2="22" y2="12"></line></svg></span><span class="aipanel-hint-text">\u9009\u62E9\u6A21\u5F0F\u5DF2\u5F00\u542F \xB7 \u70B9\u51FB\u5143\u7D20\u8FDB\u884C\u9009\u62E9</span></span>', 1)),
|
|
46
|
+
(0, import_vue2.createElementVNode)(
|
|
47
|
+
"span",
|
|
48
|
+
_hoisted_1,
|
|
49
|
+
(0, import_vue2.toDisplayString)($setup.shortcutLabel),
|
|
50
|
+
1
|
|
51
|
+
/* TEXT */
|
|
52
|
+
)
|
|
53
|
+
],
|
|
54
|
+
2
|
|
55
|
+
/* CLASS */
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
__vue_sfc__.render = __vue_render__;
|
|
59
|
+
var SelectHint_vue_default = __vue_sfc__;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.aipanel-selected-bubbles{position:absolute;display:none;flex-direction:column;gap:6px;max-width:220px;max-height:300px;overflow-y:auto}.aipanel-selected-bubbles.visible{display:flex}.aipanel-selected-bubble{display:flex;flex-direction:column;gap:2px;padding:8px 24px 8px 10px;background:var(--ap-bg-main);border:1px solid var(--ap-border-primary);border-radius:8px;font-size:12px;box-shadow:var(--ap-shadow-sm);position:relative;cursor:pointer;transition:all .2s}.aipanel-selected-bubble:hover{border-color:var(--ap-primary);box-shadow:var(--ap-shadow-primary)}.aipanel-bubble-text{color:var(--ap-text-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aipanel-bubble-file{color:var(--ap-text-placeholder);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aipanel-bubble-remove{position:absolute;top:8px;right:6px;width:16px;height:16px;border-radius:50%;border:none;background:transparent;color:var(--ap-text-placeholder);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;transition:all .2s}.aipanel-bubble-remove:hover{background:var(--ap-danger);color:#fff}.aipanel-bubble-empty{padding:8px 12px;background:var(--ap-bg-main);border:1px dashed var(--ap-border-secondary);border-radius:8px;color:var(--ap-text-placeholder);font-size:12px;text-align:center}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var SelectedBubbles_vue_exports = {};
|
|
19
|
+
__export(SelectedBubbles_vue_exports, {
|
|
20
|
+
default: () => SelectedBubbles_vue_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(SelectedBubbles_vue_exports);
|
|
23
|
+
var import_SelectedBubbles_sfc = require("./SelectedBubbles-sfc.css");
|
|
24
|
+
var import_vue = require("vue");
|
|
25
|
+
var import_context = require("../context.cjs");
|
|
26
|
+
var import_vue2 = require("vue");
|
|
27
|
+
const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
28
|
+
__name: "SelectedBubbles",
|
|
29
|
+
setup(__props, { expose: __expose }) {
|
|
30
|
+
__expose();
|
|
31
|
+
const {
|
|
32
|
+
bubbleVisible: visible,
|
|
33
|
+
selectedElementItems: items,
|
|
34
|
+
handleClickSelectedNode,
|
|
35
|
+
handleRemoveSelectedNode
|
|
36
|
+
} = (0, import_context.useAIPanelWidgetContext)();
|
|
37
|
+
const __returned__ = { visible, items, handleClickSelectedNode, handleRemoveSelectedNode };
|
|
38
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
39
|
+
return __returned__;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
const _hoisted_1 = {
|
|
43
|
+
key: 0,
|
|
44
|
+
class: "aipanel-bubble-empty"
|
|
45
|
+
};
|
|
46
|
+
const _hoisted_2 = ["onClick"];
|
|
47
|
+
const _hoisted_3 = { class: "aipanel-bubble-text" };
|
|
48
|
+
const _hoisted_4 = {
|
|
49
|
+
key: 0,
|
|
50
|
+
class: "aipanel-bubble-file"
|
|
51
|
+
};
|
|
52
|
+
const _hoisted_5 = ["aria-label", "onClick"];
|
|
53
|
+
function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
54
|
+
return (0, import_vue2.openBlock)(), (0, import_vue2.createElementBlock)(
|
|
55
|
+
"div",
|
|
56
|
+
{
|
|
57
|
+
class: (0, import_vue2.normalizeClass)(["aipanel-selected-bubbles", { visible: $setup.visible }]),
|
|
58
|
+
role: "list",
|
|
59
|
+
"aria-label": "\u5DF2\u9009\u5143\u7D20\u5217\u8868"
|
|
60
|
+
},
|
|
61
|
+
[
|
|
62
|
+
$setup.items.length === 0 ? ((0, import_vue2.openBlock)(), (0, import_vue2.createElementBlock)("div", _hoisted_1, "\u6682\u65E0\u9009\u4E2D\u5143\u7D20")) : ((0, import_vue2.openBlock)(true), (0, import_vue2.createElementBlock)(
|
|
63
|
+
import_vue2.Fragment,
|
|
64
|
+
{ key: 1 },
|
|
65
|
+
(0, import_vue2.renderList)($setup.items, (item, index) => {
|
|
66
|
+
return (0, import_vue2.openBlock)(), (0, import_vue2.createElementBlock)("div", {
|
|
67
|
+
key: item.key,
|
|
68
|
+
class: "aipanel-selected-bubble",
|
|
69
|
+
role: "listitem",
|
|
70
|
+
onClick: ($event) => $setup.handleClickSelectedNode(item)
|
|
71
|
+
}, [
|
|
72
|
+
(0, import_vue2.createElementVNode)(
|
|
73
|
+
"span",
|
|
74
|
+
_hoisted_3,
|
|
75
|
+
(0, import_vue2.toDisplayString)(item.description),
|
|
76
|
+
1
|
|
77
|
+
/* TEXT */
|
|
78
|
+
),
|
|
79
|
+
item.bubbleFileText ? ((0, import_vue2.openBlock)(), (0, import_vue2.createElementBlock)(
|
|
80
|
+
"span",
|
|
81
|
+
_hoisted_4,
|
|
82
|
+
(0, import_vue2.toDisplayString)(item.bubbleFileText),
|
|
83
|
+
1
|
|
84
|
+
/* TEXT */
|
|
85
|
+
)) : (0, import_vue2.createCommentVNode)("v-if", true),
|
|
86
|
+
(0, import_vue2.createElementVNode)("button", {
|
|
87
|
+
class: "aipanel-bubble-remove",
|
|
88
|
+
type: "button",
|
|
89
|
+
"aria-label": `\u79FB\u9664\u5143\u7D20: ${item.description}`,
|
|
90
|
+
onClick: (0, import_vue2.withModifiers)(($event) => $setup.handleRemoveSelectedNode({ item, index, source: "bubble" }), ["stop"])
|
|
91
|
+
}, " \xD7 ", 8, _hoisted_5)
|
|
92
|
+
], 8, _hoisted_2);
|
|
93
|
+
}),
|
|
94
|
+
128
|
|
95
|
+
/* KEYED_FRAGMENT */
|
|
96
|
+
))
|
|
97
|
+
],
|
|
98
|
+
2
|
|
99
|
+
/* CLASS */
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
__vue_sfc__.render = __vue_render__;
|
|
103
|
+
var SelectedBubbles_vue_default = __vue_sfc__;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.aipanel-right-toolbar{width:140px;background:var(--ap-bg-secondary);border-left:1px solid var(--ap-border-primary);display:flex;flex-direction:column;flex-shrink:0;transition:width .2s ease;overflow:hidden}.aipanel-right-toolbar.collapsed{width:0;overflow:hidden}.aipanel-right-toolbar.collapsed .aipanel-selected-nodes-header,.aipanel-right-toolbar.collapsed .aipanel-selected-nodes,.aipanel-right-toolbar.collapsed .aipanel-clear-all-btn{display:none}.aipanel-selected-nodes-header{padding:12px 8px 8px;border-bottom:1px solid var(--ap-border-primary)}.aipanel-selected-nodes-title{font-size:14px;font-weight:600;color:var(--ap-text-primary);margin-bottom:4px}.aipanel-selected-nodes-desc{font-size:11px;color:var(--ap-text-placeholder);line-height:1.4}.aipanel-selected-nodes{flex:1;display:flex;flex-direction:column;padding:8px;gap:6px;overflow-y:auto;overflow-x:hidden}.aipanel-selected-nodes:empty:before{content:"\6682\65e0\9009\4e2d\5143\7d20";color:var(--ap-text-placeholder);font-size:12px;text-align:center;padding:20px 10px}.aipanel-selected-node{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--ap-bg-main);border:1px solid var(--ap-border-primary);border-radius:6px;font-size:12px;transition:all .2s}.aipanel-selected-node:hover{border-color:var(--ap-primary);box-shadow:var(--ap-shadow-primary)}.aipanel-node-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.aipanel-node-text{color:var(--ap-text-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aipanel-node-file{color:var(--ap-text-placeholder);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aipanel-node-remove{width:18px;height:18px;border-radius:4px;border:none;background:transparent;color:var(--ap-text-placeholder);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .2s;flex-shrink:0}.aipanel-node-remove:hover{background:var(--ap-danger);color:#fff}.aipanel-clear-all-btn{width:calc(100% - 16px);margin:8px;padding:8px 12px;border-radius:6px;border:none;background:var(--ap-danger);color:#fff;font-size:12px;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px;transition:all .2s}.aipanel-clear-all-btn:hover{background:var(--ap-danger-hover);transform:scale(1.02)}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var SelectedNodes_vue_exports = {};
|
|
19
|
+
__export(SelectedNodes_vue_exports, {
|
|
20
|
+
default: () => SelectedNodes_vue_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(SelectedNodes_vue_exports);
|
|
23
|
+
var import_SelectedNodes_sfc = require("./SelectedNodes-sfc.css");
|
|
24
|
+
var import_vue = require("vue");
|
|
25
|
+
var import_context = require("../context.cjs");
|
|
26
|
+
var import_vue2 = require("vue");
|
|
27
|
+
const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
28
|
+
__name: "SelectedNodes",
|
|
29
|
+
setup(__props, { expose: __expose }) {
|
|
30
|
+
__expose();
|
|
31
|
+
const {
|
|
32
|
+
selectedElementItems: items,
|
|
33
|
+
showClearAll,
|
|
34
|
+
handleClickSelectedNode,
|
|
35
|
+
handleRemoveSelectedNode,
|
|
36
|
+
handleClearSelectedNodes
|
|
37
|
+
} = (0, import_context.useAIPanelWidgetContext)();
|
|
38
|
+
const __returned__ = { items, showClearAll, handleClickSelectedNode, handleRemoveSelectedNode, handleClearSelectedNodes };
|
|
39
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
40
|
+
return __returned__;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
const _hoisted_1 = {
|
|
44
|
+
class: "aipanel-selected-nodes",
|
|
45
|
+
role: "list",
|
|
46
|
+
"aria-label": "\u5DF2\u9009\u5143\u7D20\u5217\u8868"
|
|
47
|
+
};
|
|
48
|
+
const _hoisted_2 = ["onClick"];
|
|
49
|
+
const _hoisted_3 = { class: "aipanel-node-content" };
|
|
50
|
+
const _hoisted_4 = { class: "aipanel-node-text" };
|
|
51
|
+
const _hoisted_5 = { class: "aipanel-node-file" };
|
|
52
|
+
const _hoisted_6 = ["aria-label", "onClick"];
|
|
53
|
+
function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
54
|
+
return (0, import_vue2.openBlock)(), (0, import_vue2.createElementBlock)(
|
|
55
|
+
"div",
|
|
56
|
+
{
|
|
57
|
+
class: (0, import_vue2.normalizeClass)(["aipanel-right-toolbar", { collapsed: $setup.items.length === 0 }])
|
|
58
|
+
},
|
|
59
|
+
[
|
|
60
|
+
_cache[1] || (_cache[1] = (0, import_vue2.createElementVNode)(
|
|
61
|
+
"div",
|
|
62
|
+
{ class: "aipanel-selected-nodes-header" },
|
|
63
|
+
[
|
|
64
|
+
(0, import_vue2.createElementVNode)("div", { class: "aipanel-selected-nodes-title" }, "\u5DF2\u9009\u8282\u70B9"),
|
|
65
|
+
(0, import_vue2.createElementVNode)("div", { class: "aipanel-selected-nodes-desc" }, "\u9009\u4E2D\u7684\u8282\u70B9\u4F1A\u5728\u5BF9\u8BDD\u65F6\u4E00\u8D77\u53D1\u9001\u7ED9\u52A9\u624B")
|
|
66
|
+
],
|
|
67
|
+
-1
|
|
68
|
+
/* CACHED */
|
|
69
|
+
)),
|
|
70
|
+
(0, import_vue2.createElementVNode)("div", _hoisted_1, [
|
|
71
|
+
((0, import_vue2.openBlock)(true), (0, import_vue2.createElementBlock)(
|
|
72
|
+
import_vue2.Fragment,
|
|
73
|
+
null,
|
|
74
|
+
(0, import_vue2.renderList)($setup.items, (item, index) => {
|
|
75
|
+
return (0, import_vue2.openBlock)(), (0, import_vue2.createElementBlock)("div", {
|
|
76
|
+
key: item.key,
|
|
77
|
+
class: "aipanel-selected-node",
|
|
78
|
+
role: "listitem",
|
|
79
|
+
onClick: ($event) => $setup.handleClickSelectedNode(item)
|
|
80
|
+
}, [
|
|
81
|
+
(0, import_vue2.createElementVNode)("div", _hoisted_3, [
|
|
82
|
+
(0, import_vue2.createElementVNode)(
|
|
83
|
+
"span",
|
|
84
|
+
_hoisted_4,
|
|
85
|
+
(0, import_vue2.toDisplayString)(item.description),
|
|
86
|
+
1
|
|
87
|
+
/* TEXT */
|
|
88
|
+
),
|
|
89
|
+
(0, import_vue2.createElementVNode)(
|
|
90
|
+
"span",
|
|
91
|
+
_hoisted_5,
|
|
92
|
+
(0, import_vue2.toDisplayString)(item.panelFileText),
|
|
93
|
+
1
|
|
94
|
+
/* TEXT */
|
|
95
|
+
)
|
|
96
|
+
]),
|
|
97
|
+
(0, import_vue2.createElementVNode)("button", {
|
|
98
|
+
class: "aipanel-node-remove",
|
|
99
|
+
type: "button",
|
|
100
|
+
"aria-label": `\u79FB\u9664\u5143\u7D20: ${item.description}`,
|
|
101
|
+
onClick: (0, import_vue2.withModifiers)(($event) => $setup.handleRemoveSelectedNode({ item, index, source: "panel" }), ["stop"])
|
|
102
|
+
}, " \xD7 ", 8, _hoisted_6)
|
|
103
|
+
], 8, _hoisted_2);
|
|
104
|
+
}),
|
|
105
|
+
128
|
|
106
|
+
/* KEYED_FRAGMENT */
|
|
107
|
+
))
|
|
108
|
+
]),
|
|
109
|
+
$setup.showClearAll && $setup.items.length > 0 ? ((0, import_vue2.openBlock)(), (0, import_vue2.createElementBlock)("button", {
|
|
110
|
+
key: 0,
|
|
111
|
+
class: "aipanel-clear-all-btn",
|
|
112
|
+
type: "button",
|
|
113
|
+
"aria-label": "\u6E05\u7A7A\u6240\u6709\u5DF2\u9009\u8282\u70B9",
|
|
114
|
+
onClick: _cache[0] || (_cache[0] = (...args) => $setup.handleClearSelectedNodes && $setup.handleClearSelectedNodes(...args))
|
|
115
|
+
}, " \u4E00\u952E\u6E05\u7A7A ")) : (0, import_vue2.createCommentVNode)("v-if", true)
|
|
116
|
+
],
|
|
117
|
+
2
|
|
118
|
+
/* CLASS */
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
__vue_sfc__.render = __vue_render__;
|
|
122
|
+
var SelectedNodes_vue_default = __vue_sfc__;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.aipanel-session-list{width:240px;background:var(--ap-bg-secondary);border-right:1px solid var(--ap-border-primary);display:flex;flex-direction:column;flex-shrink:0;transition:width .2s ease}.aipanel-session-list.collapsed{width:0;overflow:hidden}.aipanel-session-list.collapsed .aipanel-session-list-header,.aipanel-session-list.collapsed .aipanel-session-list-content{display:none}.aipanel-session-list-header{padding:16px;border-bottom:1px solid var(--ap-border-primary);display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:14px;color:var(--ap-text-primary)}.aipanel-new-session-btn{width:28px;height:28px;border-radius:6px;border:none;background:var(--ap-primary);color:#fff;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.aipanel-new-session-btn:hover{background:var(--ap-primary-hover);transform:scale(1.05)}.aipanel-session-list-content{flex:1;overflow-y:auto;padding:8px;position:relative}.aipanel-session-list-loading-overlay{position:absolute;inset:0;background:var(--ap-overlay-bg);display:flex;align-items:center;justify-content:center;z-index:10;border-radius:8px}.aipanel-loading-spinner.small{width:24px;height:24px;border-width:2px}.aipanel-session-item{padding:12px;border-radius:8px;cursor:pointer;transition:transform .2s;margin-bottom:4px;color:var(--ap-text-primary)}.aipanel-session-item:hover{background:var(--ap-bg-tertiary)}.aipanel-session-item.active{background:var(--ap-primary);color:#fff;transition:none}.aipanel-session-title{font-size:14px;font-weight:500;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aipanel-session-meta{font-size:12px;opacity:.6}.aipanel-session-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.aipanel-session-delete-btn{width:20px;height:20px;border-radius:4px;border:none;background:transparent;color:var(--ap-text-placeholder);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;opacity:0;flex-shrink:0}.aipanel-session-item:hover .aipanel-session-delete-btn{opacity:1}.aipanel-session-delete-btn:hover{background:var(--ap-danger);color:#fff}.aipanel-session-item.active .aipanel-session-delete-btn{color:#ffffffb3}.aipanel-session-item.active .aipanel-session-delete-btn:hover{background:#fff3;color:#fff}.aipanel-session-header-skeleton{padding:16px;border-bottom:1px solid var(--ap-border-primary);display:none;justify-content:space-between;align-items:center}.aipanel-session-header-skeleton.visible{display:flex}.aipanel-skeleton-header-title{height:18px;width:80px;background:var(--ap-skeleton-gradient);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:4px}.aipanel-skeleton-header-btn{width:28px;height:28px;background:var(--ap-skeleton-gradient);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:6px}.aipanel-session-skeleton{flex:1;overflow-y:auto;padding:8px;display:none}.aipanel-session-skeleton.visible{display:block}.aipanel-skeleton-item{padding:12px;border-radius:8px;margin-bottom:4px;background:var(--ap-skeleton-bg)}.aipanel-skeleton-title{height:16px;background:var(--ap-skeleton-gradient);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:4px;margin-bottom:8px;width:70%}.aipanel-skeleton-meta{height:12px;background:var(--ap-skeleton-gradient);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:4px;width:50%}.aipanel-session-empty{padding:32px 16px;text-align:center;color:var(--ap-text-placeholder);font-size:13px}.aipanel-thinking-loading{display:inline-block;width:12px;height:12px;margin-right:6px;border:2px solid var(--ap-border-secondary);border-top-color:var(--ap-text-secondary);border-radius:50%;animation:thinking-spin .8s linear infinite;vertical-align:middle}.aipanel-session-item.active .aipanel-thinking-loading{border-color:#ffffff4d;border-top-color:#ffffffe6}@keyframes thinking-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}
|