@opensumi/playwright 2.20.10 → 2.21.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.
Files changed (95) hide show
  1. package/lib/app.d.ts +3 -1
  2. package/lib/app.d.ts.map +1 -1
  3. package/lib/app.js +6 -0
  4. package/lib/app.js.map +1 -1
  5. package/lib/component-editor.d.ts +19 -0
  6. package/lib/component-editor.d.ts.map +1 -0
  7. package/lib/component-editor.js +55 -0
  8. package/lib/component-editor.js.map +1 -0
  9. package/lib/debug-view.d.ts +8 -0
  10. package/lib/debug-view.d.ts.map +1 -0
  11. package/lib/debug-view.js +24 -0
  12. package/lib/debug-view.js.map +1 -0
  13. package/lib/editor.d.ts +7 -3
  14. package/lib/editor.d.ts.map +1 -1
  15. package/lib/editor.js +65 -7
  16. package/lib/editor.js.map +1 -1
  17. package/lib/explorer-view.d.ts +13 -3
  18. package/lib/explorer-view.d.ts.map +1 -1
  19. package/lib/explorer-view.js +58 -10
  20. package/lib/explorer-view.js.map +1 -1
  21. package/lib/filetree-view.d.ts +7 -0
  22. package/lib/filetree-view.d.ts.map +1 -0
  23. package/lib/filetree-view.js +30 -0
  24. package/lib/filetree-view.js.map +1 -0
  25. package/lib/index.d.ts +18 -0
  26. package/lib/index.d.ts.map +1 -1
  27. package/lib/index.js +18 -0
  28. package/lib/index.js.map +1 -1
  29. package/lib/menu-item.d.ts +2 -2
  30. package/lib/menu-item.js +3 -3
  31. package/lib/menu-item.js.map +1 -1
  32. package/lib/menu.d.ts +1 -1
  33. package/lib/menubar.d.ts +1 -2
  34. package/lib/menubar.d.ts.map +1 -1
  35. package/lib/menubar.js +4 -4
  36. package/lib/menubar.js.map +1 -1
  37. package/lib/opened-editor-view.d.ts +7 -0
  38. package/lib/opened-editor-view.d.ts.map +1 -0
  39. package/lib/opened-editor-view.js +30 -0
  40. package/lib/opened-editor-view.js.map +1 -0
  41. package/lib/panel.d.ts +5 -3
  42. package/lib/panel.d.ts.map +1 -1
  43. package/lib/panel.js +14 -4
  44. package/lib/panel.js.map +1 -1
  45. package/lib/quick-command-palette.js +1 -1
  46. package/lib/quick-open-palette.js +1 -1
  47. package/lib/search-view.d.ts +9 -1
  48. package/lib/search-view.d.ts.map +1 -1
  49. package/lib/search-view.js +34 -3
  50. package/lib/search-view.js.map +1 -1
  51. package/lib/terminal.d.ts +7 -0
  52. package/lib/terminal.d.ts.map +1 -0
  53. package/lib/terminal.js +25 -0
  54. package/lib/terminal.js.map +1 -0
  55. package/lib/tests/debug.test.d.ts +2 -0
  56. package/lib/tests/debug.test.d.ts.map +1 -0
  57. package/lib/tests/debug.test.js +59 -0
  58. package/lib/tests/debug.test.js.map +1 -0
  59. package/lib/tests/editor.test.js +46 -11
  60. package/lib/tests/editor.test.js.map +1 -1
  61. package/lib/tests/explorer-view.test.js +118 -9
  62. package/lib/tests/explorer-view.test.js.map +1 -1
  63. package/lib/tests/keymaps.test.d.ts +2 -0
  64. package/lib/tests/keymaps.test.d.ts.map +1 -0
  65. package/lib/tests/keymaps.test.js +94 -0
  66. package/lib/tests/keymaps.test.js.map +1 -0
  67. package/lib/tests/language.test.d.ts +2 -0
  68. package/lib/tests/language.test.d.ts.map +1 -0
  69. package/lib/tests/language.test.js +48 -0
  70. package/lib/tests/language.test.js.map +1 -0
  71. package/lib/tests/scm.test.d.ts +2 -0
  72. package/lib/tests/scm.test.d.ts.map +1 -0
  73. package/lib/tests/scm.test.js +39 -0
  74. package/lib/tests/scm.test.js.map +1 -0
  75. package/lib/tests/search-view.test.js +10 -2
  76. package/lib/tests/search-view.test.js.map +1 -1
  77. package/lib/text-editor.d.ts +31 -3
  78. package/lib/text-editor.d.ts.map +1 -1
  79. package/lib/text-editor.js +113 -19
  80. package/lib/text-editor.js.map +1 -1
  81. package/lib/tree-node.d.ts +4 -0
  82. package/lib/tree-node.d.ts.map +1 -1
  83. package/lib/tree-node.js +17 -0
  84. package/lib/tree-node.js.map +1 -1
  85. package/lib/utils/index.d.ts +1 -0
  86. package/lib/utils/index.d.ts.map +1 -1
  87. package/lib/utils/index.js +1 -0
  88. package/lib/utils/index.js.map +1 -1
  89. package/lib/utils/key.d.ts +2 -0
  90. package/lib/utils/key.d.ts.map +1 -0
  91. package/lib/utils/key.js +10 -0
  92. package/lib/utils/key.js.map +1 -0
  93. package/lib/workspace.js +1 -1
  94. package/lib/workspace.js.map +1 -1
  95. package/package.json +2 -2
package/lib/app.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Page } from '@playwright/test';
2
2
  import { Disposable } from '@opensumi/ide-utils';
