@design.estate/dees-catalog 12.1.0 → 12.2.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.
Files changed (28) hide show
  1. package/dist_bundle/bundle.js +1675 -1221
  2. package/dist_bundle/bundle.js.map +1 -1
  3. package/dist_ts_web/00_commitinfo_data.js +3 -3
  4. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.js +3 -107
  5. package/dist_ts_web/elements/00group-harness/dees-harness-sidebar/dees-harness-sidebar.d.ts +70 -0
  6. package/dist_ts_web/elements/00group-harness/dees-harness-sidebar/dees-harness-sidebar.demo.d.ts +1 -0
  7. package/dist_ts_web/elements/00group-harness/dees-harness-sidebar/dees-harness-sidebar.demo.js +78 -0
  8. package/dist_ts_web/elements/00group-harness/dees-harness-sidebar/dees-harness-sidebar.js +261 -0
  9. package/dist_ts_web/elements/00group-harness/dees-harness-sidebar/index.d.ts +1 -0
  10. package/dist_ts_web/elements/00group-harness/dees-harness-sidebar/index.js +2 -0
  11. package/dist_ts_web/elements/00group-harness/dees-terminal-view/dees-terminal-view.d.ts +79 -6
  12. package/dist_ts_web/elements/00group-harness/dees-terminal-view/dees-terminal-view.demo.js +38 -7
  13. package/dist_ts_web/elements/00group-harness/dees-terminal-view/dees-terminal-view.js +211 -20
  14. package/dist_ts_web/elements/00group-harness/harness.styles.d.ts +10 -0
  15. package/dist_ts_web/elements/00group-harness/harness.styles.js +116 -1
  16. package/dist_ts_web/elements/00group-harness/index.d.ts +1 -0
  17. package/dist_ts_web/elements/00group-harness/index.js +2 -1
  18. package/package.json +3 -3
  19. package/readme.md +46 -0
  20. package/ts_web/00_commitinfo_data.ts +3 -3
  21. package/ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.ts +2 -106
  22. package/ts_web/elements/00group-harness/dees-harness-sidebar/dees-harness-sidebar.demo.ts +87 -0
  23. package/ts_web/elements/00group-harness/dees-harness-sidebar/dees-harness-sidebar.ts +245 -0
  24. package/ts_web/elements/00group-harness/dees-harness-sidebar/index.ts +1 -0
  25. package/ts_web/elements/00group-harness/dees-terminal-view/dees-terminal-view.demo.ts +48 -12
  26. package/ts_web/elements/00group-harness/dees-terminal-view/dees-terminal-view.ts +241 -20
  27. package/ts_web/elements/00group-harness/harness.styles.ts +116 -0
  28. package/ts_web/elements/00group-harness/index.ts +1 -0
@@ -34,6 +34,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
34
34
  };
35
35
  import { demoFunc } from './dees-terminal-view.demo.js';
36
36
  import { DeesElement, html, css, customElement, property, } from '@design.estate/dees-element';
37
+ import * as plugins from '../../00plugins.js';
37
38
  import { themeDefaultStyles } from '../../00theme.js';
38
39
  import { DeesServiceLibLoader } from '../../../services/index.js';
39
40
  /**
@@ -54,6 +55,35 @@ export const maxPendingWriteBytes = 8 * 1024 * 1024;
54
55
  const RIS = '\x1bc';
55
56
  /** Memory cost of one buffered chunk, in bytes. */
56
57
  const chunkByteLength = (chunkArg) => typeof chunkArg === 'string' ? chunkArg.length * 2 : chunkArg.byteLength;
