@vite-plugin-opencode-assistant/components 1.0.13 → 1.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/es/index.d.ts +1 -1
  2. package/es/index.js +1 -1
  3. package/es/open-code-widget/composables/use-inspector.js +1 -4
  4. package/es/open-code-widget/composables/use-selection.js +1 -6
  5. package/es/open-code-widget/src/components/Frame-sfc.css +1 -1
  6. package/es/open-code-widget/src/components/Frame.vue.d.ts +4 -2
  7. package/es/open-code-widget/src/components/Frame.vue.js +17 -3
  8. package/es/open-code-widget/src/components/SelectHint-sfc.css +1 -1
  9. package/es/open-code-widget/src/components/SessionList.vue.js +3 -1
  10. package/es/open-code-widget/src/context.d.ts +4 -1
  11. package/es/open-code-widget/src/index.vue.d.ts +34 -28
  12. package/es/open-code-widget/src/index.vue.js +24 -9
  13. package/es/open-code-widget/src/types.d.ts +3 -79
  14. package/lib/@vite-plugin-opencode-assistant/components.cjs.js +52 -30
  15. package/lib/@vite-plugin-opencode-assistant/components.es.js +51 -29
  16. package/lib/components.css +2 -2
  17. package/lib/index.d.ts +1 -1
  18. package/lib/index.js +1 -1
  19. package/lib/open-code-widget/composables/use-inspector.js +2 -5
  20. package/lib/open-code-widget/composables/use-selection.js +2 -7
  21. package/lib/open-code-widget/src/components/Frame-sfc.css +1 -1
  22. package/lib/open-code-widget/src/components/Frame.vue.d.ts +4 -2
  23. package/lib/open-code-widget/src/components/Frame.vue.js +17 -3
  24. package/lib/open-code-widget/src/components/SelectHint-sfc.css +1 -1
  25. package/lib/open-code-widget/src/components/SessionList.vue.js +3 -1
  26. package/lib/open-code-widget/src/context.d.ts +4 -1
  27. package/lib/open-code-widget/src/index.vue.d.ts +34 -28
  28. package/lib/open-code-widget/src/index.vue.js +24 -9
  29. package/lib/open-code-widget/src/types.d.ts +3 -79
  30. package/lib/web-types.json +1 -1
  31. 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.13";
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,5 +1,5 @@
1
1
  import OpenCodeWidget from "./open-code-widget";
2
- const version = "1.0.13";
2
+ const version = "1.0.14";
3
3
  function install(app, options) {
4
4
  const components = [
5
5
  OpenCodeWidget
@@ -1,8 +1,5 @@
1
1
  import { ref, watch, onMounted, onUnmounted } from "vue";
2
- function truncate(str, maxLength) {
3
- if (!str) return "";
4
- return str.length > maxLength ? str.substring(0, maxLength) + "..." : str;
5
- }
2
+ import { truncate } from "@vite-plugin-opencode-assistant/shared";
6
3
  function getDirectText(element) {
7
4
  let text = "";
8
5
  for (let i = 0; i < element.childNodes.length; i++) {
@@ -19,12 +19,7 @@ var __async = (__this, __arguments, generator) => {
19
19
  });
20
20
  };
21
21
  import { computed } from "vue";
22
- function truncate(value, maxLength) {
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
- content?: (props: typeof __VLS_5) => any;
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
- loading,
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, loading, showEmptyState, iframeSrc, emptyStateText, emptyStateActionText, handleEmptyAction, theme, resolvedTheme, iframeReady, sendMessageToIframe, syncIframeTheme, handleIframeMessage };
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.loading }])
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:14px 20px;background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;border-radius:12px;font-size:15px;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:2px 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)}}
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
- loading: Ref<boolean>;
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
- content?: (props: typeof __VLS_30) => any;
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("./types").OpenCodeSelectedElement[]) => any;
29
- "update:theme": (value: import("./types").OpenCodeWidgetTheme) => any;
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("./types").OpenCodeWidgetTheme) => any;
35
- "create-session": () => any;
36
- "select-session": (session: import("./types").OpenCodeWidgetSession) => any;
37
- "delete-session": (session: import("./types").OpenCodeWidgetSession) => any;
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("./types").OpenCodeSelectedElement[]) => any) | undefined;
48
- "onUpdate:theme"?: ((value: import("./types").OpenCodeWidgetTheme) => any) | undefined;
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("./types").OpenCodeWidgetTheme) => any) | undefined;
54
- "onCreate-session"?: (() => any) | undefined;
55
- "onSelect-session"?: ((session: import("./types").OpenCodeWidgetSession) => any) | undefined;
56
- "onDelete-session"?: ((session: import("./types").OpenCodeWidgetSession) => any) | undefined;
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
- title: string;
63
- loading: boolean;
66
+ frameLoading: boolean;
64
67
  showEmptyState: boolean;
68
+ showError: boolean;
65
69
  emptyStateText: string;
66
70
  emptyStateActionText: string;
67
- theme: import("./types").OpenCodeWidgetTheme;
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("./types").OpenCodeWidgetSession[];
81
+ sessions: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetSession[];
76
82
  open: boolean;
77
83
  hotkeyLabel: string;
78
- position: import("./types").OpenCodeWidgetPosition;
84
+ position: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetPosition;
79
85
  currentSessionId: string | null;
80
- selectedElements: import("./types").OpenCodeSelectedElement[];
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
- loading: { type: Boolean, required: false, default: false },
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
- loading: toRef(props, "loading"),
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: "2"
396
+ key: "3"
382
397
  } : void 0
383
398
  ]),
384
399
  1024
@@ -1,79 +1,3 @@
1
- export type OpenCodeWidgetPosition = "bottom-right" | "bottom-left" | "top-right" | "top-left";
2
- export type OpenCodeWidgetTheme = "light" | "dark" | "auto";
3
- export interface OpenCodeWidgetSession {
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";