3
+ import { IComponentEditorInfo } from './component-editor';
3
4
  import { OpenSumiEditor } from './editor';
4
5
  import { OpenSumiExplorerView } from './explorer-view';
5
6
  import { OpenSumiMenubar } from './menubar';
@@ -30,7 +31,8 @@ export declare class OpenSumiApp extends Disposable {
30
31
  protected loadOrReload(page: Page, url?: string): Promise<void>;
31
32
  isMainLayoutVisible(): Promise<boolean>;
32
33
  open<T extends OpenSumiPanel>(PanelConstruction: new (app: OpenSumiApp) => T): Promise<T>;
33
- openEditor<T extends OpenSumiEditor>(EditorConstruction: new (app: OpenSumiApp, element: OpenSumiTreeNode) => T, explorer: OpenSumiExplorerView, filePath: string, preview?: boolean): Promise<T>;
34
+ openEditor<T extends OpenSumiEditor>(EditorConstruction: new (app: OpenSumiApp, element?: OpenSumiTreeNode) => T, explorer: OpenSumiExplorerView, filePath: string, preview?: boolean): Promise<T>;
35
+ openComponentEditor<T extends OpenSumiEditor>(EditorConstruction: new (app: OpenSumiApp, info: IComponentEditorInfo) => T, path: string, name: string, containerSelector: string): Promise<T>;
34
36
  waitForInitialized(): Promise<void>;
35
37
  }
36
38
  //# sourceMappingURL=app.d.ts.map
package/lib/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,OAAO;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,EAAE,OAG5B,CAAC;AAEF,qBAAa,WAAY,SAAQ,UAAU;IAqBf,IAAI,EAAE,IAAI;IAAE,SAAS,CAAC,OAAO;IApBvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,oBAAoB,CAAyB;IACrD,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAkB;WAErB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;WAIpE,OAAO,CAAC,CAAC,SAAS,WAAW,EACxC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,iBAAiB,EAC5B,UAAU,EAAE,KAAK,IAAI,EAAE,IAAI,KAAK,CAAC,GAChC,OAAO,CAAC,CAAC,CAAC;gBAOa,IAAI,EAAE,IAAI,EAAY,OAAO,UAAiB;IAOxE,IAAI,mBAAmB,2BAEtB;IAED,IAAI,gBAAgB,6BAEnB;IAED,IAAI,OAAO,oBAEV;cAEe,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;cAYjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,SAAM;IAa5C,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAKvC,IAAI,CAAC,CAAC,SAAS,aAAa,EAAE,iBAAiB,EAAE,KAAK,GAAG,EAAE,WAAW,KAAK,CAAC;IAS5E,UAAU,CAAC,CAAC,SAAS,cAAc,EACvC,kBAAkB,EAAE,KAAK,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,KAAK,CAAC,EAC1E,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,UAAO;IAWV,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CAI1C"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,OAAO;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,EAAE,OAG5B,CAAC;AAEF,qBAAa,WAAY,SAAQ,UAAU;IAqBf,IAAI,EAAE,IAAI;IAAE,SAAS,CAAC,OAAO;IApBvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,oBAAoB,CAAyB;IACrD,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAkB;WAErB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;WAIpE,OAAO,CAAC,CAAC,SAAS,WAAW,EACxC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,iBAAiB,EAC5B,UAAU,EAAE,KAAK,IAAI,EAAE,IAAI,KAAK,CAAC,GAChC,OAAO,CAAC,CAAC,CAAC;gBAOa,IAAI,EAAE,IAAI,EAAY,OAAO,UAAiB;IAOxE,IAAI,mBAAmB,2BAEtB;IAED,IAAI,gBAAgB,6BAEnB;IAED,IAAI,OAAO,oBAEV;cAEe,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;cAYjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,SAAM;IAa5C,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAKvC,IAAI,CAAC,CAAC,SAAS,aAAa,EAAE,iBAAiB,EAAE,KAAK,GAAG,EAAE,WAAW,KAAK,CAAC;IAS5E,UAAU,CAAC,CAAC,SAAS,cAAc,EACvC,kBAAkB,EAAE,KAAK,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,gBAAgB,KAAK,CAAC,EAC3E,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,UAAO;IAYV,mBAAmB,CAAC,CAAC,SAAS,cAAc,EAChD,kBAAkB,EAAE,KAAK,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,KAAK,CAAC,EAC3E,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,MAAM;IAOrB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CAI1C"}
package/lib/app.js CHANGED
@@ -82,6 +82,12 @@ class OpenSumiApp extends ide_utils_1.Disposable {
82
82
  await editor.open(preview);
83
83
  return editor;
84
84
  }
