@effect-tui/react 0.12.0 → 0.12.2

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.
@@ -15,6 +15,7 @@ export declare class InputProcessor {
15
15
  private config;
16
16
  private pasteActive;
17
17
  private pasteBuffer;
18
+ private pendingInput;
18
19
  constructor(config: InputProcessorConfig);
19
20
  /**
20
21
  * Process incoming data from stdin.
@@ -22,5 +23,6 @@ export declare class InputProcessor {
22
23
  */
23
24
  process(data: Buffer): void;
24
25
  private emitInput;
26
+ private splitIncompleteCsi;
25
27
  }
26
28
  //# sourceMappingURL=InputProcessor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputProcessor.d.ts","sourceRoot":"","sources":["../../../../src/renderer/input/InputProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEhF,MAAM,WAAW,oBAAoB;IACpC,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IACrC,aAAa,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IACxC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAChC,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACnB;AAED;;GAEG;AACH,qBAAa,cAAc;IAId,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,WAAW,CAAK;gBAEJ,MAAM,EAAE,oBAAoB;IAEhD;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAuC3B,OAAO,CAAC,SAAS;CAkCjB"}
1
+ {"version":3,"file":"InputProcessor.d.ts","sourceRoot":"","sources":["../../../../src/renderer/input/InputProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEhF,MAAM,WAAW,oBAAoB;IACpC,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IACrC,aAAa,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IACxC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAChC,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACnB;AAED;;GAEG;AACH,qBAAa,cAAc;IAKd,OAAO,CAAC,MAAM;IAJ1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAK;gBAEL,MAAM,EAAE,oBAAoB;IAEhD;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAwC3B,OAAO,CAAC,SAAS;IAwCjB,OAAO,CAAC,kBAAkB;CAY1B"}
@@ -6,6 +6,7 @@ export class InputProcessor {
6
6
  config;
7
7
  pasteActive = false;
8
8
  pasteBuffer = "";
9
+ pendingInput = "";
9
10
  constructor(config) {
10
11
  this.config = config;
11
12
  }
@@ -14,7 +15,8 @@ export class InputProcessor {
14
15
  * Handles bracketed paste detection, key/mouse event decoding, and dispatch.
15
16
  */
16
17
  process(data) {
17
- let chunk = data.toString("utf8");
18
+ let chunk = this.pendingInput + data.toString("utf8");
19
+ this.pendingInput = "";
18
20
  while (chunk.length > 0) {
19
21
  if (this.pasteActive) {
20
22
  const endIdx = chunk.indexOf(ANSI.paste.endMarker);
@@ -51,7 +53,13 @@ export class InputProcessor {
51
53
  emitInput(str) {
52
54
  if (!str)
53
55
  return;
54
- const events = decodeInput(Buffer.from(str, "utf8"));
56
+ const { complete, pending } = this.splitIncompleteCsi(str);
57
+ if (pending) {
58
+ this.pendingInput = pending;
59
+ }
60
+ if (!complete)
61
+ return;
62
+ const events = decodeInput(Buffer.from(complete, "utf8"));
55
63
  for (const event of events) {
56
64
  if (event.type === "mouse") {
57
65
  this.config.flushSync(() => {
@@ -82,5 +90,16 @@ export class InputProcessor {
82
90
  }
83
91
  }
84
92
  }
93
+ splitIncompleteCsi(input) {
94
+ const lastEsc = input.lastIndexOf("\x1b");
95
+ if (lastEsc < 0)
96
+ return { complete: input, pending: "" };
97
+ const tail = input.slice(lastEsc);
98
+ // Only buffer if tail looks like the start of a CSI sequence (ESC[...) without a final byte.
99
+ if (tail.startsWith("\x1b[") && !/[A-Za-z~]$/.test(tail)) {
100
+ return { complete: input.slice(0, lastEsc), pending: tail };
101
+ }
102
+ return { complete: input, pending: "" };
103
+ }
85
104
  }
86
105
  //# sourceMappingURL=InputProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputProcessor.js","sourceRoot":"","sources":["../../../../src/renderer/input/InputProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InputProcessor.js","sourceRoot":"","sources":["../../../../src/renderer/input/InputProcessor.ts"],"names":[],"mappings":"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"}