@simon_he/vue-tui 0.0.5 → 0.0.6

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.
Files changed (4) hide show
  1. package/dist/index.cjs +1478 -125
  2. package/dist/index.d.ts +119 -102
  3. package/dist/index.js +1295 -112
  4. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -39,9 +39,16 @@ type TerminalSize = Readonly<{
39
39
  cols: number;
40
40
  rows: number;
41
41
  }>;
42
+ type TerminalScrollOperation = Readonly<{
43
+ startY: number;
44
+ endY: number;
45
+ delta: number;
46
+ }>;
42
47
  type TerminalCommitEvent = Readonly<{
43
48
  dirtyRows: readonly number[] | null;
44
49
  planes: TerminalRenderPlanes | null;
50
+ sync?: boolean;
51
+ scrollOperations?: readonly TerminalScrollOperation[] | null;
45
52
  }>;
46
53
  type TerminalResizeEvent = Readonly<{
47
54
  cols: number;
@@ -70,6 +77,7 @@ interface Terminal {
70
77
  batch: <T>(fn: () => T) => T;
71
78
  commit: (meta?: {
72
79
  planes?: TerminalRenderPlanes | null;
80
+ sync?: boolean;
73
81
  }) => readonly number[] | null;
74
82
  on: <K extends keyof TerminalEventMap>(event: K, cb: (payload: TerminalEventMap[K]) => void) => () => void;
75
83
  dispose: () => void;
@@ -79,6 +87,10 @@ interface Terminal {
79
87
  getRow: (y: number) => readonly Cell[];
80
88
  setScrollbackLimit: (limit: number) => void;
81
89
  getScrollbackLines: (count?: number) => readonly string[];
90
+ /** Register fingerprint function for SoA pre-computation on the composite buffer. */
91
+ setFingerprintFn: (fn: (ch: string, style: Style) => number) => void;
92
+ /** Get pre-computed fingerprints for a composite buffer row (null if not enabled). */
93
+ getRowFingerprints: (y: number) => Uint32Array | null;
82
94
  } //#endregion
83
95
  //#region src/core/ansi/colors.d.ts
84
96
  type TerminalColorMode = 'ansi8' | 'ansi16' | 'ansi256' | 'truecolor';
@@ -626,106 +638,6 @@ declare function createEventManager(container: HTMLElement, metrics: CellMetrics
626
638
  onFocusChange?: (prev: string | null, next: string | null) => void;
627
639
  }>): EventManager;
628
640
 
629
- //#endregion
630
- //#region src/vue/components/input/host.d.ts
631
- type ResolveTInputPathInfo = Readonly<{
632
- workspace: string;
633
- input: string;
634
- preserveBackslash?: boolean;
635
- homeDir?: string;
636
- }>;
637
- type TInputHostAdapter = Readonly<{
638
- isTerminalLike?: boolean;
639
- resolvePath?: (info: ResolveTInputPathInfo) => string;
640
- pathToHref?: (pathLike: string) => string | undefined;
641
- readClipboardText?: () => Promise<string>;
642
- writeClipboardText?: (text: string) => Promise<boolean>;
643
- showToast?: (message: string) => void;
644
- }>;
645
-
646
- //#endregion
647
- //#region src/vue/components/input/plugins/types.d.ts
648
- type PromptSuggestion = Readonly<{
649
- value: string;
650
- insert?: string;
651
- label?: string;
652
- detail?: string;
653
- keywords?: readonly string[];
654
- mentionValue?: string;
655
- mentionBehavior?: 'collect' | 'inline';
656
- onSelect?: (info: Readonly<{
657
- value: string;
658
- query: string;
659
- }>) => void | boolean;
660
- }>;
661
- type TInputPluginContext = Readonly<{
662
- getProps: () => Readonly<{
663
- zIndex: number;
664
- style?: Style;
665
- promptSuggestions: readonly PromptSuggestion[];
666
- promptTrigger: string;
667
- promptTriggers?: readonly string[];
668
- promptMaxItems: number;
669
- promptAlign: 'input' | 'center';
670
- promptSelectedStyle?: Style;
671
- mentionTrigger: string;
672
- mentionWorkspace: string;
673
- mentionMode: PathPickMode;
674
- mentionShowHidden: boolean;
675
- mentionSuggestions: readonly PromptSuggestion[];
676
- mentionMaxItems: number;
677
- collectMentions: boolean;
678
- mentions: readonly string[];
679
- skillTrigger?: string;
680
- skillSuggestions?: readonly PromptSuggestion[];
681
- }>;
682
- emit: (event: string, ...args: any[]) => void;
683
- terminal: Terminal;
684
- scheduler: Readonly<{
685
- invalidate: () => void;
686
- }>;
687
- defaultStyle: Ref<Style>;
688
- render: Readonly<{
689
- rootStack: any;
690
- createStack: (parent: any, z: number) => any;
691
- }>;
692
- visible: Ref<boolean>;
693
- rawAbsRect: ComputedRef<Rect>;
694
- eventZ: ComputedRef<number>;
695
- focused: Ref<boolean>;
696
- cursor: Ref<number>;
697
- getValue: () => string;
698
- insertText: (text: string) => void;
699
- pushUndoSnapshot: (nextValue: string) => void;
700
- applyEdit: (nextValue: string, nextCursor: number) => void;
701
- registerKeydownInterceptor: (fn: (e: TerminalKeyboardEvent) => boolean) => void;
702
- registerTextFilter: (fn: (info: Readonly<{
703
- text: string;
704
- value: string;
705
- cursor: number;
706
- selection: null | Readonly<{
707
- start: number;
708
- end: number;
709
- }>;
710
- }>) => string) => void;
711
- registerChipStyleProvider: (provider: Readonly<{
712
- getStyle: (baseStyle: Style, chip: Readonly<{
713
- kind: 'multiline' | 'mention';
714
- absPath?: string;
715
- }>) => Style | null | undefined;
716
- version: Ref<number>;
717
- }> | null) => void;
718
- registerHostAdapter: (adapter: TInputHostAdapter | null) => void;
719
- resolvePath: (input: string, opts?: Readonly<{
720
- preserveBackslash?: boolean;
721
- }>) => string;
722
- mentionToken: string;
723
- }>;
724
- type TInputPlugin = Readonly<{
725
- name: string;
726
- install: (ctx: TInputPluginContext) => void;
727
- }>;
728
-
729
641
  //#endregion
730
642
  //#region src/observability/trace.d.ts
731
643
  type TraceRecord = Readonly<{
@@ -825,6 +737,8 @@ type RenderNode = Readonly<{
825
737
  type RenderManager = Readonly<{
826
738
  rootStack: RenderStack;
827
739
  createStack: (parent: RenderStack, zIndex: number) => RenderStack;
740
+ invalidatePlane: (plane: TerminalRenderPlane) => void;
741
+ scrollPlane: (plane: TerminalRenderPlane, startY: number, endY: number, delta: number) => void;
828
742
  register: (node: {
829
743
  stack: RenderStack;
830
744
  plane?: TerminalRenderPlane;
@@ -837,6 +751,7 @@ type RenderManager = Readonly<{
837
751
  plane: TerminalRenderPlane;
838
752
  zIndex: number;
839
753
  rect: RenderRect | null;
754
+ dirtyRowsHint: readonly number[];
840
755
  paint: (dirtyRows?: readonly number[]) => void;
841
756
  }>) => void;
842
757
  unregister: (id: string) => void;
@@ -897,6 +812,105 @@ type TerminalContext = Readonly<{
897
812
  }>;
898
813
  declare const TInputPluginsContextKey: InjectionKey<Readonly<Ref<readonly TInputPlugin[]>>>;
899
814
 
815
+ //#endregion
816
+ //#region src/vue/components/input/host.d.ts
817
+ type ResolveTInputPathInfo = Readonly<{
818
+ workspace: string;
819
+ input: string;
820
+ preserveBackslash?: boolean;
821
+ homeDir?: string;
822
+ }>;
823
+ type TInputHostAdapter = Readonly<{
824
+ isTerminalLike?: boolean;
825
+ resolvePath?: (info: ResolveTInputPathInfo) => string;
826
+ pathToHref?: (pathLike: string) => string | undefined;
827
+ readClipboardText?: () => Promise<string>;
828
+ writeClipboardText?: (text: string) => Promise<boolean>;
829
+ showToast?: (message: string) => void;
830
+ }>;
831
+
832
+ //#endregion
833
+ //#region src/vue/components/input/plugins/types.d.ts
834
+ type PromptSuggestion = Readonly<{
835
+ value: string;
836
+ insert?: string;
837
+ label?: string;
838
+ detail?: string;
839
+ keywords?: readonly string[];
840
+ mentionValue?: string;
841
+ mentionBehavior?: 'collect' | 'inline';
842
+ onSelect?: (info: Readonly<{
843
+ value: string;
844
+ query: string;
845
+ }>) => void | boolean;
846
+ }>;
847
+ type TInputPluginContext = Readonly<{
848
+ getProps: () => Readonly<{
849
+ zIndex: number;
850
+ style?: Style;
851
+ promptSuggestions: readonly PromptSuggestion[];
852
+ promptTrigger: string;
853
+ promptTriggers?: readonly string[];
854
+ promptMaxItems: number;
855
+ promptAlign: 'input' | 'center';
856
+ promptSelectedStyle?: Style;
857
+ mentionTrigger: string;
858
+ mentionWorkspace: string;
859
+ mentionMode: PathPickMode;
860
+ mentionShowHidden: boolean;
861
+ mentionSuggestions: readonly PromptSuggestion[];
862
+ mentionMaxItems: number;
863
+ collectMentions: boolean;
864
+ mentions: readonly string[];
865
+ skillTrigger?: string;
866
+ skillSuggestions?: readonly PromptSuggestion[];
867
+ }>;
868
+ emit: (event: string, ...args: any[]) => void;
869
+ terminal: Terminal;
870
+ scheduler: TerminalScheduler;
871
+ defaultStyle: Ref<Style>;
872
+ render: Readonly<{
873
+ rootStack: any;
874
+ createStack: (parent: any, z: number) => any;
875
+ invalidatePlane: (plane: TerminalRenderPlane) => void;
876
+ }>;
877
+ visible: Ref<boolean>;
878
+ rawAbsRect: ComputedRef<Rect>;
879
+ eventZ: ComputedRef<number>;
880
+ focused: Ref<boolean>;
881
+ cursor: Ref<number>;
882
+ getValue: () => string;
883
+ insertText: (text: string) => void;
884
+ pushUndoSnapshot: (nextValue: string) => void;
885
+ applyEdit: (nextValue: string, nextCursor: number) => void;
886
+ registerKeydownInterceptor: (fn: (e: TerminalKeyboardEvent) => boolean) => void;
887
+ registerTextFilter: (fn: (info: Readonly<{
888
+ text: string;
889
+ value: string;
890
+ cursor: number;
891
+ selection: null | Readonly<{
892
+ start: number;
893
+ end: number;
894
+ }>;
895
+ }>) => string) => void;
896
+ registerChipStyleProvider: (provider: Readonly<{
897
+ getStyle: (baseStyle: Style, chip: Readonly<{
898
+ kind: 'multiline' | 'mention';
899
+ absPath?: string;
900
+ }>) => Style | null | undefined;
901
+ version: Ref<number>;
902
+ }> | null) => void;
903
+ registerHostAdapter: (adapter: TInputHostAdapter | null) => void;
904
+ resolvePath: (input: string, opts?: Readonly<{
905
+ preserveBackslash?: boolean;
906
+ }>) => string;
907
+ mentionToken: string;
908
+ }>;
909
+ type TInputPlugin = Readonly<{
910
+ name: string;
911
+ install: (ctx: TInputPluginContext) => void;
912
+ }>;
913
+
900
914
  //#endregion
901
915
  //#region src/create-terminal-app.d.ts
902
916
  type TerminalApp = Readonly<{
@@ -1152,6 +1166,8 @@ interface RenderNodeOptions {
1152
1166
  zIndex?: number;
1153
1167
  stack?: RenderStack;
1154
1168
  rect?: RenderRect | null;
1169
+ dirtyRowsHint?: readonly number[];
1170
+ priority?: TerminalSchedulerPriority;
1155
1171
  deps?: unknown;
1156
1172
  paint: (dirtyRows?: readonly number[]) => void;
1157
1173
  }
@@ -1272,8 +1288,9 @@ interface WheelScrollResult {
1272
1288
  dir: -1 | 0 | 1;
1273
1289
  lines: number;
1274
1290
  }
1291
+ type WheelDeltaMode = 'auto' | 'line' | 'pixel';
1275
1292
  declare function createWheelScrollState(): WheelScrollState;
1276
- declare function applyWheelScroll(state: WheelScrollState, deltaY: number, scrollTop: number, maxTop: number, now?: number): WheelScrollResult;
1293
+ declare function applyWheelScroll(state: WheelScrollState, deltaY: number, scrollTop: number, maxTop: number, now?: number, deltaMode?: WheelDeltaMode): WheelScrollResult;
1277
1294
 
1278
1295
  //#endregion
1279
- export { ANSI16_COLORS, ANSI256_COLORS, ANSI8_COLORS, AnsiColorName, BufferSnapshot, Cell, CellMetrics, CliEventManager, ClipboardApi, CreateTerminalAppOptions, DomRenderer, EventManager, FsDirEntry, FsEntryKind, FsStat, LayoutContext, MentionPathProvider, MentionSuggestionProvider, PathPickMode, PathPickerProvider, PathSuggestion, PromptMentionPluginOptions, PromptSuggestion, RafApi, Rect, Runtime, RuntimeEnv, SGR_RESET, StdinDriver, StdoutRenderer, StdoutRendererMetrics, Style, SuggestPathsResult, TAnchor, TBox, TDebugOverlay, TDialog, TERMINAL_RENDER_PLANES, TFlow, TInput, TInputBox, TInputHostAdapter, TInputPlugin, TInputPluginContext, TInputPluginsContextKey, TJsonEditor, TList, TMultilineModal, TPathPicker, TRenderLayer, TRenderPlane, TRouterView, TSelect, TText, TTransition, TView, Terminal, TerminalApp, TerminalBaseEvent, TerminalColorCapability, TerminalColorLevel, TerminalColorMode, TerminalCommitEvent, TerminalContext, TerminalDebugNode, TerminalEventHandlerMap, TerminalEventMap, TerminalEventRecord, TerminalEventType, TerminalInputEvent, TerminalKeyboardEvent, TerminalNode, TerminalPointerEvent, TerminalProvider, TerminalRenderPlane, TerminalRenderPlanes, TerminalResizeEvent, TerminalRoute, TerminalRouteLocationRaw, TerminalRouteRecord, TerminalRouter, TerminalRuntime, TerminalRuntimeHandle, TerminalScheduler, TerminalSchedulerInvalidateOptions, TimerApi, TraceRecord, TraceStore, ansiColors, ansiStyles, applyWheelScroll, charCellWidth, clearTextCaches, createCliEventManager, createDefaultTInputHostAdapter, createDomRenderer, createEventManager, createNodeMentionPathProvider, createNodePathPickerProvider, createPromptMentionPlugin, createRuntime, createStdinDriver, createStdoutRenderer, createTInputHostPlugin, createTerminal, createTerminalApp, createTerminalRouter, createTextRestrictionPlugin, createTraceStore, createWheelScrollState, defaultTInputHostPlugin, detectTerminalColorCapability, formatInlineCellLine, getStdoutRendererMetrics, lintJsonText, normalizeNewlines, padEndByCells, parseAnsiSgr, readEventLog, resolveUserPath, rgbToAnsi256, sanitizeInlineText, sanitizeTextBlock, sliceByCells, sliceByCellsRange, spaces, suggestPaths, textCellWidth, truecolorBgOpen, truecolorFgOpen, useLayout, useRenderNode, useRoute, useRouter, useTerminal, useTerminalNode, useTerminalRuntime, useVisibility, wrapByCells, writeEventLog, writeSnapshot };
1296
+ export { ANSI16_COLORS, ANSI256_COLORS, ANSI8_COLORS, AnsiColorName, BufferSnapshot, Cell, CellMetrics, CliEventManager, ClipboardApi, CreateTerminalAppOptions, DomRenderer, EventManager, FsDirEntry, FsEntryKind, FsStat, LayoutContext, MentionPathProvider, MentionSuggestionProvider, PathPickMode, PathPickerProvider, PathSuggestion, PromptMentionPluginOptions, PromptSuggestion, RafApi, Rect, Runtime, RuntimeEnv, SGR_RESET, StdinDriver, StdoutRenderer, StdoutRendererMetrics, Style, SuggestPathsResult, TAnchor, TBox, TDebugOverlay, TDialog, TERMINAL_RENDER_PLANES, TFlow, TInput, TInputBox, TInputHostAdapter, TInputPlugin, TInputPluginContext, TInputPluginsContextKey, TJsonEditor, TList, TMultilineModal, TPathPicker, TRenderLayer, TRenderPlane, TRouterView, TSelect, TText, TTransition, TView, Terminal, TerminalApp, TerminalBaseEvent, TerminalColorCapability, TerminalColorLevel, TerminalColorMode, TerminalCommitEvent, TerminalContext, TerminalDebugNode, TerminalEventHandlerMap, TerminalEventMap, TerminalEventRecord, TerminalEventType, TerminalInputEvent, TerminalKeyboardEvent, TerminalNode, TerminalPointerEvent, TerminalProvider, TerminalRenderPlane, TerminalRenderPlanes, TerminalResizeEvent, TerminalRoute, TerminalRouteLocationRaw, TerminalRouteRecord, TerminalRouter, TerminalRuntime, TerminalRuntimeHandle, TerminalScheduler, TerminalSchedulerInvalidateOptions, TerminalScrollOperation, TimerApi, TraceRecord, TraceStore, ansiColors, ansiStyles, applyWheelScroll, charCellWidth, clearTextCaches, createCliEventManager, createDefaultTInputHostAdapter, createDomRenderer, createEventManager, createNodeMentionPathProvider, createNodePathPickerProvider, createPromptMentionPlugin, createRuntime, createStdinDriver, createStdoutRenderer, createTInputHostPlugin, createTerminal, createTerminalApp, createTerminalRouter, createTextRestrictionPlugin, createTraceStore, createWheelScrollState, defaultTInputHostPlugin, detectTerminalColorCapability, formatInlineCellLine, getStdoutRendererMetrics, lintJsonText, normalizeNewlines, padEndByCells, parseAnsiSgr, readEventLog, resolveUserPath, rgbToAnsi256, sanitizeInlineText, sanitizeTextBlock, sliceByCells, sliceByCellsRange, spaces, suggestPaths, textCellWidth, truecolorBgOpen, truecolorFgOpen, useLayout, useRenderNode, useRoute, useRouter, useTerminal, useTerminalNode, useTerminalRuntime, useVisibility, wrapByCells, writeEventLog, writeSnapshot };