58
+ /** Identity of a grid size, as compared when deciding whether to report a refit. */
59
+ const gridKey = (sizeArg) => `${sizeArg.rows}x${sizeArg.cols}`;
60
+ /**
61
+ * Grid bounds `restore()` accepts. xterm silently widens anything narrower than
62
+ * two columns (a wide character needs two cells), which would paint a snapshot
63
+ * at a size other than the one it was serialized at; a PTY window size is a
64
+ * 16-bit field, so no real snapshot is larger than the upper bound.
65
+ */
66
+ const minRestoreCols = 2;
67
+ const minRestoreRows = 1;
68
+ const maxRestoreGridSize = 0xffff;
69
+ const isGridDimension = (valueArg, minArg) => Number.isInteger(valueArg) && valueArg >= minArg && valueArg <= maxRestoreGridSize;
70
+ /**
71
+ * One `restore()` call: the snapshot, the grid it was serialized at, and the
72
+ * deferred whose promise is handed back to the caller. Its rejections are
73
+ * lifecycle outcomes, not programming errors, so, as with `ready`, an
74
+ * unawaited promise never surfaces as an unhandled rejection; a caller that
75
+ * awaits it still observes the reason.
76
+ */
77
+ class TerminalRestore {
78
+ data;
79
+ size;
80
+ deferred = plugins.smartpromise.defer();
81
+ constructor(data, size) {
82
+ this.data = data;
83
+ this.size = size;
84
+ this.deferred.promise.catch(() => undefined);
85
+ }
86
+ }
57
87
  /**
58
88
  * Transport-agnostic xterm.js surface: the host pipes remote PTY output into
59
89
  * `write()` and receives keystrokes via `terminal-input` — no process,
@@ -61,9 +91,10 @@ const chunkByteLength = (chunkArg) => typeof chunkArg === 'string' ? chunkArg.le
61
91
  * every refit so the host can negotiate a PTY size. Output that arrives while
62
92
  * no terminal is live is buffered up to `maxPendingWriteBytes` and replayed in
63
93
  * order on the next connection, so a replay may start before the element is
64
- * ready and survives being detached. xterm loads through DeesServiceLibLoader;
65
- * CSP-locked hosts can pre-register bundled modules with
66
- * `provideXtermModules()` to avoid the CDN.
94
+ * ready and survives being detached. `restore()` paints a serialized snapshot
95
+ * invisibly at the grid it was taken at, then fits it to the container. xterm
96
+ * loads through DeesServiceLibLoader; CSP-locked hosts can pre-register
97
+ * bundled modules with `provideXtermModules()` to avoid the CDN.
67
98
  */
