@simon_he/vue-tui 1.1.18 → 1.1.19

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.
@@ -2344,6 +2344,10 @@ const TInput = defineComponent({
2344
2344
  type: Boolean,
2345
2345
  default: false
2346
2346
  },
2347
+ autoCopy: {
2348
+ type: Boolean,
2349
+ default: true
2350
+ },
2347
2351
  cursorBlink: {
2348
2352
  type: Boolean,
2349
2353
  default: true
@@ -3488,6 +3492,11 @@ const TInput = defineComponent({
3488
3492
  hostAdapter.showToast?.("Copy failed");
3489
3493
  });
3490
3494
  }
3495
+ function autoCopySelection() {
3496
+ if (!props.autoCopy || props.secret || !isTerminalHost()) return;
3497
+ const sel = selection.value;
3498
+ if (sel) copySelectionText(getValue().slice(sel.start, sel.end));
3499
+ }
3491
3500
  function onKeydown(e) {
3492
3501
  if (e.key === "Enter") {
3493
3502
  const ts = typeof e.timeStamp === "number" ? e.timeStamp : Date.now();
@@ -3937,14 +3946,7 @@ const TInput = defineComponent({
3937
3946
  scheduler.invalidate();
3938
3947
  },
3939
3948
  pointerup: () => {
3940
- if (isTerminalHost() && mouseDragSelecting) {
3941
- const sel = selection.value;
3942
- if (sel) {
3943
- const value = getValue();
3944
- const text = value.slice(sel.start, sel.end);
3945
- if (text) copySelectionText(text);
3946
- }
3947
- }
3949
+ if (mouseDragSelecting) autoCopySelection();
3948
3950
  if (mouseDragSelecting) suppressNextClick = true;
3949
3951
  mouseDownCell = null;
3950
3952
  mouseDownShift = false;
@@ -3987,9 +3989,8 @@ const TInput = defineComponent({
3987
3989
  if (isTripleClick) {
3988
3990
  selectAll();
3989
3991
  lastClick = null;
3990
- return;
3991
- }
3992
- if (isDoubleClick) selectTokenAtCursor();
3992
+ } else if (isDoubleClick) selectTokenAtCursor();
3993
+ if (isDoubleClick || isTripleClick) autoCopySelection();
3993
3994
  scheduler.invalidate();
3994
3995
  },
3995
3996
  paste: (e) => {
@@ -9,7 +9,7 @@ import { createFramePerfStore, createTraceStore } from "./trace-Bh8WnoMo.js";
9
9
  import { envFlag, envString, firstNonEmptyEnv } from "./env-Cl8qmNFN.js";
10
10
  import { createTerminalSelectionController } from "./terminal-selection-4W1SJj4c.js";
11
11
  import { createDebugLogger, isDebugEnabled } from "./debug-logger-CmsGI4of.js";
12
- import { TBox, TInput, TRenderPlane, resolveOverlayPlacement } from "./TSelect-CnBJET_C.js";
12
+ import { TBox, TInput, TRenderPlane, resolveOverlayPlacement } from "./TSelect-CFPttz5X.js";
13
13
  import { TText, TView, createFrameMailbox } from "./frame-mailbox-6XHw-P8Q.js";
14
14
  import { applyWheelScroll, createWheelScrollState, resetWheelScrollState } from "./wheel-scroll-CQ22Hcyj.js";
15
15
  import { computed, defineComponent, effectScope, getCurrentInstance, h, inject, nextTick, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, provide, ref, shallowReactive, shallowRef, toRef, watch, watchEffect } from "vue";
package/dist/agent.cjs CHANGED
@@ -3285,6 +3285,8 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue12.defineCo
3285
3285
  placeholderWhenFocused: { type: Boolean, default: !1 },
3286
3286
  style: { type: Object, default: void 0 },
3287
3287
  autoFocus: { type: Boolean, default: !1 },
3288
+ /** Automatically copies terminal mouse selections; secret inputs never auto-copy. */
3289
+ autoCopy: { type: Boolean, default: !0 },
3288
3290
  cursorBlink: { type: Boolean, default: !0 },
3289
3291
  cursorShape: {
3290
3292
  type: String,
@@ -4143,6 +4145,12 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue12.defineCo
4143
4145
  isTerminalHost() && hostAdapter.showToast?.("Copy failed");
4144
4146
  });
4145
4147
  }
4148
+ function autoCopySelection() {
4149
+ if (!props.autoCopy || props.secret || !isTerminalHost())
4150
+ return;
4151
+ let sel = selection.value;
4152
+ sel && copySelectionText(getValue().slice(sel.start, sel.end));
4153
+ }
4146
4154
  function onKeydown(e) {
4147
4155
  if (e.key === "Enter" && (typeof e.timeStamp == "number" ? e.timeStamp : Date.now()) <= suppressEnterUntil) {
4148
4156
  suppressEnterUntil = 0, e.preventDefault(), e.stopPropagation();
@@ -4500,14 +4508,7 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue12.defineCo
4500
4508
  }
4501
4509
  },
4502
4510
  pointerup: () => {
4503
- if (isTerminalHost() && mouseDragSelecting) {
4504
- let sel = selection.value;
4505
- if (sel) {
4506
- let text2 = getValue().slice(sel.start, sel.end);
4507
- text2 && copySelectionText(text2);
4508
- }
4509
- }
4510
- mouseDragSelecting && (suppressNextClick = !0), mouseDownCell = null, mouseDownShift = !1, mouseDragSelecting = !1;
4511
+ mouseDragSelecting && autoCopySelection(), mouseDragSelecting && (suppressNextClick = !0), mouseDownCell = null, mouseDownShift = !1, mouseDragSelecting = !1;
4511
4512
  },
4512
4513
  beforeinput: (e) => {
4513
4514
  compositionBlocked.value || (e.isComposing || e.inputType === "insertCompositionText") && (composing.value = !0, compositionText.value = readEventText(e), ensureCursorVisible(), scheduler.invalidate());
@@ -4522,13 +4523,7 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue12.defineCo
4522
4523
  let manager = events.value;
4523
4524
  manager && id.value && manager.focus(id.value), emit("focus");
4524
4525
  let extend = !isDoubleClick && !isTripleClick && !!e.shiftKey;
4525
- if (setCursorByCell2D(e.cellX, e.cellY, extend, e, !0), !e.defaultPrevented) {
4526
- if (isTripleClick) {
4527
- selectAll(), lastClick = null;
4528
- return;
4529
- }
4530
- isDoubleClick && selectTokenAtCursor(), scheduler.invalidate();
4531
- }
4526
+ setCursorByCell2D(e.cellX, e.cellY, extend, e, !0), !e.defaultPrevented && (isTripleClick ? (selectAll(), lastClick = null) : isDoubleClick && selectTokenAtCursor(), (isDoubleClick || isTripleClick) && autoCopySelection(), scheduler.invalidate());
4532
4527
  },
4533
4528
  paste: (e) => {
4534
4529
  e.preventDefault();
package/dist/agent.js CHANGED
@@ -6,7 +6,7 @@ import "./frame-perf-CHpWhbC4.js";
6
6
  import "./env-Cl8qmNFN.js";
7
7
  import "./terminal-selection-4W1SJj4c.js";
8
8
  import "./debug-logger-CmsGI4of.js";
9
- import { TBox, TCommandPalette, TDialog, TInput, TRenderPlane, TSelect, computeCommandPaletteMatchRanges } from "./TSelect-CnBJET_C.js";
9
+ import { TBox, TCommandPalette, TDialog, TInput, TRenderPlane, TSelect, computeCommandPaletteMatchRanges } from "./TSelect-CFPttz5X.js";
10
10
  import { TText, TView } from "./frame-mailbox-6XHw-P8Q.js";
11
11
  import "./path-BI9W15Zt.js";
12
12
  import "./wheel-scroll-CQ22Hcyj.js";
package/dist/index.cjs CHANGED
@@ -8911,6 +8911,8 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue20.defineCo
8911
8911
  placeholderWhenFocused: { type: Boolean, default: !1 },
8912
8912
  style: { type: Object, default: void 0 },
8913
8913
  autoFocus: { type: Boolean, default: !1 },
8914
+ /** Automatically copies terminal mouse selections; secret inputs never auto-copy. */
8915
+ autoCopy: { type: Boolean, default: !0 },
8914
8916
  cursorBlink: { type: Boolean, default: !0 },
8915
8917
  cursorShape: {
8916
8918
  type: String,
@@ -9769,6 +9771,12 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue20.defineCo
9769
9771
  isTerminalHost() && hostAdapter.showToast?.("Copy failed");
9770
9772
  });
9771
9773
  }
9774
+ function autoCopySelection() {
9775
+ if (!props.autoCopy || props.secret || !isTerminalHost())
9776
+ return;
9777
+ let sel = selection.value;
9778
+ sel && copySelectionText(getValue().slice(sel.start, sel.end));
9779
+ }
9772
9780
  function onKeydown(e) {
9773
9781
  if (e.key === "Enter" && (typeof e.timeStamp == "number" ? e.timeStamp : Date.now()) <= suppressEnterUntil) {
9774
9782
  suppressEnterUntil = 0, e.preventDefault(), e.stopPropagation();
@@ -10126,14 +10134,7 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue20.defineCo
10126
10134
  }
10127
10135
  },
10128
10136
  pointerup: () => {
10129
- if (isTerminalHost() && mouseDragSelecting) {
10130
- let sel = selection.value;
10131
- if (sel) {
10132
- let text = getValue().slice(sel.start, sel.end);
10133
- text && copySelectionText(text);
10134
- }
10135
- }
10136
- mouseDragSelecting && (suppressNextClick = !0), mouseDownCell = null, mouseDownShift = !1, mouseDragSelecting = !1;
10137
+ mouseDragSelecting && autoCopySelection(), mouseDragSelecting && (suppressNextClick = !0), mouseDownCell = null, mouseDownShift = !1, mouseDragSelecting = !1;
10137
10138
  },
10138
10139
  beforeinput: (e) => {
10139
10140
  compositionBlocked.value || (e.isComposing || e.inputType === "insertCompositionText") && (composing.value = !0, compositionText.value = readEventText(e), ensureCursorVisible(), scheduler.invalidate());
@@ -10148,13 +10149,7 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue20.defineCo
10148
10149
  let manager = events.value;
10149
10150
  manager && id.value && manager.focus(id.value), emit("focus");
10150
10151
  let extend = !isDoubleClick && !isTripleClick && !!e.shiftKey;
10151
- if (setCursorByCell2D(e.cellX, e.cellY, extend, e, !0), !e.defaultPrevented) {
10152
- if (isTripleClick) {
10153
- selectAll(), lastClick = null;
10154
- return;
10155
- }
10156
- isDoubleClick && selectTokenAtCursor(), scheduler.invalidate();
10157
- }
10152
+ setCursorByCell2D(e.cellX, e.cellY, extend, e, !0), !e.defaultPrevented && (isTripleClick ? (selectAll(), lastClick = null) : isDoubleClick && selectTokenAtCursor(), (isDoubleClick || isTripleClick) && autoCopySelection(), scheduler.invalidate());
10158
10153
  },
10159
10154
  paste: (e) => {
10160
10155
  e.preventDefault();
package/dist/index.js CHANGED
@@ -8,10 +8,10 @@ import "./runtime-Byf8XXOT.js";
8
8
  import "./frame-perf-CHpWhbC4.js";
9
9
  import "./trace-Bh8WnoMo.js";
10
10
  import "./env-Cl8qmNFN.js";
11
- import { TAutocompleteInput, TBadge, TCheckbox, TCode, TDataTable, TDivider, TFormField, TLink, TLinkifyText, TList, TPasswordInput, TRadioGroup, TSlider, TSwitch, TTable, TTag, TTree, TerminalProvider, createTInputHostPlugin } from "./TTree-DqyzDB0h.js";
11
+ import { TAutocompleteInput, TBadge, TCheckbox, TCode, TDataTable, TDivider, TFormField, TLink, TLinkifyText, TList, TPasswordInput, TRadioGroup, TSlider, TSwitch, TTable, TTag, TTree, TerminalProvider, createTInputHostPlugin } from "./TTree-WNE6uWd8.js";
12
12
  import "./terminal-selection-4W1SJj4c.js";
13
13
  import "./debug-logger-CmsGI4of.js";
14
- import { TBox, TCommandPalette, TDialog, TInput, TSelect, computeCommandPaletteMatchRanges } from "./TSelect-CnBJET_C.js";
14
+ import { TBox, TCommandPalette, TDialog, TInput, TSelect, computeCommandPaletteMatchRanges } from "./TSelect-CFPttz5X.js";
15
15
  import { TText, TView } from "./frame-mailbox-6XHw-P8Q.js";
16
16
  import "./path-BI9W15Zt.js";
17
17
  import "./wheel-scroll-CQ22Hcyj.js";
@@ -51,6 +51,11 @@ export declare const TInput: import("vue").DefineComponent<import("vue").Extract
51
51
  type: BooleanConstructor;
52
52
  default: boolean;
53
53
  };
54
+ /** Automatically copies terminal mouse selections; secret inputs never auto-copy. */
55
+ autoCopy: {
56
+ type: BooleanConstructor;
57
+ default: boolean;
58
+ };
54
59
  cursorBlink: {
55
60
  type: BooleanConstructor;
56
61
  default: boolean;
@@ -245,6 +250,11 @@ export declare const TInput: import("vue").DefineComponent<import("vue").Extract
245
250
  type: BooleanConstructor;
246
251
  default: boolean;
247
252
  };
253
+ /** Automatically copies terminal mouse selections; secret inputs never auto-copy. */
254
+ autoCopy: {
255
+ type: BooleanConstructor;
256
+ default: boolean;
257
+ };
248
258
  cursorBlink: {
249
259
  type: BooleanConstructor;
250
260
  default: boolean;
@@ -415,6 +425,7 @@ export declare const TInput: import("vue").DefineComponent<import("vue").Extract
415
425
  }>;
416
426
  h: number;
417
427
  zIndex: number;
428
+ autoCopy: boolean;
418
429
  autoFocus: boolean;
419
430
  cursorToEndOnExternalUpdate: boolean;
420
431
  cursorToEndOnFirstFocus: boolean;
@@ -46,6 +46,11 @@ export declare const TInputBox: import("vue").DefineComponent<import("vue").Extr
46
46
  type: BooleanConstructor;
47
47
  default: boolean;
48
48
  };
49
+ /** Automatically copies terminal mouse selections, as in TInput. */
50
+ autoCopy: {
51
+ type: BooleanConstructor;
52
+ default: boolean;
53
+ };
49
54
  plugins: {
50
55
  type: PropType<readonly TInputPlugin[]>;
51
56
  default: () => never[];
@@ -109,6 +114,11 @@ export declare const TInputBox: import("vue").DefineComponent<import("vue").Extr
109
114
  type: BooleanConstructor;
110
115
  default: boolean;
111
116
  };
117
+ /** Automatically copies terminal mouse selections, as in TInput. */
118
+ autoCopy: {
119
+ type: BooleanConstructor;
120
+ default: boolean;
121
+ };
112
122
  plugins: {
113
123
  type: PropType<readonly TInputPlugin[]>;
114
124
  default: () => never[];
@@ -145,6 +155,7 @@ export declare const TInputBox: import("vue").DefineComponent<import("vue").Extr
145
155
  }>;
146
156
  title: string;
147
157
  zIndex: number;
158
+ autoCopy: boolean;
148
159
  padding: number;
149
160
  autoFocus: boolean;
150
161
  placeholder: string;
package/dist/vue.cjs CHANGED
@@ -4062,6 +4062,8 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue15.defineCo
4062
4062
  placeholderWhenFocused: { type: Boolean, default: !1 },
4063
4063
  style: { type: Object, default: void 0 },
4064
4064
  autoFocus: { type: Boolean, default: !1 },
4065
+ /** Automatically copies terminal mouse selections; secret inputs never auto-copy. */
4066
+ autoCopy: { type: Boolean, default: !0 },
4065
4067
  cursorBlink: { type: Boolean, default: !0 },
4066
4068
  cursorShape: {
4067
4069
  type: String,
@@ -4920,6 +4922,12 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue15.defineCo
4920
4922
  isTerminalHost() && hostAdapter.showToast?.("Copy failed");
4921
4923
  });
4922
4924
  }
