@design.estate/dees-catalog 4.0.3 → 4.1.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.
@@ -173551,15 +173551,40 @@ var DeesHarnessContentBlocks = _DeesHarnessContentBlocks;
173551
173551
  init_dist_ts25();
173552
173552
  init_theme();
173553
173553
  init_dees_icon();
173554
- var _outputExpanded_dec, _expanded_dec2, _toolRegistry_dec, _call_dec, _a79, _DeesHarnessToolCard_decorators, _init80, _call, _toolRegistry, _expanded2, _outputExpanded;
173554
+ var _returnFlash_dec, _maximized_dec, _bodyOverflowing_dec, _bodyCapPx_dec, _outputExpanded_dec, _expanded_dec2, _toolRegistry_dec, _call_dec, _a79, _DeesHarnessToolCard_decorators, _init80, _call, _toolRegistry, _expanded2, _outputExpanded, _bodyCapPx, _bodyOverflowing, _maximized, _returnFlash;
173555
173555
  _DeesHarnessToolCard_decorators = [customElement("dees-harness-tool-card")];
173556
- var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a79 = DeesElement, _call_dec = [n5({ attribute: false })], _toolRegistry_dec = [n5({ attribute: false })], _expanded_dec2 = [r5()], _outputExpanded_dec = [r5()], _a79) {
173556
+ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a79 = DeesElement, _call_dec = [n5({ attribute: false })], _toolRegistry_dec = [n5({ attribute: false })], _expanded_dec2 = [r5()], _outputExpanded_dec = [r5()], _bodyCapPx_dec = [n5({ type: Number })], _bodyOverflowing_dec = [r5()], _maximized_dec = [r5()], _returnFlash_dec = [r5()], _a79) {
173557
173557
  constructor() {
173558
173558
  super(...arguments);
173559
173559
  __privateAdd(this, _call, __runInitializers(_init80, 8, this, { id: "", name: "", status: "pending" })), __runInitializers(_init80, 11, this);
173560
173560
  __privateAdd(this, _toolRegistry, __runInitializers(_init80, 12, this, DeesHarnessToolRegistry.default)), __runInitializers(_init80, 15, this);
173561
173561
  __privateAdd(this, _expanded2, __runInitializers(_init80, 16, this)), __runInitializers(_init80, 19, this);
173562
173562
  __privateAdd(this, _outputExpanded, __runInitializers(_init80, 20, this, false)), __runInitializers(_init80, 23, this);
173563
+ __privateAdd(this, _bodyCapPx, __runInitializers(_init80, 24, this, 360)), __runInitializers(_init80, 27, this);
173564
+ __privateAdd(this, _bodyOverflowing, __runInitializers(_init80, 28, this, false)), __runInitializers(_init80, 31, this);
173565
+ __privateAdd(this, _maximized, __runInitializers(_init80, 32, this, false)), __runInitializers(_init80, 35, this);
173566
+ __privateAdd(this, _returnFlash, __runInitializers(_init80, 36, this, false)), __runInitializers(_init80, 39, this);
173567
+ __publicField(this, "bodyResizeObserver", null);
173568
+ __publicField(this, "observedBodyInner", null);
173569
+ __publicField(this, "openFullscreen", /* @__PURE__ */ __name(() => {
173570
+ this.maximized = true;
173571
+ window.addEventListener("keydown", this.handleFullscreenKeydown);
173572
+ }, "openFullscreen"));
173573
+ __publicField(this, "closeFullscreen", /* @__PURE__ */ __name(() => {
173574
+ window.removeEventListener("keydown", this.handleFullscreenKeydown);
173575
+ if (!this.maximized) return;
173576
+ this.maximized = false;
173577
+ this.returnFlash = true;
173578
+ requestAnimationFrame(() => {
173579
+ this.scrollIntoView({ block: "center", behavior: "smooth" });
173580
+ });
173581
+ }, "closeFullscreen"));
173582
+ __publicField(this, "handleFullscreenKeydown", /* @__PURE__ */ __name((event) => {
173583
+ if (event.key === "Escape") {
173584
+ event.preventDefault();
173585
+ this.closeFullscreen();
173586
+ }
173587
+ }, "handleFullscreenKeydown"));
173563
173588
  }
173564
173589
  get descriptor() {
173565
173590
  return this.toolRegistry.resolve(this.enrichedCall);
@@ -173585,7 +173610,13 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a79 = DeesElemen
173585
173610
  const statusTone = call.isError ? "error" : call.status === "completed" ? "success" : call.status;
173586
173611
  const duration = harnessFormatDuration(call.startedAt, call.finishedAt);
173587
173612
  return b2`
173588
- <div class="harness-card status-${call.isError ? "error" : call.status} ${descriptor.destructive ? "destructive" : ""}">
173613
+ <div class="harness-card status-${call.isError ? "error" : call.status} ${descriptor.destructive ? "destructive" : ""} ${this.returnFlash ? "returnFlash" : ""}"
173614
+ @animationend=${(event) => {
173615
+ if (event.animationName === "harness-card-return-flash") {
173616
+ this.returnFlash = false;
173617
+ }
173618
+ }}
173619
+ >
173589
173620
  <button
173590
173621
  class="header"
173591
173622
  type="button"
@@ -173609,10 +173640,63 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a79 = DeesElemen
173609
173640
  </span>
173610
173641
  </span>
173611
173642
  </button>
173612
- ${this.isOpen ? b2`<div class="body">${this.renderBody(call)}</div>` : ""}
173643
+ ${this.isOpen && !this.maximized ? b2`
173644
+ <div
173645
+ class="bodyClipFrame ${this.bodyOverflowing ? "capped" : ""}"
173646
+ style=${`max-height: ${this.bodyCapPx}px;`}
173647
+ >
173648
+ <div class="body bodyInner">${this.renderBody(call)}</div>
173649
+ </div>
173650
+ ${this.bodyOverflowing ? b2`
173651
+ <button class="maximizeBar" type="button" @click=${this.openFullscreen}>
173652
+ <dees-icon icon="lucide:Maximize2" iconSize="12"></dees-icon>
173653
+ Show everything
173654
+ </button>
173655
+ ` : ""}
173656
+ ` : ""}
173613
173657
  </div>
173658
+ ${this.maximized ? b2`
173659
+ <div class="fullscreenLayer" @click=${(event) => {
173660
+ if (event.target === event.currentTarget) this.closeFullscreen();
173661
+ }}>
173662
+ <div class="fullscreenPanel">
173663
+ <header class="fullscreenHeader">
173664
+ <dees-icon .icon=${descriptor.icon} iconSize="15"></dees-icon>
173665
+ <span class="fullscreenTitle">${label}${subtitle ? ` \xB7 ${subtitle}` : ""}</span>
173666
+ <button class="fullscreenClose" type="button" @click=${this.closeFullscreen}>
173667
+ <dees-icon icon="lucide:Minimize2" iconSize="15"></dees-icon>
173668
+ </button>
173669
+ </header>
173670
+ <div class="fullscreenBody">${this.renderBody(call)}</div>
173671
+ </div>
173672
+ </div>
173673
+ ` : ""}
173614
173674
  `;
173615
173675
  }
173676
+ updated(changedProperties) {
173677
+ super.updated(changedProperties);
173678
+ const bodyInner = this.shadowRoot?.querySelector(".bodyInner") ?? null;
173679
+ if (bodyInner === this.observedBodyInner) return;
173680
+ this.bodyResizeObserver?.disconnect();
173681
+ this.observedBodyInner = bodyInner;
173682
+ if (!bodyInner) {
173683
+ this.bodyOverflowing = false;
173684
+ return;
173685
+ }
173686
+ this.bodyResizeObserver ??= new ResizeObserver(() => {
173687
+ const inner = this.observedBodyInner;
173688
+ if (!inner) return;
173689
+ this.bodyOverflowing = inner.scrollHeight > this.bodyCapPx + 24;
173690
+ });
173691
+ this.bodyResizeObserver.observe(bodyInner);
173692
+ }
173693
+ async disconnectedCallback() {
173694
+ window.removeEventListener("keydown", this.handleFullscreenKeydown);
173695
+ this.bodyResizeObserver?.disconnect();
173696
+ this.bodyResizeObserver = null;
173697
+ this.observedBodyInner = null;
173698
+ await super.disconnectedCallback();
173699
+ }
173616
173700
  renderMcpBadges(call) {
173617
173701
  if (!call.mcp) return b2``;
173618
173702
  const annotations = call.mcp.annotations;
@@ -173691,10 +173775,18 @@ _call = new WeakMap();
173691
173775
  _toolRegistry = new WeakMap();
173692
173776
  _expanded2 = new WeakMap();
173693
173777
  _outputExpanded = new WeakMap();
173778
+ _bodyCapPx = new WeakMap();
173779
+ _bodyOverflowing = new WeakMap();
173780
+ _maximized = new WeakMap();
173781
+ _returnFlash = new WeakMap();
173694
173782
  __decorateElement(_init80, 4, "call", _call_dec, _DeesHarnessToolCard, _call);
173695
173783
  __decorateElement(_init80, 4, "toolRegistry", _toolRegistry_dec, _DeesHarnessToolCard, _toolRegistry);
173696
173784
  __decorateElement(_init80, 4, "expanded", _expanded_dec2, _DeesHarnessToolCard, _expanded2);
173697
173785
  __decorateElement(_init80, 4, "outputExpanded", _outputExpanded_dec, _DeesHarnessToolCard, _outputExpanded);
173786
+ __decorateElement(_init80, 4, "bodyCapPx", _bodyCapPx_dec, _DeesHarnessToolCard, _bodyCapPx);
173787
+ __decorateElement(_init80, 4, "bodyOverflowing", _bodyOverflowing_dec, _DeesHarnessToolCard, _bodyOverflowing);
173788
+ __decorateElement(_init80, 4, "maximized", _maximized_dec, _DeesHarnessToolCard, _maximized);
173789
+ __decorateElement(_init80, 4, "returnFlash", _returnFlash_dec, _DeesHarnessToolCard, _returnFlash);
173698
173790
  _DeesHarnessToolCard = __decorateElement(_init80, 0, "DeesHarnessToolCard", _DeesHarnessToolCard_decorators, _DeesHarnessToolCard);
173699
173791
  __name(_DeesHarnessToolCard, "DeesHarnessToolCard");
173700
173792
  __publicField(_DeesHarnessToolCard, "demo", demoFunc55);
@@ -173825,6 +173917,135 @@ __publicField(_DeesHarnessToolCard, "styles", [
173825
173917
  dees-dataview-codebox {
173826
173918
  font-family: var(--dees-font-family);
173827
173919
  }
173920
+
173921
+ /* Three body modes: collapsed (no body), normal (content fits the
173922
+ cap), capped (content taller than the cap clips behind a fade and
173923
+ offers fullscreen). */
173924
+ .bodyClipFrame {
173925
+ position: relative;
173926
+ overflow: hidden;
173927
+ }
173928
+
173929
+ .bodyClipFrame.capped::after {
173930
+ content: '';
173931
+ position: absolute;
173932
+ left: 0;
173933
+ right: 0;
173934
+ bottom: 0;
173935
+ height: 44px;
173936
+ background: linear-gradient(to bottom, transparent, var(--dees-color-bg-primary));
173937
+ pointer-events: none;
173938
+ }
173939
+
173940
+ .maximizeBar {
173941
+ display: flex;
173942
+ align-items: center;
173943
+ justify-content: center;
173944
+ gap: var(--dees-spacing-xs);
173945
+ width: 100%;
173946
+ padding: var(--dees-spacing-xs) var(--dees-spacing-md);
173947
+ border: 0;
173948
+ border-top: 1px solid var(--dees-color-border-subtle);
173949
+ background: transparent;
173950
+ color: var(--dees-color-link);
173951
+ cursor: pointer;
173952
+ font-family: inherit;
173953
+ font-size: var(--dees-font-control-size-sm, 12px);
173954
+ }
173955
+
173956
+ .maximizeBar:hover {
173957
+ background: var(--dees-color-hover);
173958
+ color: var(--dees-color-link-hover);
173959
+ }
173960
+
173961
+ .fullscreenLayer {
173962
+ position: fixed;
173963
+ inset: 0;
173964
+ z-index: 4000;
173965
+ display: grid;
173966
+ place-items: center;
173967
+ padding: 4vh 3vw;
173968
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 55%, transparent);
173969
+ backdrop-filter: blur(6px);
173970
+ }
173971
+
173972
+ .fullscreenPanel {
173973
+ display: flex;
173974
+ flex-direction: column;
173975
+ width: min(1200px, 100%);
173976
+ height: 100%;
173977
+ min-height: 0;
173978
+ border: 1px solid var(--dees-color-border-default);
173979
+ border-radius: var(--dees-radius-lg);
173980
+ background: var(--dees-color-bg-primary);
173981
+ box-shadow: 0 24px 64px rgba(0, 0, 0, 0.4);
173982
+ overflow: hidden;
173983
+ }
173984
+
173985
+ .fullscreenHeader {
173986
+ display: flex;
173987
+ flex: 0 0 auto;
173988
+ align-items: center;
173989
+ gap: var(--dees-spacing-sm);
173990
+ padding: var(--dees-spacing-sm) var(--dees-spacing-md);
173991
+ border-bottom: 1px solid var(--dees-color-border-subtle);
173992
+ }
173993
+
173994
+ .fullscreenTitle {
173995
+ min-width: 0;
173996
+ overflow: hidden;
173997
+ text-overflow: ellipsis;
173998
+ white-space: nowrap;
173999
+ font-size: var(--dees-font-control-size-sm, 12px);
174000
+ font-weight: 650;
174001
+ }
174002
+
174003
+ .fullscreenClose {
174004
+ display: grid;
174005
+ place-items: center;
174006
+ margin-left: auto;
174007
+ padding: 6px;
174008
+ border: 0;
174009
+ border-radius: var(--dees-radius-md);
174010
+ background: transparent;
174011
+ color: var(--dees-color-text-secondary);
174012
+ cursor: pointer;
174013
+ }
174014
+
174015
+ .fullscreenClose:hover {
174016
+ background: var(--dees-color-hover);
174017
+ color: var(--dees-color-text-primary);
174018
+ }
174019
+
174020
+ .fullscreenBody {
174021
+ flex: 1;
174022
+ min-height: 0;
174023
+ overflow: auto;
174024
+ padding: var(--dees-spacing-md);
174025
+ scrollbar-width: thin;
174026
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
174027
+ }
174028
+
174029
+ /* Locates the card after minimizing: a brief highlight pulse. */
174030
+ .harness-card.returnFlash {
174031
+ animation: harness-card-return-flash 1.4s var(--dees-ease-standard);
174032
+ }
174033
+
174034
+ @keyframes harness-card-return-flash {
174035
+ 0%, 55% {
174036
+ box-shadow: 0 0 0 2px var(--dees-color-accent-primary);
174037
+ }
174038
+ 100% {
174039
+ box-shadow: 0 0 0 0 transparent;
174040
+ }
174041
+ }
174042
+
174043
+ @media (prefers-reduced-motion: reduce) {
174044
+ .harness-card.returnFlash {
174045
+ animation: none;
174046
+ box-shadow: 0 0 0 2px var(--dees-color-accent-primary);
174047
+ }
174048
+ }
173828
174049
  `
173829
174050
  ]);
173830
174051
  __runInitializers(_init80, 1, _DeesHarnessToolCard);
@@ -174067,6 +174288,13 @@ __publicField(_DeesHarnessMessage, "styles", [
174067
174288
  boundary instead of widening the whole conversation; scrollable
174068
174289
  payload blocks inside keep their own horizontal scrollbars. */
174069
174290
  overflow-x: clip;
174291
+ /* Virtualized rendering: cards outside the viewport skip style,
174292
+ layout, and paint entirely and re-render when scrolled back —
174293
+ state and DOM stay, so expansion and selection survive. The
174294
+ 'auto' keyword keeps the last rendered size as the placeholder,
174295
+ holding the scrollbar steady. */
174296
+ content-visibility: auto;
174297
+ contain-intrinsic-size: auto 96px;
174070
174298
  font-family: var(--dees-font-family);
174071
174299
  /* entry: new boxes make space for themselves while fading in.
174072
174300
  A keyframes animation (not a transition) so the parent tree's
@@ -199045,7 +199273,7 @@ init_group_runtime();
199045
199273
  // ts_web/00_commitinfo_data.ts
199046
199274
  var commitinfo = {
199047
199275
  name: "@design.estate/dees-catalog",
199048
- version: "4.0.3",
199276
+ version: "4.1.0",
199049
199277
  description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
199050
199278
  };
199051
199279
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '4.0.3',
6
+ version: '4.1.0',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSxzSkFBc0o7Q0FDcEssQ0FBQSJ9
@@ -141,6 +141,13 @@ let DeesHarnessMessage = (() => {
141
141
  boundary instead of widening the whole conversation; scrollable
142
142
  payload blocks inside keep their own horizontal scrollbars. */
143
143
  overflow-x: clip;
144
+ /* Virtualized rendering: cards outside the viewport skip style,
145
+ layout, and paint entirely and re-render when scrolled back —
146
+ state and DOM stay, so expansion and selection survive. The
147
+ 'auto' keyword keeps the last rendered size as the placeholder,
148
+ holding the scrollbar steady. */
149
+ content-visibility: auto;
150
+ contain-intrinsic-size: auto 96px;
144
151
  font-family: var(--dees-font-family);
145
152
  /* entry: new boxes make space for themselves while fading in.
146
153
  A keyframes animation (not a transition) so the parent tree's
@@ -554,4 +561,4 @@ let DeesHarnessMessage = (() => {
554
561
  return DeesHarnessMessage = _classThis;
555
562
  })();
556
563
  export { DeesHarnessMessage };
557
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLW1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2RlZXMtaGFybmVzcy1tZXNzYWdlL2RlZXMtaGFybmVzcy1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUczRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8scURBQXFELENBQUM7QUFDN0QsT0FBTyxxREFBcUQsQ0FBQztBQUM3RCxPQUFPLDhDQUE4QyxDQUFDO0FBUXRELE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBRXBDOzs7OztHQUtHO0lBRVUsa0JBQWtCOzRCQUQ5QixhQUFhLENBQUMsc0JBQXNCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FBbkIsU0FBUSxXQUFXOzs7O21DQUloRCxR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
564
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLW1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2RlZXMtaGFybmVzcy1tZXNzYWdlL2RlZXMtaGFybmVzcy1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUczRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8scURBQXFELENBQUM7QUFDN0QsT0FBTyxxREFBcUQsQ0FBQztBQUM3RCxPQUFPLDhDQUE4QyxDQUFDO0FBUXRELE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBRXBDOzs7OztHQUtHO0lBRVUsa0JBQWtCOzRCQUQ5QixhQUFhLENBQUMsc0JBQXNCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FBbkIsU0FBUSxXQUFXOzs7O21DQUloRCxR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
@@ -23,12 +23,24 @@ export declare class DeesHarnessToolCard extends DeesElement {
23
23
  accessor toolRegistry: DeesHarnessToolRegistry;
24
24
  accessor expanded: boolean | undefined;
25
25
  accessor outputExpanded: boolean;
26
+ /** Body height cap; content beyond it clips and offers fullscreen. */
27
+ accessor bodyCapPx: number;
28
+ accessor bodyOverflowing: boolean;
29
+ accessor maximized: boolean;
30
+ accessor returnFlash: boolean;
31
+ private bodyResizeObserver;
32
+ private observedBodyInner;
26
33
  static styles: import("@design.estate/dees-element").CSSResult[];
27
34
  private get descriptor();
28
35
  /** call with mcp meta derived from the name when the adapter didn't set it */
29
36
  private get enrichedCall();
30
37
  get isOpen(): boolean;
31
38
  render(): TemplateResult;
39
+ private readonly openFullscreen;
40
+ private readonly closeFullscreen;
41
+ private readonly handleFullscreenKeydown;
42
+ updated(changedProperties: Map<PropertyKey, unknown>): void;
43
+ disconnectedCallback(): Promise<void>;
32
44
  private renderMcpBadges;
33
45
  private renderBody;
34
46
  private createHelpers;
@@ -67,6 +67,18 @@ let DeesHarnessToolCard = (() => {
67
67
  let _outputExpanded_decorators;
68
68
  let _outputExpanded_initializers = [];
69
69
  let _outputExpanded_extraInitializers = [];
70
+ let _bodyCapPx_decorators;
71
+ let _bodyCapPx_initializers = [];
72
+ let _bodyCapPx_extraInitializers = [];
73
+ let _bodyOverflowing_decorators;
74
+ let _bodyOverflowing_initializers = [];
75
+ let _bodyOverflowing_extraInitializers = [];
76
+ let _maximized_decorators;
77
+ let _maximized_initializers = [];
78
+ let _maximized_extraInitializers = [];
79
+ let _returnFlash_decorators;
80
+ let _returnFlash_initializers = [];
81
+ let _returnFlash_extraInitializers = [];
70
82
  var DeesHarnessToolCard = class extends _classSuper {
71
83
  static { _classThis = this; }
72
84
  static {
@@ -75,10 +87,18 @@ let DeesHarnessToolCard = (() => {
75
87
  _toolRegistry_decorators = [property({ attribute: false })];
76
88
  _expanded_decorators = [state()];
77
89
  _outputExpanded_decorators = [state()];
90
+ _bodyCapPx_decorators = [property({ type: Number })];
91
+ _bodyOverflowing_decorators = [state()];
92
+ _maximized_decorators = [state()];
93
+ _returnFlash_decorators = [state()];
78
94
  __esDecorate(this, null, _call_decorators, { kind: "accessor", name: "call", static: false, private: false, access: { has: obj => "call" in obj, get: obj => obj.call, set: (obj, value) => { obj.call = value; } }, metadata: _metadata }, _call_initializers, _call_extraInitializers);
79
95
  __esDecorate(this, null, _toolRegistry_decorators, { kind: "accessor", name: "toolRegistry", static: false, private: false, access: { has: obj => "toolRegistry" in obj, get: obj => obj.toolRegistry, set: (obj, value) => { obj.toolRegistry = value; } }, metadata: _metadata }, _toolRegistry_initializers, _toolRegistry_extraInitializers);
80
96
  __esDecorate(this, null, _expanded_decorators, { kind: "accessor", name: "expanded", static: false, private: false, access: { has: obj => "expanded" in obj, get: obj => obj.expanded, set: (obj, value) => { obj.expanded = value; } }, metadata: _metadata }, _expanded_initializers, _expanded_extraInitializers);
81
97
  __esDecorate(this, null, _outputExpanded_decorators, { kind: "accessor", name: "outputExpanded", static: false, private: false, access: { has: obj => "outputExpanded" in obj, get: obj => obj.outputExpanded, set: (obj, value) => { obj.outputExpanded = value; } }, metadata: _metadata }, _outputExpanded_initializers, _outputExpanded_extraInitializers);
98
+ __esDecorate(this, null, _bodyCapPx_decorators, { kind: "accessor", name: "bodyCapPx", static: false, private: false, access: { has: obj => "bodyCapPx" in obj, get: obj => obj.bodyCapPx, set: (obj, value) => { obj.bodyCapPx = value; } }, metadata: _metadata }, _bodyCapPx_initializers, _bodyCapPx_extraInitializers);
99
+ __esDecorate(this, null, _bodyOverflowing_decorators, { kind: "accessor", name: "bodyOverflowing", static: false, private: false, access: { has: obj => "bodyOverflowing" in obj, get: obj => obj.bodyOverflowing, set: (obj, value) => { obj.bodyOverflowing = value; } }, metadata: _metadata }, _bodyOverflowing_initializers, _bodyOverflowing_extraInitializers);
100
+ __esDecorate(this, null, _maximized_decorators, { kind: "accessor", name: "maximized", static: false, private: false, access: { has: obj => "maximized" in obj, get: obj => obj.maximized, set: (obj, value) => { obj.maximized = value; } }, metadata: _metadata }, _maximized_initializers, _maximized_extraInitializers);
101
+ __esDecorate(this, null, _returnFlash_decorators, { kind: "accessor", name: "returnFlash", static: false, private: false, access: { has: obj => "returnFlash" in obj, get: obj => obj.returnFlash, set: (obj, value) => { obj.returnFlash = value; } }, metadata: _metadata }, _returnFlash_initializers, _returnFlash_extraInitializers);
82
102
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
83
103
  DeesHarnessToolCard = _classThis = _classDescriptor.value;
84
104
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -97,6 +117,21 @@ let DeesHarnessToolCard = (() => {
97
117
  #outputExpanded_accessor_storage = (__runInitializers(this, _expanded_extraInitializers), __runInitializers(this, _outputExpanded_initializers, false));
98
118
  get outputExpanded() { return this.#outputExpanded_accessor_storage; }
99
119
  set outputExpanded(value) { this.#outputExpanded_accessor_storage = value; }
120
+ #bodyCapPx_accessor_storage = (__runInitializers(this, _outputExpanded_extraInitializers), __runInitializers(this, _bodyCapPx_initializers, 360));
121
+ /** Body height cap; content beyond it clips and offers fullscreen. */
122
+ get bodyCapPx() { return this.#bodyCapPx_accessor_storage; }
123
+ set bodyCapPx(value) { this.#bodyCapPx_accessor_storage = value; }
124
+ #bodyOverflowing_accessor_storage = (__runInitializers(this, _bodyCapPx_extraInitializers), __runInitializers(this, _bodyOverflowing_initializers, false));
125
+ get bodyOverflowing() { return this.#bodyOverflowing_accessor_storage; }
126
+ set bodyOverflowing(value) { this.#bodyOverflowing_accessor_storage = value; }
127
+ #maximized_accessor_storage = (__runInitializers(this, _bodyOverflowing_extraInitializers), __runInitializers(this, _maximized_initializers, false));
128
+ get maximized() { return this.#maximized_accessor_storage; }
129
+ set maximized(value) { this.#maximized_accessor_storage = value; }
130
+ #returnFlash_accessor_storage = (__runInitializers(this, _maximized_extraInitializers), __runInitializers(this, _returnFlash_initializers, false));
131
+ get returnFlash() { return this.#returnFlash_accessor_storage; }
132
+ set returnFlash(value) { this.#returnFlash_accessor_storage = value; }
133
+ bodyResizeObserver = (__runInitializers(this, _returnFlash_extraInitializers), null);
134
+ observedBodyInner = null;
100
135
  static styles = [
101
136
  themeDefaultStyles,
102
137
  cssManager.defaultStyles,
@@ -223,6 +258,135 @@ let DeesHarnessToolCard = (() => {
223
258
  dees-dataview-codebox {
224
259
  font-family: var(--dees-font-family);
225
260
  }
261
+
262
+ /* Three body modes: collapsed (no body), normal (content fits the
263
+ cap), capped (content taller than the cap clips behind a fade and
264
+ offers fullscreen). */
265
+ .bodyClipFrame {
266
+ position: relative;
267
+ overflow: hidden;
268
+ }
269
+
270
+ .bodyClipFrame.capped::after {
271
+ content: '';
272
+ position: absolute;
273
+ left: 0;
274
+ right: 0;
275
+ bottom: 0;
276
+ height: 44px;
277
+ background: linear-gradient(to bottom, transparent, var(--dees-color-bg-primary));
278
+ pointer-events: none;
279
+ }
280
+
281
+ .maximizeBar {
282
+ display: flex;
283
+ align-items: center;
284
+ justify-content: center;
285
+ gap: var(--dees-spacing-xs);
286
+ width: 100%;
287
+ padding: var(--dees-spacing-xs) var(--dees-spacing-md);
288
+ border: 0;
289
+ border-top: 1px solid var(--dees-color-border-subtle);
290
+ background: transparent;
291
+ color: var(--dees-color-link);
292
+ cursor: pointer;
293
+ font-family: inherit;
294
+ font-size: var(--dees-font-control-size-sm, 12px);
295
+ }
296
+
297
+ .maximizeBar:hover {
298
+ background: var(--dees-color-hover);
299
+ color: var(--dees-color-link-hover);
300
+ }
301
+
302
+ .fullscreenLayer {
303
+ position: fixed;
304
+ inset: 0;
305
+ z-index: 4000;
306
+ display: grid;
307
+ place-items: center;
308
+ padding: 4vh 3vw;
309
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 55%, transparent);
310
+ backdrop-filter: blur(6px);
311
+ }
312
+
313
+ .fullscreenPanel {
314
+ display: flex;
315
+ flex-direction: column;
316
+ width: min(1200px, 100%);
317
+ height: 100%;
318
+ min-height: 0;
319
+ border: 1px solid var(--dees-color-border-default);
320
+ border-radius: var(--dees-radius-lg);
321
+ background: var(--dees-color-bg-primary);
322
+ box-shadow: 0 24px 64px rgba(0, 0, 0, 0.4);
323
+ overflow: hidden;
324
+ }
325
+
326
+ .fullscreenHeader {
327
+ display: flex;
328
+ flex: 0 0 auto;
329
+ align-items: center;
330
+ gap: var(--dees-spacing-sm);
331
+ padding: var(--dees-spacing-sm) var(--dees-spacing-md);
332
+ border-bottom: 1px solid var(--dees-color-border-subtle);
333
+ }
334
+
335
+ .fullscreenTitle {
336
+ min-width: 0;
337
+ overflow: hidden;
338
+ text-overflow: ellipsis;
339
+ white-space: nowrap;
340
+ font-size: var(--dees-font-control-size-sm, 12px);
341
+ font-weight: 650;
342
+ }
343
+
344
+ .fullscreenClose {
345
+ display: grid;
346
+ place-items: center;
347
+ margin-left: auto;
348
+ padding: 6px;
349
+ border: 0;
350
+ border-radius: var(--dees-radius-md);
351
+ background: transparent;
352
+ color: var(--dees-color-text-secondary);
353
+ cursor: pointer;
354
+ }
355
+
356
+ .fullscreenClose:hover {
357
+ background: var(--dees-color-hover);
358
+ color: var(--dees-color-text-primary);
359
+ }
360
+
361
+ .fullscreenBody {
362
+ flex: 1;
363
+ min-height: 0;
364
+ overflow: auto;
365
+ padding: var(--dees-spacing-md);
366
+ scrollbar-width: thin;
367
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
368
+ }
369
+
370
+ /* Locates the card after minimizing: a brief highlight pulse. */
371
+ .harness-card.returnFlash {
372
+ animation: harness-card-return-flash 1.4s var(--dees-ease-standard);
373
+ }
374
+
375
+ @keyframes harness-card-return-flash {
376
+ 0%, 55% {
377
+ box-shadow: 0 0 0 2px var(--dees-color-accent-primary);
378
+ }
379
+ 100% {
380
+ box-shadow: 0 0 0 0 transparent;
381
+ }
382
+ }
383
+
384
+ @media (prefers-reduced-motion: reduce) {
385
+ .harness-card.returnFlash {
386
+ animation: none;
387
+ box-shadow: 0 0 0 2px var(--dees-color-accent-primary);
388
+ }
389
+ }
226
390
  `,
227
391
  ];
228
392
  get descriptor() {
@@ -253,7 +417,13 @@ let DeesHarnessToolCard = (() => {
253
417
  const statusTone = call.isError ? 'error' : call.status === 'completed' ? 'success' : call.status;
254
418
  const duration = harnessFormatDuration(call.startedAt, call.finishedAt);
255
419
  return html `
256
- <div class="harness-card status-${call.isError ? 'error' : call.status} ${descriptor.destructive ? 'destructive' : ''}">
420
+ <div class="harness-card status-${call.isError ? 'error' : call.status} ${descriptor.destructive ? 'destructive' : ''} ${this.returnFlash ? 'returnFlash' : ''}"
421
+ @animationend=${(event) => {
422
+ if (event.animationName === 'harness-card-return-flash') {
423
+ this.returnFlash = false;
424
+ }
425
+ }}
426
+ >
257
427
  <button
258
428
  class="header"
259
429
  type="button"
@@ -277,10 +447,94 @@ let DeesHarnessToolCard = (() => {
277
447
  </span>
278
448
  </span>
279
449
  </button>
280
- ${this.isOpen ? html `<div class="body">${this.renderBody(call)}</div>` : ''}
450
+ ${this.isOpen && !this.maximized
451
+ ? html `
452
+ <div
453
+ class="bodyClipFrame ${this.bodyOverflowing ? 'capped' : ''}"
454
+ style=${`max-height: ${this.bodyCapPx}px;`}
455
+ >
456
+ <div class="body bodyInner">${this.renderBody(call)}</div>
457
+ </div>
458
+ ${this.bodyOverflowing
459
+ ? html `
460
+ <button class="maximizeBar" type="button" @click=${this.openFullscreen}>
461
+ <dees-icon icon="lucide:Maximize2" iconSize="12"></dees-icon>
462
+ Show everything
463
+ </button>
464
+ `
465
+ : ''}
466
+ `
467
+ : ''}
281
468
  </div>
469
+ ${this.maximized
470
+ ? html `
471
+ <div class="fullscreenLayer" @click=${(event) => {
472
+ if (event.target === event.currentTarget)
473
+ this.closeFullscreen();
474
+ }}>
475
+ <div class="fullscreenPanel">
476
+ <header class="fullscreenHeader">
477
+ <dees-icon .icon=${descriptor.icon} iconSize="15"></dees-icon>
478
+ <span class="fullscreenTitle">${label}${subtitle ? ` · ${subtitle}` : ''}</span>
479
+ <button class="fullscreenClose" type="button" @click=${this.closeFullscreen}>
480
+ <dees-icon icon="lucide:Minimize2" iconSize="15"></dees-icon>
481
+ </button>
482
+ </header>
483
+ <div class="fullscreenBody">${this.renderBody(call)}</div>
484
+ </div>
485
+ </div>
486
+ `
487
+ : ''}
282
488
  `;
283
489
  }
490
+ openFullscreen = () => {
491
+ this.maximized = true;
492
+ window.addEventListener('keydown', this.handleFullscreenKeydown);
493
+ };
494
+ closeFullscreen = () => {
495
+ window.removeEventListener('keydown', this.handleFullscreenKeydown);
496
+ if (!this.maximized)
497
+ return;
498
+ this.maximized = false;
499
+ // The flash locates the card the user was just reading in fullscreen.
500
+ this.returnFlash = true;
501
+ requestAnimationFrame(() => {
502
+ this.scrollIntoView({ block: 'center', behavior: 'smooth' });
503
+ });
504
+ };
505
+ handleFullscreenKeydown = (event) => {
506
+ if (event.key === 'Escape') {
507
+ event.preventDefault();
508
+ this.closeFullscreen();
509
+ }
510
+ };
511
+ updated(changedProperties) {
512
+ super.updated(changedProperties);
513
+ const bodyInner = this.shadowRoot?.querySelector('.bodyInner') ?? null;
514
+ if (bodyInner === this.observedBodyInner)
515
+ return;
516
+ this.bodyResizeObserver?.disconnect();
517
+ this.observedBodyInner = bodyInner;
518
+ if (!bodyInner) {
519
+ this.bodyOverflowing = false;
520
+ return;
521
+ }
522
+ this.bodyResizeObserver ??= new ResizeObserver(() => {
523
+ const inner = this.observedBodyInner;
524
+ if (!inner)
525
+ return;
526
+ // small slack so a few px never trigger the cap chrome
527
+ this.bodyOverflowing = inner.scrollHeight > this.bodyCapPx + 24;
528
+ });
529
+ this.bodyResizeObserver.observe(bodyInner);
530
+ }
531
+ async disconnectedCallback() {
532
+ window.removeEventListener('keydown', this.handleFullscreenKeydown);
533
+ this.bodyResizeObserver?.disconnect();
534
+ this.bodyResizeObserver = null;
535
+ this.observedBodyInner = null;
536
+ await super.disconnectedCallback();
537
+ }
284
538
  renderMcpBadges(call) {
285
539
  if (!call.mcp)
286
540
  return html ``;
@@ -357,10 +611,6 @@ let DeesHarnessToolCard = (() => {
357
611
  `,
358
612
  };
359
613
  }
360
- constructor() {
361
- super(...arguments);
362
- __runInitializers(this, _outputExpanded_extraInitializers);
363
- }
364
614
  static {
365
615
  __runInitializers(_classThis, _classExtraInitializers);
366
616
  }
@@ -368,4 +618,4 @@ let DeesHarnessToolCard = (() => {
368
618
  return DeesHarnessToolCard = _classThis;
369
619
  })();
370
620
  export { DeesHarnessToolCard };
371
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXRvb2wtY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXRvb2wtY2FyZC9kZWVzLWhhcm5lc3MtdG9vbC1jYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsWUFBWSxHQUdiLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9FLE9BQU8sK0RBQStELENBQUM7QUFDdkUsT0FBTyx1RUFBdUUsQ0FBQztBQUMvRSxPQUFPLGlEQUFpRCxDQUFDO0FBQ3pELE9BQU8sOENBQThDLENBQUM7QUFRdEQ7Ozs7O0dBS0c7SUFFVSxtQkFBbUI7NEJBRC9CLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQzs7OztzQkFDQyxXQUFXOzs7Ozs7Ozs7Ozs7O21DQUFuQixTQUFRLFdBQVc7Ozs7Z0NBSWpELFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3Q0FHOUIsUUFBUSxDQUFD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
621
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXRvb2wtY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXRvb2wtY2FyZC9kZWVzLWhhcm5lc3MtdG9vbC1jYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsWUFBWSxHQUdiLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9FLE9BQU8sK0RBQStELENBQUM7QUFDdkUsT0FBTyx1RUFBdUUsQ0FBQztBQUMvRSxPQUFPLGlEQUFpRCxDQUFDO0FBQ3pELE9BQU8sOENBQThDLENBQUM7QUFRdEQ7Ozs7O0dBS0c7SUFFVSxtQkFBbUI7NEJBRC9CLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQzs7OztzQkFDQyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DQUFuQixTQUFRLFdBQVc7Ozs7Z0NBSWpELFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3Q0FH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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design.estate/dees-catalog",
3
- "version": "4.0.3",
3
+ "version": "4.1.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",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '4.0.3',
6
+ version: '4.1.0',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  }
@@ -81,6 +81,13 @@ export class DeesHarnessMessage extends DeesElement {
81
81
  boundary instead of widening the whole conversation; scrollable
82
82
  payload blocks inside keep their own horizontal scrollbars. */
83
83
  overflow-x: clip;
84
+ /* Virtualized rendering: cards outside the viewport skip style,
85
+ layout, and paint entirely and re-render when scrolled back —
86
+ state and DOM stay, so expansion and selection survive. The
87
+ 'auto' keyword keeps the last rendered size as the placeholder,
88
+ holding the scrollbar steady. */
89
+ content-visibility: auto;
90
+ contain-intrinsic-size: auto 96px;
84
91
  font-family: var(--dees-font-family);
85
92
  /* entry: new boxes make space for themselves while fading in.
86
93
  A keyframes animation (not a transition) so the parent tree's
@@ -54,6 +54,22 @@ export class DeesHarnessToolCard extends DeesElement {
54
54
  @state()
55
55
  accessor outputExpanded: boolean = false;
56
56
 
57
+ /** Body height cap; content beyond it clips and offers fullscreen. */
58
+ @property({ type: Number })
59
+ accessor bodyCapPx: number = 360;
60
+
61
+ @state()
62
+ accessor bodyOverflowing: boolean = false;
63
+
64
+ @state()
65
+ accessor maximized: boolean = false;
66
+
67
+ @state()
68
+ accessor returnFlash: boolean = false;
69
+
70
+ private bodyResizeObserver: ResizeObserver | null = null;
71
+ private observedBodyInner: Element | null = null;
72
+
57
73
  public static styles = [
58
74
  themeDefaultStyles,
59
75
  cssManager.defaultStyles,
@@ -180,6 +196,135 @@ export class DeesHarnessToolCard extends DeesElement {
180
196
  dees-dataview-codebox {
181
197
  font-family: var(--dees-font-family);
182
198
  }
199
+
200
+ /* Three body modes: collapsed (no body), normal (content fits the
201
+ cap), capped (content taller than the cap clips behind a fade and
202
+ offers fullscreen). */
203
+ .bodyClipFrame {
204
+ position: relative;
205
+ overflow: hidden;
206
+ }
207
+
208
+ .bodyClipFrame.capped::after {
209
+ content: '';
210
+ position: absolute;
211
+ left: 0;
212
+ right: 0;
213
+ bottom: 0;
214
+ height: 44px;
215
+ background: linear-gradient(to bottom, transparent, var(--dees-color-bg-primary));
216
+ pointer-events: none;
217
+ }
218
+
219
+ .maximizeBar {
220
+ display: flex;
221
+ align-items: center;
222
+ justify-content: center;
223
+ gap: var(--dees-spacing-xs);
224
+ width: 100%;
225
+ padding: var(--dees-spacing-xs) var(--dees-spacing-md);
226
+ border: 0;
227
+ border-top: 1px solid var(--dees-color-border-subtle);
228
+ background: transparent;
229
+ color: var(--dees-color-link);
230
+ cursor: pointer;
231
+ font-family: inherit;
232
+ font-size: var(--dees-font-control-size-sm, 12px);
233
+ }
234
+
235
+ .maximizeBar:hover {
236
+ background: var(--dees-color-hover);
237
+ color: var(--dees-color-link-hover);
238
+ }
239
+
240
+ .fullscreenLayer {
241
+ position: fixed;
242
+ inset: 0;
243
+ z-index: 4000;
244
+ display: grid;
245
+ place-items: center;
246
+ padding: 4vh 3vw;
247
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 55%, transparent);
248
+ backdrop-filter: blur(6px);
249
+ }
250
+
251
+ .fullscreenPanel {
252
+ display: flex;
253
+ flex-direction: column;
254
+ width: min(1200px, 100%);
255
+ height: 100%;
256
+ min-height: 0;
257
+ border: 1px solid var(--dees-color-border-default);
258
+ border-radius: var(--dees-radius-lg);
259
+ background: var(--dees-color-bg-primary);
260
+ box-shadow: 0 24px 64px rgba(0, 0, 0, 0.4);
261
+ overflow: hidden;
262
+ }
263
+
264
+ .fullscreenHeader {
265
+ display: flex;
266
+ flex: 0 0 auto;
267
+ align-items: center;
268
+ gap: var(--dees-spacing-sm);
269
+ padding: var(--dees-spacing-sm) var(--dees-spacing-md);
270
+ border-bottom: 1px solid var(--dees-color-border-subtle);
271
+ }
272
+
273
+ .fullscreenTitle {
274
+ min-width: 0;
275
+ overflow: hidden;
276
+ text-overflow: ellipsis;
277
+ white-space: nowrap;
278
+ font-size: var(--dees-font-control-size-sm, 12px);
279
+ font-weight: 650;
280
+ }
281
+
282
+ .fullscreenClose {
283
+ display: grid;
284
+ place-items: center;
285
+ margin-left: auto;
286
+ padding: 6px;
287
+ border: 0;
288
+ border-radius: var(--dees-radius-md);
289
+ background: transparent;
290
+ color: var(--dees-color-text-secondary);
291
+ cursor: pointer;
292
+ }
293
+
294
+ .fullscreenClose:hover {
295
+ background: var(--dees-color-hover);
296
+ color: var(--dees-color-text-primary);
297
+ }
298
+
299
+ .fullscreenBody {
300
+ flex: 1;
301
+ min-height: 0;
302
+ overflow: auto;
303
+ padding: var(--dees-spacing-md);
304
+ scrollbar-width: thin;
305
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
306
+ }
307
+
308
+ /* Locates the card after minimizing: a brief highlight pulse. */
309
+ .harness-card.returnFlash {
310
+ animation: harness-card-return-flash 1.4s var(--dees-ease-standard);
311
+ }
312
+
313
+ @keyframes harness-card-return-flash {
314
+ 0%, 55% {
315
+ box-shadow: 0 0 0 2px var(--dees-color-accent-primary);
316
+ }
317
+ 100% {
318
+ box-shadow: 0 0 0 0 transparent;
319
+ }
320
+ }
321
+
322
+ @media (prefers-reduced-motion: reduce) {
323
+ .harness-card.returnFlash {
324
+ animation: none;
325
+ box-shadow: 0 0 0 2px var(--dees-color-accent-primary);
326
+ }
327
+ }
183
328
  `,
184
329
  ];
185
330
 
@@ -210,7 +355,13 @@ export class DeesHarnessToolCard extends DeesElement {
210
355
  const statusTone = call.isError ? 'error' : call.status === 'completed' ? 'success' : call.status;
211
356
  const duration = harnessFormatDuration(call.startedAt, call.finishedAt);
212
357
  return html`
213
- <div class="harness-card status-${call.isError ? 'error' : call.status} ${descriptor.destructive ? 'destructive' : ''}">
358
+ <div class="harness-card status-${call.isError ? 'error' : call.status} ${descriptor.destructive ? 'destructive' : ''} ${this.returnFlash ? 'returnFlash' : ''}"
359
+ @animationend=${(event: AnimationEvent) => {
360
+ if (event.animationName === 'harness-card-return-flash') {
361
+ this.returnFlash = false;
362
+ }
363
+ }}
364
+ >
214
365
  <button
215
366
  class="header"
216
367
  type="button"
@@ -234,11 +385,96 @@ export class DeesHarnessToolCard extends DeesElement {
234
385
  </span>
235
386
  </span>
236
387
  </button>
237
- ${this.isOpen ? html`<div class="body">${this.renderBody(call)}</div>` : ''}
388
+ ${this.isOpen && !this.maximized
389
+ ? html`
390
+ <div
391
+ class="bodyClipFrame ${this.bodyOverflowing ? 'capped' : ''}"
392
+ style=${`max-height: ${this.bodyCapPx}px;`}
393
+ >
394
+ <div class="body bodyInner">${this.renderBody(call)}</div>
395
+ </div>
396
+ ${this.bodyOverflowing
397
+ ? html`
398
+ <button class="maximizeBar" type="button" @click=${this.openFullscreen}>
399
+ <dees-icon icon="lucide:Maximize2" iconSize="12"></dees-icon>
400
+ Show everything
401
+ </button>
402
+ `
403
+ : ''}
404
+ `
405
+ : ''}
238
406
  </div>
407
+ ${this.maximized
408
+ ? html`
409
+ <div class="fullscreenLayer" @click=${(event: Event) => {
410
+ if (event.target === event.currentTarget) this.closeFullscreen();
411
+ }}>
412
+ <div class="fullscreenPanel">
413
+ <header class="fullscreenHeader">
414
+ <dees-icon .icon=${descriptor.icon} iconSize="15"></dees-icon>
415
+ <span class="fullscreenTitle">${label}${subtitle ? ` · ${subtitle}` : ''}</span>
416
+ <button class="fullscreenClose" type="button" @click=${this.closeFullscreen}>
417
+ <dees-icon icon="lucide:Minimize2" iconSize="15"></dees-icon>
418
+ </button>
419
+ </header>
420
+ <div class="fullscreenBody">${this.renderBody(call)}</div>
421
+ </div>
422
+ </div>
423
+ `
424
+ : ''}
239
425
  `;
240
426
  }
241
427
 
428
+ private readonly openFullscreen = (): void => {
429
+ this.maximized = true;
430
+ window.addEventListener('keydown', this.handleFullscreenKeydown);
431
+ };
432
+
433
+ private readonly closeFullscreen = (): void => {
434
+ window.removeEventListener('keydown', this.handleFullscreenKeydown);
435
+ if (!this.maximized) return;
436
+ this.maximized = false;
437
+ // The flash locates the card the user was just reading in fullscreen.
438
+ this.returnFlash = true;
439
+ requestAnimationFrame(() => {
440
+ this.scrollIntoView({ block: 'center', behavior: 'smooth' });
441
+ });
442
+ };
443
+
444
+ private readonly handleFullscreenKeydown = (event: KeyboardEvent): void => {
445
+ if (event.key === 'Escape') {
446
+ event.preventDefault();
447
+ this.closeFullscreen();
448
+ }
449
+ };
450
+
451
+ public updated(changedProperties: Map<PropertyKey, unknown>): void {
452
+ super.updated(changedProperties);
453
+ const bodyInner = this.shadowRoot?.querySelector('.bodyInner') ?? null;
454
+ if (bodyInner === this.observedBodyInner) return;
455
+ this.bodyResizeObserver?.disconnect();
456
+ this.observedBodyInner = bodyInner;
457
+ if (!bodyInner) {
458
+ this.bodyOverflowing = false;
459
+ return;
460
+ }
461
+ this.bodyResizeObserver ??= new ResizeObserver(() => {
462
+ const inner = this.observedBodyInner;
463
+ if (!inner) return;
464
+ // small slack so a few px never trigger the cap chrome
465
+ this.bodyOverflowing = inner.scrollHeight > this.bodyCapPx + 24;
466
+ });
467
+ this.bodyResizeObserver.observe(bodyInner);
468
+ }
469
+
470
+ public async disconnectedCallback(): Promise<void> {
471
+ window.removeEventListener('keydown', this.handleFullscreenKeydown);
472
+ this.bodyResizeObserver?.disconnect();
473
+ this.bodyResizeObserver = null;
474
+ this.observedBodyInner = null;
475
+ await super.disconnectedCallback();
476
+ }
477
+
242
478
  private renderMcpBadges(call: IHarnessToolCall): TemplateResult {
243
479
  if (!call.mcp) return html``;
244
480
  const annotations = call.mcp.annotations;