85
+ // use for component editors
86
+ async openComponentEditor(EditorConstruction, path, name, containerSelector) {
87
+ const editor = new EditorConstruction(this, { path, name, containerSelector });
88
+ await editor.open();
89
+ return editor;
90
+ }
85
91
  async waitForInitialized() {
86
92
  // custom app initialize process.
87
93
  // empty by default
package/lib/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { OpenSumiApp } from './app';
2
+ import { OpenSumiContextMenu } from './context-menu';
3
+ import { OpenSumiEditor } from './editor';
4
+ export interface IComponentEditorInfo {
5
+ path: string;
6
+ name: string;
7
+ containerSelector: string;
8
+ }
9
+ export declare class OpenSumiComponentEditor extends OpenSumiEditor {
10
+ private readonly info;
11
+ constructor(app: OpenSumiApp, info: IComponentEditorInfo);
12
+ openTabContextMenu(): Promise<OpenSumiContextMenu | undefined>;
13
+ close(): Promise<void>;
14
+ getTab(): Promise<import("@playwright/test").ElementHandle<SVGElement | HTMLElement> | undefined>;
15
+ getContainer(): Promise<import("@playwright/test").ElementHandle<SVGElement | HTMLElement> | null | undefined>;
16
+ isVisible(): Promise<boolean>;
17
+ open(): Promise<this>;
18
+ }
19
+ //# sourceMappingURL=component-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-editor.d.ts","sourceRoot":"","sources":["../src/component-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,uBAAwB,SAAQ,cAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAvC,GAAG,EAAE,WAAW,EAAmB,IAAI,EAAE,oBAAoB;IAInE,kBAAkB;IAQlB,KAAK;IAOL,MAAM;IAeN,YAAY;IAIZ,SAAS;IAQT,IAAI;CAKX"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenSumiComponentEditor = void 0;
4
+ const context_menu_1 = require("./context-menu");
5
+ const editor_1 = require("./editor");
6
+ const utils_1 = require("./utils");
7
+ class OpenSumiComponentEditor extends editor_1.OpenSumiEditor {
8
+ constructor(app, info) {
9
+ super(app);
10
+ this.info = info;
11
+ }
12
+ async openTabContextMenu() {
13
+ const view = await this.getTab();
14
+ if (!view) {
15
+ return;
16
+ }
17
+ return context_menu_1.OpenSumiContextMenu.open(this.app, async () => view);
18
+ }
19
+ async close() {
20
+ const contextMenu = await this.openTabContextMenu();
21
+ await (contextMenu === null || contextMenu === void 0 ? void 0 : contextMenu.isOpen());
22
+ const close = await (contextMenu === null || contextMenu === void 0 ? void 0 : contextMenu.menuItemByName('Close'));
23
+ await (close === null || close === void 0 ? void 0 : close.click());
24
+ }
25
+ async getTab() {
26
+ var _a;
27
+ const tabsItems = await ((_a = (await this.getTabElement())) === null || _a === void 0 ? void 0 : _a.$$("[class*='kt_editor_tab___']"));
28
+ if (!tabsItems) {
29
+ return;
30
+ }
31
+ for (const item of tabsItems) {
32
+ const uri = await item.getAttribute('data-uri');
33
+ if (uri === null || uri === void 0 ? void 0 : uri.includes(this.info.path)) {
34
+ return item;
35
+ }
36
+ }
37
+ }
38
+ async getContainer() {
39
+ return await super.getContainer(this.info.containerSelector);
40
+ }
41
+ async isVisible() {
42
+ const container = await this.getContainer();
43
+ if (!container) {
44
+ return false;
45
+ }
46
+ return await (0, utils_1.isElementVisible)(Promise.resolve(container));
47
+ }
48
+ async open() {
49
+ const tab = await this.getTab();
50
+ await (tab === null || tab === void 0 ? void 0 : tab.click());
51
+ return this;
52
+ }
53
+ }
54
+ exports.OpenSumiComponentEditor = OpenSumiComponentEditor;
55
+ //# sourceMappingURL=component-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-editor.js","sourceRoot":"","sources":["../src/component-editor.ts"],"names":[],"mappings":";;;AACA,iDAAqD;AACrD,qCAA0C;AAC1C,mCAA2C;AAQ3C,MAAa,uBAAwB,SAAQ,uBAAc;IACzD,YAAY,GAAgB,EAAmB,IAA0B;QACvE,KAAK,CAAC,GAAG,CAAC,CAAC;QADkC,SAAI,GAAJ,IAAI,CAAsB;IAEzE,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,OAAO,kCAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACpD,MAAM,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,EAAE,CAAA,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,cAAc,CAAC,OAAO,CAAC,CAAA,CAAC;QACzD,MAAM,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,CAAA,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,MAAM;;QACV,MAAM,SAAS,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,0CAAE,EAAE,CAAC,6BAA6B,CAAC,CAAA,CAAC;QAExF,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QAED,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACjC,OAAO,IAAI,CAAC;aACb;SACF;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,MAAM,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,KAAK,CAAC;SACd;QACD,OAAO,MAAM,IAAA,wBAAgB,EAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,EAAE,CAAA,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AApDD,0DAoDC"}
@@ -0,0 +1,8 @@
1
+ import { OpenSumiApp } from './app';
2
+ import { OpenSumiPanel } from './panel';
3
+ export declare class OpenSumiDebugView extends OpenSumiPanel {
4
+ private selector;
5
+ constructor(app: OpenSumiApp);
6
+ start(): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=debug-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-view.d.ts","sourceRoot":"","sources":["../src/debug-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,OAAO,CAAC,QAAQ,CAGd;gBAEU,GAAG,EAAE,WAAW;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAU7B"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenSumiDebugView = void 0;
4
+ const panel_1 = require("./panel");
5
+ class OpenSumiDebugView extends panel_1.OpenSumiPanel {
6
+ constructor(app) {
7
+ super(app, 'debug');
8
+ this.selector = {
9
+ toolbarClass: "[class*='debug_configuration_toolbar___']",
10
+ actionStartID: "[id='debug.action.start']",
11
+ };
12
+ }
13
+ async start() {
14
+ const toolbarLocator = this.app.page.locator(this.selector.toolbarClass);
15
+ if (!toolbarLocator) {
16
+ return;
17
+ }
18
+ const element = await toolbarLocator.elementHandle();
19
+ const startIcon = await (element === null || element === void 0 ? void 0 : element.$(this.selector.actionStartID));
20
+ await (startIcon === null || startIcon === void 0 ? void 0 : startIcon.click());
21
+ }
22
+ }
23
+ exports.OpenSumiDebugView = OpenSumiDebugView;
24
+ //# sourceMappingURL=debug-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-view.js","sourceRoot":"","sources":["../src/debug-view.ts"],"names":[],"mappings":";;;AACA,mCAAwC;AAExC,MAAa,iBAAkB,SAAQ,qBAAa;IAMlD,YAAY,GAAgB;QAC1B,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QANd,aAAQ,GAAG;YACjB,YAAY,EAAE,2CAA2C;YACzD,aAAa,EAAE,2BAA2B;SAC3C,CAAC;IAIF,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACzE,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;QAED,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;QACrD,MAAM,SAAS,GAAG,MAAM,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAC;QAChE,MAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,EAAE,CAAA,CAAC;IAC3B,CAAC;CACF;AApBD,8CAoBC"}
package/lib/editor.d.ts CHANGED
@@ -2,9 +2,11 @@ import { OpenSumiApp } from './app';
2
2
  import { OpenSumiExplorerFileStatNode } from './explorer-view';
3
3
  import { OpenSumiView } from './view';
4
4
  export declare class OpenSumiEditor extends OpenSumiView {
5
- private readonly filestatElement;
6
- constructor(app: OpenSumiApp, filestatElement: OpenSumiExplorerFileStatNode);
7
- getCurrentTab(): Promise<import("@playwright/test").ElementHandle<HTMLElement | SVGElement> | undefined>;
5
+ private readonly filestatElement?;
6
+ constructor(app: OpenSumiApp, filestatElement?: OpenSumiExplorerFileStatNode | undefined);
7
+ getTab(): Promise<import("@playwright/test").ElementHandle<SVGElement | HTMLElement> | undefined>;
8
+ getContainer(selector?: string): Promise<import("@playwright/test").ElementHandle<SVGElement | HTMLElement> | null | undefined>;
9
+ getCurrentTab(): Promise<import("@playwright/test").ElementHandle<SVGElement | HTMLElement> | undefined>;
8
10
  open(preview?: boolean): Promise<this>;
9
11
  isPreview(): Promise<boolean>;
10
12
  isDirty(): Promise<boolean>;
@@ -13,5 +15,7 @@ export declare class OpenSumiEditor extends OpenSumiView {
13
15
  saveAndClose(): Promise<void>;
14
16
  undo(times?: number): Promise<void>;
15
17
  redo(times?: number): Promise<void>;
18
+ triggerTitleMenu(name: string): Promise<void>;
19
+ triggerTitleMenuById(id: string): Promise<void>;
16
20
  }
17
21
  //# sourceMappingURL=editor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,qBAAa,cAAe,SAAQ,YAAY;IAChB,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAlD,GAAG,EAAE,WAAW,EAAmB,eAAe,EAAE,4BAA4B;IAQtF,aAAa;IAIb,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO;IAKtB,SAAS;IAMT,OAAO;IAMP,IAAI;IAQJ,KAAK;IAKL,YAAY;IAKZ,IAAI,CAAC,KAAK,SAAI;IAQd,IAAI,CAAC,KAAK,SAAI;CAOrB"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,qBAAa,cAAe,SAAQ,YAAY;IAChB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAAnD,GAAG,EAAE,WAAW,EAAmB,eAAe,CAAC,0CAA8B;IAQvF,MAAM;IAgBN,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM;IAQ9B,aAAa;IAIb,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO;IAOtB,SAAS;IAMT,OAAO;IAOP,IAAI;IAWJ,KAAK;IAYL,YAAY;IAKZ,IAAI,CAAC,KAAK,SAAI;IAQd,IAAI,CAAC,KAAK,SAAI;IAQd,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAY7B,oBAAoB,CAAC,EAAE,EAAE,MAAM;CAWtC"}
package/lib/editor.js CHANGED
@@ -12,36 +12,72 @@ class OpenSumiEditor extends view_1.OpenSumiView {
12
12
  });
13
13
  this.filestatElement = filestatElement;
14
14
  }
15
+ async getTab() {
16
+ var _a, _b;
17
+ const path = (await ((_a = this.filestatElement) === null || _a === void 0 ? void 0 : _a.getFsPath())) || '';
18
+ const tabsItems = await ((_b = (await this.getTabElement())) === null || _b === void 0 ? void 0 : _b.$$("[class*='kt_editor_tab___']"));
19
+ if (!tabsItems) {
20
+ return;
21
+ }
22
+ for (const item of tabsItems) {
23
+ const uri = await item.getAttribute('data-uri');
24
+ if (uri === null || uri === void 0 ? void 0 : uri.includes(path)) {
25
+ return item;
26
+ }
27
+ }
28
+ }
29
+ async getContainer(selector) {
30
+ var _a;
31
+ if (!selector) {
32
+ return;
33
+ }
34
+ const container = await ((_a = (await this.getViewElement())) === null || _a === void 0 ? void 0 : _a.$(selector));
35
+ return container;
36
+ }
15
37
  async getCurrentTab() {
16
38
  var _a;
17
39
  return await ((_a = (await this.getTabElement())) === null || _a === void 0 ? void 0 : _a.waitForSelector("[class*='kt_editor_tab_current___']"));
18
40
  }
19
41
  async open(preview) {
20
- await this.filestatElement.open(preview);
42
+ var _a;
43
+ await ((_a = this.filestatElement) === null || _a === void 0 ? void 0 : _a.open(preview));
44
+ // waiting editor render, it maybe fail while opening a large file.
45
+ await this.app.page.waitForTimeout(1000);
21
46
  return this;
22
47
  }
23
48
  async isPreview() {
24
49
  var _a;
25
- const currentTab = await this.getCurrentTab();
50
+ const currentTab = await this.getTab();
26
51
  const isPreview = (_a = (await (currentTab === null || currentTab === void 0 ? void 0 : currentTab.getAttribute('class')))) === null || _a === void 0 ? void 0 : _a.includes('kt_editor_tab_preview___');
27
52
  return !!isPreview;
28
53
  }
29
54
  async isDirty() {
30
- var _a, _b;
31
- const dirtyIcon = await ((_a = (await this.getCurrentTab())) === null || _a === void 0 ? void 0 : _a.$("[class*='dirty___']"));
32
- const hidden = (_b = (await (dirtyIcon === null || dirtyIcon === void 0 ? void 0 : dirtyIcon.getAttribute('class')))) === null || _b === void 0 ? void 0 : _b.includes('hidden__');
55
+ var _a;
56
+ const dirtyIcon = await ((_a = (await this.getTab())) === null || _a === void 0 ? void 0 : _a.$("[class*='dirty___']"));
57
+ const className = await (dirtyIcon === null || dirtyIcon === void 0 ? void 0 : dirtyIcon.getAttribute('class'));
58
+ const hidden = className === null || className === void 0 ? void 0 : className.includes('hidden__');
33
59
  return !hidden;
34
60
  }
35
61
  async save() {
62
+ var _a;
36
63
  await this.activate();
37
64
  if (!(await this.isDirty())) {
38
65
  return;
39
66
  }
67
+ const dirtyIcon = await ((_a = (await this.getTab())) === null || _a === void 0 ? void 0 : _a.$("[class*='dirty___']"));
40
68
  await this.app.menubar.trigger('File', 'Save File');
69
+ // waiting for saved
70
+ await (dirtyIcon === null || dirtyIcon === void 0 ? void 0 : dirtyIcon.waitForElementState('hidden'));
41
71
  }
42
72
  async close() {
43
- var _a;
44
- const closeIcon = await ((_a = (await this.getTabElement())) === null || _a === void 0 ? void 0 : _a.waitForSelector("class*=['close_tab___']"));
73
+ const currentTab = await this.getTabElement();
74
+ await (currentTab === null || currentTab === void 0 ? void 0 : currentTab.hover({
75
+ position: {
76
+ x: 10,
77
+ y: 10,
78
+ },
79
+ }));
80
+ const closeIcon = await (currentTab === null || currentTab === void 0 ? void 0 : currentTab.$("[class*='close_tab___']"));
45
81
  await (closeIcon === null || closeIcon === void 0 ? void 0 : closeIcon.click());
46
82
  }
47
83
  async saveAndClose() {
@@ -62,6 +98,28 @@ class OpenSumiEditor extends view_1.OpenSumiView {
62
98
  await this.app.page.waitForTimeout(200);
63
99
  }
64
100
  }
101
+ async triggerTitleMenu(name) {
102
+ const tab = await this.getTabElement();
103
+ const actions = (await (tab === null || tab === void 0 ? void 0 : tab.$$('[class*="iconAction___"]'))) || [];
104
+ for (const action of actions) {
105
+ const title = await action.getAttribute('title');
106
+ if (title === name) {
107
+ await action.click();
108
+ break;
109
+ }
110
+ }
111
+ }
112
+ async triggerTitleMenuById(id) {
113
+ const tab = await this.getTabElement();
114
+ const actions = (await (tab === null || tab === void 0 ? void 0 : tab.$$('[class*="iconAction___"]'))) || [];
115
+ for (const action of actions) {
116
+ const title = await action.getAttribute('id');
117
+ if (title === id) {
118
+ await action.click();
119
+ break;
120
+ }
121
+ }
122
+ }
65
123
  }
