@rtc-agent/component 0.2.9-rc.1 → 0.3.0-rc.1

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 (54) hide show
  1. package/dist/.generated/locales/en-US.d.ts +15 -0
  2. package/dist/.generated/locales/en-US.d.ts.map +1 -1
  3. package/dist/assets/index.browser-D4SG7v3Y.js +201 -0
  4. package/dist/assets/shared-worker-Bw4_Rekb.js +77502 -0
  5. package/dist/components/chat-layout/rtc-chat-layout.d.ts +12 -0
  6. package/dist/components/chat-layout/rtc-chat-layout.d.ts.map +1 -1
  7. package/dist/components/chat-layout/rtc-chat-layout.styles.d.ts.map +1 -1
  8. package/dist/components/content-area/rtc-error-message.d.ts +1 -2
  9. package/dist/components/content-area/rtc-error-message.d.ts.map +1 -1
  10. package/dist/components/content-area/rtc-user-message.d.ts +17 -1
  11. package/dist/components/content-area/rtc-user-message.d.ts.map +1 -1
  12. package/dist/components/content-area/rtc-user-message.styles.d.ts +3 -1
  13. package/dist/components/content-area/rtc-user-message.styles.d.ts.map +1 -1
  14. package/dist/components/file-preview/rtc-file-preview-area.d.ts +48 -0
  15. package/dist/components/file-preview/rtc-file-preview-area.d.ts.map +1 -0
  16. package/dist/components/file-preview/rtc-file-preview-area.styles.d.ts +2 -0
  17. package/dist/components/file-preview/rtc-file-preview-area.styles.d.ts.map +1 -0
  18. package/dist/components/file-preview/rtc-file-preview-modal.d.ts +108 -0
  19. package/dist/components/file-preview/rtc-file-preview-modal.d.ts.map +1 -0
  20. package/dist/components/file-preview/rtc-file-preview-modal.styles.d.ts +2 -0
  21. package/dist/components/file-preview/rtc-file-preview-modal.styles.d.ts.map +1 -0
  22. package/dist/components/file-preview/rtc-file-thumbnail.d.ts +81 -0
  23. package/dist/components/file-preview/rtc-file-thumbnail.d.ts.map +1 -0
  24. package/dist/components/file-preview/rtc-file-thumbnail.styles.d.ts +2 -0
  25. package/dist/components/file-preview/rtc-file-thumbnail.styles.d.ts.map +1 -0
  26. package/dist/components/input-area/rtc-input-area.d.ts +64 -2
  27. package/dist/components/input-area/rtc-input-area.d.ts.map +1 -1
  28. package/dist/components/input-area/rtc-input-area.styles.d.ts.map +1 -1
  29. package/dist/components/rtc-agent/rtc-agent.d.ts +11 -0
  30. package/dist/components/rtc-agent/rtc-agent.d.ts.map +1 -1
  31. package/dist/contexts/file-storage.d.ts +17 -0
  32. package/dist/contexts/file-storage.d.ts.map +1 -0
  33. package/dist/controllers/persistence.controller.d.ts +11 -0
  34. package/dist/controllers/persistence.controller.d.ts.map +1 -1
  35. package/dist/{en-US-DUdx4QEY.js → en-US-5v3M5mKE.js} +17 -2
  36. package/dist/{highlight-languages-BVzldaaL.js → highlight-languages-DNn7E0hV.js} +1 -1
  37. package/dist/icons/icons.d.ts +2 -0
  38. package/dist/icons/icons.d.ts.map +1 -1
  39. package/dist/icons/index.d.ts +1 -1
  40. package/dist/icons/index.d.ts.map +1 -1
  41. package/dist/{index-BOwm7U7f.js → index-B1wkXAVX.js} +34897 -30745
  42. package/dist/index.js +1 -1
  43. package/dist/index.umd.js +1761 -1012
  44. package/dist/stats.html +1 -1
  45. package/dist/utils/file-id.d.ts +23 -0
  46. package/dist/utils/file-id.d.ts.map +1 -0
  47. package/dist/utils/file-md5.d.ts +51 -0
  48. package/dist/utils/file-md5.d.ts.map +1 -0
  49. package/dist/utils/file-storage.d.ts +527 -0
  50. package/dist/utils/file-storage.d.ts.map +1 -0
  51. package/dist/worker-bridge.d.ts +186 -2
  52. package/dist/worker-bridge.d.ts.map +1 -1
  53. package/package.json +7 -5
  54. package/dist/assets/shared-worker-vIZKoWv_.js +0 -2667
@@ -26,6 +26,7 @@ import '../session-tree/rtc-session-tab-bar.js';
26
26
  import '../content-area/rtc-content-area.js';
27
27
  import '../notice-bar/rtc-notice-bar.js';
28
28
  import '../input-area/rtc-input-area.js';
29
+ import '../file-preview/rtc-file-preview-area.js';
29
30
  import type { MessageController } from '../../controllers/message.controller.js';
30
31
  import '../overlay/rtc-overlay-manager.js';
31
32
  import '../drawer/rtc-drawer.js';
