@wendongfly/zihi 1.1.0 → 1.1.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.
Files changed (157) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/lib/xterm/README.md +27 -14
  3. package/dist/lib/xterm/css/xterm.css +81 -5
  4. package/dist/lib/xterm/lib/xterm.js +1 -1
  5. package/dist/lib/xterm/lib/xterm.js.map +1 -1
  6. package/dist/lib/xterm/lib/xterm.mjs +53 -0
  7. package/dist/lib/xterm/lib/xterm.mjs.map +7 -0
  8. package/dist/lib/xterm/package.json +49 -38
  9. package/dist/lib/xterm/src/browser/AccessibilityManager.ts +185 -50
  10. package/dist/lib/xterm/src/browser/CoreBrowserTerminal.ts +1339 -0
  11. package/dist/lib/xterm/src/browser/Linkifier.ts +403 -0
  12. package/dist/lib/xterm/src/browser/LocalizableStrings.ts +15 -4
  13. package/dist/lib/xterm/src/browser/OscLinkProvider.ts +2 -1
  14. package/dist/lib/xterm/src/browser/RenderDebouncer.ts +6 -5
  15. package/dist/lib/xterm/src/browser/TimeBasedDebouncer.ts +2 -2
  16. package/dist/lib/xterm/src/browser/Types.ts +226 -0
  17. package/dist/lib/xterm/src/browser/Viewport.ts +148 -357
  18. package/dist/lib/xterm/src/browser/decorations/BufferDecorationRenderer.ts +17 -12
  19. package/dist/lib/xterm/src/browser/decorations/OverviewRulerRenderer.ts +47 -52
  20. package/dist/lib/xterm/src/browser/input/CompositionHelper.ts +5 -3
  21. package/dist/lib/xterm/src/browser/input/MoveToCell.ts +3 -1
  22. package/dist/lib/xterm/src/browser/public/Terminal.ts +39 -24
  23. package/dist/lib/xterm/src/browser/renderer/dom/DomRenderer.ts +76 -40
  24. package/dist/lib/xterm/src/browser/renderer/dom/DomRendererRowFactory.ts +47 -23
  25. package/dist/lib/xterm/src/browser/renderer/dom/WidthCache.ts +19 -9
  26. package/dist/lib/xterm/src/browser/renderer/shared/Constants.ts +0 -8
  27. package/dist/lib/xterm/src/browser/renderer/shared/RendererUtils.ts +38 -1
  28. package/dist/lib/xterm/src/browser/renderer/shared/SelectionRenderModel.ts +6 -4
  29. package/dist/lib/xterm/src/browser/renderer/shared/Types.ts +84 -0
  30. package/dist/lib/xterm/src/browser/selection/Types.ts +15 -0
  31. package/dist/lib/xterm/src/browser/services/CharSizeService.ts +57 -32
  32. package/dist/lib/xterm/src/browser/services/CoreBrowserService.ts +108 -4
  33. package/dist/lib/xterm/src/browser/services/LinkProviderService.ts +28 -0
  34. package/dist/lib/xterm/src/browser/services/RenderService.ts +132 -40
  35. package/dist/lib/xterm/src/browser/services/SelectionService.ts +19 -9
  36. package/dist/lib/xterm/src/browser/services/Services.ts +36 -16
  37. package/dist/lib/xterm/src/browser/services/ThemeService.ts +19 -58
  38. package/dist/lib/xterm/src/browser/shared/Constants.ts +8 -0
  39. package/dist/lib/xterm/src/common/CircularList.ts +5 -5
  40. package/dist/lib/xterm/src/common/Color.ts +34 -14
  41. package/dist/lib/xterm/src/common/CoreTerminal.ts +40 -41
  42. package/dist/lib/xterm/src/common/InputHandler.ts +177 -125
  43. package/dist/lib/xterm/src/common/Platform.ts +2 -1
  44. package/dist/lib/xterm/src/common/SortedList.ts +86 -10
  45. package/dist/lib/xterm/src/common/TaskQueue.ts +7 -7
  46. package/dist/lib/xterm/src/common/Types.ts +552 -0
  47. package/dist/lib/xterm/src/common/buffer/AttributeData.ts +15 -0
  48. package/dist/lib/xterm/src/common/buffer/Buffer.ts +15 -7
  49. package/dist/lib/xterm/src/common/buffer/BufferLine.ts +53 -22
  50. package/dist/lib/xterm/src/common/buffer/BufferRange.ts +1 -1
  51. package/dist/lib/xterm/src/common/buffer/BufferReflow.ts +9 -6
  52. package/dist/lib/xterm/src/common/buffer/BufferSet.ts +5 -5
  53. package/dist/lib/xterm/src/common/buffer/Constants.ts +10 -2
  54. package/dist/lib/xterm/src/common/buffer/Marker.ts +4 -4
  55. package/dist/lib/xterm/src/common/buffer/Types.ts +52 -0
  56. package/dist/lib/xterm/src/common/input/Keyboard.ts +2 -27
  57. package/dist/lib/xterm/src/common/input/UnicodeV6.ts +18 -5
  58. package/dist/lib/xterm/src/common/input/WriteBuffer.ts +9 -8
  59. package/dist/lib/xterm/src/common/parser/EscapeSequenceParser.ts +13 -13
  60. package/dist/lib/xterm/src/common/parser/Types.ts +275 -0
  61. package/dist/lib/xterm/src/common/public/AddonManager.ts +1 -1
  62. package/dist/lib/xterm/src/common/public/BufferApiView.ts +1 -1
  63. package/dist/lib/xterm/src/common/public/BufferLineApiView.ts +1 -1
  64. package/dist/lib/xterm/src/common/public/BufferNamespaceApi.ts +4 -4
  65. package/dist/lib/xterm/src/common/public/ParserApi.ts +1 -1
  66. package/dist/lib/xterm/src/common/public/UnicodeApi.ts +1 -1
  67. package/dist/lib/xterm/src/common/services/BufferService.ts +14 -11
  68. package/dist/lib/xterm/src/common/services/CoreMouseService.ts +53 -6
  69. package/dist/lib/xterm/src/common/services/CoreService.ts +13 -8
  70. package/dist/lib/xterm/src/common/services/DecorationService.ts +11 -11
  71. package/dist/lib/xterm/src/common/services/InstantiationService.ts +1 -1
  72. package/dist/lib/xterm/src/common/services/LogService.ts +2 -2
  73. package/dist/lib/xterm/src/common/services/OptionsService.ts +16 -5
  74. package/dist/lib/xterm/src/common/services/ServiceRegistry.ts +1 -1
  75. package/dist/lib/xterm/src/common/services/Services.ts +73 -19
  76. package/dist/lib/xterm/src/common/services/UnicodeService.ts +30 -5
  77. package/dist/lib/xterm/src/vs/base/browser/browser.ts +141 -0
  78. package/dist/lib/xterm/src/vs/base/browser/canIUse.ts +49 -0
  79. package/dist/lib/xterm/src/vs/base/browser/dom.ts +2369 -0
  80. package/dist/lib/xterm/src/vs/base/browser/fastDomNode.ts +316 -0
  81. package/dist/lib/xterm/src/vs/base/browser/globalPointerMoveMonitor.ts +112 -0
  82. package/dist/lib/xterm/src/vs/base/browser/iframe.ts +135 -0
  83. package/dist/lib/xterm/src/vs/base/browser/keyboardEvent.ts +213 -0
  84. package/dist/lib/xterm/src/vs/base/browser/mouseEvent.ts +229 -0
  85. package/dist/lib/xterm/src/vs/base/browser/touch.ts +372 -0
  86. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +303 -0
  87. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +114 -0
  88. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +720 -0
  89. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +165 -0
  90. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +114 -0
  91. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +243 -0
  92. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +118 -0
  93. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +116 -0
  94. package/dist/lib/xterm/src/vs/base/browser/ui/widget.ts +57 -0
  95. package/dist/lib/xterm/src/vs/base/browser/window.ts +14 -0
  96. package/dist/lib/xterm/src/vs/base/common/arrays.ts +887 -0
  97. package/dist/lib/xterm/src/vs/base/common/arraysFind.ts +202 -0
  98. package/dist/lib/xterm/src/vs/base/common/assert.ts +71 -0
  99. package/dist/lib/xterm/src/vs/base/common/async.ts +1992 -0
  100. package/dist/lib/xterm/src/vs/base/common/cancellation.ts +148 -0
  101. package/dist/lib/xterm/src/vs/base/common/charCode.ts +450 -0
  102. package/dist/lib/xterm/src/vs/base/common/collections.ts +140 -0
  103. package/dist/lib/xterm/src/vs/base/common/decorators.ts +130 -0
  104. package/dist/lib/xterm/src/vs/base/common/equals.ts +146 -0
  105. package/dist/lib/xterm/src/vs/base/common/errors.ts +303 -0
  106. package/dist/lib/xterm/src/vs/base/common/event.ts +1778 -0
  107. package/dist/lib/xterm/src/vs/base/common/functional.ts +32 -0
  108. package/dist/lib/xterm/src/vs/base/common/hash.ts +316 -0
  109. package/dist/lib/xterm/src/vs/base/common/iterator.ts +159 -0
  110. package/dist/lib/xterm/src/vs/base/common/keyCodes.ts +526 -0
  111. package/dist/lib/xterm/src/vs/base/common/keybindings.ts +284 -0
  112. package/dist/lib/xterm/src/vs/base/common/lazy.ts +47 -0
  113. package/dist/lib/xterm/src/vs/base/common/lifecycle.ts +801 -0
  114. package/dist/lib/xterm/src/vs/base/common/linkedList.ts +142 -0
  115. package/dist/lib/xterm/src/vs/base/common/map.ts +202 -0
  116. package/dist/lib/xterm/src/vs/base/common/numbers.ts +98 -0
  117. package/dist/lib/xterm/src/vs/base/common/observable.ts +76 -0
  118. package/dist/lib/xterm/src/vs/base/common/observableInternal/api.ts +31 -0
  119. package/dist/lib/xterm/src/vs/base/common/observableInternal/autorun.ts +281 -0
  120. package/dist/lib/xterm/src/vs/base/common/observableInternal/base.ts +489 -0
  121. package/dist/lib/xterm/src/vs/base/common/observableInternal/debugName.ts +145 -0
  122. package/dist/lib/xterm/src/vs/base/common/observableInternal/derived.ts +428 -0
  123. package/dist/lib/xterm/src/vs/base/common/observableInternal/lazyObservableValue.ts +146 -0
  124. package/dist/lib/xterm/src/vs/base/common/observableInternal/logging.ts +328 -0
  125. package/dist/lib/xterm/src/vs/base/common/observableInternal/promise.ts +209 -0
  126. package/dist/lib/xterm/src/vs/base/common/observableInternal/utils.ts +610 -0
  127. package/dist/lib/xterm/src/vs/base/common/platform.ts +281 -0
  128. package/dist/lib/xterm/src/vs/base/common/scrollable.ts +522 -0
  129. package/dist/lib/xterm/src/vs/base/common/sequence.ts +34 -0
  130. package/dist/lib/xterm/src/vs/base/common/stopwatch.ts +43 -0
  131. package/dist/lib/xterm/src/vs/base/common/strings.ts +557 -0
  132. package/dist/lib/xterm/src/vs/base/common/symbols.ts +9 -0
  133. package/dist/lib/xterm/src/vs/base/common/uint.ts +59 -0
  134. package/dist/lib/xterm/src/vs/patches/nls.ts +90 -0
  135. package/dist/lib/xterm/src/vs/typings/base-common.d.ts +20 -0
  136. package/dist/lib/xterm/src/vs/typings/require.d.ts +42 -0
  137. package/dist/lib/xterm/src/vs/typings/vscode-globals-nls.d.ts +36 -0
  138. package/dist/lib/xterm/src/vs/typings/vscode-globals-product.d.ts +33 -0
  139. package/dist/lib/xterm/typings/xterm.d.ts +156 -43
  140. package/dist/lib/xterm-fit/README.md +5 -5
  141. package/dist/lib/xterm-fit/lib/addon-fit.js +2 -0
  142. package/dist/lib/xterm-fit/lib/addon-fit.js.map +1 -0
  143. package/dist/lib/xterm-fit/lib/addon-fit.mjs +18 -0
  144. package/dist/lib/xterm-fit/lib/addon-fit.mjs.map +7 -0
  145. package/dist/lib/xterm-fit/package.json +9 -9
  146. package/dist/lib/xterm-fit/src/FitAddon.ts +7 -4
  147. package/dist/lib/xterm-fit/typings/addon-fit.d.ts +55 -0
  148. package/dist/lib/xterm-links/README.md +5 -5
  149. package/dist/lib/xterm-links/lib/addon-web-links.js +2 -0
  150. package/dist/lib/xterm-links/lib/addon-web-links.js.map +1 -0
  151. package/dist/lib/xterm-links/lib/addon-web-links.mjs +18 -0
  152. package/dist/lib/xterm-links/lib/addon-web-links.mjs.map +7 -0
  153. package/dist/lib/xterm-links/package.json +9 -9
  154. package/dist/lib/xterm-links/src/WebLinkProvider.ts +16 -15
  155. package/dist/lib/xterm-links/src/WebLinksAddon.ts +4 -3
  156. package/dist/lib/xterm-links/typings/addon-web-links.d.ts +57 -0
  157. package/package.json +5 -6