4925
+ function autoCopySelection() {
4926
+ if (!props.autoCopy || props.secret || !isTerminalHost())
4927
+ return;
4928
+ let sel = selection.value;
4929
+ sel && copySelectionText(getValue().slice(sel.start, sel.end));
4930
+ }
4923
4931
  function onKeydown(e) {
4924
4932
  if (e.key === "Enter" && (typeof e.timeStamp == "number" ? e.timeStamp : Date.now()) <= suppressEnterUntil) {
4925
4933
  suppressEnterUntil = 0, e.preventDefault(), e.stopPropagation();
@@ -5277,14 +5285,7 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue15.defineCo
5277
5285
  }
5278
5286
  },
5279
5287
  pointerup: () => {
5280
- if (isTerminalHost() && mouseDragSelecting) {
5281
- let sel = selection.value;
5282
- if (sel) {
5283
- let text = getValue().slice(sel.start, sel.end);
5284
- text && copySelectionText(text);
5285
- }
5286
- }
5287
- mouseDragSelecting && (suppressNextClick = !0), mouseDownCell = null, mouseDownShift = !1, mouseDragSelecting = !1;
5288
+ mouseDragSelecting && autoCopySelection(), mouseDragSelecting && (suppressNextClick = !0), mouseDownCell = null, mouseDownShift = !1, mouseDragSelecting = !1;
5288
5289
  },
