@vite-plugin-opencode-assistant/components 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/es/env.d.ts +10 -0
  2. package/es/index.d.ts +6 -0
  3. package/es/index.js +21 -0
  4. package/es/open-code-widget/composables/use-inspector.d.ts +52 -0
  5. package/es/open-code-widget/composables/use-inspector.js +188 -0
  6. package/es/open-code-widget/composables/use-selection.d.ts +19 -0
  7. package/es/open-code-widget/composables/use-selection.js +142 -0
  8. package/es/open-code-widget/composables/use-session.d.ts +16 -0
  9. package/es/open-code-widget/composables/use-session.js +68 -0
  10. package/es/open-code-widget/composables/use-widget.d.ts +24 -0
  11. package/es/open-code-widget/composables/use-widget.js +44 -0
  12. package/es/open-code-widget/index.d.ts +3 -0
  13. package/es/open-code-widget/index.js +6 -0
  14. package/es/open-code-widget/src/components/Frame-sfc.css +1 -0
  15. package/es/open-code-widget/src/components/Frame.vue.d.ts +16 -0
  16. package/es/open-code-widget/src/components/Frame.vue.js +120 -0
  17. package/es/open-code-widget/src/components/Header-sfc.css +1 -0
  18. package/es/open-code-widget/src/components/Header.vue.d.ts +16 -0
  19. package/es/open-code-widget/src/components/Header.vue.js +140 -0
  20. package/es/open-code-widget/src/components/SelectHint-sfc.css +1 -0
  21. package/es/open-code-widget/src/components/SelectHint.vue.d.ts +2 -0
  22. package/es/open-code-widget/src/components/SelectHint.vue.js +46 -0
  23. package/es/open-code-widget/src/components/SelectedBubbles-sfc.css +1 -0
  24. package/es/open-code-widget/src/components/SelectedBubbles.vue.d.ts +2 -0
  25. package/es/open-code-widget/src/components/SelectedBubbles.vue.js +84 -0
  26. package/es/open-code-widget/src/components/SelectedNodes-sfc.css +1 -0
  27. package/es/open-code-widget/src/components/SelectedNodes.vue.d.ts +2 -0
  28. package/es/open-code-widget/src/components/SelectedNodes.vue.js +103 -0
  29. package/es/open-code-widget/src/components/SessionList-sfc.css +1 -0
  30. package/es/open-code-widget/src/components/SessionList.vue.d.ts +12 -0
  31. package/es/open-code-widget/src/components/SessionList.vue.js +209 -0
  32. package/es/open-code-widget/src/components/Trigger-sfc.css +1 -0
  33. package/es/open-code-widget/src/components/Trigger.vue.d.ts +12 -0
  34. package/es/open-code-widget/src/components/Trigger.vue.js +66 -0
  35. package/es/open-code-widget/src/context.d.ts +42 -0
  36. package/es/open-code-widget/src/context.js +16 -0
  37. package/es/open-code-widget/src/index-sfc.css +1 -0
  38. package/es/open-code-widget/src/index.vue.d.ts +83 -0
  39. package/es/open-code-widget/src/index.vue.js +464 -0
  40. package/es/open-code-widget/src/types.d.ts +74 -0
  41. package/es/open-code-widget/src/types.js +0 -0
  42. package/es/open-code-widget/style/index-pure.d.ts +0 -0
  43. package/es/open-code-widget/style/index-pure.js +0 -0
  44. package/es/open-code-widget/style/index.d.ts +0 -0
  45. package/es/open-code-widget/style/index.js +0 -0
  46. package/es/open-code-widget/style/less-pure.d.ts +0 -0
  47. package/es/open-code-widget/style/less-pure.js +0 -0
  48. package/es/open-code-widget/style/less.d.ts +0 -0
  49. package/es/open-code-widget/style/less.js +0 -0
  50. package/lib/@vite-plugin-opencode-assistant/components.cjs.js +1322 -0
  51. package/lib/@vite-plugin-opencode-assistant/components.es.js +1315 -0
  52. package/lib/components.css +9 -0
  53. package/lib/env.d.ts +10 -0
  54. package/lib/index.css +0 -0
  55. package/lib/index.d.ts +6 -0
  56. package/lib/index.js +50 -0
  57. package/lib/index.less +0 -0
  58. package/lib/open-code-widget/composables/use-inspector.d.ts +52 -0
  59. package/lib/open-code-widget/composables/use-inspector.js +207 -0
  60. package/lib/open-code-widget/composables/use-selection.d.ts +19 -0
  61. package/lib/open-code-widget/composables/use-selection.js +161 -0
  62. package/lib/open-code-widget/composables/use-session.d.ts +16 -0
  63. package/lib/open-code-widget/composables/use-session.js +87 -0
  64. package/lib/open-code-widget/composables/use-widget.d.ts +24 -0
  65. package/lib/open-code-widget/composables/use-widget.js +63 -0
  66. package/lib/open-code-widget/index.d.ts +3 -0
  67. package/lib/open-code-widget/index.js +36 -0
  68. package/lib/open-code-widget/src/components/Frame-sfc.css +1 -0
  69. package/lib/open-code-widget/src/components/Frame.vue.d.ts +16 -0
  70. package/lib/open-code-widget/src/components/Frame.vue.js +139 -0
  71. package/lib/open-code-widget/src/components/Header-sfc.css +1 -0
  72. package/lib/open-code-widget/src/components/Header.vue.d.ts +16 -0
  73. package/lib/open-code-widget/src/components/Header.vue.js +159 -0
  74. package/lib/open-code-widget/src/components/SelectHint-sfc.css +1 -0
  75. package/lib/open-code-widget/src/components/SelectHint.vue.d.ts +2 -0
  76. package/lib/open-code-widget/src/components/SelectHint.vue.js +65 -0
  77. package/lib/open-code-widget/src/components/SelectedBubbles-sfc.css +1 -0
  78. package/lib/open-code-widget/src/components/SelectedBubbles.vue.d.ts +2 -0
  79. package/lib/open-code-widget/src/components/SelectedBubbles.vue.js +103 -0
  80. package/lib/open-code-widget/src/components/SelectedNodes-sfc.css +1 -0
  81. package/lib/open-code-widget/src/components/SelectedNodes.vue.d.ts +2 -0
  82. package/lib/open-code-widget/src/components/SelectedNodes.vue.js +122 -0
  83. package/lib/open-code-widget/src/components/SessionList-sfc.css +1 -0
  84. package/lib/open-code-widget/src/components/SessionList.vue.d.ts +12 -0
  85. package/lib/open-code-widget/src/components/SessionList.vue.js +228 -0
  86. package/lib/open-code-widget/src/components/Trigger-sfc.css +1 -0
  87. package/lib/open-code-widget/src/components/Trigger.vue.d.ts +12 -0
  88. package/lib/open-code-widget/src/components/Trigger.vue.js +85 -0
  89. package/lib/open-code-widget/src/context.d.ts +42 -0
  90. package/lib/open-code-widget/src/context.js +35 -0
  91. package/lib/open-code-widget/src/index-sfc.css +1 -0
  92. package/lib/open-code-widget/src/index.vue.d.ts +83 -0
  93. package/lib/open-code-widget/src/index.vue.js +491 -0
  94. package/lib/open-code-widget/src/types.d.ts +74 -0
  95. package/lib/open-code-widget/src/types.js +15 -0
  96. package/lib/open-code-widget/style/index-pure.d.ts +0 -0
  97. package/lib/open-code-widget/style/index-pure.js +0 -0
  98. package/lib/open-code-widget/style/index.d.ts +0 -0
  99. package/lib/open-code-widget/style/index.js +0 -0
  100. package/lib/open-code-widget/style/less-pure.d.ts +0 -0
  101. package/lib/open-code-widget/style/less-pure.js +0 -0
  102. package/lib/open-code-widget/style/less.d.ts +0 -0
  103. package/lib/open-code-widget/style/less.js +0 -0
  104. package/lib/web-types.json +1 -0
  105. package/package.json +46 -0