@@ -3,16 +3,27 @@
3
3
  * @license MIT
4
4
  */
5
5
 
6
+ import { IdleTaskQueue } from 'common/TaskQueue';
7
+
6
8
  // Work variables to avoid garbage collection.
7
9
  let i = 0;
8
10
 
9
11
  /**
10
- * A generic list that is maintained in sorted order and allows values with duplicate keys. This
11
- * list is based on binary search and as such locating a key will take O(log n) amortized, this
12
- * includes the by key iterator.
12
+ * A generic list that is maintained in sorted order and allows values with duplicate keys. Deferred
13
+ * batch insertion and deletion is used to significantly reduce the time it takes to insert and
14
+ * delete a large amount of items in succession. This list is based on binary search and as such
15
+ * locating a key will take O(log n) amortized, this includes the by key iterator.
13
16
  */
14
17
  export class SortedList<T> {
15
- private readonly _array: T[] = [];
18
+ private _array: T[] = [];
19
+
20
+ private readonly _insertedValues: T[] = [];
21
+ private readonly _flushInsertedTask = new IdleTaskQueue();
22
+ private _isFlushingInserted = false;
23
+
24
+ private readonly _deletedIndices: number[] = [];
25
+ private readonly _flushDeletedTask = new IdleTaskQueue();
26
+ private _isFlushingDeleted = false;
16
27
 
17
28
  constructor(
18
29
  private readonly _getKey: (value: T) => number
@@ -21,18 +32,50 @@ export class SortedList<T> {
21
32
 
22
33
  public clear(): void {
23
34
  this._array.length = 0;
35
+ this._insertedValues.length = 0;
36
+ this._flushInsertedTask.clear();
37
+ this._isFlushingInserted = false;
38
+ this._deletedIndices.length = 0;
39
+ this._flushDeletedTask.clear();
40
+ this._isFlushingDeleted = false;
24
41
  }
25
42
 
26
43
  public insert(value: T): void {
27
- if (this._array.length === 0) {
28
- this._array.push(value);
29
- return;
44
+ this._flushCleanupDeleted();
45
+ if (this._insertedValues.length === 0) {
46
+ this._flushInsertedTask.enqueue(() => this._flushInserted());
47
+ }
48
+ this._insertedValues.push(value);
49
+ }
50
+
51
+ private _flushInserted(): void {
52
+ const sortedAddedValues = this._insertedValues.sort((a, b) => this._getKey(a) - this._getKey(b));
53
+ let sortedAddedValuesIndex = 0;
54
+ let arrayIndex = 0;
55
+
56
+ const newArray = new Array(this._array.length + this._insertedValues.length);
57
+
58
+ for (let newArrayIndex = 0; newArrayIndex < newArray.length; newArrayIndex++) {
59
+ if (arrayIndex >= this._array.length || this._getKey(sortedAddedValues[sortedAddedValuesIndex]) <= this._getKey(this._array[arrayIndex])) {
60
+ newArray[newArrayIndex] = sortedAddedValues[sortedAddedValuesIndex];
61
+ sortedAddedValuesIndex++;
62
+ } else {
63
+ newArray[newArrayIndex] = this._array[arrayIndex++];
64
+ }
65
+ }
66
+
67
+ this._array = newArray;
68
+ this._insertedValues.length = 0;
69
+ }
70
+
71
+ private _flushCleanupInserted(): void {
72
+ if (!this._isFlushingInserted && this._insertedValues.length > 0) {
73
+ this._flushInsertedTask.flush();
30
74
  }
31
- i = this._search(this._getKey(value));
32
- this._array.splice(i, 0, value);
33
75
  }
34
76
 
35
77
  public delete(value: T): boolean {
78
+ this._flushCleanupInserted();
36
79
  if (this._array.length === 0) {
37
80
  return false;
38
81
  }
@@ -49,14 +92,43 @@ export class SortedList<T> {
49
92
  }
50
93
  do {
51
94
  if (this._array[i] === value) {
52
- this._array.splice(i, 1);
95
+ if (this._deletedIndices.length === 0) {
96
+ this._flushDeletedTask.enqueue(() => this._flushDeleted());
97
+ }
98
+ this._deletedIndices.push(i);
53
99
  return true;
54
100
  }
55
101
  } while (++i < this._array.length && this._getKey(this._array[i]) === key);
56
102
  return false;
57
103
  }
58
104
 
105
+ private _flushDeleted(): void {
106
+ this._isFlushingDeleted = true;
107
+ const sortedDeletedIndices = this._deletedIndices.sort((a, b) => a - b);
108
+ let sortedDeletedIndicesIndex = 0;
109
+ const newArray = new Array(this._array.length - sortedDeletedIndices.length);
110
+ let newArrayIndex = 0;
111
+ for (let i = 0; i < this._array.length; i++) {
112
+ if (sortedDeletedIndices[sortedDeletedIndicesIndex] === i) {
113
+ sortedDeletedIndicesIndex++;
114
+ } else {
115
+ newArray[newArrayIndex++] = this._array[i];
116
+ }
117
+ }
118
+ this._array = newArray;
119
+ this._deletedIndices.length = 0;
120
+ this._isFlushingDeleted = false;
121
+ }
122
+
123
+ private _flushCleanupDeleted(): void {
124
+ if (!this._isFlushingDeleted && this._deletedIndices.length > 0) {
125
+ this._flushDeletedTask.flush();
126
+ }
127
+ }
128
+
59
129
  public *getKeyIterator(key: number): IterableIterator<T> {
130
+ this._flushCleanupInserted();
131
+ this._flushCleanupDeleted();
60
132
  if (this._array.length === 0) {
61
133
  return;
62
134
  }
@@ -73,6 +145,8 @@ export class SortedList<T> {
73
145
  }
74
146
 
75
147
  public forEachByKey(key: number, callback: (value: T) => void): void {
148
+ this._flushCleanupInserted();
149
+ this._flushCleanupDeleted();
76
150
  if (this._array.length === 0) {
77
151
  return;
78
152
  }
@@ -89,6 +163,8 @@ export class SortedList<T> {
89
163
  }
90
164
 
91
165
  public values(): IterableIterator<T> {
166
+ this._flushCleanupInserted();
167
+ this._flushCleanupDeleted();
92
168
  // Duplicate the array to avoid issues when _array changes while iterating
93
169
  return [...this._array].values();
94
170
  }
@@ -74,14 +74,14 @@ abstract class TaskQueue implements ITaskQueue {
74
74
  let lastDeadlineRemaining = deadline.timeRemaining();
75
75
  let deadlineRemaining = 0;
76
76
  while (this._i < this._tasks.length) {
77
- taskDuration = Date.now();
77
+ taskDuration = performance.now();
78
78
  if (!this._tasks[this._i]()) {
79
79
  this._i++;
80
80
  }
81
- // other than performance.now, Date.now might not be stable (changes on wall clock changes),
82
- // this is not an issue here as a clock change during a short running task is very unlikely
83
- // in case it still happened and leads to negative duration, simply assume 1 msec
84
- taskDuration = Math.max(1, Date.now() - taskDuration);
81
+ // other than performance.now, performance.now might not be stable (changes on wall clock
82
+ // changes), this is not an issue here as a clock change during a short running task is very
83
+ // unlikely in case it still happened and leads to negative duration, simply assume 1 msec
84
+ taskDuration = Math.max(1, performance.now() - taskDuration);
85
85
  longestTask = Math.max(taskDuration, longestTask);
86
86
  // Guess the following task will take a similar time to the longest task in this batch, allow
87
87
  // additional room to try avoid exceeding the deadline
@@ -116,9 +116,9 @@ export class PriorityTaskQueue extends TaskQueue {
116
116
  }
117
117
 
118
118
  private _createDeadline(duration: number): ITaskDeadline {
119
- const end = Date.now() + duration;
119
+ const end = performance.now() + duration;
120
120
  return {
121
- timeRemaining: () => Math.max(0, end - Date.now())
121
+ timeRemaining: () => Math.max(0, end - performance.now())
122
122
  };
123
123
  }
124
124
  }