66
124
  exports.OpenSumiEditor = OpenSumiEditor;
67
125
  //# sourceMappingURL=editor.js.map
package/lib/editor.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":";;;AACA,yCAAsD;AAEtD,iCAAsC;AAEtC,MAAa,cAAe,SAAQ,mBAAY;IAC9C,YAAY,GAAgB,EAAmB,eAA6C;QAC1F,KAAK,CAAC,GAAG,EAAE;YACT,WAAW,EAAE,IAAI,mCAAwB,CAAC,WAAW,EAAE;YACvD,YAAY,EAAE,IAAI,mCAAwB,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAL0C,oBAAe,GAAf,eAAe,CAA8B;IAM5F,CAAC;IAED,KAAK,CAAC,aAAa;;QACjB,OAAO,MAAM,CAAA,MAAA,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,0CAAE,eAAe,CAAC,qCAAqC,CAAC,CAAA,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAiB;QAC1B,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS;;QACb,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,MAAA,CAAC,MAAM,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,YAAY,CAAC,OAAO,CAAC,CAAA,CAAC,0CAAE,QAAQ,CAAC,0BAA0B,CAAC,CAAC;QAClG,OAAO,CAAC,CAAC,SAAS,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,OAAO;;QACX,MAAM,SAAS,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,0CAAE,CAAC,CAAC,qBAAqB,CAAC,CAAA,CAAC;QAC/E,MAAM,MAAM,GAAG,MAAA,CAAC,MAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,YAAY,CAAC,OAAO,CAAC,CAAA,CAAC,0CAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC9E,OAAO,CAAC,MAAM,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;YAC3B,OAAO;SACR;QACD,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK;;QACT,MAAM,SAAS,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,0CAAE,eAAe,CAAC,yBAAyB,CAAC,CAAA,CAAC;QACjG,MAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,EAAE,CAAA,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;QAClB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;SACzC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;QAClB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;SACzC;IACH,CAAC;CACF;AA/DD,wCA+DC"}
1
+ {"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,29 @@
1
1
  import { OpenSumiApp } from './app';
2
+ import { OpenSumiFileTreeView } from './filetree-view';
3
+ import { OpenSumiOpenedEditorView } from './opened-editor-view';
2
4
  import { OpenSumiPanel } from './panel';
3
5
  import { OpenSumiTreeNode } from './tree-node';
4
- import { OpenSumiView } from './view';
5
6
  export declare class OpenSumiExplorerFileStatNode extends OpenSumiTreeNode {
6
7
  getFsPath(): Promise<string | null>;
7
8
  isFolder(): Promise<boolean | undefined>;
8
9
  getMenuItemByName(name: string): Promise<import("./menu-item").OpenSumiMenuItem | undefined>;
9
10
  open(preview?: boolean): Promise<void>;
11
+ isDirty(): Promise<boolean>;
12
+ }
13
+ export declare class OpenSumiExplorerOpenedEditorNode extends OpenSumiTreeNode {
14
+ getRelativePath(): Promise<string | null | undefined>;
15
+ isGroup(): Promise<boolean | undefined>;
16
+ getMenuItemByName(name: string): Promise<import("./menu-item").OpenSumiMenuItem | undefined>;
17
+ open(): Promise<void>;
10
18
  }
11
19
  export declare class OpenSumiExplorerView extends OpenSumiPanel {
12
- id: string;
13
20
  private _fileTreeView;
21
+ private _openedEditorView;
14
22
  constructor(app: OpenSumiApp);
15
23
  initFileTreeView(name: string): void;
16
- get fileTreeView(): OpenSumiView;
24
+ get fileTreeView(): OpenSumiFileTreeView;
25
+ get openedEditorView(): OpenSumiOpenedEditorView;
17
26
  getFileStatTreeNodeByPath(path: string): Promise<OpenSumiExplorerFileStatNode | undefined>;
27
+ getOpenedEditorTreeNodeByPath(path: string): Promise<OpenSumiExplorerFileStatNode | undefined>;
18
28
  }
19
29
  //# sourceMappingURL=explorer-view.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"explorer-view.d.ts","sourceRoot":"","sources":["../src/explorer-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,qBAAa,4BAA6B,SAAQ,gBAAgB;IAC1D,SAAS;IAIT,QAAQ;IAMR,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAM9B,IAAI,CAAC,OAAO,UAAO;CAO1B;AAED,qBAAa,oBAAqB,SAAQ,aAAa;IACrD,EAAE,SAAc;IAEhB,OAAO,CAAC,aAAa,CAAe;gBAExB,GAAG,EAAE,WAAW;IAI5B,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAQ7B,IAAI,YAAY,iBAEf;IAEK,yBAAyB,CAAC,IAAI,EAAE,MAAM;CAiB7C"}
1
+ {"version":3,"file":"explorer-view.d.ts","sourceRoot":"","sources":["../src/explorer-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,qBAAa,4BAA6B,SAAQ,gBAAgB;IAC1D,SAAS;IAIT,QAAQ;IASR,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAM9B,IAAI,CAAC,OAAO,UAAO;IAQnB,OAAO;CAOd;AAED,qBAAa,gCAAiC,SAAQ,gBAAgB;IAC9D,eAAe;IAIf,OAAO;IAMP,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAM9B,IAAI;CAGX;AAED,qBAAa,oBAAqB,SAAQ,aAAa;IACrD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,iBAAiB,CAA2B;gBAExC,GAAG,EAAE,WAAW;IAK5B,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAI7B,IAAI,YAAY,yBAEf;IAED,IAAI,gBAAgB,6BAEnB;IAEK,yBAAyB,CAAC,IAAI,EAAE,MAAM;IAkBtC,6BAA6B,CAAC,IAAI,EAAE,MAAM;CAiBjD"}
@@ -1,15 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OpenSumiExplorerView = exports.OpenSumiExplorerFileStatNode = void 0;
3
+ exports.OpenSumiExplorerView = exports.OpenSumiExplorerOpenedEditorNode = exports.OpenSumiExplorerFileStatNode = void 0;
4
+ const filetree_view_1 = require("./filetree-view");
5
+ const opened_editor_view_1 = require("./opened-editor-view");
4
6
  const panel_1 = require("./panel");
5
7
  const tree_node_1 = require("./tree-node");
6
- const view_1 = require("./view");
7
8
  class OpenSumiExplorerFileStatNode extends tree_node_1.OpenSumiTreeNode {
8
9
  async getFsPath() {
9
10
  return await this.elementHandle.getAttribute('title');
10
11
  }
11
12
  async isFolder() {
12
- const icon = await this.elementHandle.waitForSelector("[class*='file_icon___']");
13
+ const icon = await this.elementHandle.$("[class*='file_icon___']");
14
+ if (!icon) {
15
+ return false;
16
+ }
13
17
  const className = await icon.getAttribute('class');
14
18
  return className === null || className === void 0 ? void 0 : className.includes('folder-icon');
15
19
  }
@@ -26,23 +30,49 @@ class OpenSumiExplorerFileStatNode extends tree_node_1.OpenSumiTreeNode {
26
30
  await this.elementHandle.click();
27
31
  }
28
32
  }
33
+ async isDirty() {
34
+ const classname = await this.elementHandle.getAttribute('class');
35
+ if (classname === null || classname === void 0 ? void 0 : classname.includes('mod_dirty__')) {
36
+ return true;
37
+ }
38
+ return false;
39
+ }
29
40
  }
30
41
  exports.OpenSumiExplorerFileStatNode = OpenSumiExplorerFileStatNode;
42
+ class OpenSumiExplorerOpenedEditorNode extends tree_node_1.OpenSumiTreeNode {
43
+ async getRelativePath() {
44
+ var _a;
45
+ return await ((_a = (await this.elementHandle.$('[class*="opened_editor_node_description__"]'))) === null || _a === void 0 ? void 0 : _a.textContent());
46
+ }
47
+ async isGroup() {
48
+ const icon = await this.elementHandle.waitForSelector("[class*='file_icon___']");
49
+ const className = await icon.getAttribute('class');
50
+ return className === null || className === void 0 ? void 0 : className.includes('folder-icon');
51
+ }
52
+ async getMenuItemByName(name) {
53
+ const contextMenu = await this.openContextMenu();
54
+ const menuItem = await contextMenu.menuItemByName(name);
55
+ return menuItem;
56
+ }
57
+ async open() {
58
+ await this.elementHandle.click();
59
+ }
60
+ }
61
+ exports.OpenSumiExplorerOpenedEditorNode = OpenSumiExplorerOpenedEditorNode;
31
62
  class OpenSumiExplorerView extends panel_1.OpenSumiPanel {
32
63
  constructor(app) {
33
- super(app);
34
- this.id = 'explorer';
64
+ super(app, 'explorer');
65
+ this._openedEditorView = new opened_editor_view_1.OpenSumiOpenedEditorView(this.app, 'OPENED EDITORS');
35
66
  }
36
67
  initFileTreeView(name) {
37
- this._fileTreeView = new view_1.OpenSumiView(this.app, {
38
- viewSelector: '[class ^="file_tree__"]',
39
- tabSelector: '[tabindex="0"]',
40
- name,
41
- });
68
+ this._fileTreeView = new filetree_view_1.OpenSumiFileTreeView(this.app, name);
42
69
  }
43
70
  get fileTreeView() {
44
71
  return this._fileTreeView;
45
72
  }
73
+ get openedEditorView() {
74
+ return this._openedEditorView;
75
+ }
46
76
  async getFileStatTreeNodeByPath(path) {
47
77
  var _a;
48
78
  const treeItems = await ((_a = (await this.fileTreeView.getViewElement())) === null || _a === void 0 ? void 0 : _a.$$('[class*="file_tree_node__"]'));
@@ -61,6 +91,24 @@ class OpenSumiExplorerView extends panel_1.OpenSumiPanel {
61
91
  return new OpenSumiExplorerFileStatNode(node, this.app);
62
92
  }
63
93
  }
94
+ async getOpenedEditorTreeNodeByPath(path) {
95
+ var _a;
96
+ const treeItems = await ((_a = (await this.openedEditorView.getViewElement())) === null || _a === void 0 ? void 0 : _a.$$('[class*="opened_editor_node__"]'));
97
+ if (!treeItems) {
98
+ return;
99
+ }
100
+ let node;
101
+ for (const item of treeItems) {
102
+ const title = await item.getAttribute('title');
103
+ if (title === null || title === void 0 ? void 0 : title.includes(path)) {
104
+ node = item;
105
+ break;
106
+ }
107
+ }
108
+ if (node) {
109
+ return new OpenSumiExplorerFileStatNode(node, this.app);
110
+ }
111
+ }
64
112
  }
65
113
  exports.OpenSumiExplorerView = OpenSumiExplorerView;
66
114
  //# sourceMappingURL=explorer-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"explorer-view.js","sourceRoot":"","sources":["../src/explorer-view.ts"],"names":[],"mappings":";;;AACA,mCAAwC;AACxC,2CAA+C;AAC/C,iCAAsC;AAEtC,MAAa,4BAA6B,SAAQ,4BAAgB;IAChE,KAAK,CAAC,SAAS;QACb,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;QACjF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAY;QAClC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI;QACvB,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;SACrC;aAAM;YACL,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAClC;IACH,CAAC;CACF;AAxBD,oEAwBC;AAED,MAAa,oBAAqB,SAAQ,qBAAa;IAKrD,YAAY,GAAgB;QAC1B,KAAK,CAAC,GAAG,CAAC,CAAC;QALb,OAAE,GAAG,UAAU,CAAC;IAMhB,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,mBAAY,CAAC,IAAI,CAAC,GAAG,EAAE;YAC9C,YAAY,EAAE,yBAAyB;YACvC,WAAW,EAAE,gBAAgB;YAC7B,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,IAAY;;QAC1C,MAAM,SAAS,GAAG,MAAM,CAAA,MAAA,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,0CAAE,EAAE,CAAC,6BAA6B,CAAC,CAAA,CAAC;QACtG,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QACD,IAAI,IAAI,CAAC;QACT,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC5B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,GAAG,IAAI,CAAC;gBACZ,MAAM;aACP;SACF;QACD,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,4BAA4B,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SACzD;IACH,CAAC;CACF;AAtCD,oDAsCC"}
1
+ {"version":3,"file":"explorer-view.js","sourceRoot":"","sources":["../src/explorer-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { OpenSumiApp } from './app';
2
+ import { OpenSumiView } from './view';
3
+ export declare class OpenSumiFileTreeView extends OpenSumiView {
4
+ constructor(app: OpenSumiApp, workspaceName: string);
5
+ getTitleActionByName(name: string): Promise<import("@playwright/test").ElementHandle<SVGElement | HTMLElement> | undefined>;
6
+ }
7
+ //# sourceMappingURL=filetree-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filetree-view.d.ts","sourceRoot":"","sources":["../src/filetree-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,qBAAa,oBAAqB,SAAQ,YAAY;gBACxC,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM;IAQ7C,oBAAoB,CAAC,IAAI,EAAE,MAAM;CAexC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenSumiFileTreeView = void 0;
4
+ const view_1 = require("./view");
5
+ class OpenSumiFileTreeView extends view_1.OpenSumiView {
6
+ constructor(app, workspaceName) {
7
+ super(app, {
8
+ viewSelector: '#file-explorer',
9
+ tabSelector: '#file-explorer [tabindex="0"]',
10
+ name: workspaceName,
11
+ });
12
+ }
13
+ async getTitleActionByName(name) {
14
+ const header = await this.getTabElement();
15
+ if (!header) {
16
+ return;
17
+ }
18
+ await header.hover();
19
+ const titleAction = await header.waitForSelector('[class*="titleActions___"]');
20
+ const actions = await titleAction.$$('[class*="iconAction__"]');
21
+ for (const action of actions) {
22
+ const title = await action.getAttribute('title');
23
+ if (name === title) {
24
+ return action;
25
+ }
26
+ }
27
+ }
28
+ }
29
+ exports.OpenSumiFileTreeView = OpenSumiFileTreeView;
30
+ //# sourceMappingURL=filetree-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filetree-view.js","sourceRoot":"","sources":["../src/filetree-view.ts"],"names":[],"mappings":";;;AACA,iCAAsC;AAEtC,MAAa,oBAAqB,SAAQ,mBAAY;IACpD,YAAY,GAAgB,EAAE,aAAqB;QACjD,KAAK,CAAC,GAAG,EAAE;YACT,YAAY,EAAE,gBAAgB;YAC9B,WAAW,EAAE,+BAA+B;YAC5C,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAY;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC;QAChE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,IAAI,KAAK,KAAK,EAAE;gBAClB,OAAO,MAAM,CAAC;aACf;SACF;IACH,CAAC;CACF;AAxBD,oDAwBC"}
package/lib/index.d.ts CHANGED
@@ -1,2 +1,20 @@
1
1
  export * from './app';
2
+ export * from './component-editor';
3
+ export * from './context-menu';
4
+ export * from './editor';
5
+ export * from './explorer-view';
6
+ export * from './filetree-view';
7
+ export * from './menu-item';
8
+ export * from './menu';
9
+ export * from './menubar';
10
+ export * from './opened-editor-view';
11
+ export * from './panel';
12
+ export * from './quick-command-palette';
13
+ export * from './search-view';
14
+ export * from './terminal';
15
+ export * from './text-editor';
16
+ export * from './tree-node';
17
+ export * from './view-base';
18
+ export * from './view';
19
+ export * from './workspace';
2
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
package/lib/index.js CHANGED
@@ -2,4 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./app"), exports);
5
+ tslib_1.__exportStar(require("./component-editor"), exports);
6
+ tslib_1.__exportStar(require("./context-menu"), exports);
7
+ tslib_1.__exportStar(require("./editor"), exports);
8
+ tslib_1.__exportStar(require("./explorer-view"), exports);
9
+ tslib_1.__exportStar(require("./filetree-view"), exports);
10
+ tslib_1.__exportStar(require("./menu-item"), exports);
11
+ tslib_1.__exportStar(require("./menu"), exports);
12
+ tslib_1.__exportStar(require("./menubar"), exports);
13
+ tslib_1.__exportStar(require("./opened-editor-view"), exports);
14
+ tslib_1.__exportStar(require("./panel"), exports);
15
+ tslib_1.__exportStar(require("./quick-command-palette"), exports);
16
+ tslib_1.__exportStar(require("./search-view"), exports);
17
+ tslib_1.__exportStar(require("./terminal"), exports);
18
+ tslib_1.__exportStar(require("./text-editor"), exports);
19
+ tslib_1.__exportStar(require("./tree-node"), exports);
20
+ tslib_1.__exportStar(require("./view-base"), exports);
21
+ tslib_1.__exportStar(require("./view"), exports);
22
+ tslib_1.__exportStar(require("./workspace"), exports);
5
23
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB;AACtB,6DAAmC;AACnC,yDAA+B;AAC/B,mDAAyB;AACzB,0DAAgC;AAChC,0DAAgC;AAChC,sDAA4B;AAC5B,iDAAuB;AACvB,oDAA0B;AAC1B,+DAAqC;AACrC,kDAAwB;AACxB,kEAAwC;AACxC,wDAA8B;AAC9B,qDAA2B;AAC3B,wDAA8B;AAC9B,sDAA4B;AAC5B,sDAA4B;AAC5B,iDAAuB;AACvB,sDAA4B"}
@@ -2,8 +2,8 @@ import { ElementHandle } from '@playwright/test';
2
2
  export declare class OpenSumiMenuItem {
3
3
  protected element: ElementHandle<SVGElement | HTMLElement>;
4
4
  constructor(element: ElementHandle<SVGElement | HTMLElement>);
5
- protected labelElementHandle(): Promise<ElementHandle<HTMLElement | SVGElement>>;
6
- protected shortCutElementHandle(): Promise<ElementHandle<HTMLElement | SVGElement>>;
5
+ protected labelElementHandle(): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
6
+ protected shortCutElementHandle(): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
7
7
  label(): Promise<string | undefined>;
8
8
  shortCut(): Promise<string | undefined>;
9
9
  isEnabled(): Promise<boolean>;