@@ -64,6 +65,8 @@ export declare class RtcChatLayout extends LitElement {
64
65
  * (not in the set), the saved height is applied.
65
66
  */
66
67
  private _heightAppliedSessions;
68
+ /** File state per session: Map<sessionId, {files, uploadProgress, uploadStates}> */
69
+ private _fileStates;
67
70
  private _sessionCtx;
68
71
  private _tabCtx;
69
72
  connectedCallback(): void;
@@ -82,6 +85,14 @@ export declare class RtcChatLayout extends LitElement {
82
85
  private _boundOnClearActiveInput;
83
86
  /** Clear the active tab's input box */
84
87
  clearActiveInput(): void;
88
+ /** Handle file state change from input-area */
89
+ private _handleFilesChanged;
90
+ /** Handle file removal from preview-area */
91
+ private _handleFileRemove;
92
+ /** Handle file retry request from preview-area */
93
+ private _handleFileRetry;
94
+ /** Handle file preview request from preview-area */
95
+ private _handleFilePreview;
85
96
  /**
86
97
  * Begin dragging resize handle
87
98
  *
@@ -196,6 +207,7 @@ export declare class RtcChatLayout extends LitElement {
196
207
  * Fix 44: If closeSession fails, restore the tab and show error toast.
197
208
  */
198
209
  private _handleTabClose;
210
+ private _renderFilePreview;
199
211
  private _renderChatContent;
200
212
  render(): import("lit").TemplateResult<1>;
201
213
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rtc-chat-layout.d.ts","sourceRoot":"","sources":["../../../src/components/chat-layout/rtc-chat-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rtc-chat-layout.d.ts","sourceRoot":"","sources":["../../../src/components/chat-layout/rtc-chat-layout.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rtc-chat-layout.styles.d.ts","sourceRoot":"","sources":["../../../src/components/chat-layout/rtc-chat-layout.styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,yBAkIlB,CAAC"}
1
+ {"version":3,"file":"rtc-chat-layout.styles.d.ts","sourceRoot":"","sources":["../../../src/components/chat-layout/rtc-chat-layout.styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,yBAwIlB,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * RTC Error Message Component
3
3
  *
4
4
  * Renders an error feedback message with category-specific icon and color,
5
- * title, description, optional retry button, and collapsible raw error details.
5
+ * title, description, and collapsible raw error details.
6
6
  *
7
7
  * ## Layout model (timeline layout)
8
8
  *
@@ -56,7 +56,6 @@ export declare class RtcErrorMessage extends LitElement implements StatefulCompo
56
56
  */
57
57
  private _getCategoryLabel;
58
58
  private _toggleRawError;
59
- private _handleRetry;
60
59
  /**
61
60
  * Extract component state for preservation across virtualization.
62
61
  * Called by MessageVirtualScroll before destroying the element.
@@ -1 +1 @@
1
- {"version":3,"file":"rtc-error-message.d.ts","sourceRoot":"","sources":["../../../src/components/content-area/rtc-error-message.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAC,UAAU,EAAa,OAAO,EAAC,MAAM,KAAK,CAAC;AAOnD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,sBAAsB,CAAC;AAGlD,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,uCAAuC,CAAC;AA2C7E,qBAEa,eAAgB,SAAQ,UAAW,YAAW,iBAAiB;IACxE,MAAM,CAAC,MAAM,4BAuIX;IAIF,OAAO,CAAC,UAAU,CAMhB;IAEF;;;OAGG;IAEH,OAAO,EAAE,OAAO,CAA6G;IAE7H;;;OAGG;IAEH,OAAO,CAAC,iBAAiB,CAAS;IAElC;;OAEG;IACH,OAAO,KAAK,UAAU,GAMrB;IAED;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,YAAY;IAUpB;;;;;;OAMG;IACH,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAMnC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM9C,MAAM;CAuDT;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,mBAAmB,EAAE,eAAe,CAAC;KACxC;CACJ"}
1
+ {"version":3,"file":"rtc-error-message.d.ts","sourceRoot":"","sources":["../../../src/components/content-area/rtc-error-message.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAC,UAAU,EAAa,OAAO,EAAC,MAAM,KAAK,CAAC;AAOnD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,sBAAsB,CAAC;AAGlD,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,uCAAuC,CAAC;AA2C7E,qBAEa,eAAgB,SAAQ,UAAW,YAAW,iBAAiB;IACxE,MAAM,CAAC,MAAM,4BAqHX;IAIF,OAAO,CAAC,UAAU,CAMhB;IAEF;;;OAGG;IAEH,OAAO,EAAE,OAAO,CAA6G;IAE7H;;;OAGG;IAEH,OAAO,CAAC,iBAAiB,CAAS;IAElC;;OAEG;IACH,OAAO,KAAK,UAAU,GAMrB;IAED;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,eAAe;IAMvB;;;;;;OAMG;IACH,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAMnC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM9C,MAAM;CAkDT;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,mBAAmB,EAAE,eAAe,CAAC;KACxC;CACJ"}
@@ -6,7 +6,10 @@
6
6
  * Layout model:
7
7
  * .user-message-wrapper (sticky container)
8
8
  * ├── .user-message (bubble with max-height, overflow hidden)
9
- * │ ├── .user-message-text (text content)
9
+ * │ ├── .user-message-content (files + text, overflow detection target)
10
+ * │ │ ├── .file-preview-section (conditional, when files exist)
11
+ * │ │ │ └── <rtc-file-preview-area readonly>
12
+ * │ │ └── .user-message-text (text content)
10
13
  * │ ├── .show-more-btn (bottom-right, visible on hover when overflowing)
11
14
  * │ └── .more-btn (top-right, visible on hover)
12
15
  * └── <rtc-message-more-menu> (position:fixed, positioned via floating-ui)
@@ -35,6 +38,7 @@
35
38
  import { LitElement } from 'lit';
36
39
  import type { Message } from '../../types/index.js';
37
40
  import './rtc-message-more-menu.js';
41
+ import '../file-preview/rtc-file-preview-area.js';
38
42
  import type { StatefulComponent } from '../../utils/message-virtual-scroll.js';
39
43
  export declare class RtcUserMessage extends LitElement implements StatefulComponent {
40
44
  static styles: import("lit").CSSResult;
@@ -50,6 +54,7 @@ export declare class RtcUserMessage extends LitElement implements StatefulCompon
50
54
  private _moreMenuEl;
51
55
  private _resizeObserver?;
52
56
  private _textEl?;
57
+ private _contentEl?;
53
58
  private _cleanupPosition;
54
59
  /** Bound event handler for menu select (stored for clean removal). */
55
60
  private _boundOnMenuSelect;
@@ -82,6 +87,17 @@ export declare class RtcUserMessage extends LitElement implements StatefulCompon
82
87
  * Extract structured data of user_message type (if present)
83
88
  */
84
89
  private _getUserMessageData;
90
+ /**
91
+ * Safely extract file list from user message data.
92
+ * Filters out null/undefined/malformed entries to prevent render crashes.
93
+ */
94
+ private _extractFiles;
95
+ /**
96
+ * Handle file preview request from rtc-file-preview-area.
97
+ * Dispatches rtc-file-preview-requested event to bubble up to rtc-agent,
98
+ * which renders the global preview modal at window-container level.
99
+ */
100
+ private _handleFilePreview;
85
101
  private _handleShowMore;
86
102
  private _handleMoreClick;
87
103
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"rtc-user-message.d.ts","sourceRoot":"","sources":["../../../src/components/content-area/rtc-user-message.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAC,UAAU,EAAO,MAAM,KAAK,CAAC;AAarC,OAAO,KAAK,EAAC,OAAO,EAAqB,MAAM,sBAAsB,CAAC;AAGtE,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,uCAAuC,CAAC;AAI7E,qBAEa,cAAe,SAAQ,UAAW,YAAW,iBAAiB;IACvE,MAAM,CAAC,MAAM,0BAAU;IAIvB,OAAO,CAAC,UAAU,CAMhB;IAGF,OAAO,EAAE,OAAO,CAMd;IAEO,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAGvC,OAAO,CAAC,QAAQ,CAAC,CAAc;IAE/B;;OAEG;IACH,OAAO,CAAC,WAAW,CAA4B;IAE/C,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,gBAAgB,CAA6B;IAErD,sEAAsE;IACtE,OAAO,CAAC,kBAAkB,CAA0D;IAEpF,OAAO,CAAC,WAAW,CAMjB;IAEF,OAAO,CAAC,aAAa,CAKnB;IAEF,OAAO,CAAC,cAAc;IAQtB,iBAAiB;IASjB,YAAY;IAQZ,oBAAoB;IASpB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAYrC;;;;;;;OAOG;IACH,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAOnC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAsB9C,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,gBAAgB;IAWxB;;;OAGG;YACW,aAAa;IAiB3B;;OAEG;IACH,OAAO,CAAC,WAAW;YASL,iBAAiB;YASjB,eAAe;IAoB7B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;YACW,WAAW;IAezB;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,aAAa;IAYrB,MAAM;CAsCT;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,kBAAkB,EAAE,cAAc,CAAC;KACtC;CACJ"}
1
+ {"version":3,"file":"rtc-user-message.d.ts","sourceRoot":"","sources":["../../../src/components/content-area/rtc-user-message.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,EAAC,UAAU,EAAgB,MAAM,KAAK,CAAC;AAa9C,OAAO,KAAK,EAAC,OAAO,EAAqC,MAAM,sBAAsB,CAAC;AAGtF,OAAO,4BAA4B,CAAC;AACpC,OAAO,0CAA0C,CAAC;AAElD,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,uCAAuC,CAAC;AAI7E,qBAEa,cAAe,SAAQ,UAAW,YAAW,iBAAiB;IACvE,MAAM,CAAC,MAAM,0BAAU;IAIvB,OAAO,CAAC,UAAU,CAMhB;IAGF,OAAO,EAAE,OAAO,CAMd;IAEO,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAGvC,OAAO,CAAC,QAAQ,CAAC,CAAc;IAE/B;;OAEG;IACH,OAAO,CAAC,WAAW,CAA4B;IAE/C,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAc;IACjC,OAAO,CAAC,gBAAgB,CAA6B;IAErD,sEAAsE;IACtE,OAAO,CAAC,kBAAkB,CAA0D;IAEpF,OAAO,CAAC,WAAW,CAMjB;IAEF,OAAO,CAAC,aAAa,CAKnB;IAEF,OAAO,CAAC,cAAc;IAQtB,iBAAiB;IASjB,YAAY;IAYZ,oBAAoB;IASpB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAYrC;;;;;;;OAOG;IACH,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAOnC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAsB9C,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IASrB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,gBAAgB;IAWxB;;;OAGG;YACW,aAAa;IAiB3B;;OAEG;IACH,OAAO,CAAC,WAAW;YASL,iBAAiB;YASjB,eAAe;IAoB7B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;YACW,WAAW;IAezB;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,aAAa;IAYrB,MAAM;CAkDT;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,kBAAkB,EAAE,cAAc,CAAC;KACtC;CACJ"}
@@ -4,7 +4,9 @@
4
4
  * Layout model:
5
5
  * .user-message-wrapper — sticky container, full-width
6
6
  * └── .user-message — bubble with max-height, overflow hidden
7
- * └── .user-message-text — text content
7
+ * ├── .user-message-content — flex column (files + text)
8
+ * │ ├── .file-preview-section — conditional file preview area
9
+ * │ └── .user-message-text — text content
8
10
  *
9
11
  * The ::after pseudo-element creates a gradient fade mask when text overflows
10
12
  * and the bubble is not expanded. It only appears when [data-overflow] is set
@@ -1 +1 @@
1
- {"version":3,"file":"rtc-user-message.styles.d.ts","sourceRoot":"","sources":["../../../src/components/content-area/rtc-user-message.styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,MAAM,yBAmMlB,CAAC"}
1
+ {"version":3,"file":"rtc-user-message.styles.d.ts","sourceRoot":"","sources":["../../../src/components/content-area/rtc-user-message.styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,MAAM,yBA+MlB,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * RTC File Preview Area Component
3
+ *
4
+ * Horizontal scrolling container for file thumbnails.
5
+ * Renders rtc-file-thumbnail for each file attachment.
6
+ * Supports edit mode (with delete) and readonly mode (message display).
7
+ *
8
+ * @element rtc-file-preview-area
9
+ * @fires rtc-file-remove - File removed (edit mode only)
10
+ * @fires rtc-file-preview - File preview requested
11
+ * @csspart preview-area - The scrolling container
12
+ */
13
+ import { LitElement } from 'lit';
14
+ import type { FileAttachment } from '../../types/index.js';
15
+ import './rtc-file-thumbnail.js';
16
+ export declare class RtcFilePreviewArea extends LitElement {
17
+ static styles: import("lit").CSSResult;
18
+ /** File attachments to display */
19
+ files: FileAttachment[];
20
+ /** Readonly mode (no delete buttons) */
21
+ readonly: boolean;
22
+ /** Upload task progress map (taskId -> progress 0-100) */
23
+ uploadProgress: Map<string, number>;
24
+ /** Upload task loading state map (taskId -> state) */
25
+ uploadStates: Map<string, string>;
26
+ private _resizeObserver?;
27
+ connectedCallback(): void;
28
+ disconnectedCallback(): void;
29
+ updated(changed: Map<string | number | symbol, unknown>): void;
30
+ private _updateEmptyState;
31
+ /** Get filename from FileAttachment.extra */
32
+ private _getFilename;
33
+ /** Get filesize from FileAttachment.extra */
34
+ private _getFilesize;
35
+ /** Handle thumbnail click */
36
+ private _handleThumbnailClick;
37
+ /** Handle thumbnail remove */
38
+ private _handleThumbnailRemove;
39
+ /** Handle thumbnail retry */
40
+ private _handleThumbnailRetry;
41
+ render(): import("lit").TemplateResult<1>;
42
+ }
43
+ declare global {
44
+ interface HTMLElementTagNameMap {
45
+ 'rtc-file-preview-area': RtcFilePreviewArea;
46
+ }
47
+ }
48
+ //# sourceMappingURL=rtc-file-preview-area.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtc-file-preview-area.d.ts","sourceRoot":"","sources":["../../../src/components/file-preview/rtc-file-preview-area.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAC,UAAU,EAAO,MAAM,KAAK,CAAC;AAIrC,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,yBAAyB,CAAC;AAEjC,qBAEa,kBAAmB,SAAQ,UAAU;IAChD,MAAM,CAAC,MAAM,0BAAU;IAEvB,kCAAkC;IAElC,KAAK,EAAE,cAAc,EAAE,CAAM;IAE7B,wCAAwC;IAExC,QAAQ,EAAE,OAAO,CAAS;IAE1B,0DAA0D;IAE1D,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAEhD,sDAAsD;IAEtD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAG9C,OAAO,CAAC,eAAe,CAAC,CAAiB;IAEzC,iBAAiB,IAAI,IAAI;IAkBzB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM9D,OAAO,CAAC,iBAAiB;IAQzB,6CAA6C;IAC7C,OAAO,CAAC,YAAY;IAIpB,6CAA6C;IAC7C,OAAO,CAAC,YAAY;IAIpB,6BAA6B;IAC7B,OAAO,CAAC,qBAAqB;IAU7B,8BAA8B;IAC9B,OAAO,CAAC,sBAAsB;IAU9B,6BAA6B;IAC7B,OAAO,CAAC,qBAAqB;IAW7B,MAAM;CAmCP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,uBAAuB,EAAE,kBAAkB,CAAC;KAC7C;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ //# sourceMappingURL=rtc-file-preview-area.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtc-file-preview-area.styles.d.ts","sourceRoot":"","sources":["../../../src/components/file-preview/rtc-file-preview-area.styles.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,MAAM,yBA+DlB,CAAC"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * RTC File Preview Modal Component
3
+ *
4
+ * Full-screen modal overlay for file preview (images and text).
5
+ * Uses teleport pattern: rendered inside parent's shadowRoot with position: fixed
6
+ * to cover the entire host window, without escaping component boundaries.
7
+ *
8
+ * Supports:
9
+ * - Image preview (object-fit: contain, URL.createObjectURL/revokeObjectURL)
10
+ * - Text preview (monospace, pre-wrap, truncation for large files)
11
+ * - Three close methods: ESC key, backdrop click, close button
12
+ * - Graceful degradation: fallback to getPresignedUrl() if download fails
13
+ * - Large file protection: >1MB text truncated to 1000 lines, >10MB rejected
14
+ *
15
+ * @element rtc-file-preview-modal
16
+ * @fires rtc-preview-close - Modal closed
17
+ * @csspart backdrop - The backdrop overlay
18
+ * @csspart content - The modal content container
19
+ * @csspart header - The modal header
20
+ * @csspart body - The modal body
21
+ */
22
+ import { LitElement, nothing, type PropertyValues } from 'lit';
23
+ import type { FileAttachment } from '../../types/index.js';
24
+ export declare class RtcFilePreviewModal extends LitElement {
25
+ static styles: import("lit").CSSResult;
26
+ private _fileStorageCtx;
27
+ /** File attachment to preview */
28
+ file: FileAttachment | null;
29
+ /** Whether the modal is open */
30
+ open: boolean;
31
+ /** Content loading state */
32
+ private _contentState;
33
+ /** Object URL for image preview (needs manual revocation) */
34
+ private _objectUrl;
35
+ /** Text content for text file preview */
36
+ private _textContent;
37
+ /** Whether text content was truncated */
38
+ private _textTruncated;
39
+ /** Fallback URL (presigned URL when download fails) */
40
+ private _fallbackUrl;
41
+ /** Error message */
42
+ private _errorMessage;
43
+ /** AbortController for cancelling downloads */
44
+ private _abortController;
45
+ /** The element that triggered the preview (for focus restoration) */
46
+ private _triggerElement;
47
+ /** Bound keydown handler for window-level ESC capture */
48
+ private _boundOnKeydown;
49
+ willUpdate(changed: PropertyValues): void;
50
+ disconnectedCallback(): void;
51
+ /**
52
+ * Open the preview modal for a file.
53
+ * @param file - File attachment to preview
54
+ * @param triggerElement - Element that triggered the preview (for focus restoration)
55
+ */
56
+ openPreview(file: FileAttachment, triggerElement?: HTMLElement): void;
57
+ /** Close the preview modal */
58
+ close(): void;
59
+ /** Clean up resources */
60
+ private _cleanup;
61
+ /** Revoke the current Object URL */
62
+ private _revokeObjectUrl;
63
+ /** Check if MIME type is image */
64
+ private _isImage;
65
+ /** Check if MIME type is text */
66
+ private _isText;
67
+ /** Get filename from FileAttachment */
68
+ private _getFilename;
69
+ /** Get filesize from FileAttachment */
70
+ private _getFilesize;
71
+ /** Format file size for display */
72
+ private _formatFilesize;
73
+ /** Load preview content based on file type */
74
+ private _loadContent;
75
+ /** Load image preview */
76
+ private _loadImage;
77
+ /** Load text preview */
78
+ private _loadText;
79
+ /** Handle backdrop click */
80
+ private _handleBackdropClick;
81
+ /** Handle content click (stop propagation to prevent closing) */
82
+ private _handleContentClick;
83
+ /** Handle keydown (ESC to close) */
84
+ private _handleKeydown;
85
+ /** Handle close button click */
86
+ private _handleCloseClick;
87
+ /** Handle retry button click */
88
+ private _handleRetryClick;
89
+ /** Render modal header */
90
+ private _renderHeader;
91
+ /** Render image preview */
92
+ private _renderImagePreview;
93
+ /** Render text preview */
94
+ private _renderTextPreview;
95
+ /** Render loading state */
96
+ private _renderLoading;
97
+ /** Render error state */
98
+ private _renderError;
99
+ /** Render modal body content */
100
+ private _renderBody;
101
+ render(): typeof nothing | import("lit").TemplateResult<1>;
102
+ }
103
+ declare global {
104
+ interface HTMLElementTagNameMap {
105
+ 'rtc-file-preview-modal': RtcFilePreviewModal;
106
+ }
107
+ }
108
+ //# sourceMappingURL=rtc-file-preview-modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtc-file-preview-modal.d.ts","sourceRoot":"","sources":["../../../src/components/file-preview/rtc-file-preview-modal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAC,UAAU,EAAQ,OAAO,EAAE,KAAK,cAAc,EAAC,MAAM,KAAK,CAAC;AAQnE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAgBzD,qBAEa,mBAAoB,SAAQ,UAAU;IACjD,MAAM,CAAC,MAAM,0BAAU;IAMvB,OAAO,CAAC,eAAe,CAAgD;IAIvE,iCAAiC;IAEjC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAQ;IAEnC,gCAAgC;IAEhC,IAAI,EAAE,OAAO,CAAS;IAItB,4BAA4B;IAE5B,OAAO,CAAC,aAAa,CAAwB;IAE7C,6DAA6D;IAE7D,OAAO,CAAC,UAAU,CAAuB;IAEzC,yCAAyC;IAEzC,OAAO,CAAC,YAAY,CAAc;IAElC,yCAAyC;IAEzC,OAAO,CAAC,cAAc,CAAkB;IAExC,uDAAuD;IAEvD,OAAO,CAAC,YAAY,CAAuB;IAE3C,oBAAoB;IAEpB,OAAO,CAAC,aAAa,CAAc;IAEnC,+CAA+C;IAC/C,OAAO,CAAC,gBAAgB,CAAgC;IAExD,qEAAqE;IACrE,OAAO,CAAC,eAAe,CAA4B;IAEnD,yDAAyD;IACzD,OAAO,CAAC,eAAe,CAAgD;IAIvE,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAezC,oBAAoB,IAAI,IAAI;IAQ5B;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,WAAW,GAAG,IAAI;IAcrE,8BAA8B;IAC9B,KAAK,IAAI,IAAI;IAkBb,yBAAyB;IACzB,OAAO,CAAC,QAAQ;IAgBhB,oCAAoC;IACpC,OAAO,CAAC,gBAAgB;IAOxB,kCAAkC;IAClC,OAAO,CAAC,QAAQ;IAIhB,iCAAiC;IACjC,OAAO,CAAC,OAAO;IAOf,uCAAuC;IACvC,OAAO,CAAC,YAAY;IAIpB,uCAAuC;IACvC,OAAO,CAAC,YAAY;IAIpB,mCAAmC;IACnC,OAAO,CAAC,eAAe;IAQvB,8CAA8C;YAChC,YAAY;IA0C1B,yBAAyB;YACX,UAAU;IA6BxB,wBAAwB;YACV,SAAS;IAsCvB,4BAA4B;IAC5B,OAAO,CAAC,oBAAoB;IAI5B,iEAAiE;IACjE,OAAO,CAAC,mBAAmB;IAI3B,oCAAoC;IACpC,OAAO,CAAC,cAAc;IAOtB,gCAAgC;IAChC,OAAO,CAAC,iBAAiB;IAIzB,gCAAgC;IAChC,OAAO,CAAC,iBAAiB;IAMzB,0BAA0B;IAC1B,OAAO,CAAC,aAAa;IAsBrB,2BAA2B;IAC3B,OAAO,CAAC,mBAAmB;IAmB3B,0BAA0B;IAC1B,OAAO,CAAC,kBAAkB;IAS1B,2BAA2B;IAC3B,OAAO,CAAC,cAAc;IAQtB,yBAAyB;IACzB,OAAO,CAAC,YAAY;IAYpB,gCAAgC;IAChC,OAAO,CAAC,WAAW;IAoBnB,MAAM;CA6BP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,wBAAwB,EAAE,mBAAmB,CAAC;KAC/C;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ //# sourceMappingURL=rtc-file-preview-modal.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtc-file-preview-modal.styles.d.ts","sourceRoot":"","sources":["../../../src/components/file-preview/rtc-file-preview-modal.styles.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,MAAM,yBAuSlB,CAAC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * RTC File Thumbnail Component
3
+ *
4
+ * Compact file thumbnail for paste preview and message display.
5
+ * Shows image preview with object-fit: cover, or text file icon.
6
+ * Hover reveals delete button (edit mode only).
7
+ * Supports loading skeleton and error states.
8
+ *
9
+ * @element rtc-file-thumbnail
10
+ * @fires rtc-thumbnail-click - Thumbnail clicked (preview requested)
11
+ * @fires rtc-thumbnail-remove - Delete button clicked
12
+ * @fires rtc-thumbnail-retry - Retry button clicked (error state)
13
+ * @csspart thumbnail - The thumbnail container
14
+ * @csspart remove-btn - The delete button
15
+ */
16
+ import { LitElement } from 'lit';
17
+ import type { FileAttachment } from '../../types/index.js';
18
+ /** Thumbnail loading state */
19
+ type LoadingState = 'idle' | 'loading' | 'loaded' | 'error';
20
+ export declare class RtcFileThumbnail extends LitElement {
21
+ static styles: import("lit").CSSResult;
22
+ /** File URL (for images) */
23
+ src: string;
24
+ /** MIME type */
25
+ mimetype: string;
26
+ /** File name */
27
+ filename: string;
28
+ /** File size in bytes */
29
+ filesize: number;
30
+ /** Upload task ID (for progress tracking) */
31
+ taskId: string;
32
+ /** Upload progress (0-100) */
33
+ progress: number;
34
+ /** Loading state */
35
+ loadingState: LoadingState;
36
+ /** Error message */
37
+ errorMessage: string;
38
+ /** Sync status (for offline uploads) */
39
+ syncStatus?: 'pending' | 'syncing' | 'synced' | 'failed';
40
+ /** Readonly mode (no delete button) */
41
+ readonly: boolean;
42
+ /** File attachment (preferred over src for self-contained loading) */
43
+ file: FileAttachment | null;
44
+ private _fileStorageCtx;
45
+ private _thumbnailUrl;
46
+ private _imageError;
47
+ /** Check if MIME type is image */
48
+ private _isImage;
49
+ /** Handle thumbnail click */
50
+ private _handleClick;
51
+ /** Handle delete button click */
52
+ private _handleRemove;
53
+ /** Handle retry button click */
54
+ private _handleRetry;
55
+ /** Handle image load error */
56
+ private _handleImageError;
57
+ /** Lifecycle: trigger thumbnail loading when file changes */
58
+ updated(changed: Map<string | number | symbol, unknown>): void;
59
+ /** Lifecycle: cleanup blob URL references */
60
+ disconnectedCallback(): void;
61
+ /** Load thumbnail URL from FileStorage or use src fallback */
62
+ private _loadThumbnail;
63
+ /** Render thumbnail content */
64
+ private _renderThumbnail;
65
+ /** Render circular progress overlay */
66
+ private _renderProgressBar;
67
+ /** Render sync status badge */
68
+ private _renderSyncBadge;
69
+ /** Render delete button */
70
+ private _renderRemoveButton;
71
+ /** Render filename overlay */
72
+ private _renderFilename;
73
+ render(): import("lit").TemplateResult<1>;
74
+ }
75
+ declare global {
76
+ interface HTMLElementTagNameMap {
77
+ 'rtc-file-thumbnail': RtcFileThumbnail;
78
+ }
79
+ }
80
+ export {};
81
+ //# sourceMappingURL=rtc-file-thumbnail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtc-file-thumbnail.d.ts","sourceRoot":"","sources":["../../../src/components/file-preview/rtc-file-thumbnail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAC,UAAU,EAAgB,MAAM,KAAK,CAAC;AAQ9C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAKzD,8BAA8B;AAC9B,KAAK,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5D,qBAEa,gBAAiB,SAAQ,UAAU;IAC9C,MAAM,CAAC,MAAM,0BAAU;IAEvB,4BAA4B;IAE5B,GAAG,EAAE,MAAM,CAAM;IAEjB,gBAAgB;IAEhB,QAAQ,EAAE,MAAM,CAAM;IAEtB,gBAAgB;IAEhB,QAAQ,EAAE,MAAM,CAAM;IAEtB,yBAAyB;IAEzB,QAAQ,EAAE,MAAM,CAAK;IAErB,6CAA6C;IAE7C,MAAM,EAAE,MAAM,CAAM;IAEpB,8BAA8B;IAE9B,QAAQ,EAAE,MAAM,CAAK;IAErB,oBAAoB;IAEpB,YAAY,EAAE,YAAY,CAAU;IAEpC,oBAAoB;IAEpB,YAAY,EAAE,MAAM,CAAM;IAE1B,wCAAwC;IAExC,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAEzD,uCAAuC;IAEvC,QAAQ,EAAE,OAAO,CAAS;IAE1B,sEAAsE;IAEtE,IAAI,EAAE,cAAc,GAAG,IAAI,CAAQ;IAInC,OAAO,CAAC,eAAe,CAAgD;IAGvE,OAAO,CAAC,aAAa,CAAc;IAGnC,OAAO,CAAC,WAAW,CAAkB;IAErC,kCAAkC;IAClC,OAAO,CAAC,QAAQ;IAIhB,6BAA6B;IAC7B,OAAO,CAAC,YAAY;IAUpB,iCAAiC;IACjC,OAAO,CAAC,aAAa;IAWrB,gCAAgC;IAChC,OAAO,CAAC,YAAY;IAWpB,8BAA8B;IAC9B,OAAO,CAAC,iBAAiB;IAKzB,6DAA6D;IAC7D,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAO9D,6CAA6C;IAC7C,oBAAoB,IAAI,IAAI;IAa5B,8DAA8D;YAChD,cAAc;IA6B5B,+BAA+B;IAC/B,OAAO,CAAC,gBAAgB;IAuCxB,uCAAuC;IACvC,OAAO,CAAC,kBAAkB;IAwB1B,+BAA+B;IAC/B,OAAO,CAAC,gBAAgB;IAkBxB,2BAA2B;IAC3B,OAAO,CAAC,mBAAmB;IAY3B,8BAA8B;IAC9B,OAAO,CAAC,eAAe;IASvB,MAAM;CAwBP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,gBAAgB,CAAC;KACxC;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ //# sourceMappingURL=rtc-file-thumbnail.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtc-file-thumbnail.styles.d.ts","sourceRoot":"","sources":["../../../src/components/file-preview/rtc-file-thumbnail.styles.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,MAAM,yBAqNlB,CAAC"}
@@ -2,15 +2,17 @@
2
2
  * RTC Input Area Component
3
3
  *
4
4
  * Message textarea with bottom toolbar (attach, tool, mode, send buttons).
5
- * Layout: textarea on top, toolbar on bottom (matches Claude Code UI).
5
+ * Layout: file preview area on top (when files are attached), textarea in middle,
6
+ * toolbar on bottom (matches Claude Code UI).
6
7
  * Enter to submit, Shift+Enter for newline.
8
+ * Supports file paste upload: paste images or files from clipboard.
7
9
  *
8
10
  * The mode panel is rendered inside this component's shadow DOM and positioned
9
11
  * with @floating-ui/dom relative to the mode button, so it never overflows
10
12
  * the rtc-agent window boundary.
11
13
  *
12
14
  * @element rtc-input-area
13
- * @fires rtc-input-submit - User submitted message (detail: { content })
15
+ * @fires rtc-input-submit - User submitted message (detail: { contentData })
14
16
  * @fires rtc-command-requested - User submitted a slash command (detail: { name, args })
15
17
  * @fires rtc-voice-input-requested - User clicked voice input button
16
18
  * @csspart textarea - The textarea element
@@ -20,10 +22,12 @@
20
22
  * @csspart voice-btn - The voice input button
21
23
  */
22
24
  import { LitElement } from 'lit';
25
+ import type { FileAttachment } from '../../types/index.js';
23
26
  import '../overlay/rtc-mode-panel.js';
24
27
  import '../overlay/rtc-command-panel.js';
25
28
  import '../overlay/rtc-scenario-panel.js';
26
29
  import '../token-usage/rtc-token-usage.js';
30
+ import '../file-preview/rtc-file-preview-area.js';
27
31
  export declare class RtcInputArea extends LitElement {
28
32
  static styles: import("lit").CSSResult;
29
33
  /** Theme mode */
@@ -58,6 +62,22 @@ export declare class RtcInputArea extends LitElement {
58
62
  private _turnCount;
59
63
  private _messageCtx;
60
64
  private _settingsCtx;
65
+ private _fileStorageCtx;
66
+ private _pendingFiles;
67
+ private _uploadProgress;
68
+ private _uploadStates;
69
+ /** File objects for retry (fileid → File) */
70
+ private _fileObjects;
71
+ /** Public getters for file state (used by parent to render preview-area) */
72
+ get pendingFiles(): {
73
+ mimetype: string;
74
+ fileid: string;
75
+ extra?: {
76
+ [key: string]: unknown;
77
+ };
78
+ }[];
79
+ get uploadProgress(): Map<string, number>;
80
+ get uploadStates(): Map<string, string>;
61
81
  private _value;
62
82
  private _showModePanel;
63
83
  private _showCommandPanel;
@@ -87,11 +107,51 @@ export declare class RtcInputArea extends LitElement {
87
107
  private _commandPanel?;
88
108
  private _scenarioBtn;
89
109
  private _scenarioPanel?;
110
+ private _fileInput;
90
111
  private _modePanelCtrl;
91
112
  private _commandPanelCtrl;
92
113
  private _scenarioPanelCtrl;
93
114
  private get _textarea();
94
115
  private _handleVoice;
116
+ /**
117
+ * Handle attach button click: trigger file input
118
+ */
119
+ private _handleAttachClick;
120
+ /**
121
+ * Handle file selection from file input
122
+ */
123
+ private _handleFileSelect;
124
+ /**
125
+ * Handle paste event: extract files from clipboard and upload them
126
+ */
127
+ private _handlePaste;
128
+ /**
129
+ * Upload files: cache locally first to get real fileid, then display immediately,
130
+ * then upload to S3 in background.
131
+ *
132
+ * Flow:
133
+ * 1. cacheFileForUpload() → writes to local cache (syncStatus='pending'), returns real fileid
134
+ * 2. Create FileAttachment with real fileid (md5.ext)
135
+ * 3. Display immediately (rtc-file-thumbnail loads from FileStorage cache)
136
+ * 4. Background upload() to S3
137
+ */
138
+ private _uploadFiles;
139
+ /**
140
+ * Upload a single file to S3 (background sync after local caching).
141
+ */
142
+ private _syncToS3;
143
+ /**
144
+ * Public method: remove a file from pending list (called by parent)
145
+ */
146
+ removeFile(file: FileAttachment, index: number): void;
147
+ /**
148
+ * Public method: retry a failed upload (called by parent)
149
+ */
150
+ retryUpload(taskId: string): void;
151
+ /**
152
+ * Notify parent component of file state changes
153
+ */
154
+ private _notifyFileStateChange;
95
155
  /**
96
156
  * Public method: set input box content (used for pre-filling in scenarios like fork)
97
157
  */
@@ -101,6 +161,8 @@ export declare class RtcInputArea extends LitElement {
101
161
  */
102
162
  clearValue(): void;
103
163
  private get _hasContent();
164
+ /** Check if form can be submitted (has content and no files are uploading or failed) */
165
+ private get _canSubmit();
104
166
  private get _hasActiveTurns();
105
167
  /** Current session has active turns and input is empty → show stop button; otherwise show send button. */
106
168
  private get _showStop();
@@ -1 +1 @@
1
- {"version":3,"file":"rtc-input-area.d.ts","sourceRoot":"","sources":["../../../src/components/input-area/rtc-input-area.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rtc-input-area.d.ts","sourceRoot":"","sources":["../../../src/components/input-area/rtc-input-area.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rtc-input-area.styles.d.ts","sourceRoot":"","sources":["../../../src/components/input-area/rtc-input-area.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAqOlB,CAAC"}
1
+ {"version":3,"file":"rtc-input-area.styles.d.ts","sourceRoot":"","sources":["../../../src/components/input-area/rtc-input-area.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAmOlB,CAAC"}
@@ -91,6 +91,7 @@ import '../file-explorer/rtc-file-explorer.js';
91
91
  import '../editor-area/rtc-editor-area.js';
92
92
  import '../status-bar/rtc-status-bar.js';
93
93
  import '../chat-layout/rtc-chat-layout.js';
94
+ import '../file-preview/rtc-file-preview-modal.js';
94
95
  import '../settings-layout/rtc-settings-layout.js';
95
96
  import '../function-tree/rtc-function-tree.js';
96
97
  import '../functions-layout/rtc-functions-layout.js';
@@ -439,6 +440,8 @@ export declare class RtcAgent extends LitElement {
439
440
  }) => boolean | Promise<boolean>;
440
441
  /** Whether gap fill syncing overlay is shown. */
441
442
  private _isSyncing;
443
+ /** File currently being previewed (null = modal closed). Rendered at window-container level. */
444
+ private _previewFile;
442
445
  /** RTC processor (instantiated after persistence connect). */
443
446
  private _rtcProcessor?;
444
447
  get windowStateController(): WindowStateController;
@@ -495,7 +498,13 @@ export declare class RtcAgent extends LitElement {
495
498
  private _functionsProvider;
496
499
  private _functionDebugProvider;
497
500
  private _logoProvider;
501
+ private _fileStorageProvider;
498
502
  private _localeProvider;
503
+ private _fileStorage;
504
+ /**
505
+ * Initialize FileStorage when WorkerBridge and userId are available
506
+ */
507
+ private _initializeFileStorage;
499
508
  connectedCallback(): void;
500
509
  /**
501
510
  * Connect to the persistence layer with error handling and retry.
@@ -578,6 +587,8 @@ export declare class RtcAgent extends LitElement {
578
587
  private _handleLoginRequested;
579
588
  private _handleLoginComplete;
580
589
  private _handleLoginDialogClose;
590
+ private _handleFilePreviewRequested;
591
+ private _handleFilePreviewClose;
581
592
  /**
582
593
  * Read current session's pending_turn_count / running_turn_count from persistence,
583
594
  * write to TurnCountContext for <rtc-input-area> to render send/stop buttons.