@design.estate/dees-catalog 12.0.0 → 12.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.
@@ -182712,6 +182712,11 @@ var _DeesTerminalView = class _DeesTerminalView extends (_a102 = DeesElement, _f
182712
182712
  __publicField(this, "pendingWriteBytes", 0);
182713
182713
  __publicField(this, "pendingWritesDropped", false);
182714
182714
  __publicField(this, "setupPromise");
182715
+ /**
182716
+ * Set only by an explicit `focus()` that arrived before the terminal existed. Nothing else sets
182717
+ * it, so a re-render, a write, or a resize can never move the caret into this element.
182718
+ */
182719
+ __publicField(this, "focusWhenReady", false);
182715
182720
  __publicField(this, "readyPending", true);
182716
182721
  __publicField(this, "readyResolve", /* @__PURE__ */ __name(() => void 0, "readyResolve"));
182717
182722
  __publicField(this, "readyReject", /* @__PURE__ */ __name(() => void 0, "readyReject"));
@@ -182756,8 +182761,33 @@ var _DeesTerminalView = class _DeesTerminalView extends (_a102 = DeesElement, _f
182756
182761
  this.pendingWriteBytes = chunkByteLength(RIS);
182757
182762
  this.pendingWritesDropped = false;
182758
182763
  }
182759
- focus() {
182760
- this.terminal?.focus();
182764
+ /**
182765
+ * Moves the caret into the terminal's input surface, so the next keystroke goes to the pty
182766
+ * rather than to whatever the page focused last. This is the call a host makes when the user
182767
+ * selects a terminal in a list.
182768
+ *
182769
+ * The terminal is created asynchronously — the xterm modules are loaded on first connection —
182770
+ * so a call that arrives before it exists is remembered and applied once it is ready, exactly
182771
+ * once. The same applies to an element that is focused while detached and then reattached: the
182772
+ * pending request is dropped on disconnect, because by then the user's intent has expired, and
182773
+ * a fresh `focus()` after the move is what a host should issue.
182774
+ *
182775
+ * Only this method arms that behaviour; re-renders, buffered output and background updates
182776
+ * never steal focus.
182777
+ */
182778
+ focus(optionsArg) {
182779
+ const terminal = this.terminal;
182780
+ if (terminal && this.isConnected) {
182781
+ this.focusWhenReady = false;
182782
+ terminal.focus();
182783
+ return;
182784
+ }
182785
+ void optionsArg;
182786
+ this.focusWhenReady = true;
182787
+ }
182788
+ /** True while an explicit `focus()` is waiting for the terminal to come up. */
182789
+ get focusPending() {
182790
+ return this.focusWhenReady;
182761
182791
  }
182762
182792
  /** Current grid size, or undefined while no terminal is live. */
182763
182793
  get currentSize() {
@@ -182882,6 +182912,10 @@ var _DeesTerminalView = class _DeesTerminalView extends (_a102 = DeesElement, _f
182882
182912
  this.refit();
182883
182913
  this.resizeObserver = new ResizeObserver(() => this.refit());
182884
182914
  this.resizeObserver.observe(host);
182915
+ if (this.focusWhenReady) {
182916
+ this.focusWhenReady = false;
182917
+ terminal.focus();
182918
+ }
182885
182919
  this.readyResolve();
182886
182920
  }
182887
182921
  refit() {
@@ -182912,6 +182946,7 @@ var _DeesTerminalView = class _DeesTerminalView extends (_a102 = DeesElement, _f
182912
182946
  this.fitAddon = void 0;
182913
182947
  this.lastReportedSize = "";
182914
182948
  this.setupPromise = void 0;
182949
+ this.focusWhenReady = false;
182915
182950
  if (this.readyPending) {
182916
182951
  this.readyReject(
182917
182952
  new Error("dees-terminal-view was disconnected before the terminal became ready")
@@ -224465,7 +224500,7 @@ init_group_runtime();
224465
224500
  // ts_web/00_commitinfo_data.ts
224466
224501
  var commitinfo = {
224467
224502
  name: "@design.estate/dees-catalog",
224468
- version: "12.0.0",
224503
+ version: "12.1.0",
224469
224504
  description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
224470
224505
  };
224471
224506