@opensumi/ide-decoration 2.21.13 → 2.22.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"decorationsService.js","sourceRoot":"","sources":["../../src/browser/decorationsService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorationsService.js","sourceRoot":"","sources":["../../src/browser/decorationsService.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoD;AACpD,iEAA2D;AAE3D,uDAA4D;AAE5D,6DAA8D;AAG9D,IAAa,gBAAgB,GAA7B,MAAa,gBAAiB,SAAQ,gCAAa;IAAnD;;QACE,cAAS,GAAe;YACtB;gBACE,KAAK,EAAE,iCAAmB;gBAC1B,QAAQ,EAAE,2CAAsB;aACjC;SACF,CAAC;IACJ,CAAC;CAAA,CAAA;AAPY,gBAAgB;IAD5B,IAAA,eAAU,GAAE;GACA,gBAAgB,CAO5B;AAPY,4CAAgB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoD;AACpD,iEAA2D;AAE3D,uDAA4D;AAE5D,6DAA8D;AAGvD,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,gCAAa;IAA5C;;QACL,cAAS,GAAe;YACtB;gBACE,KAAK,EAAE,iCAAmB;gBAC1B,QAAQ,EAAE,2CAAsB;aACjC;SACF,CAAC;IACJ,CAAC;CAAA,CAAA;AAPY,gBAAgB;IAD5B,IAAA,eAAU,GAAE;GACA,gBAAgB,CAO5B;AAPY,4CAAgB"}
@@ -1,5 +1,5 @@
1
1
  import { Disposable, Uri, Event, CancellationToken, IDisposable } from '@opensumi/ide-core-common';
2
- declare type ColorIdentifier = string;
2
+ type ColorIdentifier = string;
3
3
  export interface IDecorationData {
4
4
  /**
5
5
  * 权重
@@ -1 +1 @@
1
- {"version":3,"file":"decorations.d.ts","sourceRoot":"","sources":["../../src/common/decorations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEnG,aAAK,eAAe,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IACnC,kBAAkB,CAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,iBAAiB,GACvB,eAAe,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CACvE;AAED,MAAM,WAAW,8BAA8B;IAC7C,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8BAAsB,mBAAoB,SAAQ,UAAU;IAC1D;;OAEG;IACH,QAAQ,CAAC,sBAAsB,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAEvE;;OAEG;IACH,QAAQ,CAAC,2BAA2B,CAAC,QAAQ,EAAE,oBAAoB,GAAG,WAAW;IAEjF;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS;CACjH"}
1
+ {"version":3,"file":"decorations.d.ts","sourceRoot":"","sources":["../../src/common/decorations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEnG,KAAK,eAAe,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IACnC,kBAAkB,CAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,iBAAiB,GACvB,eAAe,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CACvE;AAED,MAAM,WAAW,8BAA8B;IAC7C,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8BAAsB,mBAAoB,SAAQ,UAAU;IAC1D;;OAEG;IACH,QAAQ,CAAC,sBAAsB,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAEvE;;OAEG;IACH,QAAQ,CAAC,2BAA2B,CAAC,QAAQ,EAAE,oBAAoB,GAAG,WAAW;IAEjF;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS;CACjH"}
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "@opensumi/ide-decoration",
3
- "version": "2.21.13",
3
+ "version": "2.22.0",
4
4
  "files": [
5
- "lib"
5
+ "lib",
6
+ "src"
6
7
  ],
7
8
  "license": "MIT",
8
9
  "main": "lib/index.js",
9
10
  "typings": "lib/index.d.ts",
10
11
  "scripts": {
11
- "prepublishOnly": "npm run build",
12
+ "prepublishOnly": "yarn run build",
12
13
  "build": "tsc --build ../../configs/ts/references/tsconfig.decoration.json"
13
14
  },
14
15
  "repository": {
@@ -16,12 +17,12 @@
16
17
  "url": "git@github.com:opensumi/core.git"
17
18
  },
18
19
  "dependencies": {
19
- "@opensumi/ide-core-common": "2.21.13",
20
- "@opensumi/ide-core-node": "2.21.13"
20
+ "@opensumi/ide-core-common": "2.22.0",
21
+ "@opensumi/ide-core-node": "2.22.0"
21
22
  },
22
23
  "devDependencies": {
23
- "@opensumi/ide-core-browser": "2.21.13",
24
- "@opensumi/ide-dev-tool": "^1.3.1"
24
+ "@opensumi/ide-core-browser": "2.22.0",
25
+ "@opensumi/ide-dev-tool": "1.3.1"
25
26
  },
26
- "gitHead": "1480afacfef7ef11eae65c5cbbddce416f227fe8"
27
+ "gitHead": "927717e1c60f9cf5f01622fd51085b318a175eeb"
27
28
  }
@@ -0,0 +1,283 @@
1
+ import { Injectable } from '@opensumi/di';
2
+ import {
3
+ Uri,
4
+ Disposable,
5
+ Event,
6
+ Emitter,
7
+ CancellationTokenSource,
8
+ localize,
9
+ isThenable,
10
+ IDisposable,
11
+ toDisposable,
12
+ dispose,
13
+ } from '@opensumi/ide-core-common';
14
+ import { getDebugLogger, strings, arrays } from '@opensumi/ide-core-common';
15
+ import { isPromiseCanceledError, LinkedList, TernarySearchTree } from '@opensumi/ide-core-common';
16
+
17
+ import {
18
+ IDecorationsService,
19
+ IDecoration,
20
+ IResourceDecorationChangeEvent,
21
+ IDecorationsProvider,
22
+ IDecorationData,
23
+ } from '../common/decorations';
24
+
25
+ const { isFalsyOrWhitespace } = strings;
26
+ const { asArray } = arrays;
27
+ class FileDecorationChangeEvent implements IResourceDecorationChangeEvent {
28
+ private readonly _data = TernarySearchTree.forPaths<boolean>();
29
+
30
+ affectsResource(uri: Uri): boolean {
31
+ return this._data.get(uri.toString()) || this._data.findSuperstr(uri.toString()) !== undefined;
32
+ }
33
+
34
+ static debouncer(last: FileDecorationChangeEvent, current: Uri | Uri[]) {
35
+ if (!last) {
36
+ last = new FileDecorationChangeEvent();
37
+ }
38
+ if (Array.isArray(current)) {
39
+ // many
40
+ for (const uri of current) {
41
+ last._data.set(uri.toString(), true);
42
+ }
43
+ } else {
44
+ // one
45
+ last._data.set(current.toString(), true);
46
+ }
47
+
48
+ return last;
49
+ }
50
+ }
51
+
52
+ class DecorationDataRequest {
53
+ constructor(readonly source: CancellationTokenSource, readonly thenable: Promise<void>) {}
54
+ }
55
+
56
+ class DecorationProviderWrapper {
57
+ readonly data = TernarySearchTree.forPaths<DecorationDataRequest | IDecorationData | null>();
58
+ private readonly _dispoable: IDisposable;
59
+
60
+ constructor(
61
+ private readonly _provider: IDecorationsProvider,
62
+ private readonly _uriEmitter: Emitter<Uri | Uri[]>,
63
+ private readonly _flushEmitter: Emitter<IResourceDecorationChangeEvent>,
64
+ ) {
65
+ this._dispoable = this._provider.onDidChange((uris) => {
66
+ if (!uris) {
67
+ // flush event -> drop all data, can affect everything
68
+ this.data.clear();
69
+ this._flushEmitter.fire({
70
+ affectsResource() {
71
+ return true;
72
+ },
73
+ });
74
+ } else {
75
+ // selective changes -> drop for resource, fetch again, send event
76
+ // perf: the map stores thenables, decorations, or `null`-markers.
77
+ // we make us of that and ignore all uris in which we have never
78
+ // been interested.
79
+ for (const uri of uris) {
80
+ this._fetchData(uri);
81
+ }
82
+ }
83
+ });
84
+ }
85
+
86
+ dispose(): void {
87
+ this._dispoable.dispose();
88
+ this.data.clear();
89
+ }
90
+
91
+ knowsAbout(uri: Uri): boolean {
92
+ return Boolean(this.data.get(uri.toString())) || Boolean(this.data.findSuperstr(uri.toString()));
93
+ }
94
+
95
+ getOrRetrieve(uri: Uri, includeChildren: boolean, callback: (data: IDecorationData, isChild: boolean) => void): void {
96
+ const key = uri.toString();
97
+ let item = this.data.get(key);
98
+
99
+ if (item === undefined) {
100
+ // unknown -> trigger request
101
+ item = this._fetchData(uri);
102
+ }
103
+
104
+ if (item && !(item instanceof DecorationDataRequest)) {
105
+ // found something (which isn't pending anymore)
106
+ callback(item, false);
107
+ }
108
+
109
+ if (includeChildren) {
110
+ // (resolved) children
111
+ const iter = this.data.findSuperstr(key);
112
+ if (iter) {
113
+ for (let item = iter.next(); !item.done; item = iter.next()) {
114
+ if (item.value && !(item.value instanceof DecorationDataRequest)) {
115
+ callback(item.value, true);
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }
121
+
122
+ private _fetchData(uri: Uri): IDecorationData | null {
123
+ // check for pending request and cancel it
124
+ const pendingRequest = this.data.get(uri.toString());
125
+ if (pendingRequest instanceof DecorationDataRequest) {
126
+ pendingRequest.source.cancel();
127
+ this.data.delete(uri.toString());
128
+ }
129
+
130
+ const source = new CancellationTokenSource();
131
+ const dataOrThenable = this._provider.provideDecorations(uri, source.token);
132
+ if (!isThenable<IDecorationData | Promise<IDecorationData | undefined> | undefined>(dataOrThenable)) {
133
+ // sync -> we have a result now
134
+ return this._keepItem(uri, dataOrThenable);
135
+ } else {
136
+ // async -> we have a result soon
137
+ const request = new DecorationDataRequest(
138
+ source,
139
+ Promise.resolve(dataOrThenable)
140
+ .then((data) => {
141
+ if (this.data.get(uri.toString()) === request) {
142
+ this._keepItem(uri, data);
143
+ }
144
+ })
145
+ .catch((err) => {
146
+ if (!isPromiseCanceledError(err) && this.data.get(uri.toString()) === request) {
147
+ this.data.delete(uri.toString());
148
+ }
149
+ }),
150
+ );
151
+
152
+ this.data.set(uri.toString(), request);
153
+ return null;
154
+ }
155
+ }
156
+
157
+ private _keepItem(uri: Uri, data: IDecorationData | undefined): IDecorationData | null {
158
+ const deco = data ? data : null;
159
+ const old = this.data.set(uri.toString(), deco);
160
+ if (deco || old) {
161
+ // only fire event when something changed
162
+ this._uriEmitter.fire(uri);
163
+ }
164
+ return deco;
165
+ }
166
+ }
167
+
168
+ // 将 IDecorationData 转成 `${color}/${letter}` 形式
169
+ function keyOfDecorationRule(data: IDecorationData | IDecorationData[]): string {
170
+ const list = asArray(data);
171
+ return list.map(({ color, letter }) => `${color}/${letter}`).join(',');
172
+ }
173
+
174
+ function getDecorationRule(data: IDecorationData | IDecorationData[]): IDecoration | undefined {
175
+ const list = asArray(data);
176
+ if (!list.length) {
177
+ // 前置拦截(目前代码逻辑是不会进来的)
178
+ /* istanbul ignore next */
179
+ return;
180
+ }
181
+
182
+ return {
183
+ // 获取 color/letter 生成的 唯一键 key
184
+ key: keyOfDecorationRule(data),
185
+ // label
186
+ color: list[0].color,
187
+ // badge
188
+ badge: list
189
+ .filter((d) => !isFalsyOrWhitespace(d.letter))
190
+ .map((d) => d.letter)
191
+ .join(','),
192
+ tooltip: list
193
+ .filter((d) => !isFalsyOrWhitespace(d.tooltip))
194
+ .map((d) => d.tooltip)
195
+ .join(' • '),
196
+ };
197
+ }
198
+
199
+ @Injectable()
200
+ export class FileDecorationsService extends Disposable implements IDecorationsService {
201
+ private readonly logger = getDebugLogger();
202
+
203
+ private readonly _data = new LinkedList<DecorationProviderWrapper>();
204
+ private readonly _onDidChangeDecorationsDelayed = new Emitter<Uri | Uri[]>();
205
+ private readonly _onDidChangeDecorations = new Emitter<IResourceDecorationChangeEvent>();
206
+
207
+ readonly onDidChangeDecorations: Event<IResourceDecorationChangeEvent> = Event.any(
208
+ this._onDidChangeDecorations.event,
209
+ Event.debounce<Uri | Uri[], FileDecorationChangeEvent>(
210
+ this._onDidChangeDecorationsDelayed.event,
211
+ FileDecorationChangeEvent.debouncer, // todo: remove it
212
+ undefined,
213
+ undefined,
214
+ 500,
215
+ ),
216
+ );
217
+
218
+ dispose(): void {
219
+ dispose(this._onDidChangeDecorations);
220
+ dispose(this._onDidChangeDecorationsDelayed);
221
+ }
222
+
223
+ registerDecorationsProvider(provider: IDecorationsProvider): IDisposable {
224
+ this.logger.log('DecorationService#registerDecorationsProvider', provider);
225
+
226
+ const wrapper = new DecorationProviderWrapper(
227
+ provider,
228
+ this._onDidChangeDecorationsDelayed,
229
+ this._onDidChangeDecorations,
230
+ );
231
+ const remove = this._data.push(wrapper);
232
+
233
+ this._onDidChangeDecorations.fire({
234
+ // everything might have changed
235
+ affectsResource() {
236
+ return true;
237
+ },
238
+ });
239
+
240
+ return toDisposable(() => {
241
+ // fire event that says 'yes' for any resource
242
+ // known to this provider. then dispose and remove it.
243
+ remove();
244
+ this._onDidChangeDecorations.fire({ affectsResource: (uri) => wrapper.knowsAbout(uri) });
245
+ wrapper.dispose();
246
+ });
247
+ }
248
+
249
+ getDecoration(uri: Uri, includeChildren: boolean): IDecoration | undefined {
250
+ const data: IDecorationData[] = [];
251
+ let containsChildren = false;
252
+ for (let iter = this._data.iterator(), next = iter.next(); !next.done; next = iter.next()) {
253
+ next.value.getOrRetrieve(uri, includeChildren, (deco, isChild) => {
254
+ if (!isChild || deco.bubble) {
255
+ data.push(deco);
256
+ containsChildren = isChild || containsChildren;
257
+ }
258
+ });
259
+ }
260
+
261
+ if (data.length === 0) {
262
+ return undefined;
263
+ } else {
264
+ const result = this.asDecoration(data, containsChildren);
265
+ return result;
266
+ }
267
+ }
268
+
269
+ asDecoration(data: IDecorationData[], containsChildren: boolean): IDecoration | undefined {
270
+ // sort by weight
271
+ data.sort((a, b) => (b.weight || 0) - (a.weight || 0));
272
+ const rule = getDecorationRule(data);
273
+
274
+ if (rule && containsChildren) {
275
+ // 目录下文件修改过则仅显示一个圆点并统一 tooltip
276
+ // show items from its children only
277
+ rule.badge = '•';
278
+ rule.tooltip = localize('bubbleTitle', 'Contains emphasized items');
279
+ }
280
+
281
+ return rule;
282
+ }
283
+ }
@@ -0,0 +1,16 @@
1
+ import { Provider, Injectable } from '@opensumi/di';
2
+ import { BrowserModule } from '@opensumi/ide-core-browser';
3
+
4
+ import { IDecorationsService } from '../common/decorations';
5
+
6
+ import { FileDecorationsService } from './decorationsService';
7
+
8
+ @Injectable()
9
+ export class DecorationModule extends BrowserModule {
10
+ providers: Provider[] = [
11
+ {
12
+ token: IDecorationsService,
13
+ useClass: FileDecorationsService,
14
+ },
15
+ ];
16
+ }
@@ -0,0 +1,63 @@
1
+ import { Disposable, Uri, Event, CancellationToken, IDisposable } from '@opensumi/ide-core-common';
2
+
3
+ type ColorIdentifier = string;
4
+
5
+ export interface IDecorationData {
6
+ /**
7
+ * 权重
8
+ */
9
+ readonly weight?: number;
10
+ /**
11
+ * Decoration 颜色
12
+ */
13
+ readonly color?: ColorIdentifier;
14
+ /**
15
+ * Decoration 字符
16
+ */
17
+ readonly letter?: string;
18
+ /**
19
+ * Decoration tooltip
20
+ */
21
+ readonly tooltip?: string;
22
+ /**
23
+ * Decoration 是否冒泡,类似文件的 Decoration 是否传给文件夹
24
+ */
25
+ readonly bubble?: boolean;
26
+ }
27
+
28
+ export interface IDecorationsProvider {
29
+ readonly label: string;
30
+ readonly onDidChange: Event<Uri[]>;
31
+ provideDecorations(
32
+ uri: Uri,
33
+ token: CancellationToken,
34
+ ): IDecorationData | Promise<IDecorationData | undefined> | undefined;
35
+ }
36
+
37
+ export interface IResourceDecorationChangeEvent {
38
+ affectsResource(uri: Uri): boolean;
39
+ }
40
+
41
+ export interface IDecoration {
42
+ key: string;
43
+ badge: string;
44
+ tooltip: string;
45
+ color?: string; // color id
46
+ }
47
+
48
+ export abstract class IDecorationsService extends Disposable {
49
+ /**
50
+ * 分发 Decoration Change Event
51
+ */
52
+ readonly onDidChangeDecorations: Event<IResourceDecorationChangeEvent>;
53
+
54
+ /**
55
+ * 注册 Decoration Provider
56
+ */
57
+ abstract registerDecorationsProvider(provider: IDecorationsProvider): IDisposable;
58
+
59
+ /**
60
+ * 通过传入 Uri 和选项获取 Decoration 数据
61
+ */
62
+ abstract getDecoration(uri: Uri, includeChildren: boolean, overwrite?: IDecorationData): IDecoration | undefined;
63
+ }
@@ -0,0 +1 @@
1
+ export * from './decorations';
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './common';