UNPKG

11.8 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
7require('./slicedToArray-ef426d0f.js');
8require('./unsupportedIterableToArray-8a00e599.js');
9var React = require('react');
10var React__default = _interopDefault(React);
11require('./_commonjsHelpers-72d386ba.js');
12var index = require('./index-b0606964.js');
13var defineProperty$1 = require('./defineProperty-0921a47c.js');
14require('./toConsumableArray-7f36359f.js');
15var _styled = require('styled-components');
16var _styled__default = _interopDefault(_styled);
17var getPrototypeOf = require('./getPrototypeOf-e2d1e599.js');
18require('./color.js');
19require('./components.js');
20require('./contains-component.js');
21var css = require('./css.js');
22require('./dayjs.min-aa59a48e.js');
23require('./date.js');
24require('./miscellaneous.js');
25require('./environment.js');
26require('./font.js');
27require('./math-ecfd5d91.js');
28require('./characters.js');
29require('./format.js');
30require('./keycodes.js');
31require('./url.js');
32require('./web3.js');
33require('./constants.js');
34require('./breakpoints.js');
35var springs = require('./springs.js');
36require('./text-styles.js');
37require('./theme-dark.js');
38require('./theme-light.js');
39var Theme = require('./Theme.js');
40var _extends$1 = require('./extends-40571110.js');
41var objectWithoutProperties = require('./objectWithoutProperties-35db8ab0.js');
42require('./objectWithoutPropertiesLoose-1af20ad0.js');
43require('react-dom');
44var web = require('./web-d0294535.js');
45
46function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf._getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf._getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return getPrototypeOf._possibleConstructorReturn(this, result); }; }
47
48function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
49var BAR_HEIGHT = 6;
50var HANDLE_SIZE = 24;
51var HANDLE_SHADOW_MARGIN = 15;
52var PADDING = 5;
53var MIN_WIDTH = HANDLE_SIZE * 10;
54var HEIGHT = Math.max(HANDLE_SIZE, BAR_HEIGHT) + PADDING * 2; // The check on window.DOMRect is needed for the JSDOM environment, which has
55// window but not window.DOMRect. JSDOM is used by default in Jest.
56
57var DEFAULT_RECT = typeof window === 'undefined' || typeof window.DOMRect !== 'function' ? {
58 x: 0,
59 y: 0,
60 width: 0,
61 height: 0,
62 top: 0,
63 right: 0,
64 bottom: 0,
65 left: 0
66} : new window.DOMRect();
67
68var _StyledDiv = _styled__default("div").withConfig({
69 displayName: "Slider___StyledDiv",
70 componentId: "sc-94djfe-0"
71})(["min-width:", "px;padding:0 ", "px;", ";"], MIN_WIDTH, function (p) {
72 return p._css;
73}, css.unselectable);
74
75var _StyledDiv2 = _styled__default("div").withConfig({
76 displayName: "Slider___StyledDiv2",
77 componentId: "sc-94djfe-1"
78})(["position:relative;height:", "px;cursor:pointer;"], HEIGHT);
79
80var _StyledAnimatedDiv = _styled__default(web.extendedAnimated.div).withConfig({
81 displayName: "Slider___StyledAnimatedDiv",
82 componentId: "sc-94djfe-2"
83})(["position:absolute;top:50%;left:0;width:", "px;height:", "px;border:1px solid ", ";border-radius:50%;cursor:pointer;pointer-events:auto;"], HANDLE_SIZE, HANDLE_SIZE, function (p) {
84 return p._css4;
85});
86
87var Slider = /*#__PURE__*/function (_React$Component) {
88 getPrototypeOf._inherits(Slider, _React$Component);
89
90 var _super = _createSuper(Slider);
91
92 function Slider() {
93 var _this;
94
95 getPrototypeOf._classCallCheck(this, Slider);
96
97 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
98 args[_key] = arguments[_key];
99 }
100
101 _this = _super.call.apply(_super, [this].concat(args));
102
103 defineProperty$1._defineProperty(getPrototypeOf._assertThisInitialized(_this), "state", {
104 pressed: false
105 });
106
107 defineProperty$1._defineProperty(getPrototypeOf._assertThisInitialized(_this), "handleRef", function (element) {
108 _this._mainElement = element;
109 _this._document = element && element.ownerDocument;
110 });
111
112 defineProperty$1._defineProperty(getPrototypeOf._assertThisInitialized(_this), "getRect", function () {
113 var now = Date.now(); // Cache the rect if the last poll was less than a second ago
114
115 if (_this._lastRect && now - _this._lastRectTime < 1000) {
116 return _this._lastRect;
117 }
118
119 _this._lastRectTime = now;
120 _this._lastRect = _this._mainElement ? _this._mainElement.getBoundingClientRect() : DEFAULT_RECT;
121 return _this._lastRect;
122 });
123
124 defineProperty$1._defineProperty(getPrototypeOf._assertThisInitialized(_this), "dragStart", function (event) {
125 _this.dragStop();
126
127 var clientX = _this.clientXFromEvent(event);
128
129 _this.setState({
130 pressed: true
131 }, function () {
132 _this.updateValueFromClientX(clientX);
133 });
134
135 _this._document.addEventListener('mouseup', _this.dragStop);
136
137 _this._document.addEventListener('touchend', _this.dragStop);
138
139 _this._document.addEventListener('mousemove', _this.dragMove);
140
141 _this._document.addEventListener('touchmove', _this.dragMove);
142 });
143
144 defineProperty$1._defineProperty(getPrototypeOf._assertThisInitialized(_this), "dragStop", function () {
145 _this.setState({
146 pressed: false
147 });
148
149 _this._document.removeEventListener('mouseup', _this.dragStop);
150
151 _this._document.removeEventListener('touchend', _this.dragStop);
152
153 _this._document.removeEventListener('mousemove', _this.dragMove);
154
155 _this._document.removeEventListener('touchmove', _this.dragMove);
156 });
157
158 defineProperty$1._defineProperty(getPrototypeOf._assertThisInitialized(_this), "dragMove", function (event) {
159 if (!_this.state.pressed) {
160 return;
161 }
162
163 _this.updateValueFromClientX(_this.clientXFromEvent(event));
164 });
165
166 return _this;
167 }
168
169 getPrototypeOf._createClass(Slider, [{
170 key: "componentWillUnmount",
171 value: function componentWillUnmount() {
172 this.dragStop();
173 }
174 }, {
175 key: "clientXFromEvent",
176 value: function clientXFromEvent(event) {
177 return (event.touches ? event.touches.item(0) : event).clientX;
178 }
179 }, {
180 key: "updateValueFromClientX",
181 value: function updateValueFromClientX(clientX) {
182 var rect = this.getRect();
183 var x = Math.min(rect.width, Math.max(0, clientX - rect.x));
184 this.props.onUpdate(x / rect.width);
185 }
186 }, {
187 key: "getHandleStyles",
188 value: function getHandleStyles(pressProgress) {
189 return {
190 transform: pressProgress.interpolate(function (t) {
191 return "translate3d(0, calc(".concat(t * 0.5, "px - 50%), 0)");
192 }),
193 boxShadow: pressProgress.interpolate(function (t) {
194 return "0 1px 3px rgba(0, 0, 0, ".concat(0.1 - 0.02 * t, ")");
195 }),
196 background: pressProgress.interpolate(function (t) {
197 return "hsl(0, 0%, ".concat(100 * (1 - t * 0.01), "%)");
198 })
199 };
200 }
201 }, {
202 key: "getHandlePositionStyles",
203 value: function getHandlePositionStyles(value) {
204 return {
205 transform: value.interpolate(function (t) {
206 return "translate3d(calc(".concat(t * 100, "% + ").concat(HANDLE_SHADOW_MARGIN, "px), 0, 0)");
207 })
208 };
209 }
210 }, {
211 key: "getActiveBarStyles",
212 value: function getActiveBarStyles(value, pressProgress) {
213 return {
214 transform: value.interpolate(function (t) {
215 return "scaleX(".concat(t, ") translateZ(0)");
216 })
217 };
218 }
219 }, {
220 key: "render",
221 value: function render() {
222 var _this2 = this;
223
224 var pressed = this.state.pressed;
225
226 var _this$props = this.props,
227 onUpdate = _this$props.onUpdate,
228 value = _this$props.value,
229 theme = _this$props.theme,
230 props = objectWithoutProperties._objectWithoutProperties(_this$props, ["onUpdate", "value", "theme"]);
231
232 return /*#__PURE__*/React__default.createElement(web.Spring, {
233 native: true,
234 config: springs.springs.swift,
235 to: {
236 pressProgress: Number(pressed),
237 value: Math.max(0, Math.min(1, value))
238 }
239 }, function (_ref) {
240 var value = _ref.value,
241 pressProgress = _ref.pressProgress;
242 return /*#__PURE__*/React__default.createElement(_StyledDiv, _extends$1._extends({}, props, {
243 _css: HANDLE_SIZE / 2 + PADDING
244 }), /*#__PURE__*/React__default.createElement(_StyledDiv2, {
245 ref: _this2.handleRef,
246 onMouseDown: _this2.dragStart,
247 onTouchStart: _this2.dragStart
248 }, /*#__PURE__*/React__default.createElement(Bars, null, /*#__PURE__*/React__default.createElement(_StyledBar, {
249 _css2: theme.surfaceUnder
250 }), /*#__PURE__*/React__default.createElement(_StyledBar2, {
251 style: _this2.getActiveBarStyles(value, pressProgress),
252 _css3: theme.selected
253 })), /*#__PURE__*/React__default.createElement(HandleClip, null, /*#__PURE__*/React__default.createElement(HandlePosition, {
254 style: _this2.getHandlePositionStyles(value, pressProgress)
255 }, /*#__PURE__*/React__default.createElement(_StyledAnimatedDiv, {
256 style: _this2.getHandleStyles(pressProgress),
257 _css4: theme.border
258 })))));
259 });
260 }
261 }]);
262
263 return Slider;
264}(React__default.Component);
265
266defineProperty$1._defineProperty(Slider, "propTypes", {
267 value: index.PropTypes.number,
268 onUpdate: index.PropTypes.func,
269 theme: index.PropTypes.object
270});
271
272defineProperty$1._defineProperty(Slider, "defaultProps", {
273 value: 0,
274 onUpdate: function onUpdate() {}
275});
276
277var Bars = _styled__default(web.extendedAnimated.div).withConfig({
278 displayName: "Slider__Bars",
279 componentId: "sc-94djfe-3"
280})(["position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);overflow:hidden;border-radius:2px;height:", "px;"], BAR_HEIGHT);
281var Bar = _styled__default(web.extendedAnimated.div).withConfig({
282 displayName: "Slider__Bar",
283 componentId: "sc-94djfe-4"
284})(["position:absolute;top:0;left:0;right:0;bottom:0;"]);
285
286var _StyledBar2 = _styled__default(Bar).withConfig({
287 displayName: "Slider___StyledBar2",
288 componentId: "sc-94djfe-5"
289})(["transform-origin:0 0;background:", ";"], function (p) {
290 return p._css3;
291});
292
293var _StyledBar = _styled__default(Bar).withConfig({
294 displayName: "Slider___StyledBar",
295 componentId: "sc-94djfe-6"
296})(["background:", ";"], function (p) {
297 return p._css2;
298});
299
300var HandleClip = _styled__default.div.withConfig({
301 displayName: "Slider__HandleClip",
302 componentId: "sc-94djfe-7"
303})(["pointer-events:none;overflow:hidden;width:calc(100% + ", "px);height:calc(100% + ", "px);transform-origin:50% 50%;transform:translate( -", "px,-", "px );"], HANDLE_SIZE + HANDLE_SHADOW_MARGIN * 2, HANDLE_SHADOW_MARGIN * 2, HANDLE_SIZE / 2 + HANDLE_SHADOW_MARGIN, HANDLE_SHADOW_MARGIN);
304var HandlePosition = _styled__default(web.extendedAnimated.div).withConfig({
305 displayName: "Slider__HandlePosition",
306 componentId: "sc-94djfe-8"
307})(["width:calc(100% - ", "px);height:100%;transform-origin:50% 50%;"], HANDLE_SIZE + HANDLE_SHADOW_MARGIN * 2);
308var Slider$1 = (function (props) {
309 var theme = Theme.useTheme();
310 return /*#__PURE__*/React__default.createElement(Slider, _extends$1._extends({
311 theme: theme
312 }, props));
313});
314
315exports.default = Slider$1;
316//# sourceMappingURL=Slider.js.map