"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _bootstrapSlider = _interopRequireDefault(require("bootstrap-slider")); var _camelCase = _interopRequireDefault(require("lodash/camelCase")); var _snakeCase = _interopRequireDefault(require("lodash/snakeCase")); var _throttle = _interopRequireDefault(require("lodash/throttle")); var _properties = _interopRequireDefault(require("./properties")); var _watchers = _interopRequireDefault(require("./watchers")); // @vue/component var _default = { name: 'FormSlider', props: _properties.default, data: function data() { return { slider: null, lastEvent: {} }; }, watch: _watchers.default, mounted: function mounted() { var props = {}; for (var key in this.$props) { if (this.$props.hasOwnProperty(key)) { var propskey = key === 'rangeHighlights' ? key : (0, _snakeCase.default)(key); props[propskey] = this.$props[key]; } } props.enabled = !this.disabled; this.slider = new _bootstrapSlider.default(this.$refs.input, props); this.bindEvents(); }, beforeDestroy: function beforeDestroy() { if (this.slider) { this.slider.destroy(); delete this.slider; } }, methods: { refresh: (0, _throttle.default)(function () { if (this.slider) { this.slider.refresh({ useCurrentValue: true }); this.bindEvents(); } }, 10), bindEvents: function bindEvents() { var _this = this; var events = ['slide', 'slide-start', 'slide-stop', 'change', 'slide-enabled', 'slide-disabled']; events.forEach(function (event) { // only bind the event if the event is bound to us if (event === 'change' || _this.$listeners[event]) { _this.slider.on((0, _camelCase.default)(event), function (value) { if (_this.debounce > 0) { var now = new Date().getTime(); if (_this.lastEvent[event] !== null && now <= _this.lastEvent[event] + _this.debounce) { return; } _this.lastEvent[event] = now; } _this.$emit(event, value); if (event === 'change') { _this.$emit('input', value.newValue); } }); } }); } }, render: function render(h) { return h('div', { staticClass: 'd-inline-block' }, [h('input', { ref: 'input', attrs: { type: 'text' } })]); } }; exports.default = _default;