@opentui/core 0.2.12 → 0.2.14

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.
@@ -5537,6 +5537,28 @@ var kittyKeyMap = {
5537
5537
  57454: "iso_level5_shift"
5538
5538
  };
5539
5539
  var kittyNamedSingleStrokeKeys = [...new Set(Object.values(kittyKeyMap))];
5540
+ var printableKeypadText = {
5541
+ kp0: "0",
5542
+ kp1: "1",
5543
+ kp2: "2",
5544
+ kp3: "3",
5545
+ kp4: "4",
5546
+ kp5: "5",
5547
+ kp6: "6",
5548
+ kp7: "7",
5549
+ kp8: "8",
5550
+ kp9: "9",
5551
+ kpdecimal: ".",
5552
+ kpdivide: "/",
5553
+ kpmultiply: "*",
5554
+ kpminus: "-",
5555
+ kpplus: "+",
5556
+ kpequal: "=",
5557
+ kpseparator: ","
5558
+ };
5559
+ function getPrintableKittyKeyText(key) {
5560
+ return printableKeypadText[key.name];
5561
+ }
5540
5562
  function fromKittyMods(mod) {
5541
5563
  return {
5542
5564
  shift: !!(mod & 1),
@@ -5749,6 +5771,9 @@ function parseKittyKeyboard(sequence) {
5749
5771
  }
5750
5772
  }
5751
5773
  }
