@opensumi/playwright 2.19.10-next-1661437048.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 (102) hide show
  1. package/LICENSE +21 -0
  2. package/lib/app.d.ts +36 -0
  3. package/lib/app.d.ts.map +1 -0
  4. package/lib/app.js +91 -0
  5. package/lib/app.js.map +1 -0
  6. package/lib/constans/index.d.ts +17 -0
  7. package/lib/constans/index.d.ts.map +1 -0
  8. package/lib/constans/index.js +22 -0
  9. package/lib/constans/index.js.map +1 -0
  10. package/lib/context-menu.d.ts +9 -0
  11. package/lib/context-menu.d.ts.map +1 -0
  12. package/lib/context-menu.js +23 -0
  13. package/lib/context-menu.js.map +1 -0
  14. package/lib/editor.d.ts +17 -0
  15. package/lib/editor.d.ts.map +1 -0
  16. package/lib/editor.js +67 -0
  17. package/lib/editor.js.map +1 -0
  18. package/lib/explorer-view.d.ts +19 -0
  19. package/lib/explorer-view.d.ts.map +1 -0
  20. package/lib/explorer-view.js +66 -0
  21. package/lib/explorer-view.js.map +1 -0
  22. package/lib/index.d.ts +2 -0
  23. package/lib/index.d.ts.map +1 -0
  24. package/lib/index.js +5 -0
  25. package/lib/index.js.map +1 -0
  26. package/lib/menu-item.d.ts +13 -0
  27. package/lib/menu-item.d.ts.map +1 -0
  28. package/lib/menu-item.js +37 -0
  29. package/lib/menu-item.js.map +1 -0
  30. package/lib/menu.d.ts +16 -0
  31. package/lib/menu.d.ts.map +1 -0
  32. package/lib/menu.js +66 -0
  33. package/lib/menu.js.map +1 -0
  34. package/lib/menubar.d.ts +14 -0
  35. package/lib/menubar.d.ts.map +1 -0
  36. package/lib/menubar.js +48 -0
  37. package/lib/menubar.js.map +1 -0
  38. package/lib/panel.d.ts +14 -0
  39. package/lib/panel.d.ts.map +1 -0
  40. package/lib/panel.js +35 -0
  41. package/lib/panel.js.map +1 -0
  42. package/lib/quick-command-palette.d.ts +12 -0
  43. package/lib/quick-command-palette.d.ts.map +1 -0
  44. package/lib/quick-command-palette.js +58 -0
  45. package/lib/quick-command-palette.js.map +1 -0
  46. package/lib/quick-open-palette.d.ts +12 -0
  47. package/lib/quick-open-palette.d.ts.map +1 -0
  48. package/lib/quick-open-palette.js +58 -0
  49. package/lib/quick-open-palette.js.map +1 -0
  50. package/lib/search-view.d.ts +5 -0
  51. package/lib/search-view.d.ts.map +1 -0
  52. package/lib/search-view.js +12 -0
  53. package/lib/search-view.js.map +1 -0
  54. package/lib/tests/app.test.d.ts +2 -0
  55. package/lib/tests/app.test.d.ts.map +1 -0
  56. package/lib/tests/app.test.js +16 -0
  57. package/lib/tests/app.test.js.map +1 -0
  58. package/lib/tests/editor.test.d.ts +2 -0
  59. package/lib/tests/editor.test.d.ts.map +1 -0
  60. package/lib/tests/editor.test.js +92 -0
  61. package/lib/tests/editor.test.js.map +1 -0
  62. package/lib/tests/explorer-view.test.d.ts +2 -0
  63. package/lib/tests/explorer-view.test.d.ts.map +1 -0
  64. package/lib/tests/explorer-view.test.js +80 -0
  65. package/lib/tests/explorer-view.test.js.map +1 -0
  66. package/lib/tests/hooks/index.d.ts +4 -0
  67. package/lib/tests/hooks/index.d.ts.map +1 -0
  68. package/lib/tests/hooks/index.js +14 -0
  69. package/lib/tests/hooks/index.js.map +1 -0
  70. package/lib/tests/search-view.test.d.ts +2 -0
  71. package/lib/tests/search-view.test.d.ts.map +1 -0
  72. package/lib/tests/search-view.test.js +22 -0
  73. package/lib/tests/search-view.test.js.map +1 -0
  74. package/lib/text-editor.d.ts +33 -0
  75. package/lib/text-editor.d.ts.map +1 -0
  76. package/lib/text-editor.js +169 -0
  77. package/lib/text-editor.js.map +1 -0
  78. package/lib/tree-node.d.ts +25 -0
  79. package/lib/tree-node.d.ts.map +1 -0
  80. package/lib/tree-node.js +59 -0
  81. package/lib/tree-node.js.map +1 -0
  82. package/lib/utils/element.d.ts +6 -0
  83. package/lib/utils/element.d.ts.map +1 -0
  84. package/lib/utils/element.js +32 -0
  85. package/lib/utils/element.js.map +1 -0
  86. package/lib/utils/index.d.ts +2 -0
  87. package/lib/utils/index.d.ts.map +1 -0
  88. package/lib/utils/index.js +5 -0
  89. package/lib/utils/index.js.map +1 -0
  90. package/lib/view-base.d.ts +8 -0
  91. package/lib/view-base.d.ts.map +1 -0
  92. package/lib/view-base.js +13 -0
  93. package/lib/view-base.js.map +1 -0
  94. package/lib/view.d.ts +28 -0
  95. package/lib/view.d.ts.map +1 -0
  96. package/lib/view.js +71 -0
  97. package/lib/view.js.map +1 -0
  98. package/lib/workspace.d.ts +9 -0
  99. package/lib/workspace.d.ts.map +1 -0
  100. package/lib/workspace.js +36 -0
  101. package/lib/workspace.js.map +1 -0
  102. package/package.json +37 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2019-present Alibaba Group Holding Limited, Ant Group Co. Ltd.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/lib/app.d.ts ADDED
