UNPKG

zent

Version:

一套前端设计语言和基于React的实现

164 lines (133 loc) 5.21 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _throttle = require('lodash/throttle'); var _throttle2 = _interopRequireDefault(_throttle); var _reactcss = require('../helpers/reactcss'); var _reactcss2 = _interopRequireDefault(_reactcss); var _saturation = require('../helpers/saturation'); var saturation = _interopRequireWildcard(_saturation); 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)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } /** * 调色盘 */ var Saturation = function (_Component) { (0, _inherits3['default'])(Saturation, _Component); function Saturation(props) { (0, _classCallCheck3['default'])(this, Saturation); var _this = (0, _possibleConstructorReturn3['default'])(this, (Saturation.__proto__ || Object.getPrototypeOf(Saturation)).call(this, props)); _this.handleChange = function (e, skip) { _this.throttle(_this.props.onChange, saturation.calculateChange(e, skip, _this.props, _this.refs), e); }; _this.handleMouseDown = function (e) { _this.handleChange(e, true); window.addEventListener('mousemove', _this.handleChange); window.addEventListener('mouseup', _this.handleMouseUp); }; _this.handleMouseUp = function () { _this.unbindEventListeners(); }; _this.throttle = (0, _throttle2['default'])(function (fn, data, e) { fn(data, e); }, 50); return _this; } (0, _createClass3['default'])(Saturation, [{ key: 'componentWillUnmount', value: function componentWillUnmount() { this.unbindEventListeners(); } }, { key: 'unbindEventListeners', value: function unbindEventListeners() { window.removeEventListener('mousemove', this.handleChange); window.removeEventListener('mouseup', this.handleMouseUp); } }, { key: 'render', value: function render() { var _this2 = this; var _ref = this.props.style || {}, color = _ref.color, white = _ref.white, black = _ref.black, pointer = _ref.pointer, circle = _ref.circle; var styles = (0, _reactcss2['default'])({ 'default': { color: { absolute: '0px 0px 0px 0px', background: 'hsl(' + this.props.hsl.h + ',100%, 50%)', borderRadius: this.props.radius }, white: { absolute: '0px 0px 0px 0px', background: 'linear-gradient(to right, #fff, rgba(255,255,255,0))' }, black: { absolute: '0px 0px 0px 0px', background: 'linear-gradient(to top, #000, rgba(0,0,0,0))', boxShadow: this.props.shadow }, pointer: { position: 'absolute', top: -(this.props.hsv.v * 100) + 100 + '%', left: this.props.hsv.s * 100 + '%', cursor: 'default' }, circle: { width: '4px', height: '4px', boxShadow: '0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3),\n 0 0 1px 2px rgba(0,0,0,.4)', borderRadius: '50%', cursor: 'hand', transform: 'translate(-2px, -2px)' } }, custom: { color: color, white: white, black: black, pointer: pointer, circle: circle } }, { custom: !!this.props.style }); return _react2['default'].createElement( 'div', { style: styles.color, ref: function ref(_ref2) { return _this2.refs = _ref2; }, onMouseDown: this.handleMouseDown, onTouchMove: this.handleChange, onTouchStart: this.handleChange }, _react2['default'].createElement( 'div', { style: styles.white }, _react2['default'].createElement('div', { style: styles.black }), _react2['default'].createElement( 'div', { style: styles.pointer }, this.props.pointer ? _react2['default'].createElement(this.props.pointer, this.props) : _react2['default'].createElement('div', { style: styles.circle }) ) ) ); } }]); return Saturation; }(_react.Component); exports['default'] = Saturation;