Repository URL to install this package:
|
Version:
1.2.14 ▾
|
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _mobxReact = require("xmobx/mobx-react");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactDom = _interopRequireDefault(require("react-dom"));
var _clamp = _interopRequireDefault(require("lodash/clamp"));
var _exotic = require("exotic");
var _state = _interopRequireDefault(require("./state"));
var _class,
_class2,
_temp,
_jsxFileName = "devtools/dat-gui/components/Slider.js";
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
const IS_BROWSER = typeof window === 'object';
let Slider = (0, _mobxReact.observer)(_class = (_temp = _class2 = class Slider extends _react.Component {
constructor(props) {
super(props);
Object.defineProperty(this, "handleMouseDown", {
configurable: true,
enumerable: true,
writable: true,
value: event => {
this.update(event.pageX);
if (IS_BROWSER) {
window.addEventListener('mousemove', this.handleMouseMove);
window.addEventListener('mouseup', this.handleMouseUp);
}
}
});
Object.defineProperty(this, "handleMouseMove", {
configurable: true,
enumerable: true,
writable: true,
value: event => {
this.update(event.pageX);
event.preventDefault();
}
});
Object.defineProperty(this, "handleMouseUp", {
configurable: true,
enumerable: true,
writable: true,
value: event => {
this.update(event.pageX, false);
if (IS_BROWSER) {
window.removeEventListener('mousemove', this.handleMouseMove);
window.removeEventListener('mouseup', this.handleMouseUp);
}
}
});
Object.defineProperty(this, "handleClick", {
configurable: true,
enumerable: true,
writable: true,
value: event => {
// do not focus input field on slider click
event.preventDefault();
}
});
this.state = props.state || (0, _state.default)();
}
componentWillReceiveProps(nextProps) {
this.state.setValue((0, _exotic.toNumber)(nextProps.value));
}
update(pageX, isLive = true) {
const _props = this.props,
min = _props.min,
max = _props.max,
onUpdate = _props.onUpdate; // eslint-disable-next-line
const rect = _reactDom.default.findDOMNode(this).getBoundingClientRect();
const x = pageX - rect.left; // eslint-disable-next-line
const w = rect.right - rect.left; // eslint-disable-next-line
const value = min + (0, _clamp.default)(x / w, 0, 1) * (max - min);
const afterUpdate = () => {
onUpdate(value, isLive);
this.forceUpdate();
};
this.state.setValue(value); // this.state.merge({ value })
afterUpdate();
}
render() {
const _props2 = this.props,
min = _props2.min,
max = _props2.max,
width = _props2.width;
const widthBackground = (0, _clamp.default)((this.state.value - min) * 100 / (max - min), 0, 100);
const style = {
width: `${width}%`,
backgroundSize: `${widthBackground}% 100%`
};
return _react.default.createElement("span", {
className: "slider",
style: style,
onClick: this.handleClick,
onMouseDown: this.handleMouseDown,
__source: {
fileName: _jsxFileName,
lineNumber: 87
},
__self: this
});
}
}, Object.defineProperty(_class2, "propTypes", {
configurable: true,
enumerable: true,
writable: true,
value: {
value: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
min: _propTypes.default.number,
max: _propTypes.default.number,
width: _propTypes.default.number,
onUpdate: _propTypes.default.func,
state: _propTypes.default.object
}
}), _temp)) || _class;
exports.default = Slider;