Files
front/dist/assets/vendor/imask/esm/controls/html-mask-element.js
2022-04-07 14:11:14 +02:00

152 lines
3.5 KiB
JavaScript

import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass } from '../_rollupPluginBabelHelpers-b054ecd2.js';
import MaskElement from './mask-element.js';
import IMask from '../core/holder.js';
/** Bridge between HTMLElement and {@link Masked} */
var HTMLMaskElement = /*#__PURE__*/function (_MaskElement) {
_inherits(HTMLMaskElement, _MaskElement);
var _super = _createSuper(HTMLMaskElement);
/** Mapping between HTMLElement events and mask internal events */
/** HTMLElement to use mask on */
/**
@param {HTMLInputElement|HTMLTextAreaElement} input
*/
function HTMLMaskElement(input) {
var _this;
_classCallCheck(this, HTMLMaskElement);
_this = _super.call(this);
_this.input = input;
_this._handlers = {};
return _this;
}
/** */
// $FlowFixMe https://github.com/facebook/flow/issues/2839
_createClass(HTMLMaskElement, [{
key: "rootElement",
get: function get() {
var _this$input$getRootNo, _this$input$getRootNo2, _this$input;
return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) === null || _this$input$getRootNo2 === void 0 ? void 0 : _this$input$getRootNo2.call(_this$input)) !== null && _this$input$getRootNo !== void 0 ? _this$input$getRootNo : document;
}
/**
Is element in focus
@readonly
*/
}, {
key: "isActive",
get: function get() {
//$FlowFixMe
return this.input === this.rootElement.activeElement;
}
/**
Returns HTMLElement selection start
@override
*/
}, {
key: "_unsafeSelectionStart",
get: function get() {
return this.input.selectionStart;
}
/**
Returns HTMLElement selection end
@override
*/
}, {
key: "_unsafeSelectionEnd",
get: function get() {
return this.input.selectionEnd;
}
/**
Sets HTMLElement selection
@override
*/
}, {
key: "_unsafeSelect",
value: function _unsafeSelect(start, end) {
this.input.setSelectionRange(start, end);
}
/**
HTMLElement value
@override
*/
}, {
key: "value",
get: function get() {
return this.input.value;
},
set: function set(value) {
this.input.value = value;
}
/**
Binds HTMLElement events to mask internal events
@override
*/
}, {
key: "bindEvents",
value: function bindEvents(handlers) {
var _this2 = this;
Object.keys(handlers).forEach(function (event) {
return _this2._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]);
});
}
/**
Unbinds HTMLElement events to mask internal events
@override
*/
}, {
key: "unbindEvents",
value: function unbindEvents() {
var _this3 = this;
Object.keys(this._handlers).forEach(function (event) {
return _this3._toggleEventHandler(event);
});
}
/** */
}, {
key: "_toggleEventHandler",
value: function _toggleEventHandler(event, handler) {
if (this._handlers[event]) {
this.input.removeEventListener(event, this._handlers[event]);
delete this._handlers[event];
}
if (handler) {
this.input.addEventListener(event, handler);
this._handlers[event] = handler;
}
}
}]);
return HTMLMaskElement;
}(MaskElement);
HTMLMaskElement.EVENTS_MAP = {
selectionChange: 'keydown',
input: 'input',
drop: 'drop',
click: 'click',
focus: 'focus',
commit: 'blur'
};
IMask.HTMLMaskElement = HTMLMaskElement;
export { HTMLMaskElement as default };