@@ -0,0 +1,120 @@
1
+ import "./Frame-sfc.css";
2
+ import { defineComponent as _defineComponent } from "vue";
3
+ import { useOpenCodeWidgetContext } from "../context";
4
+ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
5
+ __name: "Frame",
6
+ setup(__props, { expose: __expose }) {
7
+ __expose();
8
+ const {
9
+ loading,
10
+ showEmptyState,
11
+ iframeSource: iframeSrc,
12
+ emptyStateText,
13
+ emptyStateActionText,
14
+ handleEmptyAction
15
+ } = useOpenCodeWidgetContext();
16
+ const __returned__ = { loading, showEmptyState, iframeSrc, emptyStateText, emptyStateActionText, handleEmptyAction };
17
+ Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
18
+ return __returned__;
19
+ }
20
+ });
21
+ import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue";
22
+ const _hoisted_1 = { class: "opencode-iframe-container" };
23
+ const _hoisted_2 = { class: "opencode-empty-state-text" };
24
+ const _hoisted_3 = ["src"];
25
+ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
26
+ return _openBlock(), _createElementBlock("div", _hoisted_1, [
27
+ _createElementVNode(
28
+ "div",
29
+ {
30
+ class: _normalizeClass(["opencode-empty-state-overlay", { visible: $setup.showEmptyState }])
31
+ },
32
+ [
33
+ _renderSlot(_ctx.$slots, "empty-state", {}, () => [
34
+ _cache[1] || (_cache[1] = _createElementVNode(
35
+ "div",
36
+ { class: "opencode-empty-state-icon" },
37
+ [
38
+ _createElementVNode("svg", {
39
+ viewBox: "0 0 24 24",
40
+ width: "48",
41
+ height: "48",
42
+ fill: "none",
43
+ stroke: "currentColor",
44
+ "stroke-width": "1.5",
45
+ "aria-hidden": "true"
46
+ }, [
47
+ _createElementVNode("path", {
48
+ "stroke-linecap": "round",
49
+ "stroke-linejoin": "round",
50
+ d: "M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 0 1-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"
51
+ })
52
+ ])
53
+ ],
54
+ -1
55
+ /* CACHED */
56
+ )),
57
+ _createElementVNode(
58
+ "div",
59
+ _hoisted_2,
60
+ _toDisplayString($setup.emptyStateText),
61
+ 1
62
+ /* TEXT */
63
+ ),
64
+ _createElementVNode(
65
+ "button",
66
+ {
67
+ class: "opencode-empty-state-btn",
68
+ type: "button",
69
+ onClick: _cache[0] || (_cache[0] = (...args) => $setup.handleEmptyAction && $setup.handleEmptyAction(...args))
70
+ },
71
+ _toDisplayString($setup.emptyStateActionText),
72
+ 1
73
+ /* TEXT */
74
+ )
75
+ ])
76
+ ],
77
+ 2
78
+ /* CLASS */
79
+ ),
80
+ _createElementVNode(
81
+ "div",
82
+ {
83
+ class: _normalizeClass(["opencode-loading-overlay", { visible: $setup.loading }])
84
+ },
85
+ [
86
+ _renderSlot(_ctx.$slots, "loading", {}, () => [
87
+ _cache[2] || (_cache[2] = _createElementVNode(
88
+ "div",
89
+ { class: "opencode-loading-spinner" },
90
+ null,
91
+ -1
92
+ /* CACHED */
93
+ )),
94
+ _cache[3] || (_cache[3] = _createElementVNode(
95
+ "div",
96
+ { class: "opencode-loading-text" },
97
+ "\u52A0\u8F7D\u4E2D...",
98
+ -1
99
+ /* CACHED */
100
+ ))
101
+ ])
102
+ ],
103
+ 2
104
+ /* CLASS */
105
+ ),
106
+ _renderSlot(_ctx.$slots, "content", {}, () => [
107
+ _createElementVNode("iframe", {
108
+ class: "opencode-iframe",
109
+ src: $setup.iframeSrc,
110
+ allow: "clipboard-write; clipboard-read",
111
+ referrerpolicy: "origin"
112
+ }, null, 8, _hoisted_3)
113
+ ])
114
+ ]);
115
+ }
116
+ __vue_sfc__.render = __vue_render__;
117
+ var Frame_vue_default = __vue_sfc__;
118
+ export {
119
+ Frame_vue_default as default
120
+ };
@@ -0,0 +1 @@
1
+ .opencode-chat-header{position:relative;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 12px;height:40px;background:var(--oc-bg-secondary);border-bottom:1px solid var(--oc-border-primary);z-index:5}.opencode-chat-header-left{display:flex;align-items:center;gap:4px}.opencode-chat-header-title{font-size:14px;font-weight:600;color:var(--oc-text-primary);position:absolute;left:50%;transform:translate(-50%)}.opencode-chat-header-actions{display:flex;gap:4px}.opencode-header-btn{width:28px;height:28px;border-radius:6px;border:none;background:transparent;color:var(--oc-text-placeholder);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.opencode-header-btn:hover{background:var(--oc-bg-tertiary);color:var(--oc-text-primary)}.opencode-header-btn.close:hover{background:var(--oc-danger);color:#fff}.opencode-header-btn.select-btn.active{background:var(--oc-primary);color:#fff}
@@ -0,0 +1,16 @@
1
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
2
+ type __VLS_Slots = {} & {
3
+ 'session-toggle-icon'?: (props: typeof __VLS_1) => any;
4
+ } & {
5
+ 'select-icon'?: (props: typeof __VLS_3) => any;
6
+ } & {
7
+ 'close-icon'?: (props: typeof __VLS_5) => any;
8
+ };
9
+ 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
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
11
+ export default _default;
12
+ type __VLS_WithSlots<T, S> = T & {
13
+ new (): {
14
+ $slots: S;
15
+ };
16
+ };
@@ -0,0 +1,140 @@
1
+ import "./Header-sfc.css";
2
+ import { defineComponent as _defineComponent } from "vue";
3
+ import { useOpenCodeWidgetContext } from "../context";
4
+ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
5
+ __name: "Header",
6
+ setup(__props, { expose: __expose }) {
7
+ __expose();
8
+ const {
9
+ title,
10
+ sessionListTitle,
11
+ sessionListCollapsed,
12
+ selectMode,
13
+ selectEnabled,
14
+ handleToggleSessionList,
15
+ handleToggleSelectMode,
16
+ handleClose
17
+ } = useOpenCodeWidgetContext();
18
+ const __returned__ = { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, handleToggleSessionList, handleToggleSelectMode, handleClose };
19
+ Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
20
+ return __returned__;
21
+ }
22
+ });
23
+ import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue";
24
+ const _hoisted_1 = { class: "opencode-chat-header" };
25
+ const _hoisted_2 = { class: "opencode-chat-header-left" };
26
+ const _hoisted_3 = ["title", "aria-label", "aria-expanded"];
27
+ const _hoisted_4 = ["aria-pressed", "disabled"];
28
+ const _hoisted_5 = { class: "opencode-chat-header-title" };
29
+ const _hoisted_6 = { class: "opencode-chat-header-actions" };
30
+ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
31
+ return _openBlock(), _createElementBlock("div", _hoisted_1, [
32
+ _createElementVNode("div", _hoisted_2, [
33
+ _createElementVNode("button", {
34
+ class: "opencode-header-btn session-toggle",
35
+ type: "button",
36
+ title: $setup.sessionListTitle,
37
+ "aria-label": $setup.sessionListTitle,
38
+ "aria-expanded": !$setup.sessionListCollapsed,
39
+ onClick: _cache[0] || (_cache[0] = (...args) => $setup.handleToggleSessionList && $setup.handleToggleSessionList(...args))
40
+ }, [
41
+ _renderSlot(_ctx.$slots, "session-toggle-icon", {}, () => [
42
+ _cache[3] || (_cache[3] = _createElementVNode(
43
+ "svg",
44
+ {
45
+ viewBox: "0 0 24 24",
46
+ width: "16",
47
+ height: "16",
48
+ fill: "none",
49
+ stroke: "currentColor",
50
+ "stroke-width": "2",
51
+ "aria-hidden": "true"
52
+ },
53
+ [
54
+ _createElementVNode("path", {
55
+ d: "M4 6h16M4 12h16M4 18h16",
56
+ "stroke-linecap": "round"
57
+ })
58
+ ],
59
+ -1
60
+ /* CACHED */
61
+ ))
62
+ ])
63
+ ], 8, _hoisted_3),
64
+ _createElementVNode("button", {
65
+ class: _normalizeClass(["opencode-header-btn select-btn", { active: $setup.selectMode }]),
66
+ type: "button",
67
+ title: "\u9009\u62E9\u9875\u9762\u5143\u7D20 (Ctrl+P)",
68
+ "aria-label": "\u9009\u62E9\u9875\u9762\u5143\u7D20",
69
+ "aria-pressed": $setup.selectMode,
70
+ disabled: !$setup.selectEnabled,
71
+ onClick: _cache[1] || (_cache[1] = (...args) => $setup.handleToggleSelectMode && $setup.handleToggleSelectMode(...args))
72
+ }, [
73
+ _renderSlot(_ctx.$slots, "select-icon", {}, () => [
74
+ _cache[4] || (_cache[4] = _createElementVNode(
75
+ "svg",
76
+ {
77
+ viewBox: "0 0 1024 1024",
78
+ width: "16",
79
+ height: "16",
80
+ "aria-hidden": "true"
81
+ },
82
+ [
83
+ _createElementVNode("path", {
84
+ fill: "currentColor",
85
+ d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"
86
+ }),
87
+ _createElementVNode("path", {
88
+ fill: "currentColor",
89
+ d: "M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32m0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32M96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32m576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32"
90
+ })
91
+ ],
92
+ -1
93
+ /* CACHED */
94
+ ))
95
+ ])
96
+ ], 10, _hoisted_4)
97
+ ]),
98
+ _createElementVNode(
99
+ "span",
100
+ _hoisted_5,
101
+ _toDisplayString($setup.title),
102
+ 1
103
+ /* TEXT */
104
+ ),
105
+ _createElementVNode("div", _hoisted_6, [
106
+ _createElementVNode("button", {
107
+ class: "opencode-header-btn close",
108
+ type: "button",
109
+ title: "\u5173\u95ED",
110
+ "aria-label": "\u5173\u95ED\u9762\u677F",
111
+ onClick: _cache[2] || (_cache[2] = (...args) => $setup.handleClose && $setup.handleClose(...args))
112
+ }, [
113
+ _renderSlot(_ctx.$slots, "close-icon", {}, () => [
114
+ _cache[5] || (_cache[5] = _createElementVNode(
115
+ "svg",
116
+ {
117
+ viewBox: "0 0 24 24",
118
+ width: "14",
119
+ height: "14",
120
+ fill: "none",
121
+ stroke: "currentColor",
122
+ "stroke-width": "2",
123
+ "aria-hidden": "true"
124
+ },
125
+ [
126
+ _createElementVNode("path", { d: "M18 6L6 18M6 6l12 12" })
127
+ ],
128
+ -1
129
+ /* CACHED */
130
+ ))
131
+ ])
132
+ ])
133
+ ])
134
+ ]);
135
+ }
136
+ __vue_sfc__.render = __vue_render__;
137
+ var Header_vue_default = __vue_sfc__;
138
+ export {
139
+ Header_vue_default as default
140
+ };
@@ -0,0 +1 @@
1
+ .opencode-select-mode-hint{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:10px 16px;background:var(--oc-danger);color:#fff;border-radius:8px;font-size:13px;box-shadow:var(--oc-shadow-danger);z-index:9999999;display:none;align-items:center;gap:12px}.opencode-select-mode-hint.visible{display:flex;animation:slideDown .3s ease}.opencode-hint-shortcut{padding:2px 6px;background:rgba(255,255,255,.2);border-radius:4px;font-size:12px}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,46 @@
1
+ import "./SelectHint-sfc.css";
2
+ import { defineComponent as _defineComponent } from "vue";
3
+ import { useOpenCodeWidgetContext } from "../context";
4
+ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
5
+ __name: "SelectHint",
6
+ setup(__props, { expose: __expose }) {
7
+ __expose();
8
+ const { selectMode: visible, selectShortcutLabel: shortcutLabel } = useOpenCodeWidgetContext();
9
+ const __returned__ = { visible, shortcutLabel };
10
+ Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
11
+ return __returned__;
12
+ }
13
+ });
14
+ import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue";
15
+ const _hoisted_1 = { class: "opencode-hint-shortcut" };
16
+ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
17
+ return _openBlock(), _createElementBlock(
18
+ "div",
19
+ {
20
+ class: _normalizeClass(["opencode-select-mode-hint", { visible: $setup.visible }])
21
+ },
22
+ [
23
+ _cache[0] || (_cache[0] = _createElementVNode(
24
+ "span",
25
+ null,
26
+ "\u{1F3AF} \u9009\u62E9\u6A21\u5F0F\u5DF2\u5F00\u542F - \u70B9\u51FB\u5143\u7D20\u8FDB\u884C\u9009\u62E9",
27
+ -1
28
+ /* CACHED */
29
+ )),
30
+ _createElementVNode(
31
+ "span",
32
+ _hoisted_1,
33
+ _toDisplayString($setup.shortcutLabel),
34
+ 1
35
+ /* TEXT */
36
+ )
37
+ ],
38
+ 2
39
+ /* CLASS */
40
+ );
41
+ }
42
+ __vue_sfc__.render = __vue_render__;
43
+ var SelectHint_vue_default = __vue_sfc__;
44
+ export {
45
+ SelectHint_vue_default as default
46
+ };
@@ -0,0 +1 @@
1
+ .opencode-selected-bubbles{position:absolute;display:none;flex-direction:column;gap:6px;max-width:220px;max-height:300px;overflow-y:auto}.opencode-selected-bubbles.visible{display:flex}.opencode-selected-bubble{display:flex;flex-direction:column;gap:2px;padding:8px 24px 8px 10px;background:var(--oc-bg-main);border:1px solid var(--oc-border-primary);border-radius:8px;font-size:12px;box-shadow:var(--oc-shadow-sm);position:relative;cursor:pointer;transition:all .2s}.opencode-selected-bubble:hover{border-color:var(--oc-primary);box-shadow:var(--oc-shadow-primary)}.opencode-bubble-text{color:var(--oc-text-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.opencode-bubble-file{color:var(--oc-text-placeholder);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.opencode-bubble-remove{position:absolute;top:8px;right:6px;width:16px;height:16px;border-radius:50%;border:none;background:transparent;color:var(--oc-text-placeholder);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;transition:all .2s}.opencode-bubble-remove:hover{background:var(--oc-danger);color:#fff}.opencode-bubble-empty{padding:8px 12px;background:var(--oc-bg-main);border:1px dashed var(--oc-border-secondary);border-radius:8px;color:var(--oc-text-placeholder);font-size:12px;text-align:center}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,84 @@
1
+ import "./SelectedBubbles-sfc.css";
2
+ import { defineComponent as _defineComponent } from "vue";
3
+ import { useOpenCodeWidgetContext } from "../context";
4
+ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
5
+ __name: "SelectedBubbles",
6
+ setup(__props, { expose: __expose }) {
7
+ __expose();
8
+ const {
9
+ bubbleVisible: visible,
10
+ selectedElementItems: items,
11
+ handleClickSelectedNode,
12
+ handleRemoveSelectedNode
13
+ } = useOpenCodeWidgetContext();
14
+ const __returned__ = { visible, items, handleClickSelectedNode, handleRemoveSelectedNode };
15
+ Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
16
+ return __returned__;
17
+ }
18
+ });
19
+ import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass } from "vue";
20
+ const _hoisted_1 = {
21
+ key: 0,
22
+ class: "opencode-bubble-empty"
23
+ };
24
+ const _hoisted_2 = ["onClick"];
25
+ const _hoisted_3 = { class: "opencode-bubble-text" };
26
+ const _hoisted_4 = {
27
+ key: 0,
28
+ class: "opencode-bubble-file"
29
+ };
30
+ const _hoisted_5 = ["aria-label", "onClick"];
31
+ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
32
+ return _openBlock(), _createElementBlock(
33
+ "div",
34
+ {
35
+ class: _normalizeClass(["opencode-selected-bubbles", { visible: $setup.visible }]),
36
+ role: "list",
37
+ "aria-label": "\u5DF2\u9009\u5143\u7D20\u5217\u8868"
38
+ },
39
+ [
40
+ $setup.items.length === 0 ? (_openBlock(), _createElementBlock("div", _hoisted_1, "\u6682\u65E0\u9009\u4E2D\u5143\u7D20")) : (_openBlock(true), _createElementBlock(
41
+ _Fragment,
42
+ { key: 1 },
43
+ _renderList($setup.items, (item, index) => {
44
+ return _openBlock(), _createElementBlock("div", {
45
+ key: item.key,
46
+ class: "opencode-selected-bubble",
47
+ role: "listitem",
48
+ onClick: ($event) => $setup.handleClickSelectedNode(item)
49
+ }, [
50
+ _createElementVNode(
51
+ "span",
52
+ _hoisted_3,
53
+ _toDisplayString(item.description),
54
+ 1
55
+ /* TEXT */
56
+ ),
57
+ item.bubbleFileText ? (_openBlock(), _createElementBlock(
58
+ "span",
59
+ _hoisted_4,
60
+ _toDisplayString(item.bubbleFileText),
61
+ 1
62
+ /* TEXT */
63
+ )) : _createCommentVNode("v-if", true),
64
+ _createElementVNode("button", {
65
+ class: "opencode-bubble-remove",
66
+ type: "button",
67
+ "aria-label": `\u79FB\u9664\u5143\u7D20: ${item.description}`,
68
+ onClick: _withModifiers(($event) => $setup.handleRemoveSelectedNode({ item, index, source: "bubble" }), ["stop"])
69
+ }, " \xD7 ", 8, _hoisted_5)
70
+ ], 8, _hoisted_2);
71
+ }),
72
+ 128
73
+ /* KEYED_FRAGMENT */
74
+ ))
75
+ ],
76
+ 2
77
+ /* CLASS */
78
+ );
79
+ }
80
+ __vue_sfc__.render = __vue_render__;
81
+ var SelectedBubbles_vue_default = __vue_sfc__;
82
+ export {
83
+ SelectedBubbles_vue_default as default
84
+ };
@@ -0,0 +1 @@
1
+ .opencode-right-toolbar{width:140px;background:var(--oc-bg-secondary);border-left:1px solid var(--oc-border-primary);display:flex;flex-direction:column;flex-shrink:0;transition:width .2s ease;overflow:hidden}.opencode-right-toolbar.collapsed{width:0;overflow:hidden}.opencode-right-toolbar.collapsed .opencode-selected-nodes-header,.opencode-right-toolbar.collapsed .opencode-selected-nodes,.opencode-right-toolbar.collapsed .opencode-clear-all-btn{display:none}.opencode-selected-nodes-header{padding:12px 8px 8px;border-bottom:1px solid var(--oc-border-primary)}.opencode-selected-nodes-title{font-size:14px;font-weight:600;color:var(--oc-text-primary);margin-bottom:4px}.opencode-selected-nodes-desc{font-size:11px;color:var(--oc-text-placeholder);line-height:1.4}.opencode-selected-nodes{flex:1;display:flex;flex-direction:column;padding:8px;gap:6px;overflow-y:auto;overflow-x:hidden}.opencode-selected-nodes:empty:before{content:"\6682\65e0\9009\4e2d\5143\7d20";color:var(--oc-text-placeholder);font-size:12px;text-align:center;padding:20px 10px}.opencode-selected-node{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--oc-bg-main);border:1px solid var(--oc-border-primary);border-radius:6px;font-size:12px;transition:all .2s}.opencode-selected-node:hover{border-color:var(--oc-primary);box-shadow:var(--oc-shadow-primary)}.opencode-node-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.opencode-node-text{color:var(--oc-text-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.opencode-node-file{color:var(--oc-text-placeholder);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.opencode-node-remove{width:18px;height:18px;border-radius:4px;border:none;background:transparent;color:var(--oc-text-placeholder);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .2s;flex-shrink:0}.opencode-node-remove:hover{background:var(--oc-danger);color:#fff}.opencode-clear-all-btn{width:calc(100% - 16px);margin:8px;padding:8px 12px;border-radius:6px;border:none;background:var(--oc-danger);color:#fff;font-size:12px;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px;transition:all .2s}.opencode-clear-all-btn:hover{background:var(--oc-danger-hover);transform:scale(1.02)}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,103 @@
1
+ import "./SelectedNodes-sfc.css";
2
+ import { defineComponent as _defineComponent } from "vue";
3
+ import { useOpenCodeWidgetContext } from "../context";
4
+ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
5
+ __name: "SelectedNodes",
6
+ setup(__props, { expose: __expose }) {
7
+ __expose();
8
+ const {
9
+ selectedElementItems: items,
10
+ showClearAll,
11
+ handleClickSelectedNode,
12
+ handleRemoveSelectedNode,
13
+ handleClearSelectedNodes
14
+ } = useOpenCodeWidgetContext();
15
+ const __returned__ = { items, showClearAll, handleClickSelectedNode, handleRemoveSelectedNode, handleClearSelectedNodes };
16
+ Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
17
+ return __returned__;
18
+ }
19
+ });
20
+ import { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from "vue";
21
+ const _hoisted_1 = {
22
+ class: "opencode-selected-nodes",
23
+ role: "list",
24
+ "aria-label": "\u5DF2\u9009\u5143\u7D20\u5217\u8868"
25
+ };
26
+ const _hoisted_2 = ["onClick"];
27
+ const _hoisted_3 = { class: "opencode-node-content" };
28
+ const _hoisted_4 = { class: "opencode-node-text" };
29
+ const _hoisted_5 = { class: "opencode-node-file" };
30
+ const _hoisted_6 = ["aria-label", "onClick"];
31
+ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
32
+ return _openBlock(), _createElementBlock(
33
+ "div",
34
+ {
35
+ class: _normalizeClass(["opencode-right-toolbar", { collapsed: $setup.items.length === 0 }])
36
+ },
37
+ [
38
+ _cache[1] || (_cache[1] = _createElementVNode(
39
+ "div",
40
+ { class: "opencode-selected-nodes-header" },
41
+ [
42
+ _createElementVNode("div", { class: "opencode-selected-nodes-title" }, "\u5DF2\u9009\u8282\u70B9"),
43
+ _createElementVNode("div", { class: "opencode-selected-nodes-desc" }, "\u9009\u4E2D\u7684\u8282\u70B9\u4F1A\u5728\u5BF9\u8BDD\u65F6\u4E00\u8D77\u53D1\u9001\u7ED9\u52A9\u624B")
44
+ ],
45
+ -1
46
+ /* CACHED */
47
+ )),
48
+ _createElementVNode("div", _hoisted_1, [
49
+ (_openBlock(true), _createElementBlock(
50
+ _Fragment,
51
+ null,
52
+ _renderList($setup.items, (item, index) => {
53
+ return _openBlock(), _createElementBlock("div", {
54
+ key: item.key,
55
+ class: "opencode-selected-node",
56
+ role: "listitem",
57
+ onClick: ($event) => $setup.handleClickSelectedNode(item)
58
+ }, [
59
+ _createElementVNode("div", _hoisted_3, [
60
+ _createElementVNode(
61
+ "span",
62
+ _hoisted_4,
63
+ _toDisplayString(item.description),
64
+ 1
65
+ /* TEXT */
66
+ ),
67
+ _createElementVNode(
68
+ "span",
69
+ _hoisted_5,
70
+ _toDisplayString(item.panelFileText),
71
+ 1
72
+ /* TEXT */
73
+ )
74
+ ]),
75
+ _createElementVNode("button", {
76
+ class: "opencode-node-remove",
77
+ type: "button",
78
+ "aria-label": `\u79FB\u9664\u5143\u7D20: ${item.description}`,
79
+ onClick: _withModifiers(($event) => $setup.handleRemoveSelectedNode({ item, index, source: "panel" }), ["stop"])
80
+ }, " \xD7 ", 8, _hoisted_6)
81
+ ], 8, _hoisted_2);
82
+ }),
83
+ 128
84
+ /* KEYED_FRAGMENT */
85
+ ))
86
+ ]),
87
+ $setup.showClearAll && $setup.items.length > 0 ? (_openBlock(), _createElementBlock("button", {
88
+ key: 0,
89
+ class: "opencode-clear-all-btn",
90
+ type: "button",
91
+ "aria-label": "\u6E05\u7A7A\u6240\u6709\u5DF2\u9009\u8282\u70B9",
92
+ onClick: _cache[0] || (_cache[0] = (...args) => $setup.handleClearSelectedNodes && $setup.handleClearSelectedNodes(...args))
93
+ }, " \u4E00\u952E\u6E05\u7A7A ")) : _createCommentVNode("v-if", true)
94
+ ],
95
+ 2
96
+ /* CLASS */
97
+ );
98
+ }
99
+ __vue_sfc__.render = __vue_render__;
100
+ var SelectedNodes_vue_default = __vue_sfc__;
101
+ export {
102
+ SelectedNodes_vue_default as default
103
+ };
@@ -0,0 +1 @@
1
+ .opencode-session-list{width:240px;background:var(--oc-bg-secondary);border-right:1px solid var(--oc-border-primary);display:flex;flex-direction:column;flex-shrink:0;transition:width .2s ease}.opencode-session-list.collapsed{width:0;overflow:hidden}.opencode-session-list.collapsed .opencode-session-list-header,.opencode-session-list.collapsed .opencode-session-list-content{display:none}.opencode-session-list-header{padding:16px;border-bottom:1px solid var(--oc-border-primary);display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:14px;color:var(--oc-text-primary)}.opencode-new-session-btn{width:28px;height:28px;border-radius:6px;border:none;background:var(--oc-primary);color:#fff;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.opencode-new-session-btn:hover{background:var(--oc-primary-hover);transform:scale(1.05)}.opencode-session-list-content{flex:1;overflow-y:auto;padding:8px;position:relative}.opencode-session-list-loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--oc-overlay-bg);display:flex;align-items:center;justify-content:center;z-index:10;border-radius:8px}.opencode-loading-spinner.small{width:24px;height:24px;border-width:2px}.opencode-session-item{padding:12px;border-radius:8px;cursor:pointer;transition:all .2s;margin-bottom:4px;color:var(--oc-text-primary)}.opencode-session-item:hover{background:var(--oc-bg-tertiary)}.opencode-session-item.active{background:var(--oc-primary);color:#fff}.opencode-session-title{font-size:14px;font-weight:500;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.opencode-session-meta{font-size:12px;opacity:.6}.opencode-session-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.opencode-session-delete-btn{width:20px;height:20px;border-radius:4px;border:none;background:transparent;color:var(--oc-text-placeholder);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;opacity:0;flex-shrink:0}.opencode-session-item:hover .opencode-session-delete-btn{opacity:1}.opencode-session-delete-btn:hover{background:var(--oc-danger);color:#fff}.opencode-session-item.active .opencode-session-delete-btn{color:rgba(255,255,255,.7)}.opencode-session-item.active .opencode-session-delete-btn:hover{background:rgba(255,255,255,.2);color:#fff}.opencode-session-header-skeleton{padding:16px;border-bottom:1px solid var(--oc-border-primary);display:none;justify-content:space-between;align-items:center}.opencode-session-header-skeleton.visible{display:flex}.opencode-skeleton-header-title{height:18px;width:80px;background:var(--oc-skeleton-gradient);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:4px}.opencode-skeleton-header-btn{width:28px;height:28px;background:var(--oc-skeleton-gradient);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:6px}.opencode-session-skeleton{flex:1;overflow-y:auto;padding:8px;display:none}.opencode-session-skeleton.visible{display:block}.opencode-skeleton-item{padding:12px;border-radius:8px;margin-bottom:4px;background:var(--oc-skeleton-bg)}.opencode-skeleton-title{height:16px;background:var(--oc-skeleton-gradient);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:4px;margin-bottom:8px;width:70%}.opencode-skeleton-meta{height:12px;background:var(--oc-skeleton-gradient);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:4px;width:50%}.opencode-session-empty{padding:32px 16px;text-align:center;color:var(--oc-text-placeholder);font-size:13px}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}
@@ -0,0 +1,12 @@
1
+ declare var __VLS_1: {};
2
+ type __VLS_Slots = {} & {
3
+ empty?: (props: typeof __VLS_1) => any;
4
+ };
5
+ 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>;
6
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
7
+ export default _default;
8
+ type __VLS_WithSlots<T, S> = T & {
9
+ new (): {
10
+ $slots: S;
11
+ };
12
+ };