electron-screenshots 0.4.5 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -5
- package/lib/index.js +7 -4
- package/lib/screenshots.d.ts +3 -1
- package/lib/screenshots.js +40 -14
- package/package.json +3 -4
package/README.md
CHANGED
|
@@ -78,6 +78,27 @@ module.exports = {
|
|
|
78
78
|
}
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
+
- esc 取消截图,可用以下代码实现按 esc 取消截图
|
|
82
|
+
|
|
83
|
+
```js
|
|
84
|
+
globalShortcut.register('esc', () => {
|
|
85
|
+
if (screenshots.$win?.isFocused()) {
|
|
86
|
+
screenshots.endCapture()
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
- 加速截图界面展示,不销毁`BrowserWindow`,减少创建窗口的开销,可用以下代码实现。**需注意,启用该功能,会导致`window-all-closed`事件不触发,因此需要手动关闭截图窗口**
|
|
92
|
+
|
|
93
|
+
```js
|
|
94
|
+
// 是否复用截图窗口,加快截图窗口显示,默认值为 false
|
|
95
|
+
// 如果设置为 true 则会在第一次调用截图窗口时创建,后续调用时直接使用
|
|
96
|
+
// 且由于窗口不会 close,所以不会触发 app 的 `window-all-closed` 事件
|
|
97
|
+
const screenshots = new Screenshots({
|
|
98
|
+
singleWindow: true
|
|
99
|
+
})
|
|
100
|
+
```
|
|
101
|
+
|
|
81
102
|
## Methods
|
|
82
103
|
|
|
83
104
|
- `Debugger`类型产考`debug`中的`Debugger`类型
|
|
@@ -106,15 +127,19 @@ export interface ScreenshotsOpts {
|
|
|
106
127
|
// 调用日志,默认值为 debug('electron-screenshots')
|
|
107
128
|
// debug https://www.npmjs.com/package/debug
|
|
108
129
|
logger?: Logger
|
|
130
|
+
// 是否复用截图窗口,加快截图窗口显示,默认值为 false
|
|
131
|
+
// 如果设置为 true 则会在第一次调用截图窗口时创建,后续调用时直接使用
|
|
132
|
+
// 且由于窗口不会 close,所以不会触发 app 的 `window-all-closed` 事件
|
|
133
|
+
singleWindow?: boolean
|
|
109
134
|
}
|
|
110
135
|
```
|
|
111
136
|
|
|
112
|
-
| 名称
|
|
113
|
-
|
|
|
137
|
+
| 名称 | 说明 | 返回值 |
|
|
138
|
+
| ------------------------------------------------- | ---------------- | ------ |
|
|
114
139
|
| `constructor(opts: ScreenshotsOpts): Screenshots` | 调用截图方法截图 | - |
|
|
115
|
-
| `startCapture(): Promise<void>`
|
|
116
|
-
| `endCapture(): Promise<void>`
|
|
117
|
-
| `setLang(lang: Lang): void
|
|
140
|
+
| `startCapture(): Promise<void>` | 调用截图方法截图 | - |
|
|
141
|
+
| `endCapture(): Promise<void>` | 手动结束截图 | - |
|
|
142
|
+
| `setLang(lang: Lang): Promise<void>` | 修改语言 | - |
|
|
118
143
|
|
|
119
144
|
## Events
|
|
120
145
|
|
package/lib/index.js
CHANGED
|
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
var electron_1 = require("electron");
|
|
7
|
-
var electron_debug_1 = __importDefault(require("electron-debug"));
|
|
8
7
|
var screenshots_1 = __importDefault(require("./screenshots"));
|
|
9
8
|
electron_1.app.whenReady().then(function () {
|
|
10
9
|
var screenshots = new screenshots_1.default({
|
|
@@ -17,11 +16,16 @@ electron_1.app.whenReady().then(function () {
|
|
|
17
16
|
args[_i] = arguments[_i];
|
|
18
17
|
}
|
|
19
18
|
return console.log(args);
|
|
20
|
-
}
|
|
19
|
+
},
|
|
20
|
+
singleWindow: true
|
|
21
21
|
});
|
|
22
|
+
screenshots.$view.webContents.openDevTools();
|
|
22
23
|
electron_1.globalShortcut.register('ctrl+shift+a', function () {
|
|
23
24
|
screenshots.startCapture();
|
|
24
|
-
|
|
25
|
+
});
|
|
26
|
+
// 防止不能关闭截图界面
|
|
27
|
+
electron_1.globalShortcut.register('ctrl+shift+q', function () {
|
|
28
|
+
electron_1.app.quit();
|
|
25
29
|
});
|
|
26
30
|
// 点击确定按钮回调事件
|
|
27
31
|
screenshots.on('ok', function (e, buffer, bounds) {
|
|
@@ -39,7 +43,6 @@ electron_1.app.whenReady().then(function () {
|
|
|
39
43
|
screenshots.on('save', function (e, buffer, bounds) {
|
|
40
44
|
console.log('capture', buffer, bounds);
|
|
41
45
|
});
|
|
42
|
-
(0, electron_debug_1.default)({ showDevTools: true, devToolsMode: 'undocked' });
|
|
43
46
|
});
|
|
44
47
|
electron_1.app.on('window-all-closed', function () {
|
|
45
48
|
if (process.platform !== 'darwin') {
|
package/lib/screenshots.d.ts
CHANGED
|
@@ -22,12 +22,14 @@ export interface Lang {
|
|
|
22
22
|
export interface ScreenshotsOpts {
|
|
23
23
|
lang?: Lang;
|
|
24
24
|
logger?: Logger;
|
|
25
|
+
singleWindow?: boolean;
|
|
25
26
|
}
|
|
26
27
|
export { Bounds };
|
|
27
28
|
export default class Screenshots extends Events {
|
|
28
29
|
$win: BrowserWindow | null;
|
|
29
30
|
$view: BrowserView;
|
|
30
31
|
private logger;
|
|
32
|
+
private singleWindow;
|
|
31
33
|
private isReady;
|
|
32
34
|
constructor(opts?: ScreenshotsOpts);
|
|
33
35
|
/**
|
|
@@ -41,7 +43,7 @@ export default class Screenshots extends Events {
|
|
|
41
43
|
/**
|
|
42
44
|
* 设置语言
|
|
43
45
|
*/
|
|
44
|
-
setLang(lang: Partial<Lang>): void
|
|
46
|
+
setLang(lang: Partial<Lang>): Promise<void>;
|
|
45
47
|
private reset;
|
|
46
48
|
/**
|
|
47
49
|
* 初始化窗口
|
package/lib/screenshots.js
CHANGED
|
@@ -101,6 +101,7 @@ var Screenshots = /** @class */ (function (_super) {
|
|
|
101
101
|
});
|
|
102
102
|
});
|
|
103
103
|
_this.logger = (opts === null || opts === void 0 ? void 0 : opts.logger) || (0, debug_1.default)('electron-screenshots');
|
|
104
|
+
_this.singleWindow = (opts === null || opts === void 0 ? void 0 : opts.singleWindow) || false;
|
|
104
105
|
_this.listenIpc();
|
|
105
106
|
_this.$view.webContents.loadURL("file://".concat(require.resolve('react-screenshots/electron/electron.html')));
|
|
106
107
|
if (opts === null || opts === void 0 ? void 0 : opts.lang) {
|
|
@@ -129,6 +130,7 @@ var Screenshots = /** @class */ (function (_super) {
|
|
|
129
130
|
if (!this.$win) {
|
|
130
131
|
return [2 /*return*/];
|
|
131
132
|
}
|
|
133
|
+
this.$win.blur();
|
|
132
134
|
this.$win.show();
|
|
133
135
|
return [2 /*return*/];
|
|
134
136
|
}
|
|
@@ -150,11 +152,22 @@ var Screenshots = /** @class */ (function (_super) {
|
|
|
150
152
|
if (!this.$win) {
|
|
151
153
|
return [2 /*return*/];
|
|
152
154
|
}
|
|
153
|
-
|
|
154
|
-
this.$win.setSimpleFullScreen(false);
|
|
155
|
+
// 先清除 Kiosk 模式,然后取消全屏才有效
|
|
155
156
|
this.$win.setKiosk(false);
|
|
156
|
-
this.$win.
|
|
157
|
-
this.$win
|
|
157
|
+
this.$win.setFullScreen(false);
|
|
158
|
+
this.$win.setSimpleFullScreen(false);
|
|
159
|
+
this.$win.blur();
|
|
160
|
+
this.$win.setBrowserView(null);
|
|
161
|
+
// 必须设置为 closable 为 true
|
|
162
|
+
// 否者不能关闭窗口
|
|
163
|
+
this.$win.setClosable(true);
|
|
164
|
+
if (this.singleWindow) {
|
|
165
|
+
this.$win.hide();
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
this.$win.close();
|
|
169
|
+
this.$win = null;
|
|
170
|
+
}
|
|
158
171
|
return [2 /*return*/];
|
|
159
172
|
}
|
|
160
173
|
});
|
|
@@ -164,10 +177,18 @@ var Screenshots = /** @class */ (function (_super) {
|
|
|
164
177
|
* 设置语言
|
|
165
178
|
*/
|
|
166
179
|
Screenshots.prototype.setLang = function (lang) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
180
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
181
|
+
return __generator(this, function (_a) {
|
|
182
|
+
switch (_a.label) {
|
|
183
|
+
case 0:
|
|
184
|
+
this.logger('setLang', lang);
|
|
185
|
+
return [4 /*yield*/, this.isReady];
|
|
186
|
+
case 1:
|
|
187
|
+
_a.sent();
|
|
188
|
+
this.$view.webContents.send('SCREENSHOTS:setLang', lang);
|
|
189
|
+
return [2 /*return*/];
|
|
190
|
+
}
|
|
191
|
+
});
|
|
171
192
|
});
|
|
172
193
|
};
|
|
173
194
|
Screenshots.prototype.reset = function () {
|
|
@@ -222,6 +243,9 @@ var Screenshots = /** @class */ (function (_super) {
|
|
|
222
243
|
transparent: true,
|
|
223
244
|
resizable: false,
|
|
224
245
|
movable: false,
|
|
246
|
+
closable: false,
|
|
247
|
+
minimizable: false,
|
|
248
|
+
maximizable: false,
|
|
225
249
|
// focusable: true, 否则窗口不能及时响应esc按键,输入框也不能输入
|
|
226
250
|
focusable: true,
|
|
227
251
|
// linux 下必须设置为false,否则不能全屏显示在最上层
|
|
@@ -235,20 +259,22 @@ var Screenshots = /** @class */ (function (_super) {
|
|
|
235
259
|
enableLargerThanScreen: true,
|
|
236
260
|
skipTaskbar: true,
|
|
237
261
|
hasShadow: false,
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
paintWhenInitiallyHidden: false
|
|
262
|
+
paintWhenInitiallyHidden: false,
|
|
263
|
+
acceptFirstMouse: true
|
|
241
264
|
});
|
|
242
265
|
this.$win.on('show', function () {
|
|
243
266
|
var _a, _b;
|
|
267
|
+
(_a = _this.$win) === null || _a === void 0 ? void 0 : _a.focus();
|
|
244
268
|
// 在窗口显示时设置,防止与 fullscreen、x、y、width、height 等冲突
|
|
245
269
|
// 导致显示效果不符合预期
|
|
246
|
-
(
|
|
247
|
-
(_b = _this.$win) === null || _b === void 0 ? void 0 : _b.focus();
|
|
270
|
+
(_b = _this.$win) === null || _b === void 0 ? void 0 : _b.setKiosk(true);
|
|
248
271
|
});
|
|
249
272
|
}
|
|
250
|
-
this.$win.
|
|
273
|
+
this.$win.setFullScreen(process.platform === 'darwin');
|
|
274
|
+
// 设置为 false,mac 就不显示左上角关闭按钮
|
|
275
|
+
this.$win.setClosable(false);
|
|
251
276
|
this.$win.setBrowserView(this.$view);
|
|
277
|
+
this.$win.setBounds(display);
|
|
252
278
|
this.$view.setBounds({
|
|
253
279
|
x: 0,
|
|
254
280
|
y: 0,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "electron-screenshots",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "electron 截图插件",
|
|
5
5
|
"types": "lib/screenshots.d.ts",
|
|
6
6
|
"main": "lib/screenshots.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"debug": "^4.3.3",
|
|
39
39
|
"fs-extra": "^10.1.0",
|
|
40
40
|
"node-screenshots": "^0.0.3",
|
|
41
|
-
"react-screenshots": "^0.
|
|
41
|
+
"react-screenshots": "^0.5.1"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"electron": ">=11"
|
|
@@ -50,7 +50,6 @@
|
|
|
50
50
|
"@typescript-eslint/parser": "^5.10.0",
|
|
51
51
|
"cross-env": "^7.0.3",
|
|
52
52
|
"electron": "^16.0.7",
|
|
53
|
-
"electron-debug": "^3.2.0",
|
|
54
53
|
"eslint": "^8.7.0",
|
|
55
54
|
"eslint-config-standard": "^16.0.3",
|
|
56
55
|
"eslint-plugin-import": "^2.25.4",
|
|
@@ -59,5 +58,5 @@
|
|
|
59
58
|
"rimraf": "^3.0.2",
|
|
60
59
|
"typescript": "^4.5.5"
|
|
61
60
|
},
|
|
62
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "8cfc003a0b5159255cea5e2990515fc824982b1e"
|
|
63
62
|
}
|