@xxmachina/components 19.145.0 → 19.148.4

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.
@@ -12,7 +12,7 @@ class WeeklyHeaderMolecule {
12
12
  <span>{{ day }}</span>
13
13
  </div>
14
14
  }
15
- `, isInline: true, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-38riS83Q: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-38riS83Q: var(--secondary-color)}:host{display:grid;width:100%;grid-template-columns:repeat(7,1fr);background-color:var(--primary-color-SCOPED-IN-38riS83Q)}:host .day-container{display:flex;justify-content:center;align-items:center;color:#fff;font-weight:700;width:calc(hvar(--width) / 7)}\n"] });
15
+ `, isInline: true, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-EKELQfzQ: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-EKELQfzQ: var(--secondary-color)}:host{display:grid;width:100%;grid-template-columns:repeat(7,1fr);background-color:var(--primary-color-SCOPED-IN-EKELQfzQ)}:host .day-container{display:flex;justify-content:center;align-items:center;color:#fff;font-weight:700;width:calc(hvar(--width) / 7)}\n"] });
16
16
  }
17
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: WeeklyHeaderMolecule, decorators: [{
18
18
  type: Component,
@@ -22,7 +22,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
22
22
  <span>{{ day }}</span>
23
23
  </div>
24
24
  }
25
- `, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-38riS83Q: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-38riS83Q: var(--secondary-color)}:host{display:grid;width:100%;grid-template-columns:repeat(7,1fr);background-color:var(--primary-color-SCOPED-IN-38riS83Q)}:host .day-container{display:flex;justify-content:center;align-items:center;color:#fff;font-weight:700;width:calc(hvar(--width) / 7)}\n"] }]
25
+ `, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-EKELQfzQ: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-EKELQfzQ: var(--secondary-color)}:host{display:grid;width:100%;grid-template-columns:repeat(7,1fr);background-color:var(--primary-color-SCOPED-IN-EKELQfzQ)}:host .day-container{display:flex;justify-content:center;align-items:center;color:#fff;font-weight:700;width:calc(hvar(--width) / 7)}\n"] }]
26
26
  }], ctorParameters: () => [] });
27
27
 