5774
+ if (text === "") {
5775
+ text = getPrintableKittyKeyText(key) ?? "";
5776
+ }
5752
5777
  if (text === "") {
5753
5778
  const isPrintable = key.name.length > 0 && !kittyKeyMap[codepoint];
5754
5779
  if (isPrintable) {
@@ -6664,15 +6689,29 @@ class Selection {
6664
6689
  return this._touchedRenderables;
6665
6690
  }
6666
6691
  getSelectedText() {
6667
- const selectedTexts = this._selectedRenderables.sort((a, b) => {
6692
+ const selectedTextsByLine = new Map;
6693
+ const selectedRenderables = this._selectedRenderables.sort((a, b) => {
6668
6694
  const aY = a.y;
6669
6695
  const bY = b.y;
6670
6696
  if (aY !== bY) {
6671
6697
  return aY - bY;
6672
6698
  }
6673
6699
  return a.x - b.x;
6674
- }).filter((renderable) => !renderable.isDestroyed).map((renderable) => renderable.getSelectedText()).filter((text) => text);
6675
- return selectedTexts.join(`
6700
+ }).filter((renderable) => !renderable.isDestroyed);
6701
+ for (const renderable of selectedRenderables) {
6702
+ const text = renderable.getSelectedText();
6703
+ if (!text)
6704
+ continue;
6705
+ const lines = text.split(`
6706
+ `);
6707
+ for (let index = 0;index < lines.length; index += 1) {
6708
+ const y = renderable.y + index;
6709
+ const line = selectedTextsByLine.get(y) ?? [];
6710
+ line.push({ x: renderable.x, text: lines[index] });
6711
+ selectedTextsByLine.set(y, line);
6712
+ }
6713
+ }
6714
+ return [...selectedTextsByLine.entries()].sort(([leftY], [rightY]) => leftY - rightY).map(([, line]) => line.sort((left, right) => left.x - right.x).map((segment) => segment.text).join("")).join(`
6676
6715
  `);
6677
6716
  }
6678
6717
  }
@@ -12467,7 +12506,11 @@ function getOpenTUILib(libPath) {
12467
12506
  args: ["ptr"],
12468
12507
  returns: "void"
12469
12508
  },
12470
- setEventCallback: {
12509
+ createEventSink: {
12510
+ args: ["ptr"],
12511
+ returns: "ptr"
12512
+ },
12513
+ destroyEventSink: {
12471
12514
  args: ["ptr"],
12472
12515
  returns: "void"
12473
12516
  },
@@ -13128,7 +13171,7 @@ function getOpenTUILib(libPath) {
13128
13171
  returns: "void"
13129
13172
  },
13130
13173
  createEditBuffer: {
13131
- args: ["u8"],
13174
+ args: ["u8", "ptr"],
13132
13175
  returns: "ptr"
13133
13176
  },
13134
13177
  destroyEditBuffer: {
@@ -13728,6 +13771,7 @@ class FFIRenderLib {
13728
13771
  decoder = new TextDecoder;
13729
13772
  logCallbackWrapper = null;
13730
13773
  eventCallbackWrapper = null;
13774
+ eventSinkPtr = null;
13731
13775
  _nativeEvents = new EventEmitter4;
13732
13776
  _anyEventHandlers = [];
13733
13777
  nativeSpanFeedCallbackWrapper = null;
@@ -13793,15 +13837,8 @@ class FFIRenderLib {
13793
13837
  if (nameLen === 0 || !namePtr) {
13794
13838
  return;
13795
13839
  }
13796
- const nameBuffer = toArrayBuffer(namePtr, 0, nameLen);
13797
- const nameBytes = new Uint8Array(nameBuffer);
13798
- const eventName = this.decoder.decode(nameBytes);
13799
- let eventData;
13800
- if (dataLen > 0 && dataPtr) {
13801
- eventData = toArrayBuffer(dataPtr, 0, dataLen).slice();
13802
- } else {
13803
- eventData = new ArrayBuffer(0);
13804
- }
13840
+ const eventName = this.decoder.decode(toArrayBuffer(namePtr, 0, nameLen));
13841
+ const eventData = dataLen > 0 && dataPtr ? toArrayBuffer(dataPtr, 0, dataLen).slice(0) : new ArrayBuffer(0);
13805
13842
  queueMicrotask(() => {
13806
13843
  this._nativeEvents.emit(eventName, eventData);
13807
13844
  for (const handler of this._anyEventHandlers) {
@@ -13819,7 +13856,12 @@ class FFIRenderLib {
13819
13856
  if (!eventCallback.ptr) {
13820
13857
  throw new Error("Failed to create event callback");
13821
13858
  }
13822
- this.setEventCallback(eventCallback.ptr);
13859
+ this.eventSinkPtr = this.opentui.symbols.createEventSink(eventCallback.ptr);
13860
+ if (!this.eventSinkPtr) {
13861
+ eventCallback.close();
13862
+ this.eventCallbackWrapper = null;
13863
+ throw new Error("Failed to create native event sink");
13864
+ }
13823
13865
  }
13824
13866
  ensureNativeSpanFeedCallback() {
13825
13867
  if (this.nativeSpanFeedCallbackWrapper) {
@@ -13840,9 +13882,6 @@ class FFIRenderLib {
13840
13882
  }
13841
13883
  return callback;
13842
13884
  }
13843
- setEventCallback(callbackPtr) {
13844
- this.opentui.symbols.setEventCallback(callbackPtr);
13845
- }
13846
13885
  createRenderer(width, height, options = {}) {
13847
13886
  const testing = options.testing ?? false;
13848
13887
  const remote = options.remote ?? false;
@@ -14610,7 +14649,7 @@ class FFIRenderLib {
14610
14649
  }
14611
14650
  createEditBuffer(widthMethod) {
14612
14651
  const widthMethodCode = widthMethod === "wcwidth" ? 0 : 1;
14613
- const bufferPtr = this.opentui.symbols.createEditBuffer(widthMethodCode);
14652
+ const bufferPtr = this.opentui.symbols.createEditBuffer(widthMethodCode, this.eventSinkPtr);
14614
14653
  if (!bufferPtr) {
14615
14654
  throw new Error("Failed to create EditBuffer");
14616
14655
  }
@@ -24583,5 +24622,5 @@ Captured external output:
24583
24622
 
24584
24623
  export { __export, __require, MeasureMode, exports_src, isValidBorderStyle, parseBorderStyle, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, KeyEvent, PasteEvent, KeyHandler, InternalKeyHandler, DEFAULT_FOREGROUND_RGB, DEFAULT_BACKGROUND_RGB, normalizeIndexedColorIndex, ansi256IndexToRgb, RGBA, normalizeColorValue, hexToRgb, rgbToHex, hsvToRgb, parseColor, fonts, measureText, getCharacterPositions, coordinateToCharacterIndex, renderFontToFrameBuffer, TextAttributes, ATTRIBUTE_BASE_BITS, ATTRIBUTE_BASE_MASK, getBaseAttributes, DebugOverlayCorner, TargetChannel, createTextAttributes, attributesWithLink, getLinkId, visualizeRenderableTree, isStyledText, StyledText, stringToStyledText, black, red, green, yellow, blue, magenta, cyan, white, brightBlack, brightRed, brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan, brightWhite, bgBlack, bgRed, bgGreen, bgYellow, bgBlue, bgMagenta, bgCyan, bgWhite, bold, italic, underline, strikethrough, dim, reverse, blink, fg, bg, link, t, hastToStyledText, SystemClock, nonAlphanumericKeys, terminalNamedSingleStrokeKeys, parseKeypress, LinearScrollAccel, MacOSScrollAccel, parseAlign, parseAlignItems, parseBoxSizing, parseDimension, parseDirection, parseDisplay, parseEdge, parseFlexDirection, parseGutter, parseJustify, parseLogLevel, parseMeasureMode, parseOverflow, parsePositionType, parseUnit, parseWrap, MouseParser, Selection, convertGlobalToLocalSelection, ASCIIFontSelectionHelper, envRegistry, registerEnvVar, clearEnvCache, generateEnvMarkdown, generateEnvColored, env, StdinParser, treeSitterToTextChunks, treeSitterToStyledText, stringWidth2 as stringWidth, addDefaultParsers, TreeSitterClient, DataPathsManager, getDataPaths, extensionToFiletype, basenameToFiletype, extToFiletype, pathToFiletype, infoStringToFiletype, getTreeSitterClient, ExtmarksController, createExtmarksController, TerminalPalette, createTerminalPalette, normalizeTerminalPalette, buildTerminalPaletteSignature, decodePasteBytes, stripAnsiSequences, detectLinks, toArrayBuffer, TextBuffer, SpanInfoStruct, LogLevel2 as LogLevel, setRenderLibPath, resolveRenderLib, OptimizedBuffer, h, isVNode, maybeMakeRenderable, wrapWithDelegates, instantiate, delegate, LayoutEvents, RenderableEvents, isRenderable, BaseRenderable, Renderable, RootRenderable, TextBufferView, EditBuffer, EditorView, convertThemeToStyles, SyntaxStyle, ANSI, BoxRenderable, TextBufferRenderable, CodeRenderable, isTextNodeRenderable, TextNodeRenderable, RootTextNodeRenderable, TextRenderable, defaultKeyAliases, mergeKeyAliases, mergeKeyBindings, getKeyBindingAction, buildKeyBindingsMap, capture, ConsolePosition, TerminalConsole, getObjectsInViewport, EditBufferRenderableEvents, isEditBufferRenderable, EditBufferRenderable, calculateRenderGeometry, buildKittyKeyboardFlags, MouseEvent, MouseButton, createCliRenderer, CliRenderEvents, RendererControlState, CliRenderer };
24585
24624
 
24586
- //# debugId=8F137D6551AE123964756E2164756E21
24587
- //# sourceMappingURL=index-ysvpktsp.js.map
24625
+ //# debugId=4B41C39B0C423CD964756E2164756E21
24626
+ //# sourceMappingURL=index-3fq5hq97.js.map