5289
5290
  beforeinput: (e) => {
5290
5291
  compositionBlocked.value || (e.isComposing || e.inputType === "insertCompositionText") && (composing.value = !0, compositionText.value = readEventText(e), ensureCursorVisible(), scheduler.invalidate());
@@ -5299,13 +5300,7 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue15.defineCo
5299
5300
  let manager = events.value;
5300
5301
  manager && id.value && manager.focus(id.value), emit("focus");
5301
5302
  let extend = !isDoubleClick && !isTripleClick && !!e.shiftKey;
5302
- if (setCursorByCell2D(e.cellX, e.cellY, extend, e, !0), !e.defaultPrevented) {
5303
- if (isTripleClick) {
5304
- selectAll(), lastClick = null;
5305
- return;
5306
- }
5307
- isDoubleClick && selectTokenAtCursor(), scheduler.invalidate();
5308
- }
5303
+ setCursorByCell2D(e.cellX, e.cellY, extend, e, !0), !e.defaultPrevented && (isTripleClick ? (selectAll(), lastClick = null) : isDoubleClick && selectTokenAtCursor(), (isDoubleClick || isTripleClick) && autoCopySelection(), scheduler.invalidate());
5309
5304
  },
5310
5305
  paste: (e) => {
5311
5306
  e.preventDefault();
@@ -14531,6 +14526,8 @@ var TInputBox = (0, import_vue33.defineComponent)({
14531
14526
  placeholder: { type: String, default: "" },
14532
14527
  style: { type: Object, default: void 0 },
14533
14528
  autoFocus: { type: Boolean, default: !1 },
14529
+ /** Automatically copies terminal mouse selections, as in TInput. */
14530
+ autoCopy: { type: Boolean, default: !0 },
14534
14531
  plugins: {
14535
14532
  type: Array,
14536
14533
  default: () => []
@@ -14572,6 +14569,7 @@ var TInputBox = (0, import_vue33.defineComponent)({
14572
14569
  placeholder: props.placeholder,
14573
14570
  style: props.style,
14574
14571
  autoFocus: props.autoFocus,
14572
+ autoCopy: props.autoCopy,
14575
14573
  plugins: props.plugins,
14576
14574
  cursorBlink: props.cursorBlink,
14577
14575
  cursorShape: props.cursorShape,
package/dist/vue.js CHANGED
@@ -8,10 +8,10 @@ import "./runtime-Byf8XXOT.js";
8
8
  import "./frame-perf-CHpWhbC4.js";
9
9
  import "./trace-Bh8WnoMo.js";
10
10
  import "./env-Cl8qmNFN.js";
11
- import { TAutocompleteInput, TBadge, TCheckbox, TCode, TDataTable, TDivider, TForm, TFormContextKey, TFormField, TLink, TLinkifyText, TList, TPasswordInput, TProgress, TRadioGroup, TSlider, TSpinner, TSwitch, TTable, TTag, TToastViewport, TTree, TerminalProvider, createTInputHostPlugin, useTForm } from "./TTree-DqyzDB0h.js";
11
+ import { TAutocompleteInput, TBadge, TCheckbox, TCode, TDataTable, TDivider, TForm, TFormContextKey, TFormField, TLink, TLinkifyText, TList, TPasswordInput, TProgress, TRadioGroup, TSlider, TSpinner, TSwitch, TTable, TTag, TToastViewport, TTree, TerminalProvider, createTInputHostPlugin, useTForm } from "./TTree-WNE6uWd8.js";
12
12
  import "./terminal-selection-4W1SJj4c.js";
13
13
  import "./debug-logger-CmsGI4of.js";
14
- import { TBox, TCommandPalette, TDialog, TInput, TRenderPlane, TSelect, clamp$1, computeCommandPaletteMatchRanges, createOverlayFocusStack, isCommitMention, isWhitespace, mentionChipStyle, padEndByCells as padEndByCells$1, resolveOverlayPlacement, sliceByCellsWindow, textCellWidth as textCellWidth$1 } from "./TSelect-CnBJET_C.js";
14
+ import { TBox, TCommandPalette, TDialog, TInput, TRenderPlane, TSelect, clamp$1, computeCommandPaletteMatchRanges, createOverlayFocusStack, isCommitMention, isWhitespace, mentionChipStyle, padEndByCells as padEndByCells$1, resolveOverlayPlacement, sliceByCellsWindow, textCellWidth as textCellWidth$1 } from "./TSelect-CFPttz5X.js";
15
15
  import { TText, TView } from "./frame-mailbox-6XHw-P8Q.js";
16
16
  import { normalizePath, stripTrailingSlash } from "./path-BI9W15Zt.js";
17
17
  import { applyWheelScroll, createWheelScrollState } from "./wheel-scroll-CQ22Hcyj.js";
@@ -2587,6 +2587,10 @@ const TInputBox = defineComponent({
2587
2587
  type: Boolean,
2588
2588
  default: false
2589
2589
  },
2590
+ autoCopy: {
2591
+ type: Boolean,
2592
+ default: true
2593
+ },
2590
2594
  plugins: {
2591
2595
  type: Array,
2592
2596
  default: () => []
@@ -2635,6 +2639,7 @@ const TInputBox = defineComponent({
2635
2639
  placeholder: props.placeholder,
2636
2640
  style: props.style,
2637
2641
  autoFocus: props.autoFocus,
2642
+ autoCopy: props.autoCopy,
2638
2643
  plugins: props.plugins,
2639
2644
  cursorBlink: props.cursorBlink,
2640
2645
  cursorShape: props.cursorShape,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simon_he/vue-tui",
3
- "version": "1.1.18",
3
+ "version": "1.1.19",
4
4
  "description": "Vue 3 terminal UI components and renderers for browser DOM, CLI stdout, logs, markdown transcripts, and agent consoles",
5
5
  "keywords": [
6
6
  "agent-console",