28
28
  /**
@@ -56,7 +56,7 @@ class CalendarSectionOrganism {
56
56
  }
57
57
  }
58
58
  </div>
59
- `, isInline: true, styles: [":host{display:block;--row: 80px;--row-SCOPED-IN-1SuUdDWS: var(--row);--row-num: 0;--row-num-SCOPED-IN-1SuUdDWS: var(--row-num);--border-color: #9E9E9E;--border-color-SCOPED-IN-1SuUdDWS: var(--border-color);--primary-color: #404040;--primary-color-SCOPED-IN-1SuUdDWS: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-1SuUdDWS: var(--secondary-color)}:host{width:100%;height:auto}:host .calendar.header molecules-weekly-header{--height: 32px}:host .calendar.contents{display:grid;width:var(--width);border:1px solid var(--border-color-SCOPED-IN-1SuUdDWS);grid-gap:1px;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(var(--row-num-SCOPED-IN-1SuUdDWS),var(--row-SCOPED-IN-1SuUdDWS));box-sizing:border-box;background-color:var(--border-color-SCOPED-IN-1SuUdDWS)}:host .calendar.contents molecules-daily-cell{--width: calc((var(--width) - 8px) / 7);--height: var(--row-SCOPED-IN-1SuUdDWS);background-color:#fff}:host .calendar.description{display:flex;justify-content:flex-end;width:var(--width);height:32px;padding-right:16px}:host .calendar.description .description.container{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;font-size:12px}:host .calendar.description .description.container .circle{display:flex;width:20px;height:20px;justify-content:center;align-items:center;border-radius:50%;color:#fff;background:#00f}:host .calendar.description .description.container label{padding-left:4px;padding-right:8px}\n"], dependencies: [{ kind: "component", type: DailyCellMolecule, selector: "molecules-daily-cell", inputs: ["date", "schedules", "displayDate", "noSchedulesText", "toolTipText", "marked", "markingColor"] }, { kind: "component", type: WeeklyHeaderMolecule, selector: "molecules-weekly-header" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
59
+ `, isInline: true, styles: [":host{display:block;--row: 80px;--row-SCOPED-IN-KaIxysHD: var(--row);--row-num: 0;--row-num-SCOPED-IN-KaIxysHD: var(--row-num);--border-color: #9E9E9E;--border-color-SCOPED-IN-KaIxysHD: var(--border-color);--primary-color: #404040;--primary-color-SCOPED-IN-KaIxysHD: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-KaIxysHD: var(--secondary-color)}:host{width:100%;height:auto}:host .calendar.header molecules-weekly-header{--height: 32px}:host .calendar.contents{display:grid;width:var(--width);border:1px solid var(--border-color-SCOPED-IN-KaIxysHD);grid-gap:1px;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(var(--row-num-SCOPED-IN-KaIxysHD),var(--row-SCOPED-IN-KaIxysHD));box-sizing:border-box;background-color:var(--border-color-SCOPED-IN-KaIxysHD)}:host .calendar.contents molecules-daily-cell{--width: calc((var(--width) - 8px) / 7);--height: var(--row-SCOPED-IN-KaIxysHD);background-color:#fff}:host .calendar.description{display:flex;justify-content:flex-end;width:var(--width);height:32px;padding-right:16px}:host .calendar.description .description.container{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;font-size:12px}:host .calendar.description .description.container .circle{display:flex;width:20px;height:20px;justify-content:center;align-items:center;border-radius:50%;color:#fff;background:#00f}:host .calendar.description .description.container label{padding-left:4px;padding-right:8px}\n"], dependencies: [{ kind: "component", type: DailyCellMolecule, selector: "molecules-daily-cell", inputs: ["date", "schedules", "displayDate", "noSchedulesText", "toolTipText", "marked", "markingColor"] }, { kind: "component", type: WeeklyHeaderMolecule, selector: "molecules-weekly-header" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
60
60
  }
61
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: CalendarSectionOrganism, decorators: [{
62
62
  type: Component,
@@ -90,7 +90,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
90
90
  }
91
91
  }
92
92
  </div>
93
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--row: 80px;--row-SCOPED-IN-1SuUdDWS: var(--row);--row-num: 0;--row-num-SCOPED-IN-1SuUdDWS: var(--row-num);--border-color: #9E9E9E;--border-color-SCOPED-IN-1SuUdDWS: var(--border-color);--primary-color: #404040;--primary-color-SCOPED-IN-1SuUdDWS: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-1SuUdDWS: var(--secondary-color)}:host{width:100%;height:auto}:host .calendar.header molecules-weekly-header{--height: 32px}:host .calendar.contents{display:grid;width:var(--width);border:1px solid var(--border-color-SCOPED-IN-1SuUdDWS);grid-gap:1px;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(var(--row-num-SCOPED-IN-1SuUdDWS),var(--row-SCOPED-IN-1SuUdDWS));box-sizing:border-box;background-color:var(--border-color-SCOPED-IN-1SuUdDWS)}:host .calendar.contents molecules-daily-cell{--width: calc((var(--width) - 8px) / 7);--height: var(--row-SCOPED-IN-1SuUdDWS);background-color:#fff}:host .calendar.description{display:flex;justify-content:flex-end;width:var(--width);height:32px;padding-right:16px}:host .calendar.description .description.container{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;font-size:12px}:host .calendar.description .description.container .circle{display:flex;width:20px;height:20px;justify-content:center;align-items:center;border-radius:50%;color:#fff;background:#00f}:host .calendar.description .description.container label{padding-left:4px;padding-right:8px}\n"] }]
93
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--row: 80px;--row-SCOPED-IN-KaIxysHD: var(--row);--row-num: 0;--row-num-SCOPED-IN-KaIxysHD: var(--row-num);--border-color: #9E9E9E;--border-color-SCOPED-IN-KaIxysHD: var(--border-color);--primary-color: #404040;--primary-color-SCOPED-IN-KaIxysHD: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-KaIxysHD: var(--secondary-color)}:host{width:100%;height:auto}:host .calendar.header molecules-weekly-header{--height: 32px}:host .calendar.contents{display:grid;width:var(--width);border:1px solid var(--border-color-SCOPED-IN-KaIxysHD);grid-gap:1px;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(var(--row-num-SCOPED-IN-KaIxysHD),var(--row-SCOPED-IN-KaIxysHD));box-sizing:border-box;background-color:var(--border-color-SCOPED-IN-KaIxysHD)}:host .calendar.contents molecules-daily-cell{--width: calc((var(--width) - 8px) / 7);--height: var(--row-SCOPED-IN-KaIxysHD);background-color:#fff}:host .calendar.description{display:flex;justify-content:flex-end;width:var(--width);height:32px;padding-right:16px}:host .calendar.description .description.container{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;font-size:12px}:host .calendar.description .description.container .circle{display:flex;width:20px;height:20px;justify-content:center;align-items:center;border-radius:50%;color:#fff;background:#00f}:host .calendar.description .description.container label{padding-left:4px;padding-right:8px}\n"] }]
94
94
  }], propDecorators: { label: [{
95
95
  type: Input
96
96
  }], displayDays: [{
@@ -11,9 +11,7 @@ const MAX_SCAN_LINES = 30;
11
11
  class WebLinkProvider {
12
12
  _terminal;
13
13
  _handler;
14
- constructor(_terminal, _handler = (_, uri) => {
15
- window.open(uri, '_blank', 'noopener');
16
- }) {
14
+ constructor(_terminal, _handler) {
17
15
  this._terminal = _terminal;
18
16
  this._handler = _handler;
19
17
  }
@@ -53,7 +51,7 @@ class WebLinkProvider {
53
51
  start: { x: startPos.x + 1, y: startPos.y + 1 },
54
52
  end: { x: endPos.x + 1, y: endPos.y + 1 },
55
53
  },
56
- activate: (event, text) => this._handler(event, text),
54
+ activate: (event, text) => this._handler?.(event, text),
57
55
  });
58
56
  }
59
57
  callback(links.length > 0 ? links : undefined);
@@ -290,6 +288,12 @@ class FileLinksAddon {
290
288
  }
291
289
  }
292
290
 
291
+ function createFileLinkActivateHandler(dispatch) {
292
+ return (_event, filePath, line, column) => {
293
+ dispatch({ filePath, line, column });
294
+ };
295
+ }
296
+
293
297
  const SESSION_MENTION_REGEX = /(?:^|[\s((『「])@([a-z][a-z0-9]*(?:-[a-z0-9]+)*)(?![\w/-])(?!\.[a-z0-9])/g;
294
298
  function extractSessionMentions(text) {
295
299
  const mentions = [];
@@ -442,9 +446,7 @@ class ProxyLinkProvider {
442
446
  _getEndpoints;
443
447
  _onMissingToken;
444
448
  _getEnv;
445
- constructor(_terminal, _getServerUUID, _getToken, _handler = (_, url) => {
446
- window.open(url, '_blank', 'noopener');
447
- }, _getDeployVersion, _getEndpoints, _onMissingToken, _getEnv) {
449
+ constructor(_terminal, _getServerUUID, _getToken, _handler, _getDeployVersion, _getEndpoints, _onMissingToken, _getEnv) {
448
450
  this._terminal = _terminal;
449
451
  this._getServerUUID = _getServerUUID;
450
452
  this._getToken = _getToken;
@@ -479,6 +481,10 @@ class ProxyLinkProvider {
479
481
  end: { x: endX, y: bufferLineNumber },
480
482
  },
481
483
  activate: (event) => {
484
+ if (this._handler) {
485
+ this._handler(event, matchedUrl);
486
+ return;
487
+ }
482
488
  const uuid = this._getServerUUID();
483
489
  if (!uuid) {
484
490
  console.warn('[ProxyLinkProvider] serverUUID undefined, opening localhost URL as-is (no proxy):', {
@@ -486,7 +492,7 @@ class ProxyLinkProvider {
486
492
  hasGetToken: !!this._getToken,
487
493
  hasGetEndpoints: !!this._getEndpoints,
488
494
  });
489
- this._handler(event, matchedUrl);
495
+ window.open(matchedUrl, '_blank', 'noopener');
490
496
  return;
491
497
  }
492
498
  const token = this._getToken?.();
@@ -503,7 +509,6 @@ class ProxyLinkProvider {
503
509
  endpoints,
504
510
  env: this._getEnv?.(),
505
511
  deployVersion: this._getDeployVersion?.(),
506
- handler: (_e, url) => this._handler(event, url),
507
512
  });
508
513
  },
509
514
  });
@@ -538,13 +543,83 @@ class ProxyLinksAddon {
538
543
  }
539
544
  }
540
545
 
546
+ const PORTS_SECTION_TITLE = 'PORTS';
547
+ const SECTION_TITLE = /^[A-Z][A-Z ]*$/;
548
+ const PORT_TOKEN = /(?<![\d.])(\d{1,5})(?![\d.])/g;
549
+ function portTokensOf(text) {
550
+ const out = [];
551
+ PORT_TOKEN.lastIndex = 0;
552
+ let m;
553
+ while ((m = PORT_TOKEN.exec(text)) !== null) {
554
+ const port = Number(m[1]);
555
+ if (port >= 1 && port <= 65535)
556
+ out.push({ port, start: m.index, end: m.index + m[1].length });
557
+ }
558
+ return out;
559
+ }
560
+ function isPortsSectionRow(textAt, lineIndex) {
561
+ const own = textAt(lineIndex)?.trim();
562
+ if (own === undefined || own === '' || SECTION_TITLE.test(own))
563
+ return false;
564
+ for (let i = lineIndex - 1; i >= 0; i--) {
565
+ const t = textAt(i)?.trim();
566
+ if (t === undefined || t === '')
567
+ return false;
568
+ if (t === PORTS_SECTION_TITLE)
569
+ return true;
570
+ if (SECTION_TITLE.test(t))
571
+ return false;
572
+ }
573
+ return false;
574
+ }
575
+ class PortLinkProvider {
576
+ _terminal;
577
+ _handler;
578
+ constructor(_terminal, _handler) {
579
+ this._terminal = _terminal;
580
+ this._handler = _handler;
581
+ }
582
+ provideLinks(bufferLineNumber, callback) {
583
+ const buf = this._terminal.buffer.active;
584
+ const textAt = (i) => buf.getLine(i)?.translateToString(true);
585
+ const lineIndex = bufferLineNumber - 1;
586
+ const text = textAt(lineIndex);
587
+ if (text === undefined || !isPortsSectionRow(textAt, lineIndex)) {
588
+ callback(undefined);
589
+ return;
590
+ }
591
+ const links = portTokensOf(text).map(({ port, start, end }) => ({
592
+ text: String(port),
593
+ range: { start: { x: start + 1, y: bufferLineNumber }, end: { x: end, y: bufferLineNumber } },
594
+ activate: (event) => this._handler(event, port),
595
+ }));
596
+ callback(links.length > 0 ? links : undefined);
597
+ }
598
+ }
599
+
600
+ class PortLinksAddon {
601
+ _handler;
602
+ _linkProvider;
603
+ constructor(_handler) {
604
+ this._handler = _handler;
605
+ }
606
+ activate(terminal) {
607
+ this._linkProvider = terminal.registerLinkProvider(new PortLinkProvider(terminal, this._handler));
608
+ }
609
+ dispose() {
610
+ this._linkProvider?.dispose();
611
+ }
612
+ }
613
+
541
614
  var XtermActionId;
542
615
  (function (XtermActionId) {
543
616
  XtermActionId["DATA_INPUT"] = "xterm:data-input";
544
617
  XtermActionId["RESIZED"] = "xterm:resized";
545
618
  XtermActionId["GITHUB_LINK_CLICK"] = "xterm:github-link-click";
619
+ XtermActionId["WEB_LINK_CLICK"] = "xterm:web-link-click";
546
620
  XtermActionId["FILE_LINK_CLICK"] = "xterm:file-link-click";
547
621
  XtermActionId["SESSION_MENTION_CLICK"] = "xterm:session-mention-click";
622
+ XtermActionId["PORT_LINK_CLICK"] = "xterm:port-link-click";
548
623
  XtermActionId["FOCUS_INPUT_REQUEST"] = "xterm:focus-input-request";
549
624
  })(XtermActionId || (XtermActionId = {}));
550
625
  const XTERM_SESSION_CONTEXT = new InjectionToken('XTERM_SESSION_CONTEXT');
@@ -561,18 +636,19 @@ class XtermOrganismStore extends InjectableComponent {
561
636
  queryResult = input('', ...(ngDevMode ? [{ debugName: "queryResult" }] : []));
562
637
  useInteractiveTheme = input(false, ...(ngDevMode ? [{ debugName: "useInteractiveTheme" }] : []));
563
638
  totalWritten = input(0, ...(ngDevMode ? [{ debugName: "totalWritten" }] : []));
639
+ staticScreen = input(false, ...(ngDevMode ? [{ debugName: "staticScreen" }] : []));
564
640
  sessionContext = inject(XTERM_SESSION_CONTEXT, { optional: true });
565
641
  constructor() {
566
642
  super();
567
643
  XtermOrganismStore.DI.initialize(this);
568
644
  }
569
645
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: XtermOrganismStore, deps: [], target: i0.ɵɵFactoryTarget.Directive });
570
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.6", type: XtermOrganismStore, isStandalone: true, selector: "organisms-xterm", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, interactive: { classPropertyName: "interactive", publicName: "interactive", isSignal: true, isRequired: false, transformFunction: null }, queryResult: { classPropertyName: "queryResult", publicName: "queryResult", isSignal: true, isRequired: false, transformFunction: null }, useInteractiveTheme: { classPropertyName: "useInteractiveTheme", publicName: "useInteractiveTheme", isSignal: true, isRequired: false, transformFunction: null }, totalWritten: { classPropertyName: "totalWritten", publicName: "totalWritten", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
646
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.6", type: XtermOrganismStore, isStandalone: true, selector: "organisms-xterm", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, interactive: { classPropertyName: "interactive", publicName: "interactive", isSignal: true, isRequired: false, transformFunction: null }, queryResult: { classPropertyName: "queryResult", publicName: "queryResult", isSignal: true, isRequired: false, transformFunction: null }, useInteractiveTheme: { classPropertyName: "useInteractiveTheme", publicName: "useInteractiveTheme", isSignal: true, isRequired: false, transformFunction: null }, totalWritten: { classPropertyName: "totalWritten", publicName: "totalWritten", isSignal: true, isRequired: false, transformFunction: null }, staticScreen: { classPropertyName: "staticScreen", publicName: "staticScreen", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
571
647
  }
572
648
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: XtermOrganismStore, decorators: [{
573
649
  type: Directive,
574
650
  args: [{ standalone: true, selector: 'organisms-xterm' }]
575
- }], ctorParameters: () => [], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], interactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactive", required: false }] }], queryResult: [{ type: i0.Input, args: [{ isSignal: true, alias: "queryResult", required: false }] }], useInteractiveTheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "useInteractiveTheme", required: false }] }], totalWritten: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalWritten", required: false }] }] } });
651
+ }], ctorParameters: () => [], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], interactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactive", required: false }] }], queryResult: [{ type: i0.Input, args: [{ isSignal: true, alias: "queryResult", required: false }] }], useInteractiveTheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "useInteractiveTheme", required: false }] }], totalWritten: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalWritten", required: false }] }], staticScreen: [{ type: i0.Input, args: [{ isSignal: true, alias: "staticScreen", required: false }] }] } });
576
652
 
577
653
  const MIN_VIEWPORT_COLS = 2;
578
654
  const MIN_VIEWPORT_ROWS = 1;
@@ -583,6 +659,9 @@ const CANONICAL_FONT_SIZE_PX = 14;
583
659
  const CANONICAL_CELL_WIDTH_RATIO = 0.615;
584
660
  const CANONICAL_CELL_HEIGHT_RATIO = 1.43;
585
661
  const CANONICAL_LINE_HEIGHT = 1.2;
662
+ const CANONICAL_FONT_FACES = [
663
+ { family: 'FiraCode Nerd Font', url: 'https://cdn.jsdelivr.net/gh/ryanoasis/nerd-fonts@v3.2.1/patched-fonts/FiraCode/Regular/FiraCodeNerdFont-Regular.ttf' },
664
+ ];
586
665
  const DEFAULT_CELL_WIDTH = CANONICAL_FONT_SIZE_PX * CANONICAL_CELL_WIDTH_RATIO;
587
666
  const DEFAULT_CELL_HEIGHT = CANONICAL_FONT_SIZE_PX * CANONICAL_CELL_HEIGHT_RATIO;
588
667
  function measureCellMetric() {
@@ -805,6 +884,133 @@ function installQueryReplySuppression(terminal) {
805
884
  terminal.parser.registerEscHandler({ final: 'Z' }, () => true);
806
885
  }
807
886
 
887
+ function focusTerminalTextarea(container, terminal) {
888
+ const textarea = container.querySelector('.xterm-helper-textarea');
889
+ if (textarea) {
890
+ textarea.focus({ preventScroll: true });
891
+ return;
892
+ }
893
+ terminal?.focus();
894
+ }
895
+
896
+ const VIEWPORT_CLASS = 'xterm-viewport';
897
+ const FOLLOW_BOTTOM_GESTURE_WINDOW_MS = 500;
898
+ function isScrollUpKey(e) {
899
+ return e.shiftKey && (e.key === 'PageUp' || e.key === 'Home');
900
+ }
901
+ function attachFollowBottom(terminal, root, options = {}) {
902
+ const now = options.now ?? (() => Date.now());
903
+ let following = true;
904
+ let dragging = false;
905
+ let restoring = false;
906
+ let gestureAt = Number.NEGATIVE_INFINITY;
907
+ let lastViewportY = terminal.buffer.active.viewportY;
908
+ let lastFollowing = true;
909
+ const gesture = () => { gestureAt = now(); };
910
+ const free = () => { following = false; gesture(); };
911
+ const report = () => {
912
+ const { viewportY, baseY } = terminal.buffer.active;
913
+ const movedByUser = viewportY !== lastViewportY;
914
+ const modeChanged = following !== lastFollowing;
915
+ lastViewportY = viewportY;
916
+ lastFollowing = following;
917
+ if (restoring)
918
+ return;
919
+ if (following) {
920
+ if (modeChanged)
921
+ options.onChange?.(0);
922
+ return;
923
+ }
924
+ if (movedByUser || modeChanged)
925
+ options.onChange?.(baseY - viewportY);
926
+ };
927
+ const onMouseDown = (e) => {
928
+ dragging = true;
929
+ gesture();
930
+ if (e.target instanceof HTMLElement && e.target.classList.contains(VIEWPORT_CLASS))
931
+ free();
932
+ };
933
+ const onMouseUp = () => { dragging = false; };
934
+ const onKeyDown = (e) => { if (e instanceof KeyboardEvent && isScrollUpKey(e))
935
+ free(); };
936
+ const opts = { capture: true, passive: true };
937
+ root.addEventListener('wheel', free, opts);
938
+ root.addEventListener('touchstart', free, opts);
939
+ root.addEventListener('mousedown', onMouseDown, opts);
940
+ root.addEventListener('keydown', onKeyDown, opts);
941
+ window.addEventListener('mouseup', onMouseUp, opts);
942
+ const onScrolled = (intended) => {
943
+ const { viewportY, baseY } = terminal.buffer.active;
944
+ const atBottom = viewportY === baseY;
945
+ if (!intended) {
946
+ if (following) {
947
+ if (!atBottom)
948
+ terminal.scrollToBottom();
949
+ }
950
+ else if (viewportY !== lastViewportY)
951
+ terminal.scrollLines(lastViewportY - viewportY);
952
+ lastViewportY = terminal.buffer.active.viewportY;
953
+ return;
954
+ }
955
+ if (!following) {
956
+ if (atBottom)
957
+ following = true;
958
+ report();
959
+ return;
960
+ }
961
+ if (atBottom) {
962
+ report();
963
+ return;
964
+ }
965
+ free();
966
+ report();
967
+ };
968
+ const onApiScroll = () => onScrolled(true);
969
+ const onDomScroll = () => onScrolled(dragging || now() - gestureAt < FOLLOW_BOTTOM_GESTURE_WINDOW_MS);
970
+ const scroll = terminal.onScroll(onApiScroll);
971
+ const viewport = root.querySelector(`.${VIEWPORT_CLASS}`);
972
+ viewport?.addEventListener('scroll', onDomScroll, { passive: true });
973
+ return {
974
+ get following() { return following; },
975
+ restore(fromBottom) {
976
+ const n = Math.max(0, Math.floor(fromBottom));
977
+ restoring = true;
978
+ try {
979
+ terminal.scrollToBottom();
980
+ following = n === 0;
981
+ if (n > 0)
982
+ terminal.scrollLines(-n);
983
+ }
984
+ finally {
985
+ lastViewportY = terminal.buffer.active.viewportY;
986
+ lastFollowing = following;
987
+ restoring = false;
988
+ }
989
+ },
990
+ dispose() {
991
+ scroll.dispose();
992
+ viewport?.removeEventListener('scroll', onDomScroll);
993
+ root.removeEventListener('wheel', free, opts);
994
+ root.removeEventListener('touchstart', free, opts);
995
+ root.removeEventListener('mousedown', onMouseDown, opts);
996
+ root.removeEventListener('keydown', onKeyDown, opts);
997
+ window.removeEventListener('mouseup', onMouseUp, opts);
998
+ },
999
+ };
1000
+ }
1001
+
1002
+ function planDataWrite(o) {
1003
+ const { lastDataLength, data, mode } = o;
1004
+ if (data === '')
1005
+ return { text: '', reset: false, scrollToTop: false, nextDataLength: lastDataLength };
1006
+ if (mode === 'screen')
1007
+ return { text: data, reset: true, scrollToTop: true, nextDataLength: data.length };
1008
+ if (data.length >= lastDataLength) {
1009
+ return { text: data.slice(lastDataLength), reset: false, scrollToTop: false, nextDataLength: data.length };
1010
+ }
1011
+ return { text: data, reset: true, scrollToTop: false, nextDataLength: data.length };
1012
+ }
1013
+
808
1014
  const MIN_CONTAINER_SIZE = 10;
809
1015
  class XtermOrganism extends NgAtomicComponent {
810
1016
  container = viewChild.required('container');
@@ -828,6 +1034,8 @@ class XtermOrganism extends NgAtomicComponent {
828
1034
  fitScheduled = signal(0, ...(ngDevMode ? [{ debugName: "fitScheduled" }] : []));
829
1035
  initSkippedDueToSize = false;
830
1036
  disposables = [];
1037
+ followBottom = null;
1038
+ scrollFromBottom = signal(null, ...(ngDevMode ? [{ debugName: "scrollFromBottom" }] : []));
831
1039
  stableTimer = null;
832
1040
  resizeTimer = null;
833
1041
  fallbackTimer = null;
@@ -869,18 +1077,20 @@ class XtermOrganism extends NgAtomicComponent {
869
1077
  if (data === undefined || data === null || data === '') {
870
1078
  return;
871
1079
  }
872
- if (data.length >= this.lastDataLength) {
873
- const newPart = data.slice(this.lastDataLength);
874
- if (newPart) {
875
- this.terminal.write(newPart);
876
- }
877
- this.lastDataLength = data.length;
878
- }
879
- else {
1080
+ const plan = planDataWrite({
1081
+ lastDataLength: this.lastDataLength,
1082
+ data,
1083
+ mode: this.store.staticScreen() ? 'screen' : 'stream',
1084
+ });
1085
+ if (plan.reset)
880
1086
  this.terminal.reset();
881
- this.terminal.write(data);
882
- this.lastDataLength = data.length;
1087
+ if (plan.text) {
1088
+ if (plan.scrollToTop)
1089
+ this.terminal.write(plan.text, () => this.terminal.scrollToTop());
1090
+ else
1091
+ this.terminal.write(plan.text);
883
1092
  }
1093
+ this.lastDataLength = plan.nextDataLength;
884
1094
  }
885
1095
  writeDataWithTotalWritten(data, totalWritten) {
886
1096
  const isStreamRestart = totalWritten < this.lastProcessedLength;
@@ -925,25 +1135,34 @@ class XtermOrganism extends NgAtomicComponent {
925
1135
  installQueryReplySuppression(this.terminal);
926
1136
  this.fitAddon = new FitAddon();
927
1137
  this.terminal.loadAddon(this.fitAddon);
928
- this.terminal.loadAddon(new WebLinksAddon());
1138
+ this.terminal.loadAddon(new WebLinksAddon((event, uri) => {
1139
+ this.dispatch({ id: XtermActionId.WEB_LINK_CLICK, payload: { url: uri } });
1140
+ }));
929
1141
  this.loadImageAddon();
930
1142
  this.githubLinksAddon = new GitHubLinksAddon((event, issueNumber) => {
931
1143
  this.dispatch({ id: XtermActionId.GITHUB_LINK_CLICK, payload: issueNumber });
932
1144
  });
933
1145
  this.terminal.loadAddon(this.githubLinksAddon);
934
- this.fileLinksAddon = new FileLinksAddon((event, filePath, line, column) => {
935
- if (event.metaKey || event.ctrlKey) {
936
- this.dispatch({ id: XtermActionId.FILE_LINK_CLICK, payload: { filePath, line, column } });
937
- }
938
- });
1146
+ this.fileLinksAddon = new FileLinksAddon(createFileLinkActivateHandler((payload) => {
1147
+ this.dispatch({ id: XtermActionId.FILE_LINK_CLICK, payload });
1148
+ }));
939
1149
  this.terminal.loadAddon(this.fileLinksAddon);
940
1150
  this.sessionMentionLinksAddon = new SessionMentionLinksAddon((event, name) => {
941
1151
  this.dispatch({ id: XtermActionId.SESSION_MENTION_CLICK, payload: { name } });
942
1152
  });
943
1153
  this.terminal.loadAddon(this.sessionMentionLinksAddon);
944
1154
  const ctx = this.store.sessionContext;
945
- this.terminal.loadAddon(new ProxyLinksAddon(ctx?.getServerUUID ?? (() => undefined), ctx?.getProxyToken, undefined, ctx?.getDeployVersion, ctx?.getProxyEndpoints, ctx?.onMissingToken, ctx?.getProxyEnv));
1155
+ this.terminal.loadAddon(new ProxyLinksAddon(ctx?.getServerUUID ?? (() => undefined), ctx?.getProxyToken, (event, url) => {
1156
+ this.dispatch({ id: XtermActionId.WEB_LINK_CLICK, payload: { url } });
1157
+ }, ctx?.getDeployVersion, ctx?.getProxyEndpoints, ctx?.onMissingToken, ctx?.getProxyEnv));
1158
+ if (this.store.staticScreen()) {
1159
+ this.terminal.loadAddon(new PortLinksAddon((event, port) => {
1160
+ this.dispatch({ id: XtermActionId.PORT_LINK_CLICK, payload: { port } });
1161
+ }));
1162
+ }
946
1163
  this.terminal.open(containerElement);
1164
+ this.followBottom = attachFollowBottom(this.terminal, containerElement, { onChange: (n) => this.scrollFromBottom.set(n) });
1165
+ this.disposables.push(this.followBottom);
947
1166
  const core = this.terminal._core;
948
1167
  const charSizeChange = core?._charSizeService?.onCharSizeChange;
949
1168
  if (typeof charSizeChange === 'function') {
@@ -1106,6 +1325,12 @@ class XtermOrganism extends NgAtomicComponent {
1106
1325
  scrollToBottom() {
1107
1326
  this.terminal?.scrollToBottom();
1108
1327
  }
1328
+ get followingBottom() {
1329
+ return this.followBottom?.following ?? true;
1330
+ }
1331
+ restoreScroll(fromBottom) {
1332
+ this.terminal?.write('', () => this.followBottom?.restore(fromBottom));
1333
+ }
1109
1334
  scrollToTop() {
1110
1335
  this.terminal?.scrollToTop();
1111
1336
  }
@@ -1113,9 +1338,7 @@ class XtermOrganism extends NgAtomicComponent {
1113
1338
  this.terminal?.scrollLines(lines);
1114
1339
  }
1115
1340
  focus() {
1116
- this.terminal?.focus();
1117
- const helperTextarea = this.container().nativeElement.querySelector('.xterm-helper-textarea');
1118
- helperTextarea?.focus();
1341
+ focusTerminalTextarea(this.container().nativeElement, this.terminal ?? undefined);
1119
1342
  }
1120
1343
  clearSelection() {
1121
1344
  this.terminal?.clearSelection();
@@ -1158,13 +1381,13 @@ class XtermOrganism extends NgAtomicComponent {
1158
1381
  return this.imageAddon;
1159
1382
  }
1160
1383
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: XtermOrganism, deps: [], target: i0.ɵɵFactoryTarget.Component });
1161
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.6", type: XtermOrganism, isStandalone: true, selector: "organisms-xterm", outputs: { terminalReady: "terminalReady", githubLinkClick: "githubLinkClick" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: XtermOrganismStore, inputs: ["data", "data", "interactive", "interactive", "useInteractiveTheme", "useInteractiveTheme", "totalWritten", "totalWritten"] }], ngImport: i0, template: `<div #container class="terminal-viewport xterm-wrapper"></div>`, isInline: true, styles: ["", "@import\"https://unpkg.com/@xterm/xterm@5.5.0/css/xterm.css\";:host{display:block;width:100%;height:100%}:host .terminal-viewport,:host .xterm-wrapper{width:100%;height:100%;background:#0a0a0a;position:relative;overflow:hidden}:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor-layer{display:none!important}:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor,:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor-outline{opacity:0!important}:host ::ng-deep .xterm-screen canvas{pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1384
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.6", type: XtermOrganism, isStandalone: true, selector: "organisms-xterm", outputs: { terminalReady: "terminalReady", githubLinkClick: "githubLinkClick" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: XtermOrganismStore, inputs: ["data", "data", "interactive", "interactive", "useInteractiveTheme", "useInteractiveTheme", "totalWritten", "totalWritten", "staticScreen", "staticScreen"] }], ngImport: i0, template: `<div #container class="terminal-viewport xterm-wrapper"></div>`, isInline: true, styles: ["", "@import\"https://unpkg.com/@xterm/xterm@5.5.0/css/xterm.css\";:host{display:block;width:100%;height:100%}:host .terminal-viewport,:host .xterm-wrapper{width:100%;height:100%;background:#0a0a0a;position:relative;overflow:hidden}:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor-layer{display:none!important}:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor,:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor-outline{opacity:0!important}:host ::ng-deep .xterm-screen canvas{pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1162
1385
  }
1163
1386
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: XtermOrganism, decorators: [{
1164
1387
  type: Component,
1165
1388
  args: [{ selector: 'organisms-xterm', standalone: true, imports: [], template: `<div #container class="terminal-viewport xterm-wrapper"></div>`, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [{
1166
1389
  directive: XtermOrganismStore,
1167
- inputs: ['data', 'interactive', 'useInteractiveTheme', 'totalWritten'],
1390
+ inputs: ['data', 'interactive', 'useInteractiveTheme', 'totalWritten', 'staticScreen'],
1168
1391
  }], styles: ["@import\"https://unpkg.com/@xterm/xterm@5.5.0/css/xterm.css\";:host{display:block;width:100%;height:100%}:host .terminal-viewport,:host .xterm-wrapper{width:100%;height:100%;background:#0a0a0a;position:relative;overflow:hidden}:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor-layer{display:none!important}:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor,:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor-outline{opacity:0!important}:host ::ng-deep .xterm-screen canvas{pointer-events:none}\n"] }]
1169
1392
  }], ctorParameters: () => [], propDecorators: { container: [{ type: i0.ViewChild, args: ['container', { isSignal: true }] }], terminalReady: [{ type: i0.Output, args: ["terminalReady"] }], githubLinkClick: [{ type: i0.Output, args: ["githubLinkClick"] }] } });
1170
1393
  function hasDisplayClearWithoutScrollbackClear(s) {
@@ -1378,4 +1601,4 @@ function applyScrollbackForFocus(terminal, { isInteractive, focused }) {
1378
1601
  * Generated bundle index. Do not edit.
1379
1602
  */
