@xxmachina/components 19.140.4 → 19.145.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/xxmachina-components-extras-flow.mjs +0 -0
- package/fesm2022/xxmachina-components-molecules-weekly-header.mjs +2 -2
- package/fesm2022/xxmachina-components-organisms-calendar-section.mjs +2 -2
- package/fesm2022/xxmachina-components-organisms-xterm.mjs +195 -66
- package/fesm2022/xxmachina-components-pages-command.mjs +2 -2
- package/fesm2022/xxmachina-components-pages-query.mjs +2 -2
- package/fesm2022/xxmachina-components-pages-thread.mjs +2 -2
- package/fesm2022/xxmachina-components-routes-query.mjs +0 -4
- package/fesm2022/xxmachina-components-templates-agent.mjs +2 -2
- package/fesm2022/xxmachina-components-templates-machina-icon-button-menu.mjs +2 -2
- package/fesm2022/xxmachina-components.mjs +2 -2
- package/package.json +1 -1
- package/types/xxmachina-components-organisms-xterm.d.ts +70 -4
|
Binary file
|
|
@@ -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-
|
|
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"] });
|
|
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-
|
|
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"] }]
|
|
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-
|
|
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 });
|
|
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-
|
|
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"] }]
|
|
94
94
|
}], propDecorators: { label: [{
|
|
95
95
|
type: Input
|
|
96
96
|
}], displayDays: [{
|
|
@@ -273,20 +273,6 @@ class FileLinkProvider {
|
|
|
273
273
|
return { path: text };
|
|
274
274
|
}
|
|
275
275
|
}
|
|
276
|
-
const isLikelyFilePath = (text) => {
|
|
277
|
-
return /\.[a-zA-Z0-9]+(?::\d+(?::\d+)?)?$/.test(text) && !/^https?:\/\//.test(text);
|
|
278
|
-
};
|
|
279
|
-
const parseFilePath = (text) => {
|
|
280
|
-
const match = text.match(/^(.+?)(?::(\d+)(?::(\d+))?)?$/);
|
|
281
|
-
if (match) {
|
|
282
|
-
return {
|
|
283
|
-
path: match[1],
|
|
284
|
-
line: match[2] ? parseInt(match[2], 10) : undefined,
|
|
285
|
-
column: match[3] ? parseInt(match[3], 10) : undefined
|
|
286
|
-
};
|
|
287
|
-
}
|
|
288
|
-
return { path: text };
|
|
289
|
-
};
|
|
290
276
|
|
|
291
277
|
class FileLinksAddon {
|
|
292
278
|
_handler;
|
|
@@ -304,6 +290,91 @@ class FileLinksAddon {
|
|
|
304
290
|
}
|
|
305
291
|
}
|
|
306
292
|
|
|
293
|
+
const SESSION_MENTION_REGEX = /(?:^|[\s((『「])@([a-z][a-z0-9]*(?:-[a-z0-9]+)*)(?![\w/-])(?!\.[a-z0-9])/g;
|
|
294
|
+
function extractSessionMentions(text) {
|
|
295
|
+
const mentions = [];
|
|
296
|
+
SESSION_MENTION_REGEX.lastIndex = 0;
|
|
297
|
+
let match;
|
|
298
|
+
while ((match = SESSION_MENTION_REGEX.exec(text)) !== null) {
|
|
299
|
+
const name = match[1];
|
|
300
|
+
const ref = `@${name}`;
|
|
301
|
+
const start = match.index + (match[0].length - ref.length);
|
|
302
|
+
mentions.push({ name, start, end: start + ref.length });
|
|
303
|
+
}
|
|
304
|
+
return mentions;
|
|
305
|
+
}
|
|
306
|
+
class SessionMentionLinkProvider {
|
|
307
|
+
_terminal;
|
|
308
|
+
_handler;
|
|
309
|
+
constructor(_terminal, _handler) {
|
|
310
|
+
this._terminal = _terminal;
|
|
311
|
+
this._handler = _handler;
|
|
312
|
+
}
|
|
313
|
+
provideLinks(bufferLineNumber, callback) {
|
|
314
|
+
const lineIndex = bufferLineNumber - 1;
|
|
315
|
+
const line = this._terminal.buffer.active.getLine(lineIndex);
|
|
316
|
+
if (!line) {
|
|
317
|
+
callback(undefined);
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
const text = line.translateToString(true);
|
|
321
|
+
const links = [];
|
|
322
|
+
for (const mention of extractSessionMentions(text)) {
|
|
323
|
+
const [, startX] = this._mapStrIdx(lineIndex, 0, mention.start);
|
|
324
|
+
const [, endX] = this._mapStrIdx(lineIndex, startX, mention.end - mention.start);
|
|
325
|
+
if (startX === -1 || endX === -1)
|
|
326
|
+
continue;
|
|
327
|
+
links.push({
|
|
328
|
+
text: `@${mention.name}`,
|
|
329
|
+
range: {
|
|
330
|
+
start: { x: startX + 1, y: bufferLineNumber },
|
|
331
|
+
end: { x: endX, y: bufferLineNumber },
|
|
332
|
+
},
|
|
333
|
+
activate: (event) => this._handler(event, mention.name),
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
callback(links.length > 0 ? links : undefined);
|
|
337
|
+
}
|
|
338
|
+
_mapStrIdx(lineIndex, rowIndex, stringIndex) {
|
|
339
|
+
const buf = this._terminal.buffer.active;
|
|
340
|
+
const cell = buf.getNullCell();
|
|
341
|
+
let start = rowIndex;
|
|
342
|
+
while (stringIndex) {
|
|
343
|
+
const line = buf.getLine(lineIndex);
|
|
344
|
+
if (!line)
|
|
345
|
+
return [-1, -1];
|
|
346
|
+
for (let i = start; i < line.length; ++i) {
|
|
347
|
+
line.getCell(i, cell);
|
|
348
|
+
const chars = cell.getChars();
|
|
349
|
+
const width = cell.getWidth();
|
|
350
|
+
if (width) {
|
|
351
|
+
stringIndex -= chars.length || 1;
|
|
352
|
+
}
|
|
353
|
+
if (stringIndex < 0) {
|
|
354
|
+
return [lineIndex, i];
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
lineIndex++;
|
|
358
|
+
start = 0;
|
|
359
|
+
}
|
|
360
|
+
return [lineIndex, start];
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
class SessionMentionLinksAddon {
|
|
365
|
+
_handler;
|
|
366
|
+
_linkProvider;
|
|
367
|
+
constructor(_handler) {
|
|
368
|
+
this._handler = _handler;
|
|
369
|
+
}
|
|
370
|
+
activate(terminal) {
|
|
371
|
+
this._linkProvider = terminal.registerLinkProvider(new SessionMentionLinkProvider(terminal, this._handler));
|
|
372
|
+
}
|
|
373
|
+
dispose() {
|
|
374
|
+
this._linkProvider?.dispose();
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
|
|
307
378
|
function deployVersionToHostSuffix(version) {
|
|
308
379
|
if (!version || version === 'stable')
|
|
309
380
|
return '';
|
|
@@ -322,6 +393,12 @@ function deployVersionToHostSuffix(version) {
|
|
|
322
393
|
return '';
|
|
323
394
|
}
|
|
324
395
|
|
|
396
|
+
const USER_CONTENT_DOMAIN = '10p.io';
|
|
397
|
+
function buildUserContentOrigin(serverUUID, portOrService, deployVersion, domain = USER_CONTENT_DOMAIN) {
|
|
398
|
+
const suffix = deployVersionToHostSuffix(deployVersion);
|
|
399
|
+
return `https://${serverUUID}--${portOrService}${suffix}.${domain}`;
|
|
400
|
+
}
|
|
401
|
+
|
|
325
402
|
function encodeUrlHandoff(token, endpoints, env) {
|
|
326
403
|
if (env) {
|
|
327
404
|
return btoa(JSON.stringify({ t: token, env }));
|
|
@@ -337,8 +414,7 @@ function appendUrlHandoff(proxyUrl, token, endpoints, env) {
|
|
|
337
414
|
function openWebProxyForPort(opts) {
|
|
338
415
|
const { serverUUID, port, path = '/', token, endpoints, env, deployVersion } = opts;
|
|
339
416
|
const handler = opts.handler ?? ((_, url) => { window.open(url, '_blank', 'noopener'); });
|
|
340
|
-
const
|
|
341
|
-
const baseProxyUrl = `https://${serverUUID}--${port}${hostSuffix}.proxy.machina.at${path}`;
|
|
417
|
+
const baseProxyUrl = `${buildUserContentOrigin(serverUUID, port, deployVersion)}${path}`;
|
|
342
418
|
if (!token || !endpoints) {
|
|
343
419
|
handler(undefined, baseProxyUrl);
|
|
344
420
|
return;
|
|
@@ -353,8 +429,7 @@ function toProxyUrl(serverUUID, localhostUrl, deployVersion) {
|
|
|
353
429
|
return null;
|
|
354
430
|
const port = match[1] || '80';
|
|
355
431
|
const path = match[2] || '/';
|
|
356
|
-
|
|
357
|
-
return `https://${serverUUID}--${port}${hostSuffix}.proxy.machina.at${path}`;
|
|
432
|
+
return `${buildUserContentOrigin(serverUUID, port, deployVersion)}${path}`;
|
|
358
433
|
}
|
|
359
434
|
|
|
360
435
|
const LOCALHOST_URL_REGEX = /https?:\/\/(?:localhost|127\.0\.0\.1)(?::(\d+))?(\/[^\s<>'")\]]*)?/g;
|
|
@@ -469,6 +544,7 @@ var XtermActionId;
|
|
|
469
544
|
XtermActionId["RESIZED"] = "xterm:resized";
|
|
470
545
|
XtermActionId["GITHUB_LINK_CLICK"] = "xterm:github-link-click";
|
|
471
546
|
XtermActionId["FILE_LINK_CLICK"] = "xterm:file-link-click";
|
|
547
|
+
XtermActionId["SESSION_MENTION_CLICK"] = "xterm:session-mention-click";
|
|
472
548
|
XtermActionId["FOCUS_INPUT_REQUEST"] = "xterm:focus-input-request";
|
|
473
549
|
})(XtermActionId || (XtermActionId = {}));
|
|
474
550
|
const XTERM_SESSION_CONTEXT = new InjectionToken('XTERM_SESSION_CONTEXT');
|
|
@@ -628,7 +704,33 @@ function _legacyMeasureViaTempTerminal(fontSize = CANONICAL_FONT_SIZE_PX) {
|
|
|
628
704
|
}
|
|
629
705
|
}
|
|
630
706
|
|
|
631
|
-
const
|
|
707
|
+
const NOOP = { reset: false, text: '' };
|
|
708
|
+
function hasVisibleContent(s) {
|
|
709
|
+
const stripped = s
|
|
710
|
+
// eslint-disable-next-line no-control-regex
|
|
711
|
+
.replace(/\x1b\[[\d;?]*[a-zA-Z]/g, '')
|
|
712
|
+
// eslint-disable-next-line no-control-regex
|
|
713
|
+
.replace(/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g, '');
|
|
714
|
+
return /\S/.test(stripped);
|
|
715
|
+
}
|
|
716
|
+
function decideTerminalWrite(state, data, totalWritten) {
|
|
717
|
+
if (totalWritten < state.lastProcessedLength) {
|
|
718
|
+
return { reset: true, text: data };
|
|
719
|
+
}
|
|
720
|
+
if (!data)
|
|
721
|
+
return NOOP;
|
|
722
|
+
const newBytesCount = totalWritten - state.lastProcessedLength;
|
|
723
|
+
if (newBytesCount <= 0) {
|
|
724
|
+
return NOOP;
|
|
725
|
+
}
|
|
726
|
+
if (data === state.lastData)
|
|
727
|
+
return NOOP;
|
|
728
|
+
if (newBytesCount >= data.length) {
|
|
729
|
+
return { reset: hasVisibleContent(data), text: data };
|
|
730
|
+
}
|
|
731
|
+
return { reset: false, text: data.slice(-newBytesCount) };
|
|
732
|
+
}
|
|
733
|
+
|
|
632
734
|
const DISPLAY_THEME = {
|
|
633
735
|
background: '#0a0a0a',
|
|
634
736
|
foreground: '#66d9ef',
|
|
@@ -665,6 +767,45 @@ const INTERACTIVE_THEME = {
|
|
|
665
767
|
brightCyan: '#8ad7ff',
|
|
666
768
|
brightWhite: '#e5e5e5',
|
|
667
769
|
};
|
|
770
|
+
|
|
771
|
+
const defaultOsc8Opener = (uri) => {
|
|
772
|
+
window.open(uri, '_blank', 'noopener');
|
|
773
|
+
};
|
|
774
|
+
function createOsc8LinkHandler(open) {
|
|
775
|
+
return {
|
|
776
|
+
activate: (event, text) => {
|
|
777
|
+
open(text, event);
|
|
778
|
+
},
|
|
779
|
+
};
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
function buildTerminalOptions({ isInteractive, useInteractiveTheme, focused = true, openLink = defaultOsc8Opener, }) {
|
|
783
|
+
return {
|
|
784
|
+
linkHandler: createOsc8LinkHandler(openLink),
|
|
785
|
+
theme: useInteractiveTheme ? INTERACTIVE_THEME : DISPLAY_THEME,
|
|
786
|
+
scrollback: isInteractive && focused ? 10000 : 1000,
|
|
787
|
+
fontSize: useInteractiveTheme ? 14 : 12,
|
|
788
|
+
fontFamily: CANONICAL_FONT_FAMILY,
|
|
789
|
+
lineHeight: CANONICAL_LINE_HEIGHT,
|
|
790
|
+
allowTransparency: false,
|
|
791
|
+
disableStdin: !isInteractive,
|
|
792
|
+
cursorBlink: isInteractive,
|
|
793
|
+
cursorStyle: 'block',
|
|
794
|
+
convertEol: true,
|
|
795
|
+
altClickMovesCursor: false,
|
|
796
|
+
macOptionClickForcesSelection: true,
|
|
797
|
+
rows: 24,
|
|
798
|
+
};
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
function installQueryReplySuppression(terminal) {
|
|
802
|
+
terminal.parser.registerCsiHandler({ final: 'c' }, () => true);
|
|
803
|
+
terminal.parser.registerCsiHandler({ prefix: '>', final: 'c' }, () => true);
|
|
804
|
+
terminal.parser.registerCsiHandler({ final: 'n' }, () => true);
|
|
805
|
+
terminal.parser.registerEscHandler({ final: 'Z' }, () => true);
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
const MIN_CONTAINER_SIZE = 10;
|
|
668
809
|
class XtermOrganism extends NgAtomicComponent {
|
|
669
810
|
container = viewChild.required('container');
|
|
670
811
|
store = inject(XtermOrganismStore);
|
|
@@ -676,9 +817,11 @@ class XtermOrganism extends NgAtomicComponent {
|
|
|
676
817
|
imageAddon;
|
|
677
818
|
githubLinksAddon;
|
|
678
819
|
fileLinksAddon;
|
|
820
|
+
sessionMentionLinksAddon;
|
|
679
821
|
resizeObserver;
|
|
680
822
|
lastDataLength = 0;
|
|
681
823
|
lastProcessedLength = 0;
|
|
824
|
+
lastWrittenData = null;
|
|
682
825
|
terminalInitialized = signal(false, ...(ngDevMode ? [{ debugName: "terminalInitialized" }] : []));
|
|
683
826
|
initialized = this.terminalInitialized.asReadonly();
|
|
684
827
|
fitEpoch = signal(0, ...(ngDevMode ? [{ debugName: "fitEpoch" }] : []));
|
|
@@ -698,7 +841,7 @@ class XtermOrganism extends NgAtomicComponent {
|
|
|
698
841
|
const data = dataIsFunction ? rawData() : rawData;
|
|
699
842
|
if (!isInitialized)
|
|
700
843
|
return;
|
|
701
|
-
if (totalWritten > 0) {
|
|
844
|
+
if (totalWritten > 0 || this.lastProcessedLength > 0) {
|
|
702
845
|
this.writeDataWithTotalWritten(data ?? '', totalWritten);
|
|
703
846
|
}
|
|
704
847
|
else {
|
|
@@ -740,34 +883,20 @@ class XtermOrganism extends NgAtomicComponent {
|
|
|
740
883
|
}
|
|
741
884
|
}
|
|
742
885
|
writeDataWithTotalWritten(data, totalWritten) {
|
|
743
|
-
|
|
886
|
+
const isStreamRestart = totalWritten < this.lastProcessedLength;
|
|
887
|
+
if (!data && !isStreamRestart)
|
|
744
888
|
return;
|
|
745
|
-
const
|
|
746
|
-
if (
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
this.terminal.write(data);
|
|
750
|
-
this.lastProcessedLength = totalWritten;
|
|
751
|
-
}
|
|
752
|
-
return;
|
|
753
|
-
}
|
|
754
|
-
let written = '';
|
|
755
|
-
if (newBytesCount >= data.length) {
|
|
756
|
-
if (hasVisibleContent(data)) {
|
|
757
|
-
this.terminal.reset();
|
|
758
|
-
}
|
|
759
|
-
this.terminal.write(data);
|
|
760
|
-
written = data;
|
|
889
|
+
const decision = decideTerminalWrite({ lastData: this.lastWrittenData, lastProcessedLength: this.lastProcessedLength }, data, totalWritten);
|
|
890
|
+
if (decision.reset) {
|
|
891
|
+
this.terminal.reset();
|
|
892
|
+
this.lastDataLength = data.length;
|
|
761
893
|
}
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
if (newContent) {
|
|
766
|
-
this.terminal.write(newContent);
|
|
767
|
-
written = newContent;
|
|
768
|
-
}
|
|
894
|
+
const written = decision.text;
|
|
895
|
+
if (written) {
|
|
896
|
+
this.terminal.write(written);
|
|
769
897
|
}
|
|
770
898
|
this.lastProcessedLength = totalWritten;
|
|
899
|
+
this.lastWrittenData = data;
|
|
771
900
|
if (hasDisplayClearWithoutScrollbackClear(written)) {
|
|
772
901
|
this.terminal.clear();
|
|
773
902
|
}
|
|
@@ -792,19 +921,8 @@ class XtermOrganism extends NgAtomicComponent {
|
|
|
792
921
|
initializeTerminal(containerElement) {
|
|
793
922
|
const isInteractive = this.store.interactive();
|
|
794
923
|
const useInteractiveTheme = this.store.useInteractiveTheme() || isInteractive;
|
|
795
|
-
this.terminal = new Terminal({
|
|
796
|
-
|
|
797
|
-
scrollback: isInteractive ? 10000 : 1000,
|
|
798
|
-
fontSize: useInteractiveTheme ? 14 : 12,
|
|
799
|
-
fontFamily: CANONICAL_FONT_FAMILY,
|
|
800
|
-
lineHeight: CANONICAL_LINE_HEIGHT,
|
|
801
|
-
allowTransparency: false,
|
|
802
|
-
disableStdin: !isInteractive,
|
|
803
|
-
cursorBlink: isInteractive,
|
|
804
|
-
cursorStyle: 'block',
|
|
805
|
-
convertEol: true,
|
|
806
|
-
rows: 24
|
|
807
|
-
});
|
|
924
|
+
this.terminal = new Terminal(buildTerminalOptions({ isInteractive, useInteractiveTheme }));
|
|
925
|
+
installQueryReplySuppression(this.terminal);
|
|
808
926
|
this.fitAddon = new FitAddon();
|
|
809
927
|
this.terminal.loadAddon(this.fitAddon);
|
|
810
928
|
this.terminal.loadAddon(new WebLinksAddon());
|
|
@@ -819,6 +937,10 @@ class XtermOrganism extends NgAtomicComponent {
|
|
|
819
937
|
}
|
|
820
938
|
});
|
|
821
939
|
this.terminal.loadAddon(this.fileLinksAddon);
|
|
940
|
+
this.sessionMentionLinksAddon = new SessionMentionLinksAddon((event, name) => {
|
|
941
|
+
this.dispatch({ id: XtermActionId.SESSION_MENTION_CLICK, payload: { name } });
|
|
942
|
+
});
|
|
943
|
+
this.terminal.loadAddon(this.sessionMentionLinksAddon);
|
|
822
944
|
const ctx = this.store.sessionContext;
|
|
823
945
|
this.terminal.loadAddon(new ProxyLinksAddon(ctx?.getServerUUID ?? (() => undefined), ctx?.getProxyToken, undefined, ctx?.getDeployVersion, ctx?.getProxyEndpoints, ctx?.onMissingToken, ctx?.getProxyEnv));
|
|
824
946
|
this.terminal.open(containerElement);
|
|
@@ -995,6 +1117,9 @@ class XtermOrganism extends NgAtomicComponent {
|
|
|
995
1117
|
const helperTextarea = this.container().nativeElement.querySelector('.xterm-helper-textarea');
|
|
996
1118
|
helperTextarea?.focus();
|
|
997
1119
|
}
|
|
1120
|
+
clearSelection() {
|
|
1121
|
+
this.terminal?.clearSelection();
|
|
1122
|
+
}
|
|
998
1123
|
fit() {
|
|
999
1124
|
this.fitToViewport();
|
|
1000
1125
|
if (this.terminalInitialized() && this.terminal) {
|
|
@@ -1042,14 +1167,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
1042
1167
|
inputs: ['data', 'interactive', 'useInteractiveTheme', 'totalWritten'],
|
|
1043
1168
|
}], 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"] }]
|
|
1044
1169
|
}], ctorParameters: () => [], propDecorators: { container: [{ type: i0.ViewChild, args: ['container', { isSignal: true }] }], terminalReady: [{ type: i0.Output, args: ["terminalReady"] }], githubLinkClick: [{ type: i0.Output, args: ["githubLinkClick"] }] } });
|
|
1045
|
-
function hasVisibleContent(s) {
|
|
1046
|
-
const stripped = s
|
|
1047
|
-
// eslint-disable-next-line no-control-regex -- ANSI CSI / OSC を strip するため意図的に \x1b / \x07 を match
|
|
1048
|
-
.replace(/\x1b\[[\d;?]*[a-zA-Z]/g, '')
|
|
1049
|
-
// eslint-disable-next-line no-control-regex -- ANSI OSC を strip するため意図的に \x1b / \x07 を match
|
|
1050
|
-
.replace(/\x1b\][^\x07\x1b]*[\x07\x1b]/g, '');
|
|
1051
|
-
return /\S/.test(stripped);
|
|
1052
|
-
}
|
|
1053
1170
|
function hasDisplayClearWithoutScrollbackClear(s) {
|
|
1054
1171
|
return s.includes('\x1b[2J') && !s.includes('\x1b[3J');
|
|
1055
1172
|
}
|
|
@@ -1245,8 +1362,20 @@ async function getMachinaAsciiArtSixel(options = {}) {
|
|
|
1245
1362
|
});
|
|
1246
1363
|
}
|
|
1247
1364
|
|
|
1365
|
+
const FOCUSED_SCROLLBACK = 10000;
|
|
1366
|
+
const UNFOCUSED_SCROLLBACK = 1000;
|
|
1367
|
+
const focusedOnce = new WeakSet();
|
|
1368
|
+
function applyScrollbackForFocus(terminal, { isInteractive, focused }) {
|
|
1369
|
+
if (isInteractive && focused)
|
|
1370
|
+
focusedOnce.add(terminal);
|
|
1371
|
+
const grown = isInteractive && (focused || focusedOnce.has(terminal));
|
|
1372
|
+
const next = grown ? FOCUSED_SCROLLBACK : UNFOCUSED_SCROLLBACK;
|
|
1373
|
+
if (terminal.options.scrollback !== next)
|
|
1374
|
+
terminal.options.scrollback = next;
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1248
1377
|
/**
|
|
1249
1378
|
* Generated bundle index. Do not edit.
|
|
1250
1379
|
*/
|
|
1251
1380
|
|
|
1252
|
-
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, WebLinksAddon, XTERM_SESSION_CONTEXT, XtermActionId, XtermOrganism, XtermOrganismStore, appendUrlHandoff, asciiArtToSvg, clearCanvasCellMetricCache, computeFitToViewport, deployVersionToHostSuffix, encodeUrlHandoff, generateAsciiArt, getCanvasCellMetric, getMachinaAsciiArtSixel, measureCellMetric, openWebProxyForPort, recordCanvasCellMetric, svgToSixel, toProxyUrl };
|
|
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 };
|
|
@@ -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-
|
|
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"] }] });
|
|
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-
|
|
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"] }]
|
|
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-
|
|
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 });
|
|
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-
|
|
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"] }]
|
|
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-
|
|
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" }] });
|
|
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-
|
|
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"] }]
|
|
141
141
|
}], propDecorators: { onCompositionStart: [{
|
|
142
142
|
type: HostListener,
|
|
143
143
|
args: ['compositionstart', ['$event']]
|
|
@@ -4,11 +4,7 @@ import { QueryPageStore, QueryPage } from '@xxmachina/components/pages/query';
|
|
|
4
4
|
import { injectOne } from '@ng-atomic/common/stores/entities';
|
|
5
5
|
import { injectRouteParam } from '@ng-atomic/common/utils';
|
|
6
6
|
import { applyToInput } from '@ng-atomic/core';
|
|
7
|
-
import dayjs from 'dayjs';
|
|
8
7
|
|
|
9
|
-
function buildYearMonthColumns(startYearMonth, months) {
|
|
10
|
-
return Array.from({ length: months }, (_, i) => dayjs(startYearMonth).add(i, 'month').format('YYYY/MM'));
|
|
11
|
-
}
|
|
12
8
|
const routes = [
|
|
13
9
|
{
|
|
14
10
|
path: '',
|
|
@@ -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-
|
|
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 });
|
|
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-
|
|
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"] }]
|
|
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-
|
|
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 });
|
|
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-
|
|
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"] }]
|
|
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-
|
|
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 });
|
|
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-
|
|
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"] }]
|
|
270
270
|
}] });
|
|
271
271
|
|
|
272
272
|
var InvoiceAppActionId;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { InjectionToken, AfterViewInit, OnDestroy, ElementRef } from '@angular/core';
|
|
3
|
-
import { ILinkProvider, Terminal, ILink, ITerminalAddon } from '@xterm/xterm';
|
|
3
|
+
import { ILinkProvider, Terminal, ILink, ITerminalAddon, ITerminalOptions, ITerminalInitOnlyOptions } from '@xterm/xterm';
|
|
4
4
|
import * as _ng_atomic_core from '@ng-atomic/core';
|
|
5
5
|
import { InjectableComponent, NgAtomicComponent } from '@ng-atomic/core';
|
|
6
6
|
import * as _ng_atomic_common_services_ui from '@ng-atomic/common/services/ui';
|
|
@@ -53,10 +53,12 @@ declare enum XtermActionId {
|
|
|
53
53
|
RESIZED = "xterm:resized",
|
|
54
54
|
GITHUB_LINK_CLICK = "xterm:github-link-click",
|
|
55
55
|
FILE_LINK_CLICK = "xterm:file-link-click",
|
|
56
|
+
SESSION_MENTION_CLICK = "xterm:session-mention-click",
|
|
56
57
|
FOCUS_INPUT_REQUEST = "xterm:focus-input-request"
|
|
57
58
|
}
|
|
58
59
|
interface XtermSessionContext {
|
|
59
60
|
readonly getServerUUID?: () => string | undefined;
|
|
61
|
+
readonly getSessionId?: () => string | undefined;
|
|
60
62
|
readonly getProxyToken?: () => string | undefined;
|
|
61
63
|
readonly getDeployVersion?: () => string | null | undefined;
|
|
62
64
|
readonly getProxyEndpoints?: () => ProxyEndpoints | undefined;
|
|
@@ -142,7 +144,6 @@ declare class XtermOrganismStore extends InjectableComponent {
|
|
|
142
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>;
|
|
143
145
|
}
|
|
144
146
|
|
|
145
|
-
type ImageAddon = any;
|
|
146
147
|
declare const DISPLAY_THEME: {
|
|
147
148
|
background: string;
|
|
148
149
|
foreground: string;
|
|
@@ -179,6 +180,9 @@ declare const INTERACTIVE_THEME: {
|
|
|
179
180
|
brightCyan: string;
|
|
180
181
|
brightWhite: string;
|
|
181
182
|
};
|
|
183
|
+
|
|
184
|
+
type ImageAddon = any;
|
|
185
|
+
|
|
182
186
|
declare class XtermOrganism extends NgAtomicComponent implements AfterViewInit, OnDestroy {
|
|
183
187
|
readonly container: _angular_core.Signal<ElementRef<HTMLDivElement>>;
|
|
184
188
|
protected readonly store: XtermOrganismStore;
|
|
@@ -190,9 +194,11 @@ declare class XtermOrganism extends NgAtomicComponent implements AfterViewInit,
|
|
|
190
194
|
private imageAddon;
|
|
191
195
|
private githubLinksAddon;
|
|
192
196
|
private fileLinksAddon;
|
|
197
|
+
private sessionMentionLinksAddon;
|
|
193
198
|
private resizeObserver?;
|
|
194
199
|
private lastDataLength;
|
|
195
200
|
private lastProcessedLength;
|
|
201
|
+
private lastWrittenData;
|
|
196
202
|
private readonly terminalInitialized;
|
|
197
203
|
readonly initialized: _angular_core.Signal<boolean>;
|
|
198
204
|
readonly fitEpoch: _angular_core.WritableSignal<number>;
|
|
@@ -220,6 +226,7 @@ declare class XtermOrganism extends NgAtomicComponent implements AfterViewInit,
|
|
|
220
226
|
scrollToTop(): void;
|
|
221
227
|
scrollLines(lines: number): void;
|
|
222
228
|
focus(): void;
|
|
229
|
+
clearSelection(): void;
|
|
223
230
|
fit(): void;
|
|
224
231
|
get cols(): number;
|
|
225
232
|
get rows(): number;
|
|
@@ -256,6 +263,31 @@ declare class GitHubLinksAddon implements ITerminalAddon {
|
|
|
256
263
|
dispose(): void;
|
|
257
264
|
}
|
|
258
265
|
|
|
266
|
+
interface SessionMentionActivateHandler {
|
|
267
|
+
(event: MouseEvent, name: string): void;
|
|
268
|
+
}
|
|
269
|
+
interface SessionMention {
|
|
270
|
+
name: string;
|
|
271
|
+
start: number;
|
|
272
|
+
end: number;
|
|
273
|
+
}
|
|
274
|
+
declare function extractSessionMentions(text: string): SessionMention[];
|
|
275
|
+
declare class SessionMentionLinkProvider implements ILinkProvider {
|
|
276
|
+
private readonly _terminal;
|
|
277
|
+
private readonly _handler;
|
|
278
|
+
constructor(_terminal: Terminal, _handler: SessionMentionActivateHandler);
|
|
279
|
+
provideLinks(bufferLineNumber: number, callback: (links: ILink[] | undefined) => void): void;
|
|
280
|
+
private _mapStrIdx;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
declare class SessionMentionLinksAddon implements ITerminalAddon {
|
|
284
|
+
private readonly _handler;
|
|
285
|
+
private _linkProvider?;
|
|
286
|
+
constructor(_handler: SessionMentionActivateHandler);
|
|
287
|
+
activate(terminal: Terminal): void;
|
|
288
|
+
dispose(): void;
|
|
289
|
+
}
|
|
290
|
+
|
|
259
291
|
declare class WebLinksAddon implements ITerminalAddon {
|
|
260
292
|
private readonly _handler?;
|
|
261
293
|
private _linkProvider?;
|
|
@@ -278,6 +310,9 @@ declare class ProxyLinksAddon implements ITerminalAddon {
|
|
|
278
310
|
dispose(): void;
|
|
279
311
|
}
|
|
280
312
|
|
|
313
|
+
declare const USER_CONTENT_DOMAIN = "10p.io";
|
|
314
|
+
declare function buildUserContentOrigin(serverUUID: string, portOrService: number | string, deployVersion?: string | null, domain?: string): string;
|
|
315
|
+
|
|
281
316
|
interface SvgToSixelOptions {
|
|
282
317
|
width?: number;
|
|
283
318
|
height?: number;
|
|
@@ -327,5 +362,36 @@ declare function recordCanvasCellMetric(metric: {
|
|
|
327
362
|
}): void;
|
|
328
363
|
declare function getCanvasCellMetric(fontSize?: number): CanvasCellMetric;
|
|
329
364
|
|
|
330
|
-
|
|
331
|
-
|
|
365
|
+
interface TerminalWriteState {
|
|
366
|
+
readonly lastData: string | null;
|
|
367
|
+
readonly lastProcessedLength: number;
|
|
368
|
+
}
|
|
369
|
+
interface TerminalWriteDecision {
|
|
370
|
+
readonly reset: boolean;
|
|
371
|
+
readonly text: string;
|
|
372
|
+
}
|
|
373
|
+
declare function hasVisibleContent(s: string): boolean;
|
|
374
|
+
declare function decideTerminalWrite(state: TerminalWriteState, data: string, totalWritten: number): TerminalWriteDecision;
|
|
375
|
+
|
|
376
|
+
type Osc8Opener = (uri: string, event: MouseEvent) => void;
|
|
377
|
+
|
|
378
|
+
interface TerminalOptionsInput {
|
|
379
|
+
readonly isInteractive: boolean;
|
|
380
|
+
readonly useInteractiveTheme: boolean;
|
|
381
|
+
readonly focused?: boolean;
|
|
382
|
+
readonly openLink?: Osc8Opener;
|
|
383
|
+
}
|
|
384
|
+
declare function buildTerminalOptions({ isInteractive, useInteractiveTheme, focused, openLink, }: TerminalOptionsInput): ITerminalOptions & ITerminalInitOnlyOptions;
|
|
385
|
+
|
|
386
|
+
interface ScrollbackFocusTarget {
|
|
387
|
+
options: {
|
|
388
|
+
scrollback?: number;
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
declare function applyScrollbackForFocus(terminal: ScrollbackFocusTarget, { isInteractive, focused }: {
|
|
392
|
+
isInteractive: boolean;
|
|
393
|
+
focused: boolean;
|
|
394
|
+
}): void;
|
|
395
|
+
|
|
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 };
|