@design.estate/dees-catalog 6.12.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.smartconfig.json +5 -1
- package/dist_bundle/bundle.js +24090 -1235
- package/dist_bundle/bundle.js.map +1 -0
- package/dist_bundle/chunks/U6Ua8p1giFoD1s7vrUZUdpbg/.tsbundle-artifacts.json +7 -0
- package/dist_bundle/chunks/U6Ua8p1giFoD1s7vrUZUdpbg/worker-KZQQYSUG.js +58301 -0
- package/dist_bundle/chunks/U6Ua8p1giFoD1s7vrUZUdpbg/worker-KZQQYSUG.js.map +1 -0
- package/dist_bundle/third-party-notices.md +190 -0
- package/dist_ts_web/00_commitinfo_data.js +2 -2
- package/dist_ts_web/elements/00group-chart/dees-chart-area/component.js +3 -3
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +4 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +29 -2
- package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.d.ts +4 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.js +65 -8
- package/dist_ts_web/elements/00group-harness/interfaces.d.ts +1 -0
- package/dist_ts_web/elements/00group-media/dees-pdf-shared/CanvasPool.d.ts +1 -0
- package/dist_ts_web/elements/00group-media/dees-pdf-shared/CanvasPool.js +15 -1
- package/dist_ts_web/elements/00group-media/dees-pdf-shared/PdfManager.d.ts +6 -4
- package/dist_ts_web/elements/00group-media/dees-pdf-shared/PdfManager.js +183 -21
- package/dist_ts_web/elements/00group-media/dees-pdf-shared/utils.d.ts +3 -0
- package/dist_ts_web/elements/00group-media/dees-pdf-shared/utils.js +67 -1
- package/dist_ts_web/elements/00group-media/dees-pdf-viewer/component.d.ts +25 -1
- package/dist_ts_web/elements/00group-media/dees-pdf-viewer/component.js +693 -285
- package/dist_ts_web/elements/00group-media/dees-pdf-viewer/demo.js +7 -7
- package/dist_ts_web/elements/00group-media/dees-thumbnail-pdf/component.d.ts +20 -1
- package/dist_ts_web/elements/00group-media/dees-thumbnail-pdf/component.js +379 -116
- package/dist_ts_web/elements/00group-media/dees-thumbnail-pdf/demo.js +2 -2
- package/dist_ts_web/elements/00group-media/dees-thumbnail-shared/DeesThumbnailBase.d.ts +1 -0
- package/dist_ts_web/elements/00group-media/dees-thumbnail-shared/DeesThumbnailBase.js +7 -1
- package/package.json +5 -4
- package/readme.hints.md +26 -19
- package/readme.md +104 -53
- package/third-party-notices.md +190 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-chart/dees-chart-area/component.ts +2 -2
- package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +13 -0
- package/ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.ts +51 -6
- package/ts_web/elements/00group-harness/interfaces.ts +2 -0
- package/ts_web/elements/00group-media/dees-pdf-shared/CanvasPool.ts +15 -1
- package/ts_web/elements/00group-media/dees-pdf-shared/PdfManager.ts +214 -24
- package/ts_web/elements/00group-media/dees-pdf-shared/utils.ts +77 -1
- package/ts_web/elements/00group-media/dees-pdf-viewer/component.ts +774 -327
- package/ts_web/elements/00group-media/dees-pdf-viewer/demo.ts +7 -7
- package/ts_web/elements/00group-media/dees-thumbnail-pdf/component.ts +427 -128
- package/ts_web/elements/00group-media/dees-thumbnail-pdf/demo.ts +1 -1
- package/ts_web/elements/00group-media/dees-thumbnail-shared/DeesThumbnailBase.ts +5 -0
|
@@ -112,7 +112,7 @@ export const demo = () => {
|
|
|
112
112
|
<h3>Non-Clickable</h3>
|
|
113
113
|
<dees-thumbnail-pdf
|
|
114
114
|
pdfUrl="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/examples/learning/helloworld.pdf"
|
|
115
|
-
clickable
|
|
115
|
+
.clickable=${false}
|
|
116
116
|
></dees-thumbnail-pdf>
|
|
117
117
|
</div>
|
|
118
118
|
|
|
@@ -125,4 +125,4 @@ export const demo = () => {
|
|
|
125
125
|
</div>
|
|
126
126
|
`;
|
|
127
127
|
};
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLW1lZGlhL2RlZXMtdGh1bWJuYWlsLXBkZi9kZW1vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0QsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtJQUN2QixNQUFNLFVBQVUsR0FBRztRQUNqQiw0RkFBNEY7UUFDNUYsa0dBQWtHO0tBQ25HLENBQUM7SUFFRixNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7UUFDMUMsTUFBTSxLQUFLLEdBQThCLEVBQUUsQ0FBQztRQUM1QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDL0IsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7O29CQUVELE1BQU07Ozt3QkFHRixDQUFDLENBQWMsRUFBRSxFQUFFO2dCQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDM0MsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsUUFBUSxDQUFDLENBQUM7WUFDcEQsQ0FBQzs7T0FFSixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7SUFFRixPQUFPLElBQUksQ0FBQTs7OztzQkFJUyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7Ozs7Ozs7Ozs7O2lCQVc3QyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQW9CeEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCQXVEbEMsS0FBSzs7Ozs7OztZQU9oQixpQkFBaUIsQ0FBQyxFQUFFLENBQUM7Ozs7R0FJOUIsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -9,6 +9,7 @@ export declare abstract class DeesThumbnailBase extends DeesElement {
|
|
|
9
9
|
accessor label: string;
|
|
10
10
|
private observer;
|
|
11
11
|
private _visible;
|
|
12
|
+
private observerConnectionEpoch;
|
|
12
13
|
/** Whether this tile is currently visible in the viewport */
|
|
13
14
|
protected get isVisible(): boolean;
|
|
14
15
|
render(): TemplateResult;
|
|
@@ -85,6 +85,7 @@ let DeesThumbnailBase = (() => {
|
|
|
85
85
|
set label(value) { this.#label_accessor_storage = value; }
|
|
86
86
|
observer = __runInitializers(this, _label_extraInitializers);
|
|
87
87
|
_visible = false;
|
|
88
|
+
observerConnectionEpoch = 0;
|
|
88
89
|
/** Whether this tile is currently visible in the viewport */
|
|
89
90
|
get isVisible() {
|
|
90
91
|
return this._visible;
|
|
@@ -123,15 +124,20 @@ let DeesThumbnailBase = (() => {
|
|
|
123
124
|
return '';
|
|
124
125
|
}
|
|
125
126
|
async connectedCallback() {
|
|
127
|
+
const connectionEpoch = ++this.observerConnectionEpoch;
|
|
126
128
|
await super.connectedCallback();
|
|
129
|
+
if (!this.isConnected || connectionEpoch !== this.observerConnectionEpoch)
|
|
130
|
+
return;
|
|
127
131
|
this.setupIntersectionObserver();
|
|
128
132
|
}
|
|
129
133
|
async disconnectedCallback() {
|
|
134
|
+
this.observerConnectionEpoch += 1;
|
|
130
135
|
await super.disconnectedCallback();
|
|
131
136
|
if (this.observer) {
|
|
132
137
|
this.observer.disconnect();
|
|
133
138
|
this.observer = undefined;
|
|
134
139
|
}
|
|
140
|
+
this._visible = false;
|
|
135
141
|
}
|
|
136
142
|
setupIntersectionObserver() {
|
|
137
143
|
this.observer = new IntersectionObserver((entries) => {
|
|
@@ -171,4 +177,4 @@ let DeesThumbnailBase = (() => {
|
|
|
171
177
|
};
|
|
172
178
|
})();
|
|
173
179
|
export { DeesThumbnailBase };
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVlc1RodW1ibmFpbEJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1tZWRpYS9kZWVzLXRodW1ibmFpbC1zaGFyZWQvRGVlc1RodW1ibmFpbEJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLFFBQVEsR0FHVCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLDhDQUE4QyxDQUFDO0lBRWhDLGlCQUFpQjtzQkFBUyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7O2lCQUFyQyxpQkFBa0IsU0FBUSxXQUFXOzs7cUNBR3hELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQzttQ0FHM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2lDQUczQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0NBRzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2lDQUd6QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFYM0IsZ0xBQVMsU0FBUyw2QkFBVCxTQUFTLDZGQUFpQjtZQUduQywwS0FBUyxPQUFPLDZCQUFQLE9BQU8seUZBQWtCO1lBR2xDLG9LQUFTLEtBQUssNkJBQUwsS0FBSyxxRkFBa0I7WUFHaEMsaUtBQVMsSUFBSSw2QkFBSixJQUFJLG1GQUE0QztZQUd6RCxvS0FBUyxLQUFLLDZCQUFMLEtBQUsscUZBQWM7OztRQWZyQixNQUFNLENBQUMsTUFBTSxHQUFnQixtQkFBMEIsQ0FBQztRQUcvRCwrRUFBOEIsSUFBSSxFQUFD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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@design.estate/dees-catalog",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
|
|
6
6
|
"main": "dist_ts_web/index.js",
|
|
@@ -39,14 +39,14 @@
|
|
|
39
39
|
"lightweight-charts": "^5.1.0",
|
|
40
40
|
"lucide": "^1.8.0",
|
|
41
41
|
"monaco-editor": "0.55.1",
|
|
42
|
-
"pdfjs-dist": "
|
|
42
|
+
"pdfjs-dist": "4.10.38",
|
|
43
43
|
"xterm": "^5.3.0",
|
|
44
44
|
"xterm-addon-fit": "^0.8.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@design.estate/dees-wcctools": "^3.9.3",
|
|
48
48
|
"@git.zone/tsbuild": "^4.4.2",
|
|
49
|
-
"@git.zone/tsbundle": "^2.
|
|
49
|
+
"@git.zone/tsbundle": "^2.13.0",
|
|
50
50
|
"@git.zone/tstest": "^4.0.0",
|
|
51
51
|
"@git.zone/tswatch": "^3.3.5",
|
|
52
52
|
"@push.rocks/projectinfo": "^5.1.0",
|
|
@@ -63,7 +63,8 @@
|
|
|
63
63
|
"scripts/**/*",
|
|
64
64
|
"cli.js",
|
|
65
65
|
".smartconfig.json",
|
|
66
|
-
"readme.md"
|
|
66
|
+
"readme.md",
|
|
67
|
+
"third-party-notices.md"
|
|
67
68
|
],
|
|
68
69
|
"browserslist": [
|
|
69
70
|
"last 1 chrome versions"
|
package/readme.hints.md
CHANGED
|
@@ -22,6 +22,13 @@
|
|
|
22
22
|
- `DeesHarnessOverflowText` owns the shared 40px right-edge fade and overflow-only reveal animation used by tool-card subtitles and Tools & Subagents activity text. It runs on hover and once after the initial two-second delay.
|
|
23
23
|
- The session sidebar derives Tools & Subagents from top-level tool messages in the current retained transcript window; it never caches evicted history or includes tools inside child projections.
|
|
24
24
|
|
|
25
|
+
## PDF Components
|
|
26
|
+
|
|
27
|
+
- `PdfManager` creates one local module `Worker` per load and acquires the `PDFWorker` and loading task as that load progresses. Failures and aborts release every level acquired so far; successful callers release the returned document on URL change, replacement, or disconnect.
|
|
28
|
+
- Keep PDF.js imported from the installed `pdfjs-dist` package. Runtime CDN imports and worker fallbacks are not allowed.
|
|
29
|
+
- `DeesPdfViewer` uses the PDF.js `TextLayer` class. Cleanup closes render admission, starts document release to interrupt PDF.js operations, and settles release and tracked pipelines together within a bounded deadline.
|
|
30
|
+
- PDF component loads are keyed by connection epoch and URL so stale loads cannot update detached, reconnected, or repurposed elements.
|
|
31
|
+
|
|
25
32
|
## Chart Components
|
|
26
33
|
|
|
27
34
|
### dees-chart-area
|
|
@@ -956,7 +963,7 @@ New media viewer components and a unified preview composite component.
|
|
|
956
963
|
|
|
957
964
|
### dees-preview (Composite Component)
|
|
958
965
|
- Auto-detects content type and delegates to the appropriate viewer
|
|
959
|
-
- Directory: `ts_web/elements/dees-preview/`
|
|
966
|
+
- Directory: `ts_web/elements/00group-media/dees-preview/`
|
|
960
967
|
- Properties: `url`, `file` (File object), `base64`, `textContent`, `contentType` (override), `language`, `mimeType`, `filename`, `showToolbar`, `showFilename`
|
|
961
968
|
- Content type detection priority: explicit override → MIME type → file extension → fallback
|
|
962
969
|
- Renders: image→DeesImageViewer, pdf→DeesPdfViewer, code→DeesDataviewCodebox, audio→DeesAudioViewer, video→DeesVideoViewer, text→pre, unknown→placeholder
|
|
@@ -972,13 +979,13 @@ New media viewer components and a unified preview composite component.
|
|
|
972
979
|
- Placeholder/error icons: `font-size: 32px`
|
|
973
980
|
- Pattern: `.button-class dees-icon { font-size: 16px; }`
|
|
974
981
|
|
|
975
|
-
##
|
|
982
|
+
## Thumbnail Component System (2026-01-27)
|
|
976
983
|
|
|
977
984
|
A family of 200×260px content preview cards with a shared abstract base class. All tiles support lazy loading (IntersectionObserver with 200px margin), hover lift effect, click events, loading/error states, and three sizes (small: 150×195, default: 200×260, large: 250×325).
|
|
978
985
|
|
|
979
986
|
### Architecture
|
|
980
987
|
|
|
981
|
-
- **
|
|
988
|
+
- **DeesThumbnailBase** (`dees-thumbnail-shared/DeesThumbnailBase.ts`) — Abstract base class extending DeesElement
|
|
982
989
|
- Common properties: `clickable`, `loading`, `error`, `size`, `label`
|
|
983
990
|
- IntersectionObserver lazy loading via `onBecameVisible()` hook
|
|
984
991
|
- Click dispatch via `tile-click` CustomEvent (detail from `getTileClickDetail()`)
|
|
@@ -988,30 +995,30 @@ A family of 200×260px content preview cards with a shared abstract base class.
|
|
|
988
995
|
|
|
989
996
|
| Tag | Class | Description |
|
|
990
997
|
|-----|-------|-------------|
|
|
991
|
-
| `dees-
|
|
992
|
-
| `dees-
|
|
993
|
-
| `dees-
|
|
994
|
-
| `dees-
|
|
995
|
-
| `dees-
|
|
996
|
-
| `dees-
|
|
998
|
+
| `dees-thumbnail-pdf` | `DeesThumbnailPdf` | PDF page thumbnail with hover-to-browse pages. Canvas-rendered via PDF.js/CanvasPool. |
|
|
999
|
+
| `dees-thumbnail-image` | `DeesThumbnailImage` | Image thumbnail with `object-fit: cover`, dimension detection on load |
|
|
1000
|
+
| `dees-thumbnail-audio` | `DeesThumbnailAudio` | Music icon + mini waveform (AudioContext decode), duration badge |
|
|
1001
|
+
| `dees-thumbnail-video` | `DeesThumbnailVideo` | Auto-captured first frame, duration badge, hover muted auto-preview |
|
|
1002
|
+
| `dees-thumbnail-note` | `DeesThumbnailNote` | First ~12 lines of text in monospace, gradient fade, optional language badge |
|
|
1003
|
+
| `dees-thumbnail-folder` | `DeesThumbnailFolder` | 2×2 grid of mini-previews (thumbnails or type icons), item count badge |
|
|
997
1004
|
|
|
998
|
-
###
|
|
1005
|
+
### Removed Legacy Names
|
|
999
1006
|
|
|
1000
|
-
- `dees-pdf-preview`
|
|
1001
|
-
- `dees-pdf`
|
|
1007
|
+
- `dees-pdf-preview`, `dees-pdf`, and `dees-tile-pdf` are removed and have no compatibility wrappers.
|
|
1008
|
+
- Use `dees-pdf-viewer` for full documents and `dees-thumbnail-pdf` for grid previews.
|
|
1002
1009
|
|
|
1003
1010
|
### File Structure
|
|
1004
1011
|
|
|
1005
|
-
All
|
|
1012
|
+
All thumbnail components live in `ts_web/elements/00group-media/dees-thumbnail-*/`:
|
|
1006
1013
|
- `component.ts` — Main component class
|
|
1007
1014
|
- `demo.ts` — Demo function
|
|
1008
1015
|
- `index.ts` — Re-export
|
|
1009
|
-
- `styles.ts` — (PDF
|
|
1010
|
-
- Shared base: `dees-
|
|
1016
|
+
- `styles.ts` — (PDF thumbnail only) Component-specific styles
|
|
1017
|
+
- Shared base: `dees-thumbnail-shared/{DeesThumbnailBase,styles,index}.ts`
|
|
1011
1018
|
|
|
1012
|
-
### Interface:
|
|
1019
|
+
### Interface: IThumbnailFolderItem
|
|
1013
1020
|
```typescript
|
|
1014
|
-
interface
|
|
1021
|
+
interface IThumbnailFolderItem {
|
|
1015
1022
|
type: 'pdf' | 'image' | 'audio' | 'video' | 'note' | 'folder' | 'unknown';
|
|
1016
1023
|
thumbnailSrc?: string;
|
|
1017
1024
|
name: string;
|
|
@@ -1096,7 +1103,7 @@ All components are organized into `00group-*` directories with 14 groups visible
|
|
|
1096
1103
|
| `00group-form` | Form | 2 |
|
|
1097
1104
|
| `00group-input` | Input | 18 |
|
|
1098
1105
|
| `00group-layout` | Layout | 7 |
|
|
1099
|
-
| `00group-media` | Media |
|
|
1106
|
+
| `00group-media` | Media | 11 (viewers + PDF + thumbnails) |
|
|
1100
1107
|
| `00group-overlay` | Overlay | 4 |
|
|
1101
1108
|
| `00group-simple` | Simple | 3 |
|
|
1102
1109
|
| `00group-utility` | Utility | 5 |
|
|
@@ -1111,7 +1118,7 @@ Some components appear in multiple groups via `demoGroups = ['Primary', 'Seconda
|
|
|
1111
1118
|
- `dees-input-wysiwyg`: Input, Workspace
|
|
1112
1119
|
- `dees-form-submit`: Form, Button
|
|
1113
1120
|
- `dees-preview`: Media, Data View
|
|
1114
|
-
- `dees-pdf
|
|
1121
|
+
- `dees-pdf-viewer` / `dees-thumbnail-pdf`: Media, PDF
|
|
1115
1122
|
- `dees-stepper`: Layout, Form
|
|
1116
1123
|
- `dees-label`: Layout, Input
|
|
1117
1124
|
- `dees-toast`: Feedback, Overlay
|
package/readme.md
CHANGED
|
@@ -18,7 +18,7 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
|
|
|
18
18
|
- 🔧 **TypeScript-First** — Fully typed APIs with excellent IDE support
|
|
19
19
|
- 🧩 **Modular** — Use only what you need, tree-shakeable architecture
|
|
20
20
|
- 🏗️ **Full App Shell** — `dees-appui` provides a complete application framework with menus, routing, activity log, and bottom bar
|
|
21
|
-
- 🎬 **Media Components** — Rich
|
|
21
|
+
- 🎬 **Media Components** — Rich thumbnail previews for PDFs, images, audio, video, notes, and folders
|
|
22
22
|
- 💻 **IDE Workspace** — Full workspace component with Monaco editor, file tree, terminal, and diff viewer
|
|
23
23
|
|
|
24
24
|
## 📦 Installation
|
|
@@ -58,8 +58,8 @@ For developers working on this library, please refer to the [UI Components Playb
|
|
|
58
58
|
| **Core UI** | [`DeesButton`](#deesbutton), [`DeesButtonExit`](#deesbuttonexit), [`DeesButtonGroup`](#deesbuttongroup), [`DeesBadge`](#deesbadge), [`DeesChips`](#deeschips), [`DeesHeading`](#deesheading), [`DeesHint`](#deeshint), [`DeesIcon`](#deesicon), [`DeesLabel`](#deeslabel), [`DeesPanel`](#deespanel), [`DeesSearchbar`](#deessearchbar), [`DeesSpinner`](#deesspinner), [`DeesToast`](#deestoast), [`DeesWindowcontrols`](#deeswindowcontrols), [`DeesActionbar`](#deesactionbar) |
|
|
59
59
|
| **Forms** | [`DeesForm`](#deesform), [`DeesInputText`](#deesinputtext), [`DeesInputCheckbox`](#deesinputcheckbox), [`DeesInputDropdown`](#deesinputdropdown), [`DeesInputRadiogroup`](#deesinputradiogroup), [`DeesInputFileupload`](#deesinputfileupload), [`DeesInputIban`](#deesinputiban), [`DeesInputPhone`](#deesinputphone), [`DeesInputQuantitySelector`](#deesinputquantityselector), [`DeesInputMultitoggle`](#deesinputmultitoggle), [`DeesInputToggle`](#deesinputtoggle), [`DeesInputTags`](#deesinputtags), [`DeesInputTypelist`](#deesinputtypelist), [`DeesInputList`](#deesinputlist), [`DeesInputProfilepicture`](#deesinputprofilepicture), [`DeesInputRichtext`](#deesinputrichtext), [`DeesInputWysiwyg`](#deesinputwysiwyg), [`DeesInputDatepicker`](#deesinputdatepicker), [`DeesInputSearchselect`](#deesinputsearchselect), [`DeesInputCode`](#deesinputcode), [`DeesFormSubmit`](#deesformsubmit) |
|
|
60
60
|
| **App Shell (Layout)** | [`DeesMosaic`](#deesmosaic), [`DeesAppui`](#deesappui-️), [`DeesAppuiMainmenu`](#deesappuimainmenu), [`DeesAppuiSecondarymenu`](#deesappuisecondarymenu), [`DeesAppuiMaincontent`](#deesappuimaincontent), [`DeesAppuiAppbar`](#deesappuiappbar), [`DeesAppuiActivitylog`](#deesappuiactivitylog), [`DeesAppuiBottombar`](#deesappuibottombar), [`DeesAppuiProfiledropdown`](#deesappuiprofiledropdown), [`DeesAppuiTabs`](#deesappuitabs), [`DeesMobileNavigation`](#deesmobilenavigation), [`DeesDashboardGrid`](#deesdashboardgrid) |
|
|
61
|
-
| **Data Display** | [`DeesTable`](#deestable), [`DeesDataviewCodebox`](#deesdataviewcodebox), [`DeesDataviewStatusobject`](#deesdataviewstatusobject), [`
|
|
62
|
-
| **Media & Thumbnails** | [`DeesThumbnailPdf`](#deesthumbnailpdf), [`DeesThumbnailImage`](#deesthumbnailimage), [`DeesThumbnailAudio`](#deesthumbnailaudio), [`DeesThumbnailVideo`](#
|
|
61
|
+
| **Data Display** | [`DeesTable`](#deestable), [`DeesDataviewCodebox`](#deesdataviewcodebox), [`DeesDataviewStatusobject`](#deesdataviewstatusobject), [`DeesStatsGrid`](#deesstatsgrid), [`DeesPagination`](#deespagination), [`DeesStorageBrowser`](#deesstorgebrowser) |
|
|
62
|
+
| **Media & Thumbnails** | [`DeesThumbnailPdf`](#deesthumbnailpdf), [`DeesThumbnailImage`](#deesthumbnailimage), [`DeesThumbnailAudio`](#deesthumbnailaudio), [`DeesThumbnailVideo`](#deesthumbnailvideo), [`DeesThumbnailNote`](#deesthumbnailnote), [`DeesThumbnailFolder`](#deesthumbnailfolder), [`DeesPreview`](#deespreview), [`DeesPdfViewer`](#deespdfviewer), [`DeesImageViewer`](#deesimageviewer), [`DeesAudioViewer`](#deesaudioviewer), [`DeesVideoViewer`](#deesvideoviewer) |
|
|
63
63
|
| **Visualization** | [`DeesChartArea`](#deeschartarea), [`DeesChartBar`](#deeschartbar), [`DeesChartDonut`](#deeschartdonut), [`DeesChartGauge`](#deeschartgauge), [`DeesChartRadar`](#deeschartradar), [`DeesChartLog`](#deeschartlog) |
|
|
64
64
|
| **Dialogs & Overlays** | [`DeesModal`](#deesmodal), [`DeesContextmenu`](#deescontextmenu), [`DeesSpeechbubble`](#deesspeechbubble), [`DeesWindowlayer`](#deeswindowlayer) |
|
|
65
65
|
| **Navigation** | [`DeesStepper`](#deesstepper), [`DeesProgressbar`](#deesprogressbar) |
|
|
@@ -1221,19 +1221,6 @@ Status display component for complex objects with nested status indicators.
|
|
|
1221
1221
|
></dees-dataview-statusobject>
|
|
1222
1222
|
```
|
|
1223
1223
|
|
|
1224
|
-
#### `DeesPdf`
|
|
1225
|
-
PDF viewer component with navigation and zoom controls.
|
|
1226
|
-
|
|
1227
|
-
```typescript
|
|
1228
|
-
<dees-pdf
|
|
1229
|
-
source="path/to/document.pdf" // URL or base64 encoded PDF
|
|
1230
|
-
page={1} // Current page number
|
|
1231
|
-
scale={1.0} // Zoom level
|
|
1232
|
-
.controls=${['zoom', 'download', 'print', 'navigation']}
|
|
1233
|
-
@page-change=${handlePageChange}
|
|
1234
|
-
></dees-pdf>
|
|
1235
|
-
```
|
|
1236
|
-
|
|
1237
1224
|
#### `DeesStatsGrid`
|
|
1238
1225
|
A responsive grid component for displaying statistical data with various visualization types.
|
|
1239
1226
|
|
|
@@ -1311,59 +1298,65 @@ Pagination component for navigating through large datasets.
|
|
|
1311
1298
|
|
|
1312
1299
|
---
|
|
1313
1300
|
|
|
1314
|
-
### Media &
|
|
1301
|
+
### Media & Thumbnail Components 🎬
|
|
1315
1302
|
|
|
1316
|
-
A rich collection of
|
|
1303
|
+
A rich collection of thumbnail components for displaying media files in grids. All thumbnails share a consistent base class (`DeesThumbnailBase`) with lazy loading via `IntersectionObserver`, hover interactions, click events, and three size variants (`small`, `default`, `large`). `DeesThumbnailPdf` also supplies PDF-specific context-menu actions.
|
|
1317
1304
|
|
|
1318
|
-
|
|
1305
|
+
Thumbnail metadata and labels share one fixed bottom information bar.
|
|
1319
1306
|
|
|
1320
|
-
#### `
|
|
1321
|
-
PDF document
|
|
1307
|
+
#### `DeesThumbnailPdf`
|
|
1308
|
+
PDF document thumbnail with a locally rendered page preview.
|
|
1322
1309
|
|
|
1323
1310
|
```typescript
|
|
1324
|
-
<dees-
|
|
1325
|
-
pdfUrl
|
|
1311
|
+
<dees-thumbnail-pdf
|
|
1312
|
+
.pdfUrl=${'/documents/report.pdf'}
|
|
1326
1313
|
label="Annual Report"
|
|
1327
|
-
clickable
|
|
1314
|
+
.clickable=${true}
|
|
1328
1315
|
@tile-click=${handleClick}
|
|
1329
|
-
></dees-
|
|
1316
|
+
></dees-thumbnail-pdf>
|
|
1330
1317
|
```
|
|
1331
1318
|
|
|
1332
1319
|
**Key Features:**
|
|
1333
1320
|
- Renders first page as canvas preview
|
|
1334
1321
|
- Hover to scrub through pages (mouse X position maps to page number)
|
|
1335
|
-
- Shows page count
|
|
1322
|
+
- Shows page count, file size, and hover page indicator
|
|
1336
1323
|
- Detects A4/Letter vs non-standard aspect ratios
|
|
1324
|
+
- Bundles the PDF.js worker locally and releases it when the URL changes or the component disconnects
|
|
1325
|
+
|
|
1326
|
+
Public properties include `pdfUrl`, `currentPreviewPage`, `pageCount`, `rendered`,
|
|
1327
|
+
`fileSize`, `clickable`, `loading`, `error`, `size`, and `label`. Loading starts within
|
|
1328
|
+
the thumbnail observer's 200px viewport preload margin. URL replacement, failed loads, and disconnection all
|
|
1329
|
+
release the current PDF document and worker.
|
|
1337
1330
|
|
|
1338
|
-
#### `
|
|
1339
|
-
Image
|
|
1331
|
+
#### `DeesThumbnailImage`
|
|
1332
|
+
Image thumbnail with lazy loading and dimension display.
|
|
1340
1333
|
|
|
1341
1334
|
```typescript
|
|
1342
|
-
<dees-
|
|
1335
|
+
<dees-thumbnail-image
|
|
1343
1336
|
src="/photos/landscape.jpg"
|
|
1344
1337
|
alt="Mountain landscape"
|
|
1345
1338
|
label="landscape.jpg"
|
|
1346
1339
|
clickable
|
|
1347
1340
|
@tile-click=${handleClick}
|
|
1348
|
-
></dees-
|
|
1341
|
+
></dees-thumbnail-image>
|
|
1349
1342
|
```
|
|
1350
1343
|
|
|
1351
1344
|
**Key Features:**
|
|
1352
1345
|
- Lazy loads image on scroll into view
|
|
1353
|
-
- Shows image dimensions
|
|
1346
|
+
- Shows image dimensions after loading (e.g. "1920 × 1080")
|
|
1354
1347
|
- Checkerboard background for transparent images
|
|
1355
1348
|
|
|
1356
|
-
#### `
|
|
1349
|
+
#### `DeesThumbnailAudio`
|
|
1357
1350
|
Audio file tile with waveform visualization.
|
|
1358
1351
|
|
|
1359
1352
|
```typescript
|
|
1360
|
-
<dees-
|
|
1353
|
+
<dees-thumbnail-audio
|
|
1361
1354
|
src="/music/track.mp3"
|
|
1362
1355
|
title="Summer Vibes"
|
|
1363
1356
|
artist="DJ Example"
|
|
1364
1357
|
clickable
|
|
1365
1358
|
@tile-click=${handleClick}
|
|
1366
|
-
></dees-
|
|
1359
|
+
></dees-thumbnail-audio>
|
|
1367
1360
|
```
|
|
1368
1361
|
|
|
1369
1362
|
**Key Features:**
|
|
@@ -1372,17 +1365,17 @@ Audio file tile with waveform visualization.
|
|
|
1372
1365
|
- Displays title and artist metadata
|
|
1373
1366
|
- Play overlay on hover
|
|
1374
1367
|
|
|
1375
|
-
#### `
|
|
1368
|
+
#### `DeesThumbnailVideo`
|
|
1376
1369
|
Video tile with thumbnail capture and hover preview.
|
|
1377
1370
|
|
|
1378
1371
|
```typescript
|
|
1379
|
-
<dees-
|
|
1372
|
+
<dees-thumbnail-video
|
|
1380
1373
|
src="/videos/intro.mp4"
|
|
1381
1374
|
poster="/thumbs/intro.jpg"
|
|
1382
1375
|
label="Introduction"
|
|
1383
1376
|
clickable
|
|
1384
1377
|
@tile-click=${handleClick}
|
|
1385
|
-
></dees-
|
|
1378
|
+
></dees-thumbnail-video>
|
|
1386
1379
|
```
|
|
1387
1380
|
|
|
1388
1381
|
**Key Features:**
|
|
@@ -1391,31 +1384,30 @@ Video tile with thumbnail capture and hover preview.
|
|
|
1391
1384
|
- Shows duration badge
|
|
1392
1385
|
- Play button overlay
|
|
1393
1386
|
|
|
1394
|
-
#### `
|
|
1395
|
-
|
|
1387
|
+
#### `DeesThumbnailNote`
|
|
1388
|
+
Plain-text note thumbnail with a monospace preview.
|
|
1396
1389
|
|
|
1397
1390
|
```typescript
|
|
1398
|
-
<dees-
|
|
1391
|
+
<dees-thumbnail-note
|
|
1399
1392
|
title="config.ts"
|
|
1400
1393
|
language="TypeScript"
|
|
1401
1394
|
.content=${codeString}
|
|
1402
1395
|
clickable
|
|
1403
1396
|
@tile-click=${handleClick}
|
|
1404
|
-
></dees-
|
|
1397
|
+
></dees-thumbnail-note>
|
|
1405
1398
|
```
|
|
1406
1399
|
|
|
1407
1400
|
**Key Features:**
|
|
1408
|
-
- Monospace
|
|
1409
|
-
-
|
|
1401
|
+
- Monospace plain-text preview
|
|
1402
|
+
- Optional language metadata in the bottom information bar
|
|
1410
1403
|
- Scrollable content on hover (mouse X position controls scroll)
|
|
1411
|
-
- Line indicator badge while scrolling
|
|
1412
1404
|
- Gradient fade at bottom
|
|
1413
1405
|
|
|
1414
|
-
#### `
|
|
1406
|
+
#### `DeesThumbnailFolder`
|
|
1415
1407
|
Folder tile with 2×2 content preview grid.
|
|
1416
1408
|
|
|
1417
1409
|
```typescript
|
|
1418
|
-
<dees-
|
|
1410
|
+
<dees-thumbnail-folder
|
|
1419
1411
|
name="Project Assets"
|
|
1420
1412
|
.items=${[
|
|
1421
1413
|
{ type: 'image', name: 'logo.png', thumbnailSrc: '/thumbs/logo.png' },
|
|
@@ -1425,7 +1417,7 @@ Folder tile with 2×2 content preview grid.
|
|
|
1425
1417
|
]}
|
|
1426
1418
|
clickable
|
|
1427
1419
|
@tile-click=${handleClick}
|
|
1428
|
-
></dees-
|
|
1420
|
+
></dees-thumbnail-folder>
|
|
1429
1421
|
```
|
|
1430
1422
|
|
|
1431
1423
|
**Key Features:**
|
|
@@ -1435,10 +1427,53 @@ Folder tile with 2×2 content preview grid.
|
|
|
1435
1427
|
- Supports: `pdf`, `image`, `audio`, `video`, `note`, `folder`, `unknown` types
|
|
1436
1428
|
|
|
1437
1429
|
#### `DeesPreview`
|
|
1438
|
-
Unified preview component that
|
|
1430
|
+
Unified preview component that selects the appropriate media viewer or renderer based on content.
|
|
1431
|
+
|
|
1432
|
+
#### `DeesPdfViewer`
|
|
1433
|
+
Full PDF viewer with page navigation, zoom, fit modes, selectable text, downloads,
|
|
1434
|
+
printing, and an optional thumbnail sidebar. PDF.js and its module worker are bundled
|
|
1435
|
+
locally; the component owns and releases each worker as documents are replaced or the
|
|
1436
|
+
viewer disconnects.
|
|
1437
|
+
|
|
1438
|
+
```typescript
|
|
1439
|
+
<dees-pdf-viewer
|
|
1440
|
+
.pdfUrl=${'/documents/report.pdf'}
|
|
1441
|
+
.initialPage=${1}
|
|
1442
|
+
.initialZoom=${'page-fit'}
|
|
1443
|
+
.showSidebar=${true}
|
|
1444
|
+
></dees-pdf-viewer>
|
|
1445
|
+
```
|
|
1446
|
+
|
|
1447
|
+
Public properties include `pdfUrl`, `initialPage`, `initialZoom`, `showToolbar`,
|
|
1448
|
+
`showSidebar`, `sidebarPosition`, `currentPage`, `totalPages`, `currentZoom`, `loading`,
|
|
1449
|
+
and `pdfFileSize`. URL replacement, failed loads, and disconnection cancel active work,
|
|
1450
|
+
remove observers and listeners, and release the current PDF document and worker.
|
|
1451
|
+
|
|
1452
|
+
#### `PdfManager`
|
|
1453
|
+
Use `PdfManager` when loading a PDF outside the supplied components. Always release the
|
|
1454
|
+
returned document. An abort signal cancels an in-flight load and triggers bounded worker
|
|
1455
|
+
cleanup.
|
|
1439
1456
|
|
|
1440
|
-
|
|
1441
|
-
|
|
1457
|
+
When migrating from 6.x, pass the `PDFDocumentProxy` returned by `loadDocument()` to
|
|
1458
|
+
`releaseDocument()` instead of passing the source URL.
|
|
1459
|
+
|
|
1460
|
+
`PdfManager.initialize()` is retained as an asynchronous no-op for existing callers;
|
|
1461
|
+
static PDF.js imports require no initialization step.
|
|
1462
|
+
|
|
1463
|
+
```typescript
|
|
1464
|
+
import { PdfManager } from '@design.estate/dees-catalog';
|
|
1465
|
+
|
|
1466
|
+
const abortController = new AbortController();
|
|
1467
|
+
const pdfDocument = await PdfManager.loadDocument(pdfUrl, abortController.signal);
|
|
1468
|
+
|
|
1469
|
+
try {
|
|
1470
|
+
const firstPage = await pdfDocument.getPage(1);
|
|
1471
|
+
// Render or inspect the page.
|
|
1472
|
+
firstPage.cleanup();
|
|
1473
|
+
} finally {
|
|
1474
|
+
await PdfManager.releaseDocument(pdfDocument);
|
|
1475
|
+
}
|
|
1476
|
+
```
|
|
1442
1477
|
|
|
1443
1478
|
#### `DeesImageViewer`
|
|
1444
1479
|
Full-screen image viewer with zoom and pan.
|
|
@@ -1834,7 +1869,7 @@ chat.refreshMessages();
|
|
|
1834
1869
|
chat.refreshMessages([]);
|
|
1835
1870
|
```
|
|
1836
1871
|
|
|
1837
|
-
Key props: `messages`, `permissions`, `questions`, `status`, `transcriptKey`, `hasEarlierMessages`/`loadingEarlier`, `usage`, `todos`/`todosAuthoritative`/`showTodosPanel`, `sessionMetrics`, `scratchpad`/`scratchpadBusy`/`scratchpadError`, `sessionIntelligenceEnabled`/`intelligenceExchanges`/`intelligenceBusy`/`intelligenceError`, `showSessionSidebar`, `heading`, `subheading`, `toolbarActions`, `showToolbar`, `busy`, `queuedCount`, `steeringEnabled`, `disabled`, `suggestions`, `account`/`accountOptions`, `model`/`modelOptions`, `reasoningEffort`/`effortOptions`, `mode`/`modeOptions`, `markdownWhileStreaming`, `toolRegistry`. `toolbarActions` accepts `IHarnessChatToolbarAction[]`; each action has `id`, human-readable `label`, `iconName`, `action`, and optional `tooltip`/`disabled`, and renders immediately before the session-details toggle. `disabled: true` makes only that toolbar action inert and prevents its callback without changing the chat-level `disabled` state. `markdownWhileStreaming` defaults to `true`; setting it to `false` keeps active outer and nested subtask markdown as plain text, then performs the final markdown parse when `message-end` arrives. `suggestions` is forwarded unchanged to the controlled composer. Account options use human-readable `label` values and opaque stable `value` identifiers. The status line renders inside the transcript column (it never pushes between the session panel and the composer), and both the toolbar and the docked composer cast a subtle shadow over the scrolling messages.
|
|
1872
|
+
Key props: `messages`, `permissions`, `questions`, `status`, `transcriptKey`, `hasEarlierMessages`/`loadingEarlier`, `usage`, `todos`/`todosAuthoritative`/`showTodosPanel`, `sessionMetrics`, `scratchpad`/`scratchpadBusy`/`scratchpadError`, `sessionIntelligenceEnabled`/`intelligenceExchanges`/`intelligenceBusy`/`intelligenceError`/`intelligenceAvailabilityStatus`/`intelligenceUnavailableReason`/`intelligenceHeading`, `showSessionSidebar`, `heading`, `subheading`, `toolbarActions`, `showToolbar`, `busy`, `queuedCount`, `steeringEnabled`, `disabled`, `suggestions`, `account`/`accountOptions`, `model`/`modelOptions`, `reasoningEffort`/`effortOptions`, `mode`/`modeOptions`, `markdownWhileStreaming`, `toolRegistry`. `toolbarActions` accepts `IHarnessChatToolbarAction[]`; each action has `id`, human-readable `label`, `iconName`, `action`, and optional `tooltip`/`disabled`, and renders immediately before the session-details toggle. `disabled: true` makes only that toolbar action inert and prevents its callback without changing the chat-level `disabled` state. `markdownWhileStreaming` defaults to `true`; setting it to `false` keeps active outer and nested subtask markdown as plain text, then performs the final markdown parse when `message-end` arrives. `suggestions` is forwarded unchanged to the controlled composer. Account options use human-readable `label` values and opaque stable `value` identifiers. The status line renders inside the transcript column (it never pushes between the session panel and the composer), and both the toolbar and the docked composer cast a subtle shadow over the scrolling messages.
|
|
1838
1873
|
|
|
1839
1874
|
After mutating canonical message objects in place, call `refreshMessages(ids?)`. Pass IDs for targeted content corrections, omit them after structural mutations, and pass an empty array for a no-op. `DeesHarnessChat.refreshMessages(ids?)` uses the list semantics and, except for `[]`, also recomputes transcript-derived sidebar state. The list and individual message components expose the corresponding `refreshMessages(ids?)` and `refreshMessage()` methods.
|
|
1840
1875
|
|
|
@@ -1842,6 +1877,8 @@ A **session side panel** shows Tasks, Tools & Subagents, Tokens, Session Scratch
|
|
|
1842
1877
|
|
|
1843
1878
|
Set `.todosAuthoritative=${true}` when an empty host-owned task list must suppress transcript-derived fallback. A changed `transcriptKey` also clears the previous session's unsent Session Intelligence question while preserving the existing scratchpad revision handling.
|
|
1844
1879
|
|
|
1880
|
+
Session Intelligence availability is host-controlled through `intelligenceAvailabilityStatus` (`THarnessIntelligenceAvailabilityStatus`, exported as `'checking' | 'available' | 'unavailable'`), `intelligenceUnavailableReason`, and `intelligenceHeading`. Their compatibility defaults are `available`, an empty reason, and `Session Intelligence`. A blank heading also falls back to `Session Intelligence`, and unavailable state without a reason renders `<heading> is unavailable.` `sessionIntelligenceEnabled` remains the visibility switch. Checking and unavailable states keep exchange history visible and disable only the intelligence composer, while the main chat composer remains usable. Availability copy is rendered as text in a polite live status region; `intelligenceError` remains the separate operation-error channel.
|
|
1881
|
+
|
|
1845
1882
|
History paging adds the composed child event `harness-load-earlier`.
|
|
1846
1883
|
|
|
1847
1884
|
#### `DeesHarnessMessageList`
|
|
@@ -1953,6 +1990,8 @@ Generic session-detail panel that composes Tasks, Tools & Subagents, Tokens, Ses
|
|
|
1953
1990
|
|
|
1954
1991
|
Scratchpad edits emit `harness-scratchpad-save` with `{ text, expectedRevision }`. A newer incoming revision preserves a dirty local draft and offers explicit **Discard draft** and **Keep draft on latest** actions before saving can continue. Intelligence questions emit `harness-session-intelligence-ask` with `{ question }`; exchanges and busy/error states remain host-controlled. Direct sidebar hosts should update `sessionKey` when changing sessions; `DeesHarnessChat` forwards `transcriptKey` automatically.
|
|
1955
1992
|
|
|
1993
|
+
Direct sidebar hosts can set `intelligenceAvailabilityStatus`, `intelligenceUnavailableReason`, and `intelligenceHeading`; `intelligenceEnabled` still controls whether the section exists. The properties default to `available`, an empty reason, and `Session Intelligence`. A blank heading falls back to `Session Intelligence`, and unavailable state without a reason renders `<heading> is unavailable.` Only `available` permits `harness-session-intelligence-ask`; checking and unavailable states retain history and expose accessible status text. The availability union is exported as `THarnessIntelligenceAvailabilityStatus`.
|
|
1994
|
+
|
|
1956
1995
|
#### `DeesHarnessSessionList`
|
|
1957
1996
|
|
|
1958
1997
|
Searchable, card-based conversation column for sidebars or a `DeesModal` (`harness-session-select` on click, `harness-session-open` on double-click/Enter). Cards stay collapsed until their independent accessible expansion control is used. Selection and working-state changes do not affect expansion.
|
|
@@ -2199,8 +2238,8 @@ interface IViewActivationContext {
|
|
|
2199
2238
|
params?: Record<string, string>;
|
|
2200
2239
|
}
|
|
2201
2240
|
|
|
2202
|
-
//
|
|
2203
|
-
interface
|
|
2241
|
+
// Thumbnail folder item (for DeesThumbnailFolder)
|
|
2242
|
+
interface IThumbnailFolderItem {
|
|
2204
2243
|
type: 'pdf' | 'image' | 'audio' | 'video' | 'note' | 'folder' | 'unknown';
|
|
2205
2244
|
thumbnailSrc?: string;
|
|
2206
2245
|
name: string;
|
|
@@ -2209,6 +2248,18 @@ interface ITileFolderItem {
|
|
|
2209
2248
|
|
|
2210
2249
|
---
|
|
2211
2250
|
|
|
2251
|
+
## Third-Party Notices
|
|
2252
|
+
|
|
2253
|
+
`DeesChartArea` uses [TradingView Lightweight Charts](https://www.tradingview.com/lightweight-charts/) under the Apache License 2.0. Its built-in TradingView attribution link remains enabled.
|
|
2254
|
+
|
|
2255
|
+
> TradingView Lightweight Charts™<br>
|
|
2256
|
+
> Copyright (с) 2025 TradingView, Inc. https://www.tradingview.com/
|
|
2257
|
+
|
|
2258
|
+
`DeesPdfViewer` and `DeesThumbnailPdf` bundle Mozilla PDF.js 4.10.38 and its
|
|
2259
|
+
module worker under the Apache License 2.0. The attribution and complete license text are
|
|
2260
|
+
provided in [third-party-notices.md](./third-party-notices.md) and copied into
|
|
2261
|
+
`dist_bundle/` for standalone bundle distributions.
|
|
2262
|
+
|
|
2212
2263
|
## License and Legal Information
|
|
2213
2264
|
|
|
2214
2265
|
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [license](./license) file.
|