@opentui/core 0.2.11 → 0.2.13

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.
@@ -6664,15 +6664,29 @@ class Selection {
6664
6664
  return this._touchedRenderables;
6665
6665
  }
6666
6666
  getSelectedText() {
6667
- const selectedTexts = this._selectedRenderables.sort((a, b) => {
6667
+ const selectedTextsByLine = new Map;
6668
+ const selectedRenderables = this._selectedRenderables.sort((a, b) => {
6668
6669
  const aY = a.y;
6669
6670
  const bY = b.y;
6670
6671
  if (aY !== bY) {
6671
6672
  return aY - bY;
6672
6673
  }
6673
6674
  return a.x - b.x;
6674
- }).filter((renderable) => !renderable.isDestroyed).map((renderable) => renderable.getSelectedText()).filter((text) => text);
6675
- return selectedTexts.join(`
6675
+ }).filter((renderable) => !renderable.isDestroyed);
6676
+ for (const renderable of selectedRenderables) {
6677
+ const text = renderable.getSelectedText();
6678
+ if (!text)
6679
+ continue;
6680
+ const lines = text.split(`
6681
+ `);
6682
+ for (let index = 0;index < lines.length; index += 1) {
6683
+ const y = renderable.y + index;
6684
+ const line = selectedTextsByLine.get(y) ?? [];
6685
+ line.push({ x: renderable.x, text: lines[index] });
6686
+ selectedTextsByLine.set(y, line);
6687
+ }
6688
+ }
6689
+ 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
6690
  `);
6677
6691
  }
6678
6692
  }
@@ -12467,7 +12481,11 @@ function getOpenTUILib(libPath) {
12467
12481
  args: ["ptr"],
12468
12482
  returns: "void"
12469
12483
  },
12470
- setEventCallback: {
12484
+ createEventSink: {
12485
+ args: ["ptr"],
12486
+ returns: "ptr"
12487
+ },
12488
+ destroyEventSink: {
12471
12489
  args: ["ptr"],
12472
12490
  returns: "void"
12473
12491
  },
@@ -13128,7 +13146,7 @@ function getOpenTUILib(libPath) {
13128
13146
  returns: "void"
13129
13147
  },
13130
13148
  createEditBuffer: {
13131
- args: ["u8"],
13149
+ args: ["u8", "ptr"],
13132
13150
  returns: "ptr"
13133
13151
  },
13134
13152
  destroyEditBuffer: {
@@ -13728,6 +13746,7 @@ class FFIRenderLib {
13728
13746
  decoder = new TextDecoder;
13729
13747
  logCallbackWrapper = null;
13730
13748
  eventCallbackWrapper = null;
13749
+ eventSinkPtr = null;
13731
13750
  _nativeEvents = new EventEmitter4;
13732
13751
  _anyEventHandlers = [];
13733
13752
  nativeSpanFeedCallbackWrapper = null;
@@ -13793,15 +13812,8 @@ class FFIRenderLib {
13793
13812
  if (nameLen === 0 || !namePtr) {
13794
13813
  return;
13795
13814
  }
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
- }
13815
+ const eventName = this.decoder.decode(toArrayBuffer(namePtr, 0, nameLen));
13816
+ const eventData = dataLen > 0 && dataPtr ? toArrayBuffer(dataPtr, 0, dataLen).slice(0) : new ArrayBuffer(0);
13805
13817
  queueMicrotask(() => {
13806
13818
  this._nativeEvents.emit(eventName, eventData);
13807
13819
  for (const handler of this._anyEventHandlers) {
@@ -13819,7 +13831,12 @@ class FFIRenderLib {
13819
13831
  if (!eventCallback.ptr) {
13820
13832
  throw new Error("Failed to create event callback");
13821
13833
  }
13822
- this.setEventCallback(eventCallback.ptr);
13834
+ this.eventSinkPtr = this.opentui.symbols.createEventSink(eventCallback.ptr);
13835
+ if (!this.eventSinkPtr) {
13836
+ eventCallback.close();
13837
+ this.eventCallbackWrapper = null;
13838
+ throw new Error("Failed to create native event sink");
13839
+ }
13823
13840
  }
13824
13841
  ensureNativeSpanFeedCallback() {
13825
13842
  if (this.nativeSpanFeedCallbackWrapper) {
@@ -13840,9 +13857,6 @@ class FFIRenderLib {
13840
13857
  }
13841
13858
  return callback;
13842
13859
  }
13843
- setEventCallback(callbackPtr) {
13844
- this.opentui.symbols.setEventCallback(callbackPtr);
13845
- }
13846
13860
  createRenderer(width, height, options = {}) {
13847
13861
  const testing = options.testing ?? false;
13848
13862
  const remote = options.remote ?? false;
@@ -14610,7 +14624,7 @@ class FFIRenderLib {
14610
14624
  }
14611
14625
  createEditBuffer(widthMethod) {
14612
14626
  const widthMethodCode = widthMethod === "wcwidth" ? 0 : 1;
14613
- const bufferPtr = this.opentui.symbols.createEditBuffer(widthMethodCode);
14627
+ const bufferPtr = this.opentui.symbols.createEditBuffer(widthMethodCode, this.eventSinkPtr);
14614
14628
  if (!bufferPtr) {
14615
14629
  throw new Error("Failed to create EditBuffer");
14616
14630
  }
@@ -24583,5 +24597,5 @@ Captured external output:
24583
24597
 
24584
24598
  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
24599
 
24586
- //# debugId=8F137D6551AE123964756E2164756E21
24587
- //# sourceMappingURL=index-ysvpktsp.js.map
24600
+ //# debugId=8B5573B974F2A3AE64756E2164756E21
24601
+ //# sourceMappingURL=index-04gp15zc.js.map