@@ -0,0 +1,36 @@
1
+ import { Page } from '@playwright/test';
2
+ import { Disposable } from '@opensumi/ide-utils';
3
+ import { OpenSumiEditor } from './editor';
4
+ import { OpenSumiExplorerView } from './explorer-view';
5
+ import { OpenSumiMenubar } from './menubar';
6
+ import { OpenSumiPanel } from './panel';
7
+ import { OpenSumiCommandPalette } from './quick-command-palette';
8
+ import { OpenSumiQuickOpenPalette } from './quick-open-palette';
9
+ import { OpenSumiTreeNode } from './tree-node';
10
+ import { OpenSumiWorkspace } from './workspace';
11
+ export interface AppData {
12
+ loadingSelector: string;
13
+ mainSelector: string;
14
+ }
15
+ export declare const DefaultAppData: AppData;
16
+ export declare class OpenSumiApp extends Disposable {
17
+ page: Page;
18
+ protected appData: AppData;
19
+ private _loaded;
20
+ private _quickCommandPalette;
21
+ private _quickOpenPalette;
22
+ private _menubar;
23
+ static load(page: Page, workspace: OpenSumiWorkspace): Promise<OpenSumiApp>;
24
+ static loadApp<T extends OpenSumiApp>(page: Page, workspace: OpenSumiWorkspace, appFactory: new (page: Page) => T): Promise<T>;
25
+ constructor(page: Page, appData?: AppData);
26
+ get quickCommandPalette(): OpenSumiCommandPalette;
27
+ get quickOpenPalette(): OpenSumiQuickOpenPalette;
28
+ get menubar(): OpenSumiMenubar;
29
+ protected load(workspace: OpenSumiWorkspace): Promise<void>;
30
+ protected loadOrReload(page: Page, url?: string): Promise<void>;
31
+ isMainLayoutVisible(): Promise<boolean>;
32
+ 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
+ waitForInitialized(): Promise<void>;
35
+ }
36
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +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"}
package/lib/app.js ADDED
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenSumiApp = exports.DefaultAppData = void 0;
4
+ const ide_utils_1 = require("@opensumi/ide-utils");
5
+ const menubar_1 = require("./menubar");
6
+ const quick_command_palette_1 = require("./quick-command-palette");
7
+ const quick_open_palette_1 = require("./quick-open-palette");
8
+ exports.DefaultAppData = {
9
+ loadingSelector: '.loading_indicator',
10
+ mainSelector: '#main',
11
+ };
12
+ class OpenSumiApp extends ide_utils_1.Disposable {
13
+ constructor(page, appData = exports.DefaultAppData) {
14
+ super();
15
+ this.page = page;
16
+ this.appData = appData;
17
+ this._loaded = false;
18
+ this._quickCommandPalette = new quick_command_palette_1.OpenSumiCommandPalette(this);
19
+ this._quickOpenPalette = new quick_open_palette_1.OpenSumiQuickOpenPalette(this);
20
+ this._menubar = new menubar_1.OpenSumiMenubar(this);
21
+ }
22
+ static async load(page, workspace) {
23
+ return this.loadApp(page, workspace, OpenSumiApp);
24
+ }
25
+ static async loadApp(page, workspace, appFactory) {
26
+ await workspace.initWorksapce();
27
+ const app = new appFactory(page);
28
+ await app.load(workspace);
29
+ return app;
30
+ }
31
+ get quickCommandPalette() {
32
+ return this._quickCommandPalette;
33
+ }
34
+ get quickOpenPalette() {
35
+ return this._quickOpenPalette;
36
+ }
37
+ get menubar() {
38
+ return this._menubar;
39
+ }
40
+ async load(workspace) {
41
+ this.disposables.push(workspace);
42
+ const now = Date.now();
43
+ await this.loadOrReload(this.page, `/#${workspace.workspace.codeUri.fsPath}`);
44
+ await this.page.waitForSelector(this.appData.loadingSelector, { state: 'detached' });
45
+ const time = Date.now() - now;
46
+ // eslint-disable-next-line no-console
47
+ console.log(`Loading page cost ${time} ms`);
48
+ await this.page.waitForSelector(this.appData.mainSelector);
49
+ await this.waitForInitialized();
50
+ }
51
+ async loadOrReload(page, url = '/') {
52
+ if (!this._loaded) {
53
+ const wasLoadedAlready = await page.isVisible(this.appData.mainSelector);
54
+ await page.goto(url);
55
+ if (wasLoadedAlready) {
56
+ await page.reload();
57
+ }
58
+ this._loaded = true;
59
+ }
60
+ else {
61
+ await page.reload();
62
+ }
63
+ }
64
+ async isMainLayoutVisible() {
65
+ const contentPanel = await this.page.$('#main');
66
+ return !!contentPanel && contentPanel.isVisible();
67
+ }
68
+ async open(PanelConstruction) {
69
+ const panel = new PanelConstruction(this);
70
+ if (await panel.isVisible()) {
71
+ return panel;
72
+ }
73
+ await panel.open();
74
+ return panel;
75
+ }
76
+ async openEditor(EditorConstruction, explorer, filePath, preview = true) {
77
+ const node = await explorer.getFileStatTreeNodeByPath(filePath);
78
+ if (!node || (await (node === null || node === void 0 ? void 0 : node.isFolder()))) {
79
+ throw Error(`File ${filePath} could not be opened on the editor`);
80
+ }
81
+ const editor = new EditorConstruction(this, node);
82
+ await editor.open(preview);
83
+ return editor;
84
+ }
85
+ async waitForInitialized() {
86
+ // custom app initialize process.
87
+ // empty by default
88
+ }
89
+ }
90
+ exports.OpenSumiApp = OpenSumiApp;
91
+ //# sourceMappingURL=app.js.map
package/lib/app.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export declare namespace OPENSUMI_VIEW_CONTAINERS {
2
+ const LEFT_TABBAR_PANEL: string;
3
+ const LEFT_TABBAR: string;
4
+ const RIGHT_TABBAR_PANEL: string;
5
+ const RIGHT_TABBAR: string;
6
+ const BOTTOM_TABBAR: string;
7
+ const BOTTOM_TABBAR_PANEL: string;
8
+ const STATUSBAR: string;
9
+ const MENUBAR: string;
10
+ const EDITOR: string;
11
+ const EDITOR_TABS: string;
12
+ const QUICKPICK: string;
13
+ const QUICKPICK_INPUT: string;
14
+ const QUICKPICK_TABS: string;
15
+ const QUICKPICK_ITEM: string;
16
+ }
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constans/index.ts"],"names":[],"mappings":"AAEA,yBAAiB,wBAAwB,CAAC;IACjC,MAAM,iBAAiB,QAAgD,CAAC;IACxE,MAAM,WAAW,QAA0C,CAAC;IAC5D,MAAM,kBAAkB,QAAiD,CAAC;IAC1E,MAAM,YAAY,QAA2C,CAAC;IAC9D,MAAM,aAAa,QAA4C,CAAC;IAChE,MAAM,mBAAmB,QAAkD,CAAC;IAC5E,MAAM,SAAS,QAAwC,CAAC;IACxD,MAAM,OAAO,QAAsC,CAAC;IACpD,MAAM,MAAM,QAAqC,CAAC;IAClD,MAAM,WAAW,QAA0C,CAAC;IAC5D,MAAM,SAAS,QAAwC,CAAC;IACxD,MAAM,eAAe,QAA8C,CAAC;IACpE,MAAM,cAAc,QAA6C,CAAC;IAClE,MAAM,cAAc,QAA6C,CAAC;CAC1E"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OPENSUMI_VIEW_CONTAINERS = void 0;
4
+ const VIEW_CONTAINERS_PREFIX = 'opensumi';
5
+ var OPENSUMI_VIEW_CONTAINERS;
6
+ (function (OPENSUMI_VIEW_CONTAINERS) {
7
+ OPENSUMI_VIEW_CONTAINERS.LEFT_TABBAR_PANEL = `${VIEW_CONTAINERS_PREFIX}-left-tabbar-panel`;
8
+ OPENSUMI_VIEW_CONTAINERS.LEFT_TABBAR = `${VIEW_CONTAINERS_PREFIX}-left-tabbar`;
9
+ OPENSUMI_VIEW_CONTAINERS.RIGHT_TABBAR_PANEL = `${VIEW_CONTAINERS_PREFIX}-right-tabbar-panel`;
10
+ OPENSUMI_VIEW_CONTAINERS.RIGHT_TABBAR = `${VIEW_CONTAINERS_PREFIX}-right-tabbar`;
11
+ OPENSUMI_VIEW_CONTAINERS.BOTTOM_TABBAR = `${VIEW_CONTAINERS_PREFIX}-bottom-tabbar`;
12
+ OPENSUMI_VIEW_CONTAINERS.BOTTOM_TABBAR_PANEL = `${VIEW_CONTAINERS_PREFIX}-bottom-tabbar-panel`;
13
+ OPENSUMI_VIEW_CONTAINERS.STATUSBAR = `${VIEW_CONTAINERS_PREFIX}-statusbar`;
14
+ OPENSUMI_VIEW_CONTAINERS.MENUBAR = `${VIEW_CONTAINERS_PREFIX}-menubar`;
15
+ OPENSUMI_VIEW_CONTAINERS.EDITOR = `${VIEW_CONTAINERS_PREFIX}-editor`;
16
+ OPENSUMI_VIEW_CONTAINERS.EDITOR_TABS = `${VIEW_CONTAINERS_PREFIX}-editor-tabs`;
17
+ OPENSUMI_VIEW_CONTAINERS.QUICKPICK = `${VIEW_CONTAINERS_PREFIX}-quickpick`;
18
+ OPENSUMI_VIEW_CONTAINERS.QUICKPICK_INPUT = `${VIEW_CONTAINERS_PREFIX}-quickpick-input`;
19
+ OPENSUMI_VIEW_CONTAINERS.QUICKPICK_TABS = `${VIEW_CONTAINERS_PREFIX}-quickpick-tabs`;
20
+ OPENSUMI_VIEW_CONTAINERS.QUICKPICK_ITEM = `${VIEW_CONTAINERS_PREFIX}-quickpick-item`;
21
+ })(OPENSUMI_VIEW_CONTAINERS = exports.OPENSUMI_VIEW_CONTAINERS || (exports.OPENSUMI_VIEW_CONTAINERS = {}));
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constans/index.ts"],"names":[],"mappings":";;;AAAA,MAAM,sBAAsB,GAAG,UAAU,CAAC;AAE1C,IAAiB,wBAAwB,CAexC;AAfD,WAAiB,wBAAwB;IAC1B,0CAAiB,GAAG,GAAG,sBAAsB,oBAAoB,CAAC;IAClE,oCAAW,GAAG,GAAG,sBAAsB,cAAc,CAAC;IACtD,2CAAkB,GAAG,GAAG,sBAAsB,qBAAqB,CAAC;IACpE,qCAAY,GAAG,GAAG,sBAAsB,eAAe,CAAC;IACxD,sCAAa,GAAG,GAAG,sBAAsB,gBAAgB,CAAC;IAC1D,4CAAmB,GAAG,GAAG,sBAAsB,sBAAsB,CAAC;IACtE,kCAAS,GAAG,GAAG,sBAAsB,YAAY,CAAC;IAClD,gCAAO,GAAG,GAAG,sBAAsB,UAAU,CAAC;IAC9C,+BAAM,GAAG,GAAG,sBAAsB,SAAS,CAAC;IAC5C,oCAAW,GAAG,GAAG,sBAAsB,cAAc,CAAC;IACtD,kCAAS,GAAG,GAAG,sBAAsB,YAAY,CAAC;IAClD,wCAAe,GAAG,GAAG,sBAAsB,kBAAkB,CAAC;IAC9D,uCAAc,GAAG,GAAG,sBAAsB,iBAAiB,CAAC;IAC5D,uCAAc,GAAG,GAAG,sBAAsB,iBAAiB,CAAC;AAC3E,CAAC,EAfgB,wBAAwB,GAAxB,gCAAwB,KAAxB,gCAAwB,QAexC"}
@@ -0,0 +1,9 @@
1
+ import { ElementHandle } from '@playwright/test';
2
+ import { OpenSumiApp } from './app';
3
+ import { OpenSumiMenu } from './menu';
4
+ export declare class OpenSumiContextMenu extends OpenSumiMenu {
5
+ static openAt(app: OpenSumiApp, x: number, y: number): Promise<OpenSumiContextMenu>;
6
+ static open(app: OpenSumiApp, element: () => Promise<ElementHandle<SVGElement | HTMLElement>>): Promise<OpenSumiContextMenu>;
7
+ private static returnWhenVisible;
8
+ }
9
+ //# sourceMappingURL=context-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-menu.d.ts","sourceRoot":"","sources":["../src/context-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,qBAAa,mBAAoB,SAAQ,YAAY;WAC/B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;WAM5E,IAAI,CACtB,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC,GAC9D,OAAO,CAAC,mBAAmB,CAAC;mBAMV,iBAAiB;CAKvC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenSumiContextMenu = void 0;
4
+ const menu_1 = require("./menu");
5
+ class OpenSumiContextMenu extends menu_1.OpenSumiMenu {
6
+ static async openAt(app, x, y) {
7
+ await app.page.mouse.move(x, y);
8
+ await app.page.mouse.click(x, y, { button: 'right' });
9
+ return OpenSumiContextMenu.returnWhenVisible(app);
10
+ }
11
+ static async open(app, element) {
12
+ const elementHandle = await element();
13
+ await elementHandle.click({ button: 'right' });
14
+ return OpenSumiContextMenu.returnWhenVisible(app);
15
+ }
16
+ static async returnWhenVisible(app) {
17
+ const menu = new OpenSumiContextMenu(app);
18
+ await menu.waitForVisible();
19
+ return menu;
20
+ }
21
+ }
22
+ exports.OpenSumiContextMenu = OpenSumiContextMenu;
23
+ //# sourceMappingURL=context-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-menu.js","sourceRoot":"","sources":["../src/context-menu.ts"],"names":[],"mappings":";;;AAGA,iCAAsC;AAEtC,MAAa,mBAAoB,SAAQ,mBAAY;IAC5C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAgB,EAAE,CAAS,EAAE,CAAS;QAC/D,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,OAAO,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,IAAI,CACtB,GAAgB,EAChB,OAA+D;QAE/D,MAAM,aAAa,GAAG,MAAM,OAAO,EAAE,CAAC;QACtC,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,OAAO,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAgB;QACrD,MAAM,IAAI,GAAG,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AArBD,kDAqBC"}
@@ -0,0 +1,17 @@
1
+ import { OpenSumiApp } from './app';
2
+ import { OpenSumiExplorerFileStatNode } from './explorer-view';
3
+ import { OpenSumiView } from './view';
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>;
8
+ open(preview?: boolean): Promise<this>;
9
+ isPreview(): Promise<boolean>;
10
+ isDirty(): Promise<boolean>;
11
+ save(): Promise<void>;
12
+ close(): Promise<void>;
13
+ saveAndClose(): Promise<void>;
14
+ undo(times?: number): Promise<void>;
15
+ redo(times?: number): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=editor.d.ts.map
@@ -0,0 +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"}
package/lib/editor.js ADDED
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenSumiEditor = void 0;
4
+ const constans_1 = require("./constans");
5
+ const view_1 = require("./view");
6
+ class OpenSumiEditor extends view_1.OpenSumiView {
7
+ constructor(app, filestatElement) {
8
+ super(app, {
9
+ tabSelector: `#${constans_1.OPENSUMI_VIEW_CONTAINERS.EDITOR_TABS}`,
10
+ viewSelector: `#${constans_1.OPENSUMI_VIEW_CONTAINERS.EDITOR}`,
11
+ name: 'Editor',
12
+ });
13
+ this.filestatElement = filestatElement;
14
+ }
15
+ async getCurrentTab() {
16
+ var _a;
17
+ return await ((_a = (await this.getTabElement())) === null || _a === void 0 ? void 0 : _a.waitForSelector("[class*='kt_editor_tab_current___']"));
18
+ }
19
+ async open(preview) {
20
+ await this.filestatElement.open(preview);
21
+ return this;
22
+ }
23
+ async isPreview() {
24
+ var _a;
25
+ const currentTab = await this.getCurrentTab();
26
+ 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
+ return !!isPreview;
28
+ }
29
+ 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__');
33
+ return !hidden;
34
+ }
35
+ async save() {
36
+ await this.activate();
37
+ if (!(await this.isDirty())) {
38
+ return;
39
+ }
40
+ await this.app.menubar.trigger('File', 'Save File');
41
+ }
42
+ async close() {
43
+ var _a;
44
+ const closeIcon = await ((_a = (await this.getTabElement())) === null || _a === void 0 ? void 0 : _a.waitForSelector("class*=['close_tab___']"));
45
+ await (closeIcon === null || closeIcon === void 0 ? void 0 : closeIcon.click());
46
+ }
47
+ async saveAndClose() {
48
+ await this.save();
49
+ await this.close();
50
+ }
51
+ async undo(times = 1) {
52
+ await this.activate();
53
+ for (let i = 0; i < times; i++) {
54
+ await this.app.menubar.trigger('Edit', 'Undo');
55
+ await this.app.page.waitForTimeout(200);
56
+ }
57
+ }
58
+ async redo(times = 1) {
59
+ await this.activate();
60
+ for (let i = 0; i < times; i++) {
61
+ await this.app.menubar.trigger('Edit', 'Redo');
62
+ await this.app.page.waitForTimeout(200);
63
+ }
64
+ }
65
+ }
66
+ exports.OpenSumiEditor = OpenSumiEditor;
67
+ //# sourceMappingURL=editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { OpenSumiApp } from './app';
2
+ import { OpenSumiPanel } from './panel';
3
+ import { OpenSumiTreeNode } from './tree-node';
4
+ import { OpenSumiView } from './view';
5
+ export declare class OpenSumiExplorerFileStatNode extends OpenSumiTreeNode {
6
+ getFsPath(): Promise<string | null>;
7
+ isFolder(): Promise<boolean | undefined>;
8
+ getMenuItemByName(name: string): Promise<import("./menu-item").OpenSumiMenuItem | undefined>;
9
+ open(preview?: boolean): Promise<void>;
10
+ }
11
+ export declare class OpenSumiExplorerView extends OpenSumiPanel {
12
+ id: string;
13
+ private _fileTreeView;
14
+ constructor(app: OpenSumiApp);
15
+ initFileTreeView(name: string): void;
16
+ get fileTreeView(): OpenSumiView;
17
+ getFileStatTreeNodeByPath(path: string): Promise<OpenSumiExplorerFileStatNode | undefined>;
18
+ }
19
+ //# sourceMappingURL=explorer-view.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenSumiExplorerView = exports.OpenSumiExplorerFileStatNode = void 0;
4
+ const panel_1 = require("./panel");
5
+ const tree_node_1 = require("./tree-node");
6
+ const view_1 = require("./view");
7
+ class OpenSumiExplorerFileStatNode extends tree_node_1.OpenSumiTreeNode {
8
+ async getFsPath() {
9
+ return await this.elementHandle.getAttribute('title');
10
+ }
11
+ async isFolder() {
12
+ const icon = await this.elementHandle.waitForSelector("[class*='file_icon___']");
13
+ const className = await icon.getAttribute('class');
14
+ return className === null || className === void 0 ? void 0 : className.includes('folder-icon');
15
+ }
16
+ async getMenuItemByName(name) {
17
+ const contextMenu = await this.openContextMenu();
18
+ const menuItem = await contextMenu.menuItemByName(name);
19
+ return menuItem;
20
+ }
21
+ async open(preview = true) {
22
+ if (!preview) {
23
+ await this.elementHandle.dblclick();
24
+ }
25
+ else {
26
+ await this.elementHandle.click();
27
+ }
28
+ }
29
+ }
30
+ exports.OpenSumiExplorerFileStatNode = OpenSumiExplorerFileStatNode;
31
+ class OpenSumiExplorerView extends panel_1.OpenSumiPanel {
32
+ constructor(app) {
33
+ super(app);
34
+ this.id = 'explorer';
35
+ }
36
+ initFileTreeView(name) {
37
+ this._fileTreeView = new view_1.OpenSumiView(this.app, {
38
+ viewSelector: '[class ^="file_tree__"]',
39
+ tabSelector: '[tabindex="0"]',
40
+ name,
41
+ });
42
+ }
43
+ get fileTreeView() {
44
+ return this._fileTreeView;
45
+ }
46
+ async getFileStatTreeNodeByPath(path) {
47
+ var _a;
48
+ const treeItems = await ((_a = (await this.fileTreeView.getViewElement())) === null || _a === void 0 ? void 0 : _a.$$('[class*="file_tree_node__"]'));
49
+ if (!treeItems) {
50
+ return;
51
+ }
52
+ let node;
53
+ for (const item of treeItems) {
54
+ const title = await item.getAttribute('title');
55
+ if (title === null || title === void 0 ? void 0 : title.includes(path)) {
56
+ node = item;
57
+ break;
58
+ }
59
+ }
60
+ if (node) {
61
+ return new OpenSumiExplorerFileStatNode(node, this.app);
62
+ }
63
+ }
64
+ }
65
+ exports.OpenSumiExplorerView = OpenSumiExplorerView;
66
+ //# sourceMappingURL=explorer-view.js.map
@@ -0,0 +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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './app';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./app"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB"}
@@ -0,0 +1,13 @@
1
+ import { ElementHandle } from '@playwright/test';
2
+ export declare class OpenSumiMenuItem {
3
+ protected element: ElementHandle<SVGElement | HTMLElement>;
4
+ constructor(element: ElementHandle<SVGElement | HTMLElement>);
5
+ protected labelElementHandle(): Promise<ElementHandle<HTMLElement | SVGElement>>;
6
+ protected shortCutElementHandle(): Promise<ElementHandle<HTMLElement | SVGElement>>;
7
+ label(): Promise<string | undefined>;
8
+ shortCut(): Promise<string | undefined>;
9
+ isEnabled(): Promise<boolean>;
10
+ click(): Promise<void>;
11
+ hover(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=menu-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-item.d.ts","sourceRoot":"","sources":["../src/menu-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,qBAAa,gBAAgB;IACf,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC;gBAAhD,OAAO,EAAE,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC;IAEtE,SAAS,CAAC,kBAAkB;IAI5B,SAAS,CAAC,qBAAqB;IAIzB,KAAK;IAIL,QAAQ;IAIR,SAAS;IAQT,KAAK;IAKL,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenSumiMenuItem = void 0;
4
+ const utils_1 = require("./utils");
5
+ class OpenSumiMenuItem {
6
+ constructor(element) {
7
+ this.element = element;
8
+ }
9
+ labelElementHandle() {
10
+ return this.element.waitForSelector("[class*='label__']");
11
+ }
12
+ shortCutElementHandle() {
13
+ return this.element.waitForSelector("[class*='shortcut__']");
14
+ }
15
+ async label() {
16
+ return (0, utils_1.textContent)(this.labelElementHandle());
17
+ }
18
+ async shortCut() {
19
+ return (0, utils_1.textContent)(this.shortCutElementHandle());
20
+ }
21
+ async isEnabled() {
22
+ const classAttribute = await this.element.getAttribute('class');
23
+ if (classAttribute === undefined || classAttribute === null) {
24
+ return false;
25
+ }
26
+ return !classAttribute.includes('kt-inner-menu-item-disabled');
27
+ }
28
+ async click() {
29
+ const action = await this.element.waitForSelector("[class*='menuAction__']");
30
+ action.click({ position: { x: 10, y: 10 } });
31
+ }
32
+ async hover() {
33
+ return this.element.hover();
34
+ }
35
+ }
36
+ exports.OpenSumiMenuItem = OpenSumiMenuItem;
37
+ //# sourceMappingURL=menu-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-item.js","sourceRoot":"","sources":["../src/menu-item.ts"],"names":[],"mappings":";;;AAEA,mCAAsC;AAEtC,MAAa,gBAAgB;IAC3B,YAAsB,OAAgD;QAAhD,YAAO,GAAP,OAAO,CAAyC;IAAG,CAAC;IAEhE,kBAAkB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC5D,CAAC;IAES,qBAAqB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAA,mBAAW,EAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAA,mBAAW,EAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,IAAI,EAAE;YAC3D,OAAO,KAAK,CAAC;SACd;QACD,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;QAC7E,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF;AAnCD,4CAmCC"}
package/lib/menu.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ import { OpenSumiMenuItem } from './menu-item';
2
+ import { OpenSumiViewBase } from './view-base';
3
+ export declare class OpenSumiMenu extends OpenSumiViewBase {
4
+ selector: string;
5
+ protected menuElementHandle(): Promise<import("@playwright/test").ElementHandle<HTMLElement | SVGElement>>;
6
+ waitForVisible(): Promise<void>;
7
+ isOpen(): Promise<boolean>;
8
+ close(): Promise<void>;
9
+ menuItems(): Promise<OpenSumiMenuItem[]>;
10
+ clickMenuItem(name: string): Promise<void>;
11
+ menuItemByName(name: string): Promise<OpenSumiMenuItem | undefined>;
12
+ menuItemByIndex(index: number): Promise<OpenSumiMenuItem | undefined>;
13
+ protected menuItemSelector(label?: string): string;
14
+ visibleMenuItems(): Promise<(string | undefined)[]>;
15
+ }
16
+ //# sourceMappingURL=menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,qBAAa,YAAa,SAAQ,gBAAgB;IAChD,QAAQ,SAAsC;cAE9B,iBAAiB;IAI3B,cAAc;IAId,MAAM;IAKN,KAAK;IAQL,SAAS;IAST,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,cAAc,CAAC,IAAI,EAAE,MAAM;IAW3B,eAAe,CAAC,KAAK,EAAE,MAAM;IAQnC,SAAS,CAAC,gBAAgB,CAAC,KAAK,SAAK;IAI/B,gBAAgB;CAKvB"}
package/lib/menu.js ADDED
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenSumiMenu = void 0;
4
+ const menu_item_1 = require("./menu-item");
5
+ const view_base_1 = require("./view-base");
6
+ class OpenSumiMenu extends view_base_1.OpenSumiViewBase {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.selector = '.rc-trigger-popup .kt-inner-menu';
10
+ }
11
+ async menuElementHandle() {
12
+ return this.page.waitForSelector(this.selector);
13
+ }
14
+ async waitForVisible() {
15
+ await this.page.waitForSelector(this.selector, { state: 'visible' });
16
+ }
17
+ async isOpen() {
18
+ const menu = await this.menuElementHandle();
19
+ return !!menu && menu.isVisible();
20
+ }
21
+ async close() {
22
+ if (!(await this.isOpen())) {
23
+ return;
24
+ }
25
+ await this.page.mouse.click(0, 0);
26
+ await this.page.waitForSelector(this.selector, { state: 'detached' });
27
+ }
28
+ async menuItems() {
29
+ const menuHandle = await this.menuElementHandle();
30
+ if (!menuHandle) {
31
+ return [];
32
+ }
33
+ const items = await menuHandle.$$('.kt-inner-menu-item');
34
+ return items.map((element) => new menu_item_1.OpenSumiMenuItem(element));
35
+ }
36
+ async clickMenuItem(name) {
37
+ return (await this.page.waitForSelector(this.menuItemSelector(name))).click();
38
+ }
39
+ async menuItemByName(name) {
40
+ const menuItems = await this.menuItems();
41
+ for (const item of menuItems) {
42
+ const label = await item.label();
43
+ if (label === name) {
44
+ return item;
45
+ }
46
+ }
47
+ return undefined;
48
+ }
49
+ async menuItemByIndex(index) {
50
+ const menuItems = await this.menuItems();
51
+ if (menuItems.length > index) {
52
+ return menuItems[index];
53
+ }
54
+ return undefined;
55
+ }
56
+ menuItemSelector(label = '') {
57
+ return `.kt-inner-menu-item [class*='label___'] >> text=${label}`;
58
+ }
59
+ async visibleMenuItems() {
60
+ const menuItems = await this.menuItems();
61
+ const labels = await Promise.all(menuItems.map((item) => item.label()));
62
+ return labels.filter((label) => !!label);
63
+ }
64
+ }
65
+ exports.OpenSumiMenu = OpenSumiMenu;
66
+ //# sourceMappingURL=menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"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"}