electron-screenshots 0.2.0 → 0.3.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.
- package/lib/preload.js +0 -74
- package/lib/screenshots.d.ts +1 -0
- package/lib/screenshots.js +44 -7
- package/package.json +3 -3
package/lib/preload.js
CHANGED
|
@@ -1,40 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
3
|
var electron_1 = require("electron");
|
|
40
4
|
var map = new Map();
|
|
@@ -43,44 +7,6 @@ electron_1.contextBridge.exposeInMainWorld('screenshots', {
|
|
|
43
7
|
console.log('contextBridge ready');
|
|
44
8
|
electron_1.ipcRenderer.send('SCREENSHOTS:ready');
|
|
45
9
|
},
|
|
46
|
-
capture: function (display) { return __awaiter(void 0, void 0, void 0, function () {
|
|
47
|
-
var sources, source;
|
|
48
|
-
return __generator(this, function (_a) {
|
|
49
|
-
switch (_a.label) {
|
|
50
|
-
case 0:
|
|
51
|
-
console.log('contextBridge capture', display);
|
|
52
|
-
return [4 /*yield*/, electron_1.desktopCapturer.getSources({
|
|
53
|
-
types: ['screen'],
|
|
54
|
-
thumbnailSize: {
|
|
55
|
-
width: display.width,
|
|
56
|
-
height: display.height
|
|
57
|
-
}
|
|
58
|
-
})];
|
|
59
|
-
case 1:
|
|
60
|
-
sources = _a.sent();
|
|
61
|
-
// Linux系统上,screen.getDisplayNearestPoint 返回的 Display 对象的 id 和 这儿 source 对象上的 display_id(Linux上,这个值是空字符串) 或 id 的中间部分,都不一致
|
|
62
|
-
// 但是,如果只有一个显示器的话,其实不用判断,直接返回就行
|
|
63
|
-
if (sources.length === 1) {
|
|
64
|
-
source = sources[0];
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
source = sources.find(function (source) {
|
|
68
|
-
return source.display_id === display.id.toString() || source.id.startsWith("screen:".concat(display.id, ":"));
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
if (!source) {
|
|
72
|
-
console.error(sources);
|
|
73
|
-
console.error(display);
|
|
74
|
-
throw new Error('没有获取到截图数据');
|
|
75
|
-
}
|
|
76
|
-
return [2 /*return*/, source.thumbnail.toDataURL()];
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
}); },
|
|
80
|
-
captured: function () {
|
|
81
|
-
console.log('contextBridge captured');
|
|
82
|
-
electron_1.ipcRenderer.send('SCREENSHOTS:captured');
|
|
83
|
-
},
|
|
84
10
|
save: function (arrayBuffer, data) {
|
|
85
11
|
console.log('contextBridge save', arrayBuffer, data);
|
|
86
12
|
electron_1.ipcRenderer.send('SCREENSHOTS:save', Buffer.from(arrayBuffer), data);
|
package/lib/screenshots.d.ts
CHANGED
package/lib/screenshots.js
CHANGED
|
@@ -98,11 +98,11 @@ var Screenshots = /** @class */ (function (_super) {
|
|
|
98
98
|
if (_this.$win && !_this.$win.isDestroyed()) {
|
|
99
99
|
_this.$win.close();
|
|
100
100
|
}
|
|
101
|
-
|
|
101
|
+
var boundAndDisplay = (0, getBoundAndDisplay_1.default)();
|
|
102
|
+
_this.createWindow(boundAndDisplay);
|
|
102
103
|
// 捕捉桌面之后显示窗口
|
|
103
104
|
// 避免截图窗口自己被截图
|
|
104
|
-
|
|
105
|
-
(0, logger_1.default)('SCREENSHOTS:captured');
|
|
105
|
+
_this.capture(boundAndDisplay).then(function () {
|
|
106
106
|
if (!_this.$win)
|
|
107
107
|
return;
|
|
108
108
|
// linux截图存在黑屏,这里设置为false就不会出现这个问题
|
|
@@ -136,8 +136,8 @@ var Screenshots = /** @class */ (function (_super) {
|
|
|
136
136
|
/**
|
|
137
137
|
* 初始化窗口
|
|
138
138
|
*/
|
|
139
|
-
Screenshots.prototype.createWindow = function () {
|
|
140
|
-
var
|
|
139
|
+
Screenshots.prototype.createWindow = function (_a) {
|
|
140
|
+
var bound = _a.bound;
|
|
141
141
|
this.$win = new electron_1.BrowserWindow({
|
|
142
142
|
title: 'screenshots',
|
|
143
143
|
x: bound.x,
|
|
@@ -173,8 +173,45 @@ var Screenshots = /** @class */ (function (_super) {
|
|
|
173
173
|
});
|
|
174
174
|
this.$win.setBrowserView(this.$view);
|
|
175
175
|
this.$view.setBounds(bound);
|
|
176
|
-
|
|
177
|
-
|
|
176
|
+
};
|
|
177
|
+
Screenshots.prototype.capture = function (_a) {
|
|
178
|
+
var display = _a.display;
|
|
179
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
180
|
+
var sources, source;
|
|
181
|
+
return __generator(this, function (_b) {
|
|
182
|
+
switch (_b.label) {
|
|
183
|
+
case 0:
|
|
184
|
+
(0, logger_1.default)('SCREENSHOTS:capture');
|
|
185
|
+
return [4 /*yield*/, electron_1.desktopCapturer.getSources({
|
|
186
|
+
types: ['screen'],
|
|
187
|
+
thumbnailSize: {
|
|
188
|
+
width: display.width,
|
|
189
|
+
height: display.height
|
|
190
|
+
}
|
|
191
|
+
})];
|
|
192
|
+
case 1:
|
|
193
|
+
sources = _b.sent();
|
|
194
|
+
// Linux系统上,screen.getDisplayNearestPoint 返回的 Display 对象的 id 和 这儿 source 对象上的 display_id(Linux上,这个值是空字符串) 或 id 的中间部分,都不一致
|
|
195
|
+
// 但是,如果只有一个显示器的话,其实不用判断,直接返回就行
|
|
196
|
+
if (sources.length === 1) {
|
|
197
|
+
source = sources[0];
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
source = sources.find(function (source) {
|
|
201
|
+
return source.display_id === display.id.toString() || source.id.startsWith("screen:".concat(display.id, ":"));
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
if (!source) {
|
|
205
|
+
console.error(sources);
|
|
206
|
+
console.error(display);
|
|
207
|
+
console.error("Can't find screen source");
|
|
208
|
+
return [2 /*return*/];
|
|
209
|
+
}
|
|
210
|
+
this.$view.webContents.send('SCREENSHOTS:capture', display, source.thumbnail.toDataURL());
|
|
211
|
+
return [2 /*return*/];
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
});
|
|
178
215
|
};
|
|
179
216
|
/**
|
|
180
217
|
* 绑定ipc时间处理
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "electron-screenshots",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "electron 截图插件",
|
|
5
5
|
"types": "lib/screenshots.d.ts",
|
|
6
6
|
"main": "lib/screenshots.js",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"debug": "^4.3.3",
|
|
39
|
-
"react-screenshots": "^0.
|
|
39
|
+
"react-screenshots": "^0.3.0"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"electron": ">=11"
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"rimraf": "^3.0.2",
|
|
56
56
|
"typescript": "^4.5.5"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "d9d3774ba9cf7d713d3895f1b01731ca05736406"
|
|
59
59
|
}
|