41 lines
969 B
JavaScript
41 lines
969 B
JavaScript
|
import Service from 'resource:///com/github/Aylur/ags/service.js';
|
||
|
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
|
||
|
const { exec, execAsync } = Utils;
|
||
|
|
||
|
const clamp = (num, min, max) => Math.min(Math.max(num, min), max);
|
||
|
|
||
|
class IndicatorService extends Service {
|
||
|
static {
|
||
|
Service.register(
|
||
|
this,
|
||
|
{ 'popup': ['double'], },
|
||
|
);
|
||
|
}
|
||
|
|
||
|
_delay = 1500;
|
||
|
_count = 0;
|
||
|
|
||
|
popup(value) {
|
||
|
this.emit('popup', value);
|
||
|
this._count++;
|
||
|
Utils.timeout(this._delay, () => {
|
||
|
this._count--;
|
||
|
|
||
|
if (this._count === 0)
|
||
|
this.emit('popup', -1);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
connectWidget(widget, callback) {
|
||
|
connect(this, widget, callback, 'popup');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// the singleton instance
|
||
|
const service = new IndicatorService();
|
||
|
|
||
|
// make it global for easy use with cli
|
||
|
globalThis['indicator'] = service;
|
||
|
|
||
|
// export to use in other modules
|
||
|
export default service;
|