|
@@ -2,37 +2,39 @@ const { createScreen } = process._linkedBinding('electron_common_screen');
|
|
|
|
|
|
let _screen: Electron.Screen;
|
|
|
|
|
|
+const createScreenIfNeeded = () => {
|
|
|
+ if (_screen === undefined) {
|
|
|
+ _screen = createScreen();
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
// We can't call createScreen until after app.on('ready'), but this module
|
|
|
// exposes an instance created by createScreen. In order to avoid
|
|
|
// side-effecting and calling createScreen upon import of this module, instead
|
|
|
// we export a proxy which lazily calls createScreen on first access.
|
|
|
export default new Proxy({}, {
|
|
|
- get: (target, prop: keyof Electron.Screen) => {
|
|
|
- if (_screen === undefined) {
|
|
|
- _screen = createScreen();
|
|
|
+ get: (target, property: keyof Electron.Screen) => {
|
|
|
+ createScreenIfNeeded();
|
|
|
+ const value = _screen[property];
|
|
|
+ if (typeof value === 'function') {
|
|
|
+ return value.bind(_screen);
|
|
|
}
|
|
|
- const v = _screen[prop];
|
|
|
- if (typeof v === 'function') {
|
|
|
- return v.bind(_screen);
|
|
|
- }
|
|
|
- return v;
|
|
|
+ return value;
|
|
|
+ },
|
|
|
+ set: (target, property: string, value: unknown) => {
|
|
|
+ createScreenIfNeeded();
|
|
|
+ return Reflect.set(_screen, property, value);
|
|
|
},
|
|
|
ownKeys: () => {
|
|
|
- if (_screen === undefined) {
|
|
|
- _screen = createScreen();
|
|
|
- }
|
|
|
+ createScreenIfNeeded();
|
|
|
return Reflect.ownKeys(_screen);
|
|
|
},
|
|
|
- has: (target, prop: string) => {
|
|
|
- if (_screen === undefined) {
|
|
|
- _screen = createScreen();
|
|
|
- }
|
|
|
- return prop in _screen;
|
|
|
+ has: (target, property: string) => {
|
|
|
+ createScreenIfNeeded();
|
|
|
+ return property in _screen;
|
|
|
},
|
|
|
- getOwnPropertyDescriptor: (target, prop: string) => {
|
|
|
- if (_screen === undefined) {
|
|
|
- _screen = createScreen();
|
|
|
- }
|
|
|
- return Reflect.getOwnPropertyDescriptor(_screen, prop);
|
|
|
+ getOwnPropertyDescriptor: (target, property: string) => {
|
|
|
+ createScreenIfNeeded();
|
|
|
+ return Reflect.getOwnPropertyDescriptor(_screen, property);
|
|
|
}
|
|
|
});
|