68
99
  let DeesTerminalView = (() => {
69
100
  let _classDecorators = [customElement('dees-terminal-view')];
@@ -104,11 +135,19 @@ let DeesTerminalView = (() => {
104
135
  inputDisposable;
105
136
  lastReportedSize = '';
106
137
  // Output that arrives before xterm is live is replayed in order, bounded by
107
- // maxPendingWriteBytes and retained across a disconnect.
138
+ // maxPendingWriteBytes and retained across a disconnect. A buffered restore
139
+ // resets everything before it, so there is at most one and it is the base
140
+ // of the chunks buffered after it; its bytes count towards the bound.
141
+ pendingRestore;
108
142
  pendingWrites = [];
109
143
  pendingWriteBytes = 0;
110
144
  pendingWritesDropped = false;
111
145
  setupPromise;
146
+ /**
147
+ * The restore handed to the live terminal whose snapshot is not parsed yet. While it is set the
148
+ * grid belongs to the snapshot: the terminal stays invisible and nothing refits it.
149
+ */
150
+ activeRestore;
112
151
  /**
113
152
  * Set only by an explicit `focus()` that arrived before the terminal existed. Nothing else sets
114
153
  * it, so a re-render, a write, or a resize can never move the caret into this element.
@@ -154,6 +193,14 @@ let DeesTerminalView = (() => {
154
193
  box-sizing: border-box;
155
194
  }
156
195
 
196
+ /*
197
+ * A restore paints invisibly. The grid keeps its layout, so fitting still measures it, and
198
+ * it stays focusable: visibility: hidden would blur the input surface and refuse focus().
199
+ */
200
+ .terminalHost.restoring {
201
+ opacity: 0;
202
+ }
203
+
157
204
  /* xterm.js styles (shadow DOM needs them locally) */
158
205
  .xterm {
159
206
  font-feature-settings: 'liga' 0;
@@ -303,7 +350,10 @@ let DeesTerminalView = (() => {
303
350
  }
304
351
  this.bufferWrite(dataArg);
305
352
  }
306
- /** Reset the screen and scrollback, e.g. before a full replay. */
353
+ /**
354
+ * Reset the screen and scrollback, e.g. before a full replay. Before the terminal exists it also
355
+ * replaces a buffered `restore()`, whose promise then resolves as superseded.
356
+ */
307
357
  clear() {
308
358
  const terminal = this.terminal;
309
359
  if (terminal && this.isConnected) {
@@ -312,9 +362,62 @@ let DeesTerminalView = (() => {
312
362
  }
313
363
  // Without a terminal the reset is expressed as a buffered sentinel, so the
314
364
  // flush of the next connection still performs it in the right order.
315
- this.pendingWrites = [RIS];
316
- this.pendingWriteBytes = chunkByteLength(RIS);
317
- this.pendingWritesDropped = false;
365
+ this.discardPendingOutput();
366
+ this.bufferWrite(RIS);
367
+ }
368
+ /**
369
+ * Replace the terminal state with a serialized snapshot, e.g. from xterm's serialize addon, and
370
+ * show it only once it is complete. A snapshot is exact only in a grid of the size it was
371
+ * serialized at, so the terminal is fully reset (screen, scrollback, modes, alternate buffer),
372
+ * set to `sizeArg`, fed `dataArg` while invisible, then fitted to its container and revealed.
373
+ * `terminal-resize` fires at the end when the fitted grid differs from `sizeArg`, which is the
374
+ * host's cue to resize the PTY so the application redraws at the new size. Until then
375
+ * `currentSize` reports `sizeArg`, so the closing event, or this promise, is what a host
376
+ * negotiates a PTY size on.
377
+ *
378
+ * The restore is part of the output stream: writes issued after it are applied after the
379
+ * snapshot, in order, at the fitted size. Like `write()` it is safe before the terminal exists
380
+ * and while the element is detached; a buffered restore replaces everything buffered before
381
+ * it. The terminal keeps its focus and keeps forwarding input while the restore runs.
382
+ *
383
+ * The promise resolves once the snapshot is on screen, and also, without revealing anything,
384
+ * when a newer `restore()` supersedes this one or `clear()` replaces it while it is buffered.
385
+ * It rejects, without ever surfacing as an unhandled rejection, when the element is
386
+ * disconnected while the snapshot is being parsed (the terminal is disposed with it, as with
387
+ * any live output), when output buffered after it pushes it out of `maxPendingWriteBytes`, and
388
+ * when xterm refuses the data (`terminal-error` carries the same error). Buffered output is
389
+ * dropped oldest first and the restore is the oldest entry, so a buffered snapshot that alone
390
+ * exceeds the bound is dropped by the next buffered write of any size. An invalid size is a
391
+ * programming error: the promise rejects with a `RangeError` and nothing changes; unlike the
392
+ * reasons above this one is not pre-handled, so a `restore()` nobody observes reports it as an
393
+ * unhandled rejection.
394
+ *
395
+ * There is a fourth outcome: a restore that is still buffered when the element is disconnected
396
+ * stays pending, because the snapshot survives the move like buffered output and is applied on
397
+ * the next connection. A host that discards the element instead of reattaching it must not await
398
+ * that promise.
399
+ *
400
+ * @param dataArg The serialized terminal state.
401
+ * @param sizeArg The grid the snapshot was serialized at: integer `cols` in [2, 65535] and
402
+ * `rows` in [1, 65535].
403
+ */
404
+ restore(dataArg, sizeArg) {
405
+ const { cols, rows } = sizeArg;
406
+ if (!isGridDimension(cols, minRestoreCols) || !isGridDimension(rows, minRestoreRows)) {
407
+ return Promise.reject(new RangeError(`restore() needs integer cols in [${minRestoreCols}, ${maxRestoreGridSize}] and rows in ` +
408
+ `[${minRestoreRows}, ${maxRestoreGridSize}], got ${cols}x${rows}`));
409
+ }
410
+ const restore = new TerminalRestore(dataArg, { cols, rows });
411
+ const terminal = this.terminal;
412
+ if (terminal && this.isConnected) {
413
+ this.startRestore(terminal, restore);
414
+ }
415
+ else {
416
+ this.discardPendingOutput();
417
+ this.pendingRestore = restore;
418
+ this.pendingWriteBytes = chunkByteLength(dataArg);
419
+ }
420
+ return restore.deferred.promise;
318
421
  }
319
422
  /**
320
423
  * Moves the caret into the terminal's input surface, so the next keystroke goes to the pty
@@ -345,7 +448,11 @@ let DeesTerminalView = (() => {
345
448
  get focusPending() {
346
449
  return this.focusWhenReady;
347
450
  }
348
- /** Current grid size, or undefined while no terminal is live. */
451
+ /**
452
+ * Current grid size, or undefined while no terminal is live. While a snapshot is being parsed
453
+ * this is the grid the snapshot was serialized at; the closing `terminal-resize`, or the promise
454
+ * `restore()` returned, is the grid to negotiate a PTY size on.
455
+ */
349
456
  get currentSize() {
350
457
  if (!this.terminal)
351
458
  return undefined;
@@ -371,25 +478,99 @@ let DeesTerminalView = (() => {
371
478
  bufferWrite(chunkArg) {
372
479
  this.pendingWrites.push(chunkArg);
373
480
  this.pendingWriteBytes += chunkByteLength(chunkArg);
374
- while (this.pendingWriteBytes > maxPendingWriteBytes && this.pendingWrites.length > 1) {
375
- const droppedChunk = this.pendingWrites.shift();
376
- this.pendingWriteBytes -= chunkByteLength(droppedChunk);
481
+ // Oldest first, and never the newest entry: a buffered restore is older
482
+ // than every chunk, so it goes before any of them.
483
+ while (this.pendingWriteBytes > maxPendingWriteBytes &&
484
+ this.pendingWrites.length > (this.pendingRestore ? 0 : 1)) {
485
+ const droppedRestore = this.pendingRestore;
486
+ if (droppedRestore) {
487
+ this.pendingRestore = undefined;
488
+ this.pendingWriteBytes -= chunkByteLength(droppedRestore.data);
489
+ droppedRestore.deferred.reject(new Error('dees-terminal-view dropped a buffered restore: the output buffered after it exceeded maxPendingWriteBytes'));
490
+ }
491
+ else {
492
+ this.pendingWriteBytes -= chunkByteLength(this.pendingWrites.shift());
493
+ }
377
494
  this.pendingWritesDropped = true;
378
495
  }
379
496
  }
380
- flushPendingWrites(terminalArg) {
381
- const pending = this.pendingWrites;
382
- const dropped = this.pendingWritesDropped;
497
+ /** Hands the buffered output over and leaves the buffer empty. */
498
+ takePendingOutput() {
499
+ const output = {
500
+ restore: this.pendingRestore,
501
+ writes: this.pendingWrites,
502
+ dropped: this.pendingWritesDropped,
503
+ };
504
+ this.pendingRestore = undefined;
383
505
  this.pendingWrites = [];
384
506
  this.pendingWriteBytes = 0;
385
507
  this.pendingWritesDropped = false;
508
+ return output;
509
+ }
510
+ /** Empties the buffer ahead of a reset; a buffered restore is superseded by it. */
511
+ discardPendingOutput() {
512
+ this.takePendingOutput().restore?.deferred.resolve();
513
+ }
514
+ flushPendingWrites(terminalArg) {
515
+ const { restore, writes, dropped } = this.takePendingOutput();
516
+ if (restore && !this.startRestore(terminalArg, restore))
517
+ return;
386
518
  if (dropped && !this.writeToTerminal(terminalArg, RIS))
387
519
  return;
388
- for (const chunk of pending) {
520
+ for (const chunk of writes) {
389
521
  if (!this.writeToTerminal(terminalArg, chunk))
390
522
  return;
391
523
  }
392
524
  }
525
+ /**
526
+ * Queues a restore into xterm's write stream. Resetting and resizing happen in the callback of
527
+ * the reset, so they take effect exactly at the restore's position in the stream, and the
528
+ * restore ends in the callback of its snapshot, before xterm parses the next chunk.
529
+ */
530
+ startRestore(terminalArg, restoreArg) {
531
+ this.activeRestore?.deferred.resolve();
532
+ this.activeRestore = restoreArg;
533
+ this.terminalHost?.classList.add('restoring');
534
+ try {
535
+ terminalArg.write(RIS, () => this.applyRestoreSize(terminalArg, restoreArg));
536
+ terminalArg.write(restoreArg.data, () => this.finishRestore(restoreArg));
537
+ return true;
538
+ }
539
+ catch (error) {
540
+ // xterm refused the snapshot at its flow-control watermark. A reset it did accept is parsed
541
+ // later, finds the restore inactive and leaves the grid alone.
542
+ this.endRestore();
543
+ this.reportError(error);
544
+ restoreArg.deferred.reject(error);
545
+ return false;
546
+ }
547
+ }
548
+ applyRestoreSize(terminalArg, restoreArg) {
549
+ if (this.activeRestore !== restoreArg)
550
+ return;
551
+ terminalArg.resize(restoreArg.size.cols, restoreArg.size.rows);
552
+ // The host serialized the snapshot at this grid, so it is the size the host already knows:
553
+ // the closing refit reports only a difference from it.
554
+ this.lastReportedSize = gridKey(restoreArg.size);
555
+ }
556
+ finishRestore(restoreArg) {
557
+ // A superseded restore was settled when the newer one started.
558
+ if (this.activeRestore !== restoreArg)
559
+ return;
560
+ this.endRestore();
561
+ restoreArg.deferred.resolve();
562
+ }
563
+ /**
564
+ * Hands the grid back to the container: one refit, then the terminal is revealed. The refit
565
+ * dispatches `terminal-resize` synchronously, and a restore its listener starts keeps the
566
+ * terminal hidden.
567
+ */
568
+ endRestore() {
569
+ this.activeRestore = undefined;
570
+ this.refit();
571
+ if (!this.activeRestore)
572
+ this.terminalHost?.classList.remove('restoring');
573
+ }
393
574
  /** xterm throws at its own flow-control watermark; that has to reach the host. */
394
575
  writeToTerminal(terminalArg, chunkArg) {
395
576
  try {
@@ -407,6 +588,9 @@ let DeesTerminalView = (() => {
407
588
  const detail = { error: errorArg };
408
589
  this.dispatchEvent(new CustomEvent('terminal-error', { detail, bubbles: true, composed: true }));
409
590
  }
591
+ get terminalHost() {
592
+ return this.shadowRoot?.querySelector('.terminalHost') ?? null;
593
+ }
410
594
  ensureTerminal(signalArg) {
411
595
  if (this.terminal)
412
596
  return Promise.resolve();
@@ -437,7 +621,7 @@ let DeesTerminalView = (() => {
437
621
  // The load was awaited: the element may have been detached meanwhile.
438
622
  if (signalArg.aborted || !this.isConnected)
439
623
  return;
440
- const host = this.shadowRoot?.querySelector('.terminalHost');
624
+ const host = this.terminalHost;
441
625
  if (!host)
442
626
  return;
443
627
  const computed = getComputedStyle(this);
@@ -494,7 +678,8 @@ let DeesTerminalView = (() => {
494
678
  this.readyResolve();
495
679
  }
496
680
  refit() {
497
- if (!this.terminal || !this.fitAddon)
681
+ // A restore owns the grid until its snapshot is parsed and refits once when it ends.
682
+ if (!this.terminal || !this.fitAddon || this.activeRestore)
498
683
  return;
499
684
  try {
500
685
  this.fitAddon.fit();
@@ -502,7 +687,7 @@ let DeesTerminalView = (() => {
502
687
  catch {
503
688
  return;
504
689
  }
505
- const size = `${this.terminal.rows}x${this.terminal.cols}`;
690
+ const size = gridKey(this.terminal);
506
691
  if (size === this.lastReportedSize)
507
692
  return;
508
693
  this.lastReportedSize = size;
@@ -517,6 +702,11 @@ let DeesTerminalView = (() => {
517
702
  this.resizeObserver = undefined;
518
703
  this.inputDisposable?.dispose();
519
704
  this.inputDisposable = undefined;
705
+ // A disposed terminal never parses the rest of its queue, so a restore in flight would
706
+ // otherwise stay pending forever; the snapshot is lost with the terminal, like live output.
707
+ const interruptedRestore = this.activeRestore;
708
+ this.activeRestore = undefined;
709
+ this.terminalHost?.classList.remove('restoring');
520
710
  this.terminal?.dispose();
521
711
  this.terminal = undefined;
522
712
  this.fitAddon = undefined;
@@ -532,6 +722,7 @@ let DeesTerminalView = (() => {
532
722
  if (this.readyPending) {
533
723
  this.readyReject(new Error('dees-terminal-view was disconnected before the terminal became ready'));
534
724
  }
725
+ interruptedRestore?.deferred.reject(new Error('dees-terminal-view was disconnected before the restore completed'));
535
726
  }
536
727
  static {
537
728
  __runInitializers(_classThis, _classExtraInitializers);
@@ -540,4 +731,4 @@ let DeesTerminalView = (() => {
540
731
  return DeesTerminalView = _classThis;
541
732
  })();
542
733
  export { DeesTerminalView };
543
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy10ZXJtaW5hbC12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLXRlcm1pbmFsLXZpZXcvZGVlcy10ZXJtaW5hbC12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEdBQ1QsTUFBTSw2QkFBNkIsQ0FBQztBQUdyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQTJCbEU7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFcEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBRXBCLG1EQUFtRDtBQUNuRCxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQTZCLEVBQVUsRUFBRSxDQUNoRSxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0FBRTNFOzs7Ozs7Ozs7O0dBVUc7SUFFVSxnQkFBZ0I7NEJBRDVCLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7O2dDQUFuQixTQUFRLFdBQVc7Ozs7b0NBSzlDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztvQ0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFB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
734
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy10ZXJtaW5hbC12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLXRlcm1pbmFsLXZpZXcvZGVlcy10ZXJtaW5hbC12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEdBQ1QsTUFBTSw2QkFBNkIsQ0FBQztBQUdyQyxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBOEJsRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUVwRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUM7QUFFcEIsbURBQW1EO0FBQ25ELE1BQU0sZUFBZSxHQUFHLENBQUMsUUFBNkIsRUFBVSxFQUFFLENBQ2hFLE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7QUFFM0Usb0ZBQW9GO0FBQ3BGLE1BQU0sT0FBTyxHQUFHLENBQUMsT0FBOEIsRUFBVSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUU5Rjs7Ozs7R0FLRztBQUNILE1BQU0sY0FBYyxHQUFHLENBQUMs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
@@ -11,3 +11,13 @@ export declare const harnessControlStyles: CSSResult;
11
11
  export declare const harnessActivityStyles: CSSResult;
12
12
  export declare const harnessPillStyles: CSSResult;
13
13
  export declare const harnessMonoStyles: CSSResult;
14
+ /**
15
+ * Panel chrome of the harness sidebars: a full-height column of collapsible
16
+ * sections, each a heading button (chevron, optional icon, label, right-aligned
17
+ * summary) above the scrolling body of the expanded section. Shared by
18
+ * `dees-harness-sidebar` and `dees-harness-session-sidebar` so a host-composed
19
+ * panel and the session panel are the same surface. It expects the
20
+ * `.sidebar` > `.section` > `.sectionHeading` + `.sectionContent` structure and
21
+ * styles the element itself, so it belongs to those two elements only.
22
+ */
23
+ export declare const harnessSidebarStyles: CSSResult;
@@ -105,4 +105,119 @@ export const harnessMonoStyles = css `
105
105
  text-decoration: underline;
106
106
  }
107
107
  `;
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFybmVzcy5zdHlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2hhcm5lc3Muc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQWtCLE1BQU0sNkJBQTZCLENBQUM7QUFFbEU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFjLEdBQUcsQ0FBQTs7Ozs7Ozs7O0NBUzlDLENBQUM7QUFFRixnRUFBZ0U7QUFDaEUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQWMsR0FBRyxDQUFBOzs7Ozs7Ozs7OztDQVdqRCxDQUFDO0FBRUYsMkVBQTJFO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFjLEdBQUcsQ0FBQTs7Ozs7Ozs7O0NBU2xELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBYyxHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWlDOUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFjLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQzlDLENBQUMifQ==
108
+ /**
109
+ * Panel chrome of the harness sidebars: a full-height column of collapsible
110
+ * sections, each a heading button (chevron, optional icon, label, right-aligned
111
+ * summary) above the scrolling body of the expanded section. Shared by
112
+ * `dees-harness-sidebar` and `dees-harness-session-sidebar` so a host-composed
113
+ * panel and the session panel are the same surface. It expects the
114
+ * `.sidebar` > `.section` > `.sectionHeading` + `.sectionContent` structure and
115
+ * styles the element itself, so it belongs to those two elements only.
116
+ */
117
+ export const harnessSidebarStyles = css `
118
+ :host {
119
+ display: flex;
120
+ flex-direction: column;
121
+ min-width: 0;
122
+ min-height: 0;
123
+ height: 100%;
124
+ font-family: var(--dees-font-family);
125
+ color: var(--dees-color-text-primary);
126
+ }
127
+
128
+ .sidebar {
129
+ display: flex;
130
+ flex-direction: column;
131
+ min-height: 0;
132
+ height: 100%;
133
+ overflow: hidden;
134
+ }
135
+
136
+ .section {
137
+ display: flex;
138
+ flex: 0 0 auto;
139
+ flex-direction: column;
140
+ min-height: 0;
141
+ overflow: hidden;
142
+ border-bottom: 1px solid var(--dees-color-border-subtle);
143
+ }
144
+
145
+ .section.expanded {
146
+ flex: 1 1 0;
147
+ }
148
+
149
+ .section:last-child {
150
+ border-bottom: 0;
151
+ }
152
+
153
+ .sectionHeading {
154
+ display: flex;
155
+ flex: 0 0 auto;
156
+ align-items: center;
157
+ gap: var(--dees-spacing-xs);
158
+ width: 100%;
159
+ min-height: 36px;
160
+ margin: 0;
161
+ padding: 6px 12px 6px 8px;
162
+ border: 0;
163
+ background: var(--dees-color-bg-canvas);
164
+ color: var(--dees-color-text-primary);
165
+ font-family: inherit;
166
+ font-size: var(--dees-font-control-size-sm, 12px);
167
+ font-weight: 600;
168
+ text-align: left;
169
+ cursor: pointer;
170
+ }
171
+
172
+ .sectionHeading:hover {
173
+ background: var(--dees-color-badge-default-bg);
174
+ }
175
+
176
+ .sectionHeading:focus-visible {
177
+ position: relative;
178
+ z-index: 1;
179
+ outline: 2px solid var(--dees-color-accent-primary);
180
+ outline-offset: -2px;
181
+ }
182
+
183
+ .sectionHeading dees-icon {
184
+ flex: 0 0 auto;
185
+ color: var(--dees-color-text-secondary);
186
+ }
187
+
188
+ .sectionHeadingText {
189
+ min-width: 0;
190
+ flex-shrink: 0;
191
+ overflow: hidden;
192
+ text-overflow: ellipsis;
193
+ white-space: nowrap;
194
+ }
195
+
196
+ .sectionSummary {
197
+ flex: 0 1 auto;
198
+ min-width: 0;
199
+ overflow: hidden;
200
+ text-overflow: ellipsis;
201
+ white-space: nowrap;
202
+ margin-left: auto;
203
+ color: var(--dees-color-text-muted);
204
+ font-size: 11px;
205
+ font-variant-numeric: tabular-nums;
206
+ font-weight: 500;
207
+ }
208
+
209
+ .sectionContent {
210
+ flex: 1;
211
+ min-height: 0;
212
+ overflow-x: hidden;
213
+ overflow-y: auto;
214
+ padding: var(--dees-spacing-sm) var(--dees-spacing-md);
215
+ scrollbar-width: thin;
216
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
217
+ }
218
+
219
+ .sectionContent[hidden] {
220
+ display: none;
221
+ }
222
+ `;
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFybmVzcy5zdHlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2hhcm5lc3Muc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQWtCLE1BQU0sNkJBQTZCLENBQUM7QUFFbEU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFjLEdBQUcsQ0FBQTs7Ozs7Ozs7O0NBUzlDLENBQUM7QUFFRixnRUFBZ0U7QUFDaEUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQWMsR0FBRyxDQUFBOzs7Ozs7Ozs7OztDQVdqRCxDQUFDO0FBRUYsMkVBQTJFO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFjLEdBQUcsQ0FBQTs7Ozs7Ozs7O0NBU2xELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBYyxHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWlDOUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFjLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQzlDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFjLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBeUdqRCxDQUFDIn0=
@@ -16,6 +16,7 @@ export * from './dees-harness-message-list/index.js';
16
16
  export * from './dees-harness-reasoning/index.js';
17
17
  export * from './dees-harness-session-list/index.js';
18
18
  export * from './dees-harness-session-sidebar/index.js';
19
+ export * from './dees-harness-sidebar/index.js';
19
20
  export * from './dees-terminal-view/index.js';
20
21
  export * from './dees-harness-status/index.js';
21
22
  export * from './dees-harness-todos/index.js';
@@ -19,9 +19,10 @@ export * from './dees-harness-message-list/index.js';
19
19
  export * from './dees-harness-reasoning/index.js';
20
20
  export * from './dees-harness-session-list/index.js';
21
21
  export * from './dees-harness-session-sidebar/index.js';
22
+ export * from './dees-harness-sidebar/index.js';
22
23
  export * from './dees-terminal-view/index.js';
23
24
  export * from './dees-harness-status/index.js';
24
25
  export * from './dees-harness-todos/index.js';
25
26
  export * from './dees-harness-tool-card/index.js';
26
27
  export * from './dees-harness-usage/index.js';
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQztBQUNwQywyRUFBMkU7QUFDM0UsNkVBQTZFO0FBQzdFLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUYsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlDQUFpQyxDQUFDO0FBRWhELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsK0JBQStCLENBQUMifQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQztBQUNwQywyRUFBMkU7QUFDM0UsNkVBQTZFO0FBQzdFLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUYsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlDQUFpQyxDQUFDO0FBRWhELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywrQkFBK0IsQ0FBQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design.estate/dees-catalog",
3
- "version": "12.1.0",
3
+ "version": "12.2.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",
@@ -45,12 +45,12 @@
45
45
  },
46
46
  "devDependencies": {
47
47
  "@design.estate/dees-wcctools": "^3.9.4",
48
- "@git.zone/tsbuild": "^4.4.3",
48
+ "@git.zone/tsbuild": "^4.5.0",
49
49
  "@git.zone/tsbundle": "^2.13.0",
50
50
  "@git.zone/tstest": "^6.1.1",
51
51
  "@git.zone/tswatch": "^3.3.5",
52
52
  "@push.rocks/projectinfo": "^5.1.0",
53
- "@types/node": "^26.5.0"
53
+ "@types/node": "^26.5.1"
54
54
  },
55
55
  "files": [
56
56
  "ts/**/*",