@industry-theme/xterm-terminal-panel 0.4.4 → 0.4.6

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/dist/index.css CHANGED
@@ -5,6 +5,10 @@
5
5
  padding: 0;
6
6
  }
7
7
 
8
+ .terminal-container-fix.terminal-rewriting .xterm-screen {
9
+ visibility: hidden;
10
+ }
11
+
8
12
  .terminal-container-fix .xterm {
9
13
  font-variant-ligatures: none;
10
14
  -webkit-font-smoothing: antialiased;
package/dist/index.js CHANGED
@@ -339,6 +339,18 @@ var ThemedTerminal = forwardRef(({
339
339
  } catch (e) {
340
340
  console.warn("[ThemedTerminal] WebGL not available, using canvas renderer:", e);
341
341
  }
342
+ let lastBaseY = 0;
343
+ let isRewriteInProgress = false;
344
+ let rewriteStabilizeTimeout = null;
345
+ const setRewriteVisibility = (hidden) => {
346
+ if (terminalRef.current) {
347
+ if (hidden) {
348
+ terminalRef.current.classList.add("terminal-rewriting");
349
+ } else {
350
+ terminalRef.current.classList.remove("terminal-rewriting");
351
+ }
352
+ }
353
+ };
342
354
  const scrollDisposable = term.onScroll(() => {
343
355
  const scrollY = term.buffer.active.viewportY;
344
356
  const scrollback2 = term.buffer.active.baseY;
@@ -351,9 +363,35 @@ var ThemedTerminal = forwardRef(({
351
363
  rows: term.rows,
352
364
  isAtTop,
353
365
  isAtBottom,
354
- isScrollLocked: isScrollLockedRef.current
366
+ isScrollLocked: isScrollLockedRef.current,
367
+ isRewriteInProgress
355
368
  });
356
369
  }
370
+ if (lastBaseY > 50 && scrollback2 < lastBaseY * 0.1) {
371
+ if (DEBUG_RESIZE) {
372
+ console.log("[ThemedTerminal] Content rewrite STARTED:", {
373
+ previousBaseY: lastBaseY,
374
+ currentBaseY: scrollback2
375
+ });
376
+ }
377
+ isRewriteInProgress = true;
378
+ setRewriteVisibility(true);
379
+ }
380
+ if (isRewriteInProgress) {
381
+ if (rewriteStabilizeTimeout) {
382
+ clearTimeout(rewriteStabilizeTimeout);
383
+ }
384
+ term.scrollToBottom();
385
+ rewriteStabilizeTimeout = setTimeout(() => {
386
+ if (DEBUG_RESIZE) {
387
+ console.log("[ThemedTerminal] Content rewrite COMPLETE, stabilized at baseY:", term.buffer.active.baseY);
388
+ }
389
+ isRewriteInProgress = false;
390
+ term.scrollToBottom();
391
+ setRewriteVisibility(false);
392
+ }, 150);
393
+ }
394
+ lastBaseY = scrollback2;
357
395
  if (onScrollPositionChange) {
358
396
  onScrollPositionChange({
359
397
  isAtTop,
@@ -452,6 +490,9 @@ var ThemedTerminal = forwardRef(({
452
490
  if (scrollDebounceRef.current) {
453
491
  clearTimeout(scrollDebounceRef.current);
454
492
  }
493
+ if (rewriteStabilizeTimeout) {
494
+ clearTimeout(rewriteStabilizeTimeout);
495
+ }
455
496
  if (webglAddonRef.current) {
456
497
  webglAddonRef.current.dispose();
457
498
  webglAddonRef.current = null;
@@ -1 +1 @@
1
- {"version":3,"file":"ThemedTerminal.d.ts","sourceRoot":"","sources":["../../../src/components/ThemedTerminal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAkC3D,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAEV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,8BAA8B,CAAC;AAEtC,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,KAAK,EAAE,KAAK,CAAC;CACd;AAsBD,eAAO,MAAM,cAAc,4HAu6B1B,CAAC"}
1
+ {"version":3,"file":"ThemedTerminal.d.ts","sourceRoot":"","sources":["../../../src/components/ThemedTerminal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAkC3D,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAEV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,8BAA8B,CAAC;AAEtC,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,KAAK,EAAE,KAAK,CAAC;CACd;AAsBD,eAAO,MAAM,cAAc,4HAk+B1B,CAAC"}
package/dist/styles.css CHANGED
@@ -5,6 +5,11 @@
5
5
  margin: 0;
6
6
  }
7
7
 
8
+ /* Hide terminal content during content rewrite (clear + redraw pattern) */
9
+ .terminal-container-fix.terminal-rewriting .xterm-screen {
10
+ visibility: hidden;
11
+ }
12
+
8
13
  /* Remove default xterm padding */
9
14
  .terminal-container-fix .xterm {
10
15
  padding: 5px 0 0 5px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@industry-theme/xterm-terminal-panel",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "description": "Industry-themed xterm.js terminal components with panel framework integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",