@sascha384/tic 5.8.0 → 5.9.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.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function readClipboardImage(): Buffer | null;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import { readFileSync, unlinkSync } from 'node:fs';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { randomBytes } from 'node:crypto';
|
|
6
|
+
export function readClipboardImage() {
|
|
7
|
+
try {
|
|
8
|
+
if (process.platform === 'darwin') {
|
|
9
|
+
const tmp = join(tmpdir(), 'tic-clip-' + randomBytes(4).toString('hex') + '.png');
|
|
10
|
+
try {
|
|
11
|
+
execFileSync('pngpaste', [tmp]);
|
|
12
|
+
const data = readFileSync(tmp);
|
|
13
|
+
return data;
|
|
14
|
+
}
|
|
15
|
+
finally {
|
|
16
|
+
try {
|
|
17
|
+
unlinkSync(tmp);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// ignore cleanup errors
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (process.platform === 'linux') {
|
|
25
|
+
const data = execFileSync('xclip', ['-selection', 'clipboard', '-t', 'image/png', '-o'], { maxBuffer: 50 * 1024 * 1024 });
|
|
26
|
+
return Buffer.from(data);
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=clipboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../src/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,IAAI,CACd,MAAM,EAAE,EACR,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CACtD,CAAC;YACF,IAAI,CAAC;gBACH,YAAY,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChC,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC/B,OAAO,IAAI,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC;oBACH,UAAU,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;gBAAC,MAAM,CAAC;oBACP,wBAAwB;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,YAAY,CACvB,OAAO,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,EACpD,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAChC,CAAC;YACF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { Box, Text } from 'ink';
|
|
|
3
3
|
import { useThemeStore } from '../stores/themeStore.js';
|
|
4
4
|
import { useBackendDataStore } from '../stores/backendDataStore.js';
|
|
5
5
|
import { ColorPill } from './ColorPill.js';
|
|
6
|
+
import { computeLineContexts, highlightLine } from './markdownHighlight.js';
|
|
6
7
|
export function truncateDescription(description, width) {
|
|
7
8
|
if (!description)
|
|
8
9
|
return '';
|
|
@@ -20,9 +21,13 @@ export function DetailPanel({ item, terminalWidth, showFullDescription, descript
|
|
|
20
21
|
// Border takes 2 chars (left+right), paddingLeft takes 1
|
|
21
22
|
const contentWidth = terminalWidth - 3;
|
|
22
23
|
const descriptionLines = hasDescription && showFullDescription ? item.description.split('\n') : [];
|
|
24
|
+
const lineContexts = descriptionLines.length
|
|
25
|
+
? computeLineContexts(descriptionLines)
|
|
26
|
+
: [];
|
|
23
27
|
const scrollOffset = descriptionScrollOffset ?? 0;
|
|
24
28
|
const viewportHeight = maxDescriptionHeight ?? descriptionLines.length;
|
|
25
29
|
const visibleLines = descriptionLines.slice(scrollOffset, scrollOffset + viewportHeight);
|
|
26
|
-
|
|
30
|
+
const visibleContexts = lineContexts.slice(scrollOffset, scrollOffset + viewportHeight);
|
|
31
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: border, paddingLeft: 1, paddingRight: 1, width: terminalWidth, children: [_jsx(Text, { bold: true, wrap: "truncate", children: item.title }), _jsxs(Box, { gap: 1, children: [_jsxs(Text, { dimColor: mutedDim, children: ["#", item.id] }), _jsx(ColorPill, { field: "status", value: item.status }), _jsx(ColorPill, { field: "type", value: item.type }), item.assignee && _jsxs(Text, { dimColor: mutedDim, children: ["@", item.assignee] })] }), hasBottom && (_jsxs(Box, { gap: 1, children: [item.priority && (_jsx(ColorPill, { field: "priority", value: item.priority })), item.labels.map((label) => (_jsx(ColorPill, { field: "label", value: label }, label)))] })), linkedPrs.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, children: "Pull Requests" }), linkedPrs.map((pr) => (_jsxs(Box, { gap: 1, children: [_jsxs(Text, { dimColor: true, children: ["#", pr.number] }), _jsx(Text, { children: pr.title }), _jsx(ColorPill, { field: "status", value: pr.status })] }, pr.id)))] })), hasDescription && !showFullDescription && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: mutedDim, wrap: "truncate", children: truncateDescription(item.description, contentWidth) }) })), showFullDescription && hasDescription && (_jsx(Box, { flexDirection: "column", marginTop: 1, children: visibleLines.map((line, idx) => (_jsx(Box, { children: highlightLine(line, visibleContexts[idx]) }, idx))) }))] }));
|
|
27
32
|
}
|
|
28
33
|
//# sourceMappingURL=DetailPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DetailPanel.js","sourceRoot":"","sources":["../../src/components/DetailPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"DetailPanel.js","sourceRoot":"","sources":["../../src/components/DetailPanel.tsx"],"names":[],"mappings":"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"}
|