@hxui/angular
Version:
This README includes the steps that are necessary to import the HxUi-angular into a project or to contribute with development.
62 lines (61 loc) • 7.93 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Trigger } from './trigger.class';
var /** @type {?} */ DEFAULT_ALIASES = {
hover: ['mouseenter', 'mouseleave'],
focus: ['focusin', 'focusout']
};
/**
* @param {?} triggers
* @param {?=} aliases
* @return {?}
*/
export function parseTriggers(triggers, aliases) {
if (aliases === void 0) { aliases = DEFAULT_ALIASES; }
var /** @type {?} */ trimmedTriggers = (triggers || '').trim();
if (trimmedTriggers.length === 0) {
return [];
}
var /** @type {?} */ parsedTriggers = trimmedTriggers.split(/\s+/)
.map(function (trigger) { return trigger.split(':'); })
.map(function (triggerPair) {
var /** @type {?} */ alias = aliases[triggerPair[0]] || triggerPair;
return new Trigger(alias[0], alias[1]);
});
var /** @type {?} */ manualTriggers = parsedTriggers
.filter(function (triggerPair) { return triggerPair.isManual(); });
if (manualTriggers.length > 1) {
throw new Error('Triggers parse error: only one manual trigger is allowed');
}
if (manualTriggers.length === 1 && parsedTriggers.length > 1) {
throw new Error('Triggers parse error: manual trigger can\'t be mixed with other triggers');
}
return parsedTriggers;
}
/**
* @param {?} renderer
* @param {?} target
* @param {?} triggers
* @param {?} showFn
* @param {?} hideFn
* @param {?} toggleFn
* @return {?}
*/
export function listenToTriggers(renderer, target, triggers, showFn, hideFn, toggleFn) {
var /** @type {?} */ parsedTriggers = parseTriggers(triggers);
var /** @type {?} */ listeners = [];
if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {
return Function.prototype;
}
parsedTriggers.forEach(function (trigger) {
if (trigger.open === trigger.close) {
listeners.push(renderer.listen(target, trigger.open, toggleFn));
return;
}
listeners.push(renderer.listen(target, /** @type {?} */ (trigger.open), showFn), renderer.listen(target, /** @type {?} */ (trigger.close), hideFn));
});
return function () { listeners.forEach(function (unsubscribeFn) { return (unsubscribeFn()); }); };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlcnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaHh1aS9hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL3RyaWdnZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMscUJBQU0sZUFBZSxHQUFHO0lBQ3RCLEtBQUssRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7SUFDbkMsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQztDQUMvQixDQUFDOzs7Ozs7QUFFRixNQUFNLHdCQUF3QixRQUFnQixFQUFFLE9BQThCO0lBQTlCLHdCQUFBLEVBQUEseUJBQThCO0lBQzVFLHFCQUFNLGVBQWUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVoRCxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsTUFBTSxDQUFDLEVBQUUsQ0FBQztLQUNYO0lBRUQscUJBQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ2hELEdBQUcsQ0FBQyxVQUFDLE9BQWUsSUFBSyxPQUFBLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQWxCLENBQWtCLENBQUM7U0FDNUMsR0FBRyxDQUFDLFVBQUMsV0FBcUI7UUFDekIscUJBQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUM7UUFDckQsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN4QyxDQUFDLENBQUM7SUFFTCxxQkFBTSxjQUFjLEdBQUcsY0FBYztTQUNsQyxNQUFNLENBQUMsVUFBQyxXQUFvQixJQUFLLE9BQUEsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUF0QixDQUFzQixDQUFDLENBQUM7SUFFNUQsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztLQUM3RTtJQUVELEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCxNQUFNLElBQUksS0FBSyxDQUFDLDBFQUEwRSxDQUFDLENBQUM7S0FDN0Y7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDO0NBQ3ZCOzs7Ozs7Ozs7O0FBRUQsTUFBTSwyQkFBMkIsUUFBbUIsRUFBRSxNQUFXLEVBQUUsUUFBYSxFQUMvQyxNQUFzQyxFQUFFLE1BQXNDLEVBQUUsUUFBd0M7SUFDdkoscUJBQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxxQkFBTSxTQUFTLEdBQVUsRUFBRSxDQUFDO0lBRTVCLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7S0FDM0I7SUFFRCxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQUMsT0FBZ0I7UUFDdEMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNoRSxNQUFNLENBQUM7U0FDUjtRQUVELFNBQVMsQ0FBQyxJQUFJLENBQ1osUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLG9CQUFPLE9BQU8sQ0FBQyxJQUFJLEdBQUUsTUFBTSxDQUFDLEVBQ2xELFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxvQkFBTyxPQUFPLENBQUMsS0FBSyxHQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDeEQsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLGNBQVEsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFDLGFBQXVCLFlBQVUsYUFBYSxFQUFFLElBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUN4RiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJpZ2dlciB9IGZyb20gJy4vdHJpZ2dlci5jbGFzcyc7XHJcblxyXG5jb25zdCBERUZBVUxUX0FMSUFTRVMgPSB7XHJcbiAgaG92ZXI6IFsnbW91c2VlbnRlcicsICdtb3VzZWxlYXZlJ10sXHJcbiAgZm9jdXM6IFsnZm9jdXNpbicsICdmb2N1c291dCddXHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUcmlnZ2Vycyh0cmlnZ2Vyczogc3RyaW5nLCBhbGlhc2VzOiBhbnkgPSBERUZBVUxUX0FMSUFTRVMpOiBUcmlnZ2VyW10ge1xyXG4gIGNvbnN0IHRyaW1tZWRUcmlnZ2VycyA9ICh0cmlnZ2VycyB8fCAnJykudHJpbSgpO1xyXG5cclxuICBpZiAodHJpbW1lZFRyaWdnZXJzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgcGFyc2VkVHJpZ2dlcnMgPSB0cmltbWVkVHJpZ2dlcnMuc3BsaXQoL1xccysvKVxyXG4gICAgLm1hcCgodHJpZ2dlcjogc3RyaW5nKSA9PiB0cmlnZ2VyLnNwbGl0KCc6JykpXHJcbiAgICAubWFwKCh0cmlnZ2VyUGFpcjogc3RyaW5nW10pID0+IHtcclxuICAgICAgY29uc3QgYWxpYXMgPSBhbGlhc2VzW3RyaWdnZXJQYWlyWzBdXSB8fCB0cmlnZ2VyUGFpcjtcclxuICAgICAgcmV0dXJuIG5ldyBUcmlnZ2VyKGFsaWFzWzBdLCBhbGlhc1sxXSk7XHJcbiAgICB9KTtcclxuXHJcbiAgY29uc3QgbWFudWFsVHJpZ2dlcnMgPSBwYXJzZWRUcmlnZ2Vyc1xyXG4gICAgLmZpbHRlcigodHJpZ2dlclBhaXI6IFRyaWdnZXIpID0+IHRyaWdnZXJQYWlyLmlzTWFudWFsKCkpO1xyXG5cclxuICBpZiAobWFudWFsVHJpZ2dlcnMubGVuZ3RoID4gMSkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdUcmlnZ2VycyBwYXJzZSBlcnJvcjogb25seSBvbmUgbWFudWFsIHRyaWdnZXIgaXMgYWxsb3dlZCcpO1xyXG4gIH1cclxuXHJcbiAgaWYgKG1hbnVhbFRyaWdnZXJzLmxlbmd0aCA9PT0gMSAmJiBwYXJzZWRUcmlnZ2Vycy5sZW5ndGggPiAxKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyaWdnZXJzIHBhcnNlIGVycm9yOiBtYW51YWwgdHJpZ2dlciBjYW5cXCd0IGJlIG1peGVkIHdpdGggb3RoZXIgdHJpZ2dlcnMnKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBwYXJzZWRUcmlnZ2VycztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlblRvVHJpZ2dlcnMocmVuZGVyZXI6IFJlbmRlcmVyMiwgdGFyZ2V0OiBhbnksIHRyaWdnZXJzOiBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGbjogKGV2ZW50OiBhbnkpID0+IGJvb2xlYW4gfCB2b2lkLCBoaWRlRm46IChldmVudDogYW55KSA9PiBib29sZWFuIHwgdm9pZCwgdG9nZ2xlRm46IChldmVudDogYW55KSA9PiBib29sZWFuIHwgdm9pZCk6IEZ1bmN0aW9uIHtcclxuICBjb25zdCBwYXJzZWRUcmlnZ2VycyA9IHBhcnNlVHJpZ2dlcnModHJpZ2dlcnMpO1xyXG4gIGNvbnN0IGxpc3RlbmVyczogYW55W10gPSBbXTtcclxuXHJcbiAgaWYgKHBhcnNlZFRyaWdnZXJzLmxlbmd0aCA9PT0gMSAmJiBwYXJzZWRUcmlnZ2Vyc1swXS5pc01hbnVhbCgpKSB7XHJcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlO1xyXG4gIH1cclxuXHJcbiAgcGFyc2VkVHJpZ2dlcnMuZm9yRWFjaCgodHJpZ2dlcjogVHJpZ2dlcikgPT4ge1xyXG4gICAgaWYgKHRyaWdnZXIub3BlbiA9PT0gdHJpZ2dlci5jbG9zZSkge1xyXG4gICAgICBsaXN0ZW5lcnMucHVzaChyZW5kZXJlci5saXN0ZW4odGFyZ2V0LCB0cmlnZ2VyLm9wZW4sIHRvZ2dsZUZuKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsaXN0ZW5lcnMucHVzaChcclxuICAgICAgcmVuZGVyZXIubGlzdGVuKHRhcmdldCwgPGFueT50cmlnZ2VyLm9wZW4sIHNob3dGbiksXHJcbiAgICAgIHJlbmRlcmVyLmxpc3Rlbih0YXJnZXQsIDxhbnk+dHJpZ2dlci5jbG9zZSwgaGlkZUZuKSk7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiAoKSA9PiB7IGxpc3RlbmVycy5mb3JFYWNoKCh1bnN1YnNjcmliZUZuOiBGdW5jdGlvbikgPT4gPGFueT51bnN1YnNjcmliZUZuKCkpOyB9O1xyXG59XHJcbiJdfQ==