1380
1603
 
1381
- export { CANONICAL_CELL_HEIGHT_RATIO, CANONICAL_CELL_WIDTH_RATIO, CANONICAL_FONT_FAMILY, CANONICAL_FONT_SIZE_PX, CANONICAL_LINE_HEIGHT, DISPLAY_THEME, GitHubLinkProvider, GitHubLinksAddon, INTERACTIVE_THEME, MAX_VIEWPORT_COLS, MAX_VIEWPORT_ROWS, MIN_VIEWPORT_COLS, MIN_VIEWPORT_ROWS, ProxyLinkProvider, ProxyLinksAddon, SessionMentionLinkProvider, SessionMentionLinksAddon, USER_CONTENT_DOMAIN, WebLinksAddon, XTERM_SESSION_CONTEXT, XtermActionId, XtermOrganism, XtermOrganismStore, appendUrlHandoff, applyScrollbackForFocus, asciiArtToSvg, buildTerminalOptions, buildUserContentOrigin, clearCanvasCellMetricCache, computeFitToViewport, decideTerminalWrite, deployVersionToHostSuffix, encodeUrlHandoff, extractSessionMentions, generateAsciiArt, getCanvasCellMetric, getMachinaAsciiArtSixel, hasVisibleContent, measureCellMetric, openWebProxyForPort, recordCanvasCellMetric, svgToSixel, toProxyUrl };
1604
+ export { CANONICAL_CELL_HEIGHT_RATIO, CANONICAL_CELL_WIDTH_RATIO, CANONICAL_FONT_FACES, CANONICAL_FONT_FAMILY, CANONICAL_FONT_SIZE_PX, CANONICAL_LINE_HEIGHT, DISPLAY_THEME, FOLLOW_BOTTOM_GESTURE_WINDOW_MS, GitHubLinkProvider, GitHubLinksAddon, INTERACTIVE_THEME, MAX_VIEWPORT_COLS, MAX_VIEWPORT_ROWS, MIN_VIEWPORT_COLS, MIN_VIEWPORT_ROWS, PORTS_SECTION_TITLE, PortLinkProvider, PortLinksAddon, ProxyLinkProvider, ProxyLinksAddon, SessionMentionLinkProvider, SessionMentionLinksAddon, USER_CONTENT_DOMAIN, WebLinksAddon, XTERM_SESSION_CONTEXT, XtermActionId, XtermOrganism, XtermOrganismStore, appendUrlHandoff, applyScrollbackForFocus, asciiArtToSvg, attachFollowBottom, buildTerminalOptions, buildUserContentOrigin, clearCanvasCellMetricCache, computeFitToViewport, decideTerminalWrite, deployVersionToHostSuffix, encodeUrlHandoff, extractSessionMentions, generateAsciiArt, getCanvasCellMetric, getMachinaAsciiArtSixel, hasVisibleContent, isPortsSectionRow, measureCellMetric, openWebProxyForPort, portTokensOf, recordCanvasCellMetric, svgToSixel, toProxyUrl };
@@ -422,7 +422,7 @@ class CommandPage extends NgAtomicComponent {
422
422
  </frames-tabs>
423
423
  </templates-form>
424
424
  </frames-router-outlet>
425
- `, isInline: true, styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-command-XQE4: var(--page-width-lv1);--primary-color-SCOPED-IN-command-XQE4: var(--primary-color);--on-primary-color-SCOPED-IN-command-XQE4: var(--on-primary-color);--background-color-SCOPED-IN-command-XQE4: var(--background-color);--on-background-color-SCOPED-IN-command-XQE4: var(--on-background-color)}:host templates-form{padding-left:0;box-sizing:border-box;transition:padding-left .3s}:host .template{--first-content-height: 0px;width:var(--page-width-lv1-SCOPED-IN-command-XQE4)}:host .template div[dashboard]{padding:0;box-sizing:border-box}:host *{--primary-color: var(--primary-color-SCOPED-IN-command-XQE4);--on-primary-color: var(--on-primary-color-SCOPED-IN-command-XQE4);--background-color: var(--background-color-SCOPED-IN-command-XQE4);--on-background-color: var(--on-background-color-SCOPED-IN-command-XQE4)}\n"], dependencies: [{ kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: FormTemplate, selector: "templates-form" }, { kind: "component", type: TabsFrame, selector: "frames-tabs", inputs: ["labels"], outputs: ["selectedTabIndexChange"] }, { kind: "component", type: CommandFormGroup, selector: "groups-command-form", inputs: ["apiJsonUrls"] }, { kind: "component", type: QueryFormGroup, selector: "groups-query-form", inputs: ["form", "keyActions"] }] });
425
+ `, isInline: true, styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-command-2FVl: var(--page-width-lv1);--primary-color-SCOPED-IN-command-2FVl: var(--primary-color);--on-primary-color-SCOPED-IN-command-2FVl: var(--on-primary-color);--background-color-SCOPED-IN-command-2FVl: var(--background-color);--on-background-color-SCOPED-IN-command-2FVl: var(--on-background-color)}:host templates-form{padding-left:0;box-sizing:border-box;transition:padding-left .3s}:host .template{--first-content-height: 0px;width:var(--page-width-lv1-SCOPED-IN-command-2FVl)}:host .template div[dashboard]{padding:0;box-sizing:border-box}:host *{--primary-color: var(--primary-color-SCOPED-IN-command-2FVl);--on-primary-color: var(--on-primary-color-SCOPED-IN-command-2FVl);--background-color: var(--background-color-SCOPED-IN-command-2FVl);--on-background-color: var(--on-background-color-SCOPED-IN-command-2FVl)}\n"], dependencies: [{ kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: FormTemplate, selector: "templates-form" }, { kind: "component", type: TabsFrame, selector: "frames-tabs", inputs: ["labels"], outputs: ["selectedTabIndexChange"] }, { kind: "component", type: CommandFormGroup, selector: "groups-command-form", inputs: ["apiJsonUrls"] }, { kind: "component", type: QueryFormGroup, selector: "groups-query-form", inputs: ["form", "keyActions"] }] });
426
426
  }
427
427
  __decorate([
428
428
  Effect(FormTemplateStore.ActionId.FILE_SELECTED),
@@ -485,7 +485,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
485
485
  'actions',
486
486
  ]
487
487
  },
488
- ], styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-command-XQE4: var(--page-width-lv1);--primary-color-SCOPED-IN-command-XQE4: var(--primary-color);--on-primary-color-SCOPED-IN-command-XQE4: var(--on-primary-color);--background-color-SCOPED-IN-command-XQE4: var(--background-color);--on-background-color-SCOPED-IN-command-XQE4: var(--on-background-color)}:host templates-form{padding-left:0;box-sizing:border-box;transition:padding-left .3s}:host .template{--first-content-height: 0px;width:var(--page-width-lv1-SCOPED-IN-command-XQE4)}:host .template div[dashboard]{padding:0;box-sizing:border-box}:host *{--primary-color: var(--primary-color-SCOPED-IN-command-XQE4);--on-primary-color: var(--on-primary-color-SCOPED-IN-command-XQE4);--background-color: var(--background-color-SCOPED-IN-command-XQE4);--on-background-color: var(--on-background-color-SCOPED-IN-command-XQE4)}\n"] }]
488
+ ], styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-command-2FVl: var(--page-width-lv1);--primary-color-SCOPED-IN-command-2FVl: var(--primary-color);--on-primary-color-SCOPED-IN-command-2FVl: var(--on-primary-color);--background-color-SCOPED-IN-command-2FVl: var(--background-color);--on-background-color-SCOPED-IN-command-2FVl: var(--on-background-color)}:host templates-form{padding-left:0;box-sizing:border-box;transition:padding-left .3s}:host .template{--first-content-height: 0px;width:var(--page-width-lv1-SCOPED-IN-command-2FVl)}:host .template div[dashboard]{padding:0;box-sizing:border-box}:host *{--primary-color: var(--primary-color-SCOPED-IN-command-2FVl);--on-primary-color: var(--on-primary-color-SCOPED-IN-command-2FVl);--background-color: var(--background-color-SCOPED-IN-command-2FVl);--on-background-color: var(--on-background-color-SCOPED-IN-command-2FVl)}\n"] }]
489
489
  }], propDecorators: { onFileSelected: [] } });
490
490
 
491
491
  /**
@@ -688,7 +688,7 @@ class QueryPage extends NgAtomicComponent {
688
688
  <groups-query-form dashboard (action)="dispatch($event)" />
689
689
  </templates-index>
690
690
  </frames-router-outlet>
691
- `, isInline: true, styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-query-AHMI: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-query-AHMI: var(--page-width-lv3);--primary-color-SCOPED-IN-query-AHMI: var(--primary-color);--on-primary-color-SCOPED-IN-query-AHMI: var(--on-primary-color);--surface-color-SCOPED-IN-query-AHMI: var(--surface-color);--on-surface-color-SCOPED-IN-query-AHMI: var(--on-surface-color);--on-background-color-SCOPED-IN-query-AHMI: var(--on-background-color);--background-color-SCOPED-IN-query-AHMI: var(--background-color);--navigator-background-color-SCOPED-IN-query-AHMI: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-query-AHMI: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-query-AHMI: var(--table-background-color);--table-on-background-color-SCOPED-IN-query-AHMI: var(--table-on-background-color);--is-debug: 1;--is-debug-SCOPED-IN-query-AHMI: var(--is-debug)}:host *{--primary-color: var(--primary-color-SCOPED-IN-query-AHMI);--on-primary-color: var(--on-primary-color-SCOPED-IN-query-AHMI);--surface-color: var(--surface-color-SCOPED-IN-query-AHMI);--on-surface-color: var(--on-surface-color-SCOPED-IN-query-AHMI);--background-color: var(--background-color-SCOPED-IN-query-AHMI);--on-background-color: var(--on-background-color-SCOPED-IN-query-AHMI);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-query-AHMI);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-query-AHMI);--table-background-color: var(--table-background-color-SCOPED-IN-query-AHMI);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-query-AHMI);--is-debug: var(--is-debug-SCOPED-IN-query-AHMI)}:host templates-index{padding-left:0;box-sizing:border-box;--first-content-height: calc(var(--is-debug-SCOPED-IN-query-AHMI) * 300px);transition:padding-left .3s}:host templates-index div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host templates-index div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}\n"], dependencies: [{ kind: "component", type: IndexTemplate, selector: "templates-index" }, { kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: NgAtomicFormSectionBuilder, selector: "ng-atomic-form-section-builder", inputs: ["form", "formFlatExcludes", "fieldMap", "fieldKeys"] }, { kind: "component", type: QueryFormGroup, selector: "groups-query-form", inputs: ["form", "keyActions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
691
+ `, isInline: true, styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-query-2naw: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-query-2naw: var(--page-width-lv3);--primary-color-SCOPED-IN-query-2naw: var(--primary-color);--on-primary-color-SCOPED-IN-query-2naw: var(--on-primary-color);--surface-color-SCOPED-IN-query-2naw: var(--surface-color);--on-surface-color-SCOPED-IN-query-2naw: var(--on-surface-color);--on-background-color-SCOPED-IN-query-2naw: var(--on-background-color);--background-color-SCOPED-IN-query-2naw: var(--background-color);--navigator-background-color-SCOPED-IN-query-2naw: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-query-2naw: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-query-2naw: var(--table-background-color);--table-on-background-color-SCOPED-IN-query-2naw: var(--table-on-background-color);--is-debug: 1;--is-debug-SCOPED-IN-query-2naw: var(--is-debug)}:host *{--primary-color: var(--primary-color-SCOPED-IN-query-2naw);--on-primary-color: var(--on-primary-color-SCOPED-IN-query-2naw);--surface-color: var(--surface-color-SCOPED-IN-query-2naw);--on-surface-color: var(--on-surface-color-SCOPED-IN-query-2naw);--background-color: var(--background-color-SCOPED-IN-query-2naw);--on-background-color: var(--on-background-color-SCOPED-IN-query-2naw);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-query-2naw);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-query-2naw);--table-background-color: var(--table-background-color-SCOPED-IN-query-2naw);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-query-2naw);--is-debug: var(--is-debug-SCOPED-IN-query-2naw)}:host templates-index{padding-left:0;box-sizing:border-box;--first-content-height: calc(var(--is-debug-SCOPED-IN-query-2naw) * 300px);transition:padding-left .3s}:host templates-index div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host templates-index div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}\n"], dependencies: [{ kind: "component", type: IndexTemplate, selector: "templates-index" }, { kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: NgAtomicFormSectionBuilder, selector: "ng-atomic-form-section-builder", inputs: ["form", "formFlatExcludes", "fieldMap", "fieldKeys"] }, { kind: "component", type: QueryFormGroup, selector: "groups-query-form", inputs: ["form", "keyActions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
692
692
  }
693
693
  __decorate([
694
694
  Effect(IndexTemplateStore.ActionId.BACK),
@@ -769,7 +769,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
769
769
  'pageSizeOptions'
770
770
  ]
771
771
  },
772
- ], styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-query-AHMI: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-query-AHMI: var(--page-width-lv3);--primary-color-SCOPED-IN-query-AHMI: var(--primary-color);--on-primary-color-SCOPED-IN-query-AHMI: var(--on-primary-color);--surface-color-SCOPED-IN-query-AHMI: var(--surface-color);--on-surface-color-SCOPED-IN-query-AHMI: var(--on-surface-color);--on-background-color-SCOPED-IN-query-AHMI: var(--on-background-color);--background-color-SCOPED-IN-query-AHMI: var(--background-color);--navigator-background-color-SCOPED-IN-query-AHMI: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-query-AHMI: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-query-AHMI: var(--table-background-color);--table-on-background-color-SCOPED-IN-query-AHMI: var(--table-on-background-color);--is-debug: 1;--is-debug-SCOPED-IN-query-AHMI: var(--is-debug)}:host *{--primary-color: var(--primary-color-SCOPED-IN-query-AHMI);--on-primary-color: var(--on-primary-color-SCOPED-IN-query-AHMI);--surface-color: var(--surface-color-SCOPED-IN-query-AHMI);--on-surface-color: var(--on-surface-color-SCOPED-IN-query-AHMI);--background-color: var(--background-color-SCOPED-IN-query-AHMI);--on-background-color: var(--on-background-color-SCOPED-IN-query-AHMI);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-query-AHMI);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-query-AHMI);--table-background-color: var(--table-background-color-SCOPED-IN-query-AHMI);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-query-AHMI);--is-debug: var(--is-debug-SCOPED-IN-query-AHMI)}:host templates-index{padding-left:0;box-sizing:border-box;--first-content-height: calc(var(--is-debug-SCOPED-IN-query-AHMI) * 300px);transition:padding-left .3s}:host templates-index div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host templates-index div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}\n"] }]
772
+ ], styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-query-2naw: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-query-2naw: var(--page-width-lv3);--primary-color-SCOPED-IN-query-2naw: var(--primary-color);--on-primary-color-SCOPED-IN-query-2naw: var(--on-primary-color);--surface-color-SCOPED-IN-query-2naw: var(--surface-color);--on-surface-color-SCOPED-IN-query-2naw: var(--on-surface-color);--on-background-color-SCOPED-IN-query-2naw: var(--on-background-color);--background-color-SCOPED-IN-query-2naw: var(--background-color);--navigator-background-color-SCOPED-IN-query-2naw: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-query-2naw: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-query-2naw: var(--table-background-color);--table-on-background-color-SCOPED-IN-query-2naw: var(--table-on-background-color);--is-debug: 1;--is-debug-SCOPED-IN-query-2naw: var(--is-debug)}:host *{--primary-color: var(--primary-color-SCOPED-IN-query-2naw);--on-primary-color: var(--on-primary-color-SCOPED-IN-query-2naw);--surface-color: var(--surface-color-SCOPED-IN-query-2naw);--on-surface-color: var(--on-surface-color-SCOPED-IN-query-2naw);--background-color: var(--background-color-SCOPED-IN-query-2naw);--on-background-color: var(--on-background-color-SCOPED-IN-query-2naw);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-query-2naw);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-query-2naw);--table-background-color: var(--table-background-color-SCOPED-IN-query-2naw);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-query-2naw);--is-debug: var(--is-debug-SCOPED-IN-query-2naw)}:host templates-index{padding-left:0;box-sizing:border-box;--first-content-height: calc(var(--is-debug-SCOPED-IN-query-2naw) * 300px);transition:padding-left .3s}:host templates-index div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host templates-index div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}\n"] }]
773
773
  }], ctorParameters: () => [], propDecorators: { template: [{ type: i0.ViewChild, args: [i0.forwardRef(() => IndexTemplate), { isSignal: true }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], back: [], navigateToIframe: [], expandPage: [], itemClick: [] } });
774
774
 
775
775
  /**
@@ -104,7 +104,7 @@ class ThreadPage extends NgAtomicComponent {
104
104
  (action)="dispatch($event)"
105
105
  />
106
106
  </frames-router-outlet>
107
- `, isInline: true, styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-thread-dcQA: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-thread-dcQA: var(--page-width-lv3);--primary-color-SCOPED-IN-thread-dcQA: var(--primary-color);--on-primary-color-SCOPED-IN-thread-dcQA: var(--on-primary-color);--surface-color-SCOPED-IN-thread-dcQA: var(--surface-color);--on-surface-color-SCOPED-IN-thread-dcQA: var(--on-surface-color);--on-background-color-SCOPED-IN-thread-dcQA: var(--on-background-color);--background-color-SCOPED-IN-thread-dcQA: var(--background-color);--navigator-background-color-SCOPED-IN-thread-dcQA: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-thread-dcQA: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-thread-dcQA: var(--table-background-color);--table-on-background-color-SCOPED-IN-thread-dcQA: var(--table-on-background-color)}:host .template{width:var(--page-width-lv1-SCOPED-IN-thread-dcQA)}:host .chat-container{display:flex;flex-direction:column;height:100%}:host .message{padding:10px;border-bottom:1px solid #ccc}\n"], dependencies: [{ kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: ThreadTemplate, selector: "templates-messages" }] });
107
+ `, isInline: true, styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-thread-qL3Y: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-thread-qL3Y: var(--page-width-lv3);--primary-color-SCOPED-IN-thread-qL3Y: var(--primary-color);--on-primary-color-SCOPED-IN-thread-qL3Y: var(--on-primary-color);--surface-color-SCOPED-IN-thread-qL3Y: var(--surface-color);--on-surface-color-SCOPED-IN-thread-qL3Y: var(--on-surface-color);--on-background-color-SCOPED-IN-thread-qL3Y: var(--on-background-color);--background-color-SCOPED-IN-thread-qL3Y: var(--background-color);--navigator-background-color-SCOPED-IN-thread-qL3Y: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-thread-qL3Y: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-thread-qL3Y: var(--table-background-color);--table-on-background-color-SCOPED-IN-thread-qL3Y: var(--table-on-background-color)}:host .template{width:var(--page-width-lv1-SCOPED-IN-thread-qL3Y)}:host .chat-container{display:flex;flex-direction:column;height:100%}:host .message{padding:10px;border-bottom:1px solid #ccc}\n"], dependencies: [{ kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: ThreadTemplate, selector: "templates-messages" }] });
108
108
  }
109
109
  __decorate([
110
110
  Effect(ActionId.SEND_MESSAGE),
@@ -137,7 +137,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
137
137
  'messages',
138
138
  ]
139
139
  },
140
- ], styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-thread-dcQA: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-thread-dcQA: var(--page-width-lv3);--primary-color-SCOPED-IN-thread-dcQA: var(--primary-color);--on-primary-color-SCOPED-IN-thread-dcQA: var(--on-primary-color);--surface-color-SCOPED-IN-thread-dcQA: var(--surface-color);--on-surface-color-SCOPED-IN-thread-dcQA: var(--on-surface-color);--on-background-color-SCOPED-IN-thread-dcQA: var(--on-background-color);--background-color-SCOPED-IN-thread-dcQA: var(--background-color);--navigator-background-color-SCOPED-IN-thread-dcQA: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-thread-dcQA: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-thread-dcQA: var(--table-background-color);--table-on-background-color-SCOPED-IN-thread-dcQA: var(--table-on-background-color)}:host .template{width:var(--page-width-lv1-SCOPED-IN-thread-dcQA)}:host .chat-container{display:flex;flex-direction:column;height:100%}:host .message{padding:10px;border-bottom:1px solid #ccc}\n"] }]
140
+ ], styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-thread-qL3Y: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-thread-qL3Y: var(--page-width-lv3);--primary-color-SCOPED-IN-thread-qL3Y: var(--primary-color);--on-primary-color-SCOPED-IN-thread-qL3Y: var(--on-primary-color);--surface-color-SCOPED-IN-thread-qL3Y: var(--surface-color);--on-surface-color-SCOPED-IN-thread-qL3Y: var(--on-surface-color);--on-background-color-SCOPED-IN-thread-qL3Y: var(--on-background-color);--background-color-SCOPED-IN-thread-qL3Y: var(--background-color);--navigator-background-color-SCOPED-IN-thread-qL3Y: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-thread-qL3Y: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-thread-qL3Y: var(--table-background-color);--table-on-background-color-SCOPED-IN-thread-qL3Y: var(--table-on-background-color)}:host .template{width:var(--page-width-lv1-SCOPED-IN-thread-qL3Y)}:host .chat-container{display:flex;flex-direction:column;height:100%}:host .message{padding:10px;border-bottom:1px solid #ccc}\n"] }]
141
141
  }], propDecorators: { onCompositionStart: [{
142
142
  type: HostListener,
143
143
  args: ['compositionstart', ['$event']]
@@ -420,7 +420,7 @@ class AgentTemplate extends NgAtomicComponent {
420
420
  </div>
421
421
  }
422
422
  </frames-scroll>
423
- `, isInline: true, styles: [":host{--text: #e0e0e0;--text-SCOPED-IN-entrance-SNRl: var(--text);--user: #33ff33;--user-SCOPED-IN-entrance-SNRl: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-SNRl: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-SNRl: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-SNRl: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{--height: 100%;--contents-gap: 0;width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-SNRl);border-radius:8px;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;min-height:56px;flex-shrink:0;padding:0;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-SNRl);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-SNRl);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-SNRl);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-SNRl);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-SNRl);opacity:.7}.terminal-display{width:100%;height:100%;background:#0a0a0a}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-SNRl);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input{caret-shape:block}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;height:100dvh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0;padding-top:env(safe-area-inset-top)}.terminal-window{height:100%;max-height:100vh;max-height:100dvh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-SNRl);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-SNRl)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-SNRl),0 0 20px var(--accent-SCOPED-IN-entrance-SNRl);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ScrollFrame, selector: "frames-scroll" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: XtermOrganism, selector: "organisms-xterm", outputs: ["terminalReady", "githubLinkClick"] }, { kind: "directive", type: NavigatorOrganismStore, selector: "organisms-navigator", inputs: ["startActions", "endActions", "title"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
423
+ `, isInline: true, styles: [":host{--text: #e0e0e0;--text-SCOPED-IN-entrance-O0NN: var(--text);--user: #33ff33;--user-SCOPED-IN-entrance-O0NN: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-O0NN: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-O0NN: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-O0NN: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{--height: 100%;--contents-gap: 0;width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-O0NN);border-radius:8px;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;min-height:56px;flex-shrink:0;padding:0;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-O0NN);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-O0NN);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-O0NN);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-O0NN);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-O0NN);opacity:.7}.terminal-display{width:100%;height:100%;background:#0a0a0a}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-O0NN);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input{caret-shape:block}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;height:100dvh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0;padding-top:env(safe-area-inset-top)}.terminal-window{height:100%;max-height:100vh;max-height:100dvh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-O0NN);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-O0NN)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-O0NN),0 0 20px var(--accent-SCOPED-IN-entrance-O0NN);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ScrollFrame, selector: "frames-scroll" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: XtermOrganism, selector: "organisms-xterm", outputs: ["terminalReady", "githubLinkClick"] }, { kind: "directive", type: NavigatorOrganismStore, selector: "organisms-navigator", inputs: ["startActions", "endActions", "title"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
424
424
  }
425
425
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: AgentTemplate, decorators: [{
426
426
  type: Component,
@@ -505,7 +505,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
505
505
  'fieldMap',
506
506
  ],
507
507
  },
508
- ], styles: [":host{--text: #e0e0e0;--text-SCOPED-IN-entrance-SNRl: var(--text);--user: #33ff33;--user-SCOPED-IN-entrance-SNRl: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-SNRl: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-SNRl: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-SNRl: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{--height: 100%;--contents-gap: 0;width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-SNRl);border-radius:8px;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;min-height:56px;flex-shrink:0;padding:0;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-SNRl);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-SNRl);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-SNRl);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-SNRl);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-SNRl);opacity:.7}.terminal-display{width:100%;height:100%;background:#0a0a0a}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-SNRl);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input{caret-shape:block}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;height:100dvh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0;padding-top:env(safe-area-inset-top)}.terminal-window{height:100%;max-height:100vh;max-height:100dvh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-SNRl);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-SNRl)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-SNRl),0 0 20px var(--accent-SCOPED-IN-entrance-SNRl);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}\n"] }]
508
+ ], styles: [":host{--text: #e0e0e0;--text-SCOPED-IN-entrance-O0NN: var(--text);--user: #33ff33;--user-SCOPED-IN-entrance-O0NN: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-O0NN: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-O0NN: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-O0NN: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{--height: 100%;--contents-gap: 0;width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-O0NN);border-radius:8px;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;min-height:56px;flex-shrink:0;padding:0;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-O0NN);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-O0NN);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-O0NN);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-O0NN);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-O0NN);opacity:.7}.terminal-display{width:100%;height:100%;background:#0a0a0a}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-O0NN);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input{caret-shape:block}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;height:100dvh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0;padding-top:env(safe-area-inset-top)}.terminal-window{height:100%;max-height:100vh;max-height:100dvh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-O0NN);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-O0NN)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-O0NN),0 0 20px var(--accent-SCOPED-IN-entrance-O0NN);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}\n"] }]
509
509
  }], propDecorators: { endActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "endActions", required: false }] }], hideInputArea: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideInputArea", required: false }] }], xtermComponent: [{ type: i0.ViewChild, args: ['xtermComponent', { isSignal: true }] }], inputField: [{ type: i0.ViewChild, args: ['inputField', { isSignal: true }] }], onWindowResize: [{
510
510
  type: HostListener,
511
511
  args: ['window:resize']
@@ -38,7 +38,7 @@ class MachinaIconButtonMenuTemplate extends NgAtomicComponent {
38
38
  </button>
39
39
  }
40
40
  </div>
41
- `, isInline: true, styles: [":host{width:100%;height:100%;background:#fff;display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-button-menu-hG4w: var(--primary-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-icon-button-menu-hG4w: var(--on-primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-icon-button-menu-hG4w: var(--secondary-color);--background-color: #000000;--background-color-SCOPED-IN-icon-button-menu-hG4w: var(--background-color);--on-background-color: #ffffff;--on-background-color-SCOPED-IN-icon-button-menu-hG4w: var(--on-background-color);--mat-icon-button-icon-color: #FEFEFE;--mat-icon-button-icon-color-SCOPED-IN-icon-button-menu-hG4w: var(--mat-icon-button-icon-color)}:host{display:flex;flex-direction:column;justify-content:space-between;align-items:center;width:100%;height:100%;background-color:var(--background-color-SCOPED-IN-icon-button-menu-hG4w);color:var(--on-background-color-SCOPED-IN-icon-button-menu-hG4w)}:host .top,:host .bottom{display:flex;flex-direction:column;justify-content:center;align-items:center}:host button{--mat-icon-color: var(--on-primary-color-SCOPED-IN-icon-button-menu-hG4w);cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: UserAvatarMenuMolecule, selector: "molecules-user-avatar-menu", inputs: ["signOutAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
41
+ `, isInline: true, styles: [":host{width:100%;height:100%;background:#fff;display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-button-menu-Y6qg: var(--primary-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-icon-button-menu-Y6qg: var(--on-primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-icon-button-menu-Y6qg: var(--secondary-color);--background-color: #000000;--background-color-SCOPED-IN-icon-button-menu-Y6qg: var(--background-color);--on-background-color: #ffffff;--on-background-color-SCOPED-IN-icon-button-menu-Y6qg: var(--on-background-color);--mat-icon-button-icon-color: #FEFEFE;--mat-icon-button-icon-color-SCOPED-IN-icon-button-menu-Y6qg: var(--mat-icon-button-icon-color)}:host{display:flex;flex-direction:column;justify-content:space-between;align-items:center;width:100%;height:100%;background-color:var(--background-color-SCOPED-IN-icon-button-menu-Y6qg);color:var(--on-background-color-SCOPED-IN-icon-button-menu-Y6qg)}:host .top,:host .bottom{display:flex;flex-direction:column;justify-content:center;align-items:center}:host button{--mat-icon-color: var(--on-primary-color-SCOPED-IN-icon-button-menu-Y6qg);cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: UserAvatarMenuMolecule, selector: "molecules-user-avatar-menu", inputs: ["signOutAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
42
42
  }
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: MachinaIconButtonMenuTemplate, decorators: [{
44
44
  type: Component,
@@ -67,7 +67,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
67
67
  directive: IconButtonMenuTemplateStore,
68
68
  inputs: ['actions', 'bottomActions', 'topPadding'],
69
69
  },
70
- ], styles: [":host{width:100%;height:100%;background:#fff;display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-button-menu-hG4w: var(--primary-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-icon-button-menu-hG4w: var(--on-primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-icon-button-menu-hG4w: var(--secondary-color);--background-color: #000000;--background-color-SCOPED-IN-icon-button-menu-hG4w: var(--background-color);--on-background-color: #ffffff;--on-background-color-SCOPED-IN-icon-button-menu-hG4w: var(--on-background-color);--mat-icon-button-icon-color: #FEFEFE;--mat-icon-button-icon-color-SCOPED-IN-icon-button-menu-hG4w: var(--mat-icon-button-icon-color)}:host{display:flex;flex-direction:column;justify-content:space-between;align-items:center;width:100%;height:100%;background-color:var(--background-color-SCOPED-IN-icon-button-menu-hG4w);color:var(--on-background-color-SCOPED-IN-icon-button-menu-hG4w)}:host .top,:host .bottom{display:flex;flex-direction:column;justify-content:center;align-items:center}:host button{--mat-icon-color: var(--on-primary-color-SCOPED-IN-icon-button-menu-hG4w);cursor:pointer}\n"] }]
70
+ ], styles: [":host{width:100%;height:100%;background:#fff;display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-button-menu-Y6qg: var(--primary-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-icon-button-menu-Y6qg: var(--on-primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-icon-button-menu-Y6qg: var(--secondary-color);--background-color: #000000;--background-color-SCOPED-IN-icon-button-menu-Y6qg: var(--background-color);--on-background-color: #ffffff;--on-background-color-SCOPED-IN-icon-button-menu-Y6qg: var(--on-background-color);--mat-icon-button-icon-color: #FEFEFE;--mat-icon-button-icon-color-SCOPED-IN-icon-button-menu-Y6qg: var(--mat-icon-button-icon-color)}:host{display:flex;flex-direction:column;justify-content:space-between;align-items:center;width:100%;height:100%;background-color:var(--background-color-SCOPED-IN-icon-button-menu-Y6qg);color:var(--on-background-color-SCOPED-IN-icon-button-menu-Y6qg)}:host .top,:host .bottom{display:flex;flex-direction:column;justify-content:center;align-items:center}:host button{--mat-icon-color: var(--on-primary-color-SCOPED-IN-icon-button-menu-Y6qg);cursor:pointer}\n"] }]
71
71
  }] });
72
72
 
73
73
  /**
@@ -232,7 +232,7 @@ class SessionNavigatorOrganism extends NgAtomicComponent {
232
232
  }
233
233
  </div>
234
234
  </mat-toolbar>
235
- `, isInline: true, styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-0tpT: var(--text);--sys: #888;--sys-SCOPED-IN-session-navigator-0tpT: var(--sys);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-session-navigator-0tpT: var(--border);--primary-color: #0f0f11;--primary-color-SCOPED-IN-session-navigator-0tpT: var(--primary-color);--on-primary-color: #e0e0e0;--on-primary-color-SCOPED-IN-session-navigator-0tpT: var(--on-primary-color);--secondary-color: #888;--secondary-color-SCOPED-IN-session-navigator-0tpT: var(--secondary-color);--on-secondary-color: #f0f0f0;--on-secondary-color-SCOPED-IN-session-navigator-0tpT: var(--on-secondary-color);--background-color: #0f0f11;--background-color-SCOPED-IN-session-navigator-0tpT: var(--background-color);--on-background-color: #e0e0e0;--on-background-color-SCOPED-IN-session-navigator-0tpT: var(--on-background-color)}:host{display:block;width:100%;height:56px}:host mat-toolbar{display:flex;width:100%;height:100%;padding:0!important;justify-content:space-between;align-items:center;overflow:hidden;transition:background .5s ease-in-out;background-color:var(--primary-color-SCOPED-IN-session-navigator-0tpT);color:var(--on-primary-color-SCOPED-IN-session-navigator-0tpT);border-bottom:1px solid var(--border-SCOPED-IN-session-navigator-0tpT)!important;font-family:SF Mono,Monaco,monospace!important;font-size:12px!important;--mat-toolbar-title-text-size: 12px !important;--mat-sys-title-large-size: 12px !important}:host mat-toolbar>div:first-child,:host mat-toolbar>div:last-child{flex:0 0 auto}:host mat-toolbar>div:nth-child(2){flex:1 1 auto;display:flex;justify-content:flex-start;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host mat-toolbar *:not(.mat-icon){font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar span,:host mat-toolbar div,:host mat-toolbar h1,:host mat-toolbar h2,:host mat-toolbar h3,:host mat-toolbar h4,:host mat-toolbar h5,:host mat-toolbar h6{font-size:12px!important;font-family:SF Mono,Monaco,monospace!important;color:var(--text-SCOPED-IN-session-navigator-0tpT)!important}:host mat-toolbar .mat-button{color:var(--sys-SCOPED-IN-session-navigator-0tpT)!important;font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar .mat-button:hover{color:var(--text-SCOPED-IN-session-navigator-0tpT)!important}:host mat-toolbar .mat-icon-button{color:var(--sys-SCOPED-IN-session-navigator-0tpT)!important;opacity:.7}:host mat-toolbar .mat-icon-button:hover{color:var(--text-SCOPED-IN-session-navigator-0tpT)!important;opacity:1}:host mat-toolbar .mat-icon-button .mat-icon{font-family:Material Icons!important;font-size:24px!important}:host div{display:flex;justify-content:center;align-items:center;line-height:1}:host atoms-menu-button{display:flex;align-items:center;line-height:1}@media(prefers-color-scheme:light){:host{--text: #333;--text-SCOPED-IN-session-navigator-0tpT: var(--text);--sys: #666;--sys-SCOPED-IN-session-navigator-0tpT: var(--sys);--border: #ddd;--border-SCOPED-IN-session-navigator-0tpT: var(--border)}}@media(max-width:600px){:host mat-toolbar span{font-size:11px!important}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: MenuButtonAtomStore, selector: "atoms-menu-button, atoms-smart-menu-button", inputs: ["actions", "type", "action"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
235
+ `, isInline: true, styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-dLcq: var(--text);--sys: #888;--sys-SCOPED-IN-session-navigator-dLcq: var(--sys);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-session-navigator-dLcq: var(--border);--primary-color: #0f0f11;--primary-color-SCOPED-IN-session-navigator-dLcq: var(--primary-color);--on-primary-color: #e0e0e0;--on-primary-color-SCOPED-IN-session-navigator-dLcq: var(--on-primary-color);--secondary-color: #888;--secondary-color-SCOPED-IN-session-navigator-dLcq: var(--secondary-color);--on-secondary-color: #f0f0f0;--on-secondary-color-SCOPED-IN-session-navigator-dLcq: var(--on-secondary-color);--background-color: #0f0f11;--background-color-SCOPED-IN-session-navigator-dLcq: var(--background-color);--on-background-color: #e0e0e0;--on-background-color-SCOPED-IN-session-navigator-dLcq: var(--on-background-color)}:host{display:block;width:100%;height:56px}:host mat-toolbar{display:flex;width:100%;height:100%;padding:0!important;justify-content:space-between;align-items:center;overflow:hidden;transition:background .5s ease-in-out;background-color:var(--primary-color-SCOPED-IN-session-navigator-dLcq);color:var(--on-primary-color-SCOPED-IN-session-navigator-dLcq);border-bottom:1px solid var(--border-SCOPED-IN-session-navigator-dLcq)!important;font-family:SF Mono,Monaco,monospace!important;font-size:12px!important;--mat-toolbar-title-text-size: 12px !important;--mat-sys-title-large-size: 12px !important}:host mat-toolbar>div:first-child,:host mat-toolbar>div:last-child{flex:0 0 auto}:host mat-toolbar>div:nth-child(2){flex:1 1 auto;display:flex;justify-content:flex-start;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host mat-toolbar *:not(.mat-icon){font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar span,:host mat-toolbar div,:host mat-toolbar h1,:host mat-toolbar h2,:host mat-toolbar h3,:host mat-toolbar h4,:host mat-toolbar h5,:host mat-toolbar h6{font-size:12px!important;font-family:SF Mono,Monaco,monospace!important;color:var(--text-SCOPED-IN-session-navigator-dLcq)!important}:host mat-toolbar .mat-button{color:var(--sys-SCOPED-IN-session-navigator-dLcq)!important;font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar .mat-button:hover{color:var(--text-SCOPED-IN-session-navigator-dLcq)!important}:host mat-toolbar .mat-icon-button{color:var(--sys-SCOPED-IN-session-navigator-dLcq)!important;opacity:.7}:host mat-toolbar .mat-icon-button:hover{color:var(--text-SCOPED-IN-session-navigator-dLcq)!important;opacity:1}:host mat-toolbar .mat-icon-button .mat-icon{font-family:Material Icons!important;font-size:24px!important}:host div{display:flex;justify-content:center;align-items:center;line-height:1}:host atoms-menu-button{display:flex;align-items:center;line-height:1}@media(prefers-color-scheme:light){:host{--text: #333;--text-SCOPED-IN-session-navigator-dLcq: var(--text);--sys: #666;--sys-SCOPED-IN-session-navigator-dLcq: var(--sys);--border: #ddd;--border-SCOPED-IN-session-navigator-dLcq: var(--border)}}@media(max-width:600px){:host mat-toolbar span{font-size:11px!important}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: MenuButtonAtomStore, selector: "atoms-menu-button, atoms-smart-menu-button", inputs: ["actions", "type", "action"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
236
236
  }
237
237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: SessionNavigatorOrganism, decorators: [{
238
238
  type: Component,
@@ -266,7 +266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
266
266
  directive: SessionNavigatorOrganismStore,
267
267
  inputs: ['startActions', 'endActions', 'title'],
268
268
  }
269
- ], styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-0tpT: var(--text);--sys: #888;--sys-SCOPED-IN-session-navigator-0tpT: var(--sys);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-session-navigator-0tpT: var(--border);--primary-color: #0f0f11;--primary-color-SCOPED-IN-session-navigator-0tpT: var(--primary-color);--on-primary-color: #e0e0e0;--on-primary-color-SCOPED-IN-session-navigator-0tpT: var(--on-primary-color);--secondary-color: #888;--secondary-color-SCOPED-IN-session-navigator-0tpT: var(--secondary-color);--on-secondary-color: #f0f0f0;--on-secondary-color-SCOPED-IN-session-navigator-0tpT: var(--on-secondary-color);--background-color: #0f0f11;--background-color-SCOPED-IN-session-navigator-0tpT: var(--background-color);--on-background-color: #e0e0e0;--on-background-color-SCOPED-IN-session-navigator-0tpT: var(--on-background-color)}:host{display:block;width:100%;height:56px}:host mat-toolbar{display:flex;width:100%;height:100%;padding:0!important;justify-content:space-between;align-items:center;overflow:hidden;transition:background .5s ease-in-out;background-color:var(--primary-color-SCOPED-IN-session-navigator-0tpT);color:var(--on-primary-color-SCOPED-IN-session-navigator-0tpT);border-bottom:1px solid var(--border-SCOPED-IN-session-navigator-0tpT)!important;font-family:SF Mono,Monaco,monospace!important;font-size:12px!important;--mat-toolbar-title-text-size: 12px !important;--mat-sys-title-large-size: 12px !important}:host mat-toolbar>div:first-child,:host mat-toolbar>div:last-child{flex:0 0 auto}:host mat-toolbar>div:nth-child(2){flex:1 1 auto;display:flex;justify-content:flex-start;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host mat-toolbar *:not(.mat-icon){font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar span,:host mat-toolbar div,:host mat-toolbar h1,:host mat-toolbar h2,:host mat-toolbar h3,:host mat-toolbar h4,:host mat-toolbar h5,:host mat-toolbar h6{font-size:12px!important;font-family:SF Mono,Monaco,monospace!important;color:var(--text-SCOPED-IN-session-navigator-0tpT)!important}:host mat-toolbar .mat-button{color:var(--sys-SCOPED-IN-session-navigator-0tpT)!important;font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar .mat-button:hover{color:var(--text-SCOPED-IN-session-navigator-0tpT)!important}:host mat-toolbar .mat-icon-button{color:var(--sys-SCOPED-IN-session-navigator-0tpT)!important;opacity:.7}:host mat-toolbar .mat-icon-button:hover{color:var(--text-SCOPED-IN-session-navigator-0tpT)!important;opacity:1}:host mat-toolbar .mat-icon-button .mat-icon{font-family:Material Icons!important;font-size:24px!important}:host div{display:flex;justify-content:center;align-items:center;line-height:1}:host atoms-menu-button{display:flex;align-items:center;line-height:1}@media(prefers-color-scheme:light){:host{--text: #333;--text-SCOPED-IN-session-navigator-0tpT: var(--text);--sys: #666;--sys-SCOPED-IN-session-navigator-0tpT: var(--sys);--border: #ddd;--border-SCOPED-IN-session-navigator-0tpT: var(--border)}}@media(max-width:600px){:host mat-toolbar span{font-size:11px!important}}\n"] }]
269
+ ], styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-dLcq: var(--text);--sys: #888;--sys-SCOPED-IN-session-navigator-dLcq: var(--sys);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-session-navigator-dLcq: var(--border);--primary-color: #0f0f11;--primary-color-SCOPED-IN-session-navigator-dLcq: var(--primary-color);--on-primary-color: #e0e0e0;--on-primary-color-SCOPED-IN-session-navigator-dLcq: var(--on-primary-color);--secondary-color: #888;--secondary-color-SCOPED-IN-session-navigator-dLcq: var(--secondary-color);--on-secondary-color: #f0f0f0;--on-secondary-color-SCOPED-IN-session-navigator-dLcq: var(--on-secondary-color);--background-color: #0f0f11;--background-color-SCOPED-IN-session-navigator-dLcq: var(--background-color);--on-background-color: #e0e0e0;--on-background-color-SCOPED-IN-session-navigator-dLcq: var(--on-background-color)}:host{display:block;width:100%;height:56px}:host mat-toolbar{display:flex;width:100%;height:100%;padding:0!important;justify-content:space-between;align-items:center;overflow:hidden;transition:background .5s ease-in-out;background-color:var(--primary-color-SCOPED-IN-session-navigator-dLcq);color:var(--on-primary-color-SCOPED-IN-session-navigator-dLcq);border-bottom:1px solid var(--border-SCOPED-IN-session-navigator-dLcq)!important;font-family:SF Mono,Monaco,monospace!important;font-size:12px!important;--mat-toolbar-title-text-size: 12px !important;--mat-sys-title-large-size: 12px !important}:host mat-toolbar>div:first-child,:host mat-toolbar>div:last-child{flex:0 0 auto}:host mat-toolbar>div:nth-child(2){flex:1 1 auto;display:flex;justify-content:flex-start;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host mat-toolbar *:not(.mat-icon){font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar span,:host mat-toolbar div,:host mat-toolbar h1,:host mat-toolbar h2,:host mat-toolbar h3,:host mat-toolbar h4,:host mat-toolbar h5,:host mat-toolbar h6{font-size:12px!important;font-family:SF Mono,Monaco,monospace!important;color:var(--text-SCOPED-IN-session-navigator-dLcq)!important}:host mat-toolbar .mat-button{color:var(--sys-SCOPED-IN-session-navigator-dLcq)!important;font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar .mat-button:hover{color:var(--text-SCOPED-IN-session-navigator-dLcq)!important}:host mat-toolbar .mat-icon-button{color:var(--sys-SCOPED-IN-session-navigator-dLcq)!important;opacity:.7}:host mat-toolbar .mat-icon-button:hover{color:var(--text-SCOPED-IN-session-navigator-dLcq)!important;opacity:1}:host mat-toolbar .mat-icon-button .mat-icon{font-family:Material Icons!important;font-size:24px!important}:host div{display:flex;justify-content:center;align-items:center;line-height:1}:host atoms-menu-button{display:flex;align-items:center;line-height:1}@media(prefers-color-scheme:light){:host{--text: #333;--text-SCOPED-IN-session-navigator-dLcq: var(--text);--sys: #666;--sys-SCOPED-IN-session-navigator-dLcq: var(--sys);--border: #ddd;--border-SCOPED-IN-session-navigator-dLcq: var(--border)}}@media(max-width:600px){:host mat-toolbar span{font-size:11px!important}}\n"] }]
270
270
  }] });
271
271
 
272
272
  var InvoiceAppActionId;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xxmachina/components",
3
- "version": "19.145.0",
3
+ "version": "19.148.4",
4
4
  "license": "MIT",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -39,12 +39,12 @@ declare class ProxyLinkProvider implements ILinkProvider {
39
39
  private readonly _terminal;
40
40
  private readonly _getServerUUID;
41
41
  private readonly _getToken?;
42
- private readonly _handler;
42
+ private readonly _handler?;
43
43
  private readonly _getDeployVersion?;
44
44
  private readonly _getEndpoints?;
45
45
  private readonly _onMissingToken?;
46
46
  private readonly _getEnv?;
47
- constructor(_terminal: Terminal, _getServerUUID: ServerUUIDGetter, _getToken?: TokenGetter | undefined, _handler?: (event: MouseEvent, proxyUrl: string) => void, _getDeployVersion?: DeployVersionGetter | undefined, _getEndpoints?: EndpointsGetter | undefined, _onMissingToken?: (() => void) | undefined, _getEnv?: (() => "dev" | "stg" | "prod" | undefined) | undefined);
47
+ constructor(_terminal: Terminal, _getServerUUID: ServerUUIDGetter, _getToken?: TokenGetter | undefined, _handler?: ((event: MouseEvent, url: string) => void) | undefined, _getDeployVersion?: DeployVersionGetter | undefined, _getEndpoints?: EndpointsGetter | undefined, _onMissingToken?: (() => void) | undefined, _getEnv?: (() => "dev" | "stg" | "prod" | undefined) | undefined);
48
48
  provideLinks(bufferLineNumber: number, callback: (links: ILink[] | undefined) => void): void;
49
49
  }
50
50
 
@@ -52,8 +52,10 @@ declare enum XtermActionId {
52
52
  DATA_INPUT = "xterm:data-input",
53
53
  RESIZED = "xterm:resized",
54
54
  GITHUB_LINK_CLICK = "xterm:github-link-click",
55
+ WEB_LINK_CLICK = "xterm:web-link-click",
55
56
  FILE_LINK_CLICK = "xterm:file-link-click",
56
57
  SESSION_MENTION_CLICK = "xterm:session-mention-click",
58
+ PORT_LINK_CLICK = "xterm:port-link-click",
57
59
  FOCUS_INPUT_REQUEST = "xterm:focus-input-request"
58
60
  }
59
61
  interface XtermSessionContext {
@@ -138,10 +140,11 @@ declare class XtermOrganismStore extends InjectableComponent {
138
140
  readonly queryResult: _angular_core.InputSignal<string>;
139
141
  readonly useInteractiveTheme: _angular_core.InputSignal<boolean>;
140
142
  readonly totalWritten: _angular_core.InputSignal<number>;
143
+ readonly staticScreen: _angular_core.InputSignal<boolean>;
141
144
  readonly sessionContext: XtermSessionContext | null;
142
145
  constructor();
143
146
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<XtermOrganismStore, never>;
144
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<XtermOrganismStore, "organisms-xterm", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "queryResult": { "alias": "queryResult"; "required": false; "isSignal": true; }; "useInteractiveTheme": { "alias": "useInteractiveTheme"; "required": false; "isSignal": true; }; "totalWritten": { "alias": "totalWritten"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
147
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<XtermOrganismStore, "organisms-xterm", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "queryResult": { "alias": "queryResult"; "required": false; "isSignal": true; }; "useInteractiveTheme": { "alias": "useInteractiveTheme"; "required": false; "isSignal": true; }; "totalWritten": { "alias": "totalWritten"; "required": false; "isSignal": true; }; "staticScreen": { "alias": "staticScreen"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
145
148
  }
146
149
 
147
150
  declare const DISPLAY_THEME: {
@@ -205,6 +208,8 @@ declare class XtermOrganism extends NgAtomicComponent implements AfterViewInit,
205
208
  readonly fitScheduled: _angular_core.WritableSignal<number>;
206
209
  private initSkippedDueToSize;
207
210
  private readonly disposables;
211
+ private followBottom;
212
+ readonly scrollFromBottom: _angular_core.WritableSignal<number | null>;
208
213
  private stableTimer;
209
214
  private resizeTimer;
210
215
  private fallbackTimer;
@@ -223,6 +228,8 @@ declare class XtermOrganism extends NgAtomicComponent implements AfterViewInit,
223
228
  writeln(text: string): void;
224
229
  clear(): void;
225
230
  scrollToBottom(): void;
231
+ get followingBottom(): boolean;
232
+ restoreScroll(fromBottom: number): void;
226
233
  scrollToTop(): void;
227
234
  scrollLines(lines: number): void;
228
235
  focus(): void;
@@ -239,7 +246,7 @@ declare class XtermOrganism extends NgAtomicComponent implements AfterViewInit,
239
246
  }): void;
240
247
  getImageAddon(): ImageAddon | undefined;
241
248
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<XtermOrganism, never>;
242
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<XtermOrganism, "organisms-xterm", never, {}, { "terminalReady": "terminalReady"; "githubLinkClick": "githubLinkClick"; }, never, never, true, [{ directive: typeof XtermOrganismStore; inputs: { "data": "data"; "interactive": "interactive"; "useInteractiveTheme": "useInteractiveTheme"; "totalWritten": "totalWritten"; }; outputs: {}; }]>;
249
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<XtermOrganism, "organisms-xterm", never, {}, { "terminalReady": "terminalReady"; "githubLinkClick": "githubLinkClick"; }, never, never, true, [{ directive: typeof XtermOrganismStore; inputs: { "data": "data"; "interactive": "interactive"; "useInteractiveTheme": "useInteractiveTheme"; "totalWritten": "totalWritten"; "staticScreen": "staticScreen"; }; outputs: {}; }]>;
243
250
  }
244
251
 
245
252
  interface GitHubLinkActivateHandler {
@@ -310,6 +317,32 @@ declare class ProxyLinksAddon implements ITerminalAddon {
310
317
  dispose(): void;
311
318
  }
312
319
 
320
+ interface PortLinkActivateHandler {
321
+ (event: MouseEvent, port: number): void;
322
+ }
323
+ interface PortToken {
324
+ port: number;
325
+ start: number;
326
+ end: number;
327
+ }
328
+ declare const PORTS_SECTION_TITLE = "PORTS";
329
+ declare function portTokensOf(text: string): PortToken[];
330
+ declare function isPortsSectionRow(textAt: (lineIndex: number) => string | undefined, lineIndex: number): boolean;
331
+ declare class PortLinkProvider implements ILinkProvider {
332
+ private readonly _terminal;
333
+ private readonly _handler;
334
+ constructor(_terminal: Terminal, _handler: PortLinkActivateHandler);
335
+ provideLinks(bufferLineNumber: number, callback: (links: ILink[] | undefined) => void): void;
336
+ }
337
+
338
+ declare class PortLinksAddon implements ITerminalAddon {
339
+ private readonly _handler;
340
+ private _linkProvider?;
341
+ constructor(_handler: PortLinkActivateHandler);
342
+ activate(terminal: Terminal): void;
343
+ dispose(): void;
344
+ }
345
+
313
346
  declare const USER_CONTENT_DOMAIN = "10p.io";
314
347
  declare function buildUserContentOrigin(serverUUID: string, portOrService: number | string, deployVersion?: string | null, domain?: string): string;
315
348
 
@@ -345,6 +378,11 @@ declare const CANONICAL_FONT_SIZE_PX = 14;
345
378
  declare const CANONICAL_CELL_WIDTH_RATIO = 0.615;
346
379
  declare const CANONICAL_CELL_HEIGHT_RATIO = 1.43;
347
380
  declare const CANONICAL_LINE_HEIGHT = 1.2;
381
+ interface FontFaceSource {
382
+ family: string;
383
+ url: string;
384
+ }
385
+ declare const CANONICAL_FONT_FACES: readonly FontFaceSource[];
348
386
  declare function measureCellMetric(): {
349
387
  cellWidth: number;
350
388
  cellHeight: number;
@@ -393,5 +431,30 @@ declare function applyScrollbackForFocus(terminal: ScrollbackFocusTarget, { isIn
393
431
  focused: boolean;
394
432
  }): void;
395
433
 
396
- export { CANONICAL_CELL_HEIGHT_RATIO, CANONICAL_CELL_WIDTH_RATIO, CANONICAL_FONT_FAMILY, CANONICAL_FONT_SIZE_PX, CANONICAL_LINE_HEIGHT, DISPLAY_THEME, GitHubLinkProvider, GitHubLinksAddon, INTERACTIVE_THEME, MAX_VIEWPORT_COLS, MAX_VIEWPORT_ROWS, MIN_VIEWPORT_COLS, MIN_VIEWPORT_ROWS, ProxyLinkProvider, ProxyLinksAddon, SessionMentionLinkProvider, SessionMentionLinksAddon, USER_CONTENT_DOMAIN, WebLinksAddon, XTERM_SESSION_CONTEXT, XtermActionId, XtermOrganism, XtermOrganismStore, appendUrlHandoff, applyScrollbackForFocus, asciiArtToSvg, buildTerminalOptions, buildUserContentOrigin, clearCanvasCellMetricCache, computeFitToViewport, decideTerminalWrite, deployVersionToHostSuffix, encodeUrlHandoff, extractSessionMentions, generateAsciiArt, getCanvasCellMetric, getMachinaAsciiArtSixel, hasVisibleContent, measureCellMetric, openWebProxyForPort, recordCanvasCellMetric, svgToSixel, toProxyUrl };
397
- export type { DeployVersionGetter, EndpointsGetter, FitToViewportInput, FitToViewportResult, GitHubLinkActivateHandler, OpenWebProxyOptions, ProxyEndpoints, ProxyEnvGetter, ProxyEnvName, ScrollbackFocusTarget, ServerUUIDGetter, SessionMention, SessionMentionActivateHandler, SvgToSixelOptions, TerminalOptionsInput, TerminalWriteDecision, TerminalWriteState, TokenGetter, XtermSessionContext };
434
+ interface FollowBottomTerminal {
435
+ readonly buffer: {
436
+ readonly active: {
437
+ readonly viewportY: number;
438
+ readonly baseY: number;
439
+ };
440
+ };
441
+ onScroll(listener: (ydisp: number) => void): {
442
+ dispose(): void;
443
+ };
444
+ scrollToBottom(): void;
445
+ scrollLines(amount: number): void;
446
+ }
447
+ interface FollowBottomOptions {
448
+ onChange?: (fromBottom: number) => void;
449
+ now?: () => number;
450
+ }
451
+ interface FollowBottomHandle {
452
+ readonly following: boolean;
453
+ restore(fromBottom: number): void;
454
+ dispose(): void;
455
+ }
456
+ declare const FOLLOW_BOTTOM_GESTURE_WINDOW_MS = 500;
457
+ declare function attachFollowBottom(terminal: FollowBottomTerminal, root: HTMLElement, options?: FollowBottomOptions): FollowBottomHandle;
458
+
459
+ export { CANONICAL_CELL_HEIGHT_RATIO, CANONICAL_CELL_WIDTH_RATIO, CANONICAL_FONT_FACES, CANONICAL_FONT_FAMILY, CANONICAL_FONT_SIZE_PX, CANONICAL_LINE_HEIGHT, DISPLAY_THEME, FOLLOW_BOTTOM_GESTURE_WINDOW_MS, GitHubLinkProvider, GitHubLinksAddon, INTERACTIVE_THEME, MAX_VIEWPORT_COLS, MAX_VIEWPORT_ROWS, MIN_VIEWPORT_COLS, MIN_VIEWPORT_ROWS, PORTS_SECTION_TITLE, PortLinkProvider, PortLinksAddon, ProxyLinkProvider, ProxyLinksAddon, SessionMentionLinkProvider, SessionMentionLinksAddon, USER_CONTENT_DOMAIN, WebLinksAddon, XTERM_SESSION_CONTEXT, XtermActionId, XtermOrganism, XtermOrganismStore, appendUrlHandoff, applyScrollbackForFocus, asciiArtToSvg, attachFollowBottom, buildTerminalOptions, buildUserContentOrigin, clearCanvasCellMetricCache, computeFitToViewport, decideTerminalWrite, deployVersionToHostSuffix, encodeUrlHandoff, extractSessionMentions, generateAsciiArt, getCanvasCellMetric, getMachinaAsciiArtSixel, hasVisibleContent, isPortsSectionRow, measureCellMetric, openWebProxyForPort, portTokensOf, recordCanvasCellMetric, svgToSixel, toProxyUrl };
460
+ export type { DeployVersionGetter, EndpointsGetter, FitToViewportInput, FitToViewportResult, FollowBottomHandle, FollowBottomOptions, FollowBottomTerminal, FontFaceSource, GitHubLinkActivateHandler, OpenWebProxyOptions, PortLinkActivateHandler, PortToken, ProxyEndpoints, ProxyEnvGetter, ProxyEnvName, ScrollbackFocusTarget, ServerUUIDGetter, SessionMention, SessionMentionActivateHandler, SvgToSixelOptions, TerminalOptionsInput, TerminalWriteDecision, TerminalWriteState, TokenGetter, XtermSessionContext };