@theia/core 1.73.0-next.3 → 1.73.0-next.7

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.
@@ -4,6 +4,7 @@ import { QuickAccessContribution, QuickAccessProvider, QuickAccessRegistry } fro
4
4
  import { QuickPickItem, QuickPicks } from './quick-input-service';
5
5
  export interface QuickViewItem {
6
6
  readonly label: string;
7
+ readonly description?: string;
7
8
  readonly when?: string;
8
9
  readonly open: () => void;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"quick-view-service.d.ts","sourceRoot":"","sources":["../../../src/browser/quick-input/quick-view-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAe,aAAa,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,qBACa,gBAAiB,YAAW,uBAAuB,EAAE,mBAAmB;IACjF,MAAM,CAAC,MAAM,SAAW;IAExB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,aAAa,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAM;IACrE,OAAO,CAAC,gBAAgB,CAAiC;IAGzD,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAG5D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU;IAiB7C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,2BAA2B,IAAI,IAAI;IASnC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,UAAU;CAOjE"}
1
+ {"version":3,"file":"quick-view-service.d.ts","sourceRoot":"","sources":["../../../src/browser/quick-input/quick-view-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAe,aAAa,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,qBACa,gBAAiB,YAAW,uBAAuB,EAAE,mBAAmB;IACjF,MAAM,CAAC,MAAM,SAAW;IAExB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,aAAa,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAM;IACrE,OAAO,CAAC,gBAAgB,CAAiC;IAGzD,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAG5D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU;IAkB7C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,2BAA2B,IAAI,IAAI;IASnC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,UAAU;CAUjE"}
@@ -33,6 +33,7 @@ let QuickViewService = class QuickViewService {
33
33
  registerItem(item) {
34
34
  const quickOpenItem = {
35
35
  label: item.label,
36
+ description: item.description,
36
37
  execute: () => item.open(),
37
38
  when: item.when
38
39
  };
@@ -60,7 +61,11 @@ let QuickViewService = class QuickViewService {
60
61
  });
61
62
  }
62
63
  getPicks(filter, token) {
63
- const items = this.items.filter(item => (item.when === undefined || this.contextKexService.match(item.when)) &&
64
+ const items = this.items.filter(item =>
65
+ // Some contributions register entries without a label (e.g. an empty view name);
66
+ // those would otherwise sort to the top and appear as a blank row.
67
+ item.label.trim().length > 0 &&
68
+ (item.when === undefined || this.contextKexService.match(item.when)) &&
64
69
  (!this.hiddenItemLabels.has(item.label)));
65
70
  return (0, quick_input_service_1.filterItems)(items, filter);
66
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"quick-view-service.js","sourceRoot":"","sources":["../../../src/browser/quick-input/quick-view-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oEAAoE;AACpE,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;;AAEhF,yCAA+C;AAC/C,yCAA6D;AAC7D,gEAA2D;AAC3D,iDAAmG;AACnG,+DAA+E;AASxE,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAAtB;QAGgB,UAAK,GAA0C,EAAE,CAAC;QAC7D,qBAAgB,GAAG,IAAI,GAAG,EAAsB,CAAC;IAiD7D,CAAC;;aApDU,WAAM,GAAG,OAAO,AAAV,CAAW;IAWxB,YAAY,CAAC,IAAmB;QAC5B,MAAM,aAAa,GAAG;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;SAClB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC,CAAC;QAE5D,OAAO,mBAAU,CAAC,MAAM,CAAC,GAAG,EAAE;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,KAAa;QAClB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,QAAQ,CAAC,KAAa;QAClB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,2BAA2B;QACvB,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,CAAC;YACjD,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI;YACvB,MAAM,EAAE,kBAAgB,CAAC,MAAM;YAC/B,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;SAClE,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,MAAc,EAAE,KAAwB;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACnC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC3C,CAAC;QACF,OAAO,IAAA,iCAAW,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;;AApDQ,4CAAgB;AAON;IADlB,IAAA,kBAAM,EAAC,kCAAmB,CAAC;;6DACgC;AAGzC;IADlB,IAAA,kBAAM,EAAC,uCAAiB,CAAC;;2DAC8B;2BAV/C,gBAAgB;IAD5B,IAAA,sBAAU,GAAE;GACA,gBAAgB,CAqD5B"}
1
+ {"version":3,"file":"quick-view-service.js","sourceRoot":"","sources":["../../../src/browser/quick-input/quick-view-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=quick-view-service.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quick-view-service.spec.d.ts","sourceRoot":"","sources":["../../../src/browser/quick-input/quick-view-service.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 Safi Seid-Ahmad, K2view and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const chai = require("chai");
19
+ const common_1 = require("../../common");
20
+ const quick_view_service_1 = require("./quick-view-service");
21
+ const expect = chai.expect;
22
+ describe('quick-view-service', () => {
23
+ describe('#getPicks', () => {
24
+ function labelsOf(service) {
25
+ return service.getPicks('', common_1.CancellationToken.None).map(pick => pick.label);
26
+ }
27
+ it('returns registered items with a non-empty label', () => {
28
+ const service = new quick_view_service_1.QuickViewService();
29
+ service.registerItem({ label: 'Explorer', open: () => { } });
30
+ expect(labelsOf(service)).to.deep.equal(['Explorer']);
31
+ });
32
+ it('omits items with an empty or whitespace-only label', () => {
33
+ const service = new quick_view_service_1.QuickViewService();
34
+ service.registerItem({ label: 'Explorer', open: () => { } });
35
+ service.registerItem({ label: '', open: () => { } });
36
+ service.registerItem({ label: ' ', open: () => { } });
37
+ expect(labelsOf(service)).to.deep.equal(['Explorer']);
38
+ });
39
+ });
40
+ });
41
+ //# sourceMappingURL=quick-view-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quick-view-service.spec.js","sourceRoot":"","sources":["../../../src/browser/quick-input/quick-view-service.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yDAAyD;AACzD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,6BAA6B;AAC7B,yCAAiD;AAEjD,6DAAwD;AAExD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAE3B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAEhC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QAEvB,SAAS,QAAQ,CAAC,OAAyB;YACvC,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,0BAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,IAAsB,CAAC,KAAK,CAAC,CAAC;QACnG,CAAC;QAED,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACvD,MAAM,OAAO,GAAG,IAAI,qCAAgB,EAAE,CAAC;YACvC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE7D,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC1D,MAAM,OAAO,GAAG,IAAI,qCAAgB,EAAE,CAAC;YACvC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAExD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IAEP,CAAC,CAAC,CAAC;AAEP,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/core",
3
- "version": "1.73.0-next.3+fd921eb9e",
3
+ "version": "1.73.0-next.7+c60326bb9",
4
4
  "description": "Theia is a cloud & desktop IDE framework implemented in TypeScript.",
5
5
  "main": "lib/common/index.js",
6
6
  "typings": "lib/common/index.d.ts",
@@ -17,8 +17,8 @@
17
17
  "@lumino/virtualdom": "^2.0.4",
18
18
  "@lumino/widgets": "2.7.5",
19
19
  "@parcel/watcher": "^2.5.6",
20
- "@theia/application-package": "1.73.0-next.3+fd921eb9e",
21
- "@theia/request": "1.73.0-next.3+fd921eb9e",
20
+ "@theia/application-package": "1.73.0-next.7+c60326bb9",
21
+ "@theia/request": "1.73.0-next.7+c60326bb9",
22
22
  "@types/body-parser": "^1.19.6",
23
23
  "@types/express": "^4.17.25",
24
24
  "@types/fs-extra": "^4.0.15",
@@ -221,5 +221,5 @@
221
221
  "nyc": {
222
222
  "extends": "../../configs/nyc.json"
223
223
  },
224
- "gitHead": "fd921eb9ef5956f7f1c2710cd827a520e1cd2d53"
224
+ "gitHead": "c60326bb9abc480805eec58eed75e58f08c2569a"
225
225
  }
@@ -0,0 +1,50 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 Safi Seid-Ahmad, K2view and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import * as chai from 'chai';
18
+ import { CancellationToken } from '../../common';
19
+ import { QuickPickItem } from './quick-input-service';
20
+ import { QuickViewService } from './quick-view-service';
21
+
22
+ const expect = chai.expect;
23
+
24
+ describe('quick-view-service', () => {
25
+
26
+ describe('#getPicks', () => {
27
+
28
+ function labelsOf(service: QuickViewService): (string | undefined)[] {
29
+ return service.getPicks('', CancellationToken.None).map(pick => (pick as QuickPickItem).label);
30
+ }
31
+
32
+ it('returns registered items with a non-empty label', () => {
33
+ const service = new QuickViewService();
34
+ service.registerItem({ label: 'Explorer', open: () => { } });
35
+
36
+ expect(labelsOf(service)).to.deep.equal(['Explorer']);
37
+ });
38
+
39
+ it('omits items with an empty or whitespace-only label', () => {
40
+ const service = new QuickViewService();
41
+ service.registerItem({ label: 'Explorer', open: () => { } });
42
+ service.registerItem({ label: '', open: () => { } });
43
+ service.registerItem({ label: ' ', open: () => { } });
44
+
45
+ expect(labelsOf(service)).to.deep.equal(['Explorer']);
46
+ });
47
+
48
+ });
49
+
50
+ });
@@ -22,6 +22,7 @@ import { filterItems, QuickPickItem, QuickPicks } from './quick-input-service';
22
22
 
23
23
  export interface QuickViewItem {
24
24
  readonly label: string;
25
+ readonly description?: string;
25
26
  readonly when?: string;
26
27
  readonly open: () => void;
27
28
  }
@@ -42,6 +43,7 @@ export class QuickViewService implements QuickAccessContribution, QuickAccessPro
42
43
  registerItem(item: QuickViewItem): Disposable {
43
44
  const quickOpenItem = {
44
45
  label: item.label,
46
+ description: item.description,
45
47
  execute: () => item.open(),
46
48
  when: item.when
47
49
  };
@@ -75,6 +77,9 @@ export class QuickViewService implements QuickAccessContribution, QuickAccessPro
75
77
 
76
78
  getPicks(filter: string, token: CancellationToken): QuickPicks {
77
79
  const items = this.items.filter(item =>
80
+ // Some contributions register entries without a label (e.g. an empty view name);
81
+ // those would otherwise sort to the top and appear as a blank row.
82
+ item.label.trim().length > 0 &&
78
83
  (item.when === undefined || this.contextKexService.match(item.when)) &&
79
84
  (!this.hiddenItemLabels.has(item.label))
80
85
  );