rimmel
Version:
A Stream-Oriented UI library for the Rx.Observable Universe
25 lines (22 loc) • 820 B
JavaScript
import { SINK_TAG } from '../constants.js';
const FOCUS_SINK_TAG = 'focus';
const FocusSink = (node) => (state) => {
state ? node.focus?.() : node.blur?.();
};
/**
* A specialised sink for the "rml:focus" RML attribute
* @param source A present or future boolean value
* @returns RMLTemplateExpression A template expression for the "rml:focus" RML attribute
* @example <input type="text" rml:focus="${booleanValue}">
* @example <input type="text" rml:focus="${booleanPromise}">
* @example <input type="text" rml:focus="${booleanObservable}">
* @example <input type="text" rml:focus="${Focus(booleanPromise)}">
*/
const Focus = (source) => ({
type: SINK_TAG,
t: FOCUS_SINK_TAG,
source,
sink: FocusSink,
});
export { FOCUS_SINK_TAG, Focus, FocusSink };
//# sourceMappingURL=focus-sink.js.map