@dark-engine/platform-desktop
Version:
Dark renderer to desktop platforms like Windows, Linux, macOS via Nodegui and Qt
39 lines (38 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
exports.useEvents = exports.detectIsEvent = exports.createSyntheticEventHandler = exports.SyntheticEvent = void 0;
const core_1 = require('@dark-engine/core');
class SyntheticEvent {
type = '';
value = null;
constructor(options) {
this.type = options.type;
this.value = options.value;
}
}
exports.SyntheticEvent = SyntheticEvent;
function createSyntheticEventHandler(eventName, handler) {
const $scope = (0, core_1.$$scope)();
return value => {
$scope.setIsEvent(true);
handler(new SyntheticEvent({ type: eventName, value }));
$scope.setIsEvent(false);
};
}
exports.createSyntheticEventHandler = createSyntheticEventHandler;
const detectIsEvent = attrName => attrName === 'on';
exports.detectIsEvent = detectIsEvent;
function useEvents(map) {
const scope = (0, core_1.useMemo)(() => ({ map }), []);
const $map = (0, core_1.useMemo)(() => {
const state = {};
for (const key of Object.keys(scope.map)) {
state[key] = (...args) => scope.map[key](...args);
}
return state;
}, []);
scope.map = map;
return $map;
}
exports.useEvents = useEvents;
//# sourceMappingURL=events.js.map