UNPKG

react-sortable-hoc

Version:

Set of higher-order components to turn any list into a sortable, touch-friendly, animated list

1,642 lines (1,333 loc) 211 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("react"), require("react-dom")); else if(typeof define === 'function' && define.amd) define(["react", "react-dom"], factory); else if(typeof exports === 'object') exports["SortableHOC"] = factory(require("react"), require("react-dom")); else root["SortableHOC"] = factory(root["React"], root["ReactDOM"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_112__, __WEBPACK_EXTERNAL_MODULE_113__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { module.exports = __webpack_require__(1); /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.arrayMove = exports.SortableHandle = exports.SortableElement = exports.SortableContainer = undefined; var _utils = __webpack_require__(2); Object.defineProperty(exports, 'arrayMove', { enumerable: true, get: function get() { return _utils.arrayMove; } }); var _SortableContainer2 = __webpack_require__(3); var _SortableContainer3 = _interopRequireDefault(_SortableContainer2); var _SortableElement2 = __webpack_require__(248); var _SortableElement3 = _interopRequireDefault(_SortableElement2); var _SortableHandle2 = __webpack_require__(249); var _SortableHandle3 = _interopRequireDefault(_SortableHandle2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.SortableContainer = _SortableContainer3.default; exports.SortableElement = _SortableElement3.default; exports.SortableHandle = _SortableHandle3.default; /***/ }, /* 2 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.arrayMove = arrayMove; exports.closest = closest; exports.limit = limit; exports.getElementMargin = getElementMargin; function arrayMove(arr, previousIndex, newIndex) { var array = arr.slice(0); if (newIndex >= array.length) { var k = newIndex - array.length; while (k-- + 1) { array.push(undefined); } } array.splice(newIndex, 0, array.splice(previousIndex, 1)[0]); return array; } var events = exports.events = { start: ['touchstart', 'mousedown'], move: ['touchmove', 'mousemove'], end: ['touchend', 'mouseup'] }; var vendorPrefix = exports.vendorPrefix = function () { if (typeof window === 'undefined' || typeof document === 'undefined') return ''; // server environment var styles = window.getComputedStyle(document.documentElement, ''); var pre = (Array.prototype.slice.call(styles).join('').match(/-(moz|webkit|ms)-/) || styles.OLink === '' && ['', 'o'])[1]; switch (pre) { case 'ms': return 'ms'; default: return pre && pre.length ? pre[0].toUpperCase() + pre.substr(1) : ''; } }(); function closest(el, fn) { while (el) { if (fn(el)) return el; el = el.parentNode; } } function limit(min, max, value) { if (value < min) { return min; } if (value > max) { return max; } return value; } function getCSSPixelValue(stringValue) { if (stringValue.substr(-2) === 'px') { return parseFloat(stringValue); } return 0; } function getElementMargin(element) { var style = window.getComputedStyle(element); return { top: getCSSPixelValue(style.marginTop), right: getCSSPixelValue(style.marginRight), bottom: getCSSPixelValue(style.marginBottom), left: getCSSPixelValue(style.marginLeft) }; } /***/ }, /* 3 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = __webpack_require__(4); var _extends3 = _interopRequireDefault(_extends2); var _slicedToArray2 = __webpack_require__(42); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); var _toConsumableArray2 = __webpack_require__(68); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _getPrototypeOf = __webpack_require__(76); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = __webpack_require__(80); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = __webpack_require__(81); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = __webpack_require__(85); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = __webpack_require__(104); var _inherits3 = _interopRequireDefault(_inherits2); exports.default = SortableContainer; var _react = __webpack_require__(112); var _react2 = _interopRequireDefault(_react); var _reactDom = __webpack_require__(113); var _reactDom2 = _interopRequireDefault(_reactDom); var _Manager = __webpack_require__(114); var _Manager2 = _interopRequireDefault(_Manager); var _utils = __webpack_require__(2); var _invariant = __webpack_require__(246); var _invariant2 = _interopRequireDefault(_invariant); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // Export Higher Order Sortable Container Component function SortableContainer(WrappedComponent) { var _class, _temp; var config = arguments.length <= 1 || arguments[1] === undefined ? { withRef: false } : arguments[1]; return _temp = _class = function (_Component) { (0, _inherits3.default)(_class, _Component); function _class(props) { (0, _classCallCheck3.default)(this, _class); var _this = (0, _possibleConstructorReturn3.default)(this, (0, _getPrototypeOf2.default)(_class).call(this)); _this.state = {}; _this.handleStart = function (e) { var _this$props = _this.props; var distance = _this$props.distance; var shouldCancelStart = _this$props.shouldCancelStart; if (e.button === 2 || shouldCancelStart(e)) { return false; } _this._touched = true; _this._pos = { x: e.clientX, y: e.clientY }; var node = (0, _utils.closest)(e.target, function (el) { return el.sortableInfo != null; }); if (node && !_this.state.sorting && node.sortableInfo) { var useDragHandle = _this.props.useDragHandle; var _node$sortableInfo = node.sortableInfo; var index = _node$sortableInfo.index; var collection = _node$sortableInfo.collection; if (useDragHandle && !(0, _utils.closest)(e.target, function (el) { return el.sortableHandle != null; })) return; _this.manager.active = { index: index, collection: collection }; if (!distance) { _this.pressTimer = setTimeout(function () { return _this.handlePress(e); }, _this.props.pressDelay); } } }; _this.handleMove = function (e) { var distance = _this.props.distance; if (!_this.state.sorting && _this._touched) { _this._delta = { x: _this._pos.x - e.clientX, y: _this._pos.y - e.clientY }; var delta = Math.abs(_this._delta.x) + Math.abs(_this._delta.y); if (!distance) { _this.cancel(); } else if (delta >= distance) { _this.handlePress(e); } } }; _this.handleEnd = function () { var distance = _this.props.distance; _this._touched = false; if (!distance) { _this.cancel(); } }; _this.cancel = function () { if (!_this.state.sorting) { clearTimeout(_this.pressTimer); _this.manager.active = null; } }; _this.handlePress = function (e) { var active = _this.manager.getActive(); if (active) { var _this$props2 = _this.props; var axis = _this$props2.axis; var onSortStart = _this$props2.onSortStart; var helperClass = _this$props2.helperClass; var hideSortableGhost = _this$props2.hideSortableGhost; var useWindowAsScrollContainer = _this$props2.useWindowAsScrollContainer; var node = active.node; var collection = active.collection; var index = node.sortableInfo.index; var margin = (0, _utils.getElementMargin)(node); var containerBoundingRect = _this.container.getBoundingClientRect(); _this.node = node; _this.margin = margin; _this.width = node.offsetWidth; _this.height = node.offsetHeight; _this.dimension = axis == 'x' ? _this.width : _this.height; _this.marginOffset = { x: _this.margin.left + _this.margin.right, y: Math.max(_this.margin.top, _this.margin.bottom) }; _this.boundingClientRect = node.getBoundingClientRect(); _this.index = index; _this.newIndex = index; var edge = _this.edge = axis == 'x' ? 'Left' : 'Top'; _this.offsetEdge = _this.getEdgeOffset(edge, node); _this.initialOffset = _this.getOffset(e); _this.initialScroll = _this.scrollContainer['scroll' + edge]; _this.helper = _this.document.body.appendChild(node.cloneNode(true)); _this.helper.style.position = 'fixed'; _this.helper.style.top = _this.boundingClientRect.top - margin.top + 'px'; _this.helper.style.left = _this.boundingClientRect.left - margin.left + 'px'; _this.helper.style.width = _this.width + 'px'; _this.helper.style.boxSizing = 'border-box'; if (hideSortableGhost) { _this.sortableGhost = node; node.style.visibility = 'hidden'; } if (axis == 'x') { _this.minTranslate = (useWindowAsScrollContainer ? 0 : containerBoundingRect.left) - _this.boundingClientRect.left - _this.width / 2; _this.maxTranslate = (useWindowAsScrollContainer ? _this.contentWindow.innerWidth : containerBoundingRect.left + containerBoundingRect.width) - _this.boundingClientRect.left - _this.width / 2; } else { _this.minTranslate = (useWindowAsScrollContainer ? 0 : containerBoundingRect.top) - _this.boundingClientRect.top - _this.height / 2; _this.maxTranslate = (useWindowAsScrollContainer ? _this.contentWindow.innerHeight : containerBoundingRect.top + containerBoundingRect.height) - _this.boundingClientRect.top - _this.height / 2; } if (helperClass) { var _this$helper$classLis; (_this$helper$classLis = _this.helper.classList).add.apply(_this$helper$classLis, (0, _toConsumableArray3.default)(helperClass.split(' '))); } _this.listenerNode = e.touches ? node : _this.contentWindow; _utils.events.move.forEach(function (eventName) { return _this.listenerNode.addEventListener(eventName, _this.handleSortMove, false); }); _utils.events.end.forEach(function (eventName) { return _this.listenerNode.addEventListener(eventName, _this.handleSortEnd, false); }); _this.setState({ sorting: true, sortingIndex: index }); if (onSortStart) onSortStart({ node: node, index: index, collection: collection }, e); } }; _this.handleSortMove = function (e) { var onSortMove = _this.props.onSortMove; e.preventDefault(); // Prevent scrolling on mobile _this.updatePosition(e); _this.animateNodes(); _this.autoscroll(); if (onSortMove) onSortMove(e); }; _this.handleSortEnd = function (e) { var _this$props3 = _this.props; var hideSortableGhost = _this$props3.hideSortableGhost; var onSortEnd = _this$props3.onSortEnd; var collection = _this.manager.active.collection; // Remove the event listeners if the node is still in the DOM if (_this.listenerNode) { _utils.events.move.forEach(function (eventName) { return _this.listenerNode.removeEventListener(eventName, _this.handleSortMove); }); _utils.events.end.forEach(function (eventName) { return _this.listenerNode.removeEventListener(eventName, _this.handleSortEnd); }); } // Remove the helper from the DOM _this.helper.parentNode.removeChild(_this.helper); if (hideSortableGhost && _this.sortableGhost) { _this.sortableGhost.style.visibility = ''; } var nodes = _this.manager.refs[collection]; for (var i = 0, len = nodes.length; i < len; i++) { var node = nodes[i]; var el = node.node; // Clear the cached offsetTop / offsetLeft value node.edgeOffset = null; // Remove the transforms / transitions el.style[_utils.vendorPrefix + 'Transform'] = ''; el.style[_utils.vendorPrefix + 'TransitionDuration'] = ''; } if (typeof onSortEnd == 'function') { onSortEnd({ oldIndex: _this.index, newIndex: _this.newIndex, collection: collection }, e); } // Stop autoscroll clearInterval(_this.autoscrollInterval); _this.autoscrollInterval = null; // Update state _this.manager.active = null; _this.setState({ sorting: false, sortingIndex: null }); _this._touched = false; }; _this.autoscroll = function () { var translate = _this.translate; var direction = void 0; var speed = 1; var acceleration = 10; if (translate >= _this.maxTranslate - _this.dimension / 2) { direction = 1; // Scroll Down speed = acceleration * Math.abs((_this.maxTranslate - _this.dimension / 2 - translate) / _this.dimension); } else if (translate <= _this.minTranslate + _this.dimension / 2) { direction = -1; // Scroll Up speed = acceleration * Math.abs((translate - _this.dimension / 2 - _this.minTranslate) / _this.dimension); } if (_this.autoscrollInterval) { clearTimeout(_this.autoscrollInterval); _this.autoscrollInterval = null; _this.isAutoScrolling = false; } if (direction) { _this.autoscrollInterval = setInterval(function () { _this.isAutoScrolling = true; var offset = 1 * speed * direction; _this.scrollContainer['scroll' + _this.edge] += offset; _this.translate += offset; _this.animateNodes(); }, 5); } }; _this.manager = new _Manager2.default(); _this.events = { start: _this.handleStart, move: _this.handleMove, end: _this.handleEnd }; (0, _invariant2.default)(!(props.distance && props.pressDelay), 'Attempted to set both `pressDelay` and `distance` on SortableContainer, you may only use one or the other, not both at the same time.'); return _this; } (0, _createClass3.default)(_class, [{ key: 'getChildContext', value: function getChildContext() { return { manager: this.manager }; } }, { key: 'componentDidMount', value: function componentDidMount() { var _this2 = this; var _props = this.props; var contentWindow = _props.contentWindow; var getContainer = _props.getContainer; this.container = typeof getContainer == 'function' ? getContainer(this.getWrappedInstance()) : _reactDom2.default.findDOMNode(this); this.document = this.container.ownerDocument || document; this.scrollContainer = this.props.useWindowAsScrollContainer ? this.document.body : this.container; this.contentWindow = typeof contentWindow == 'function' ? contentWindow() : contentWindow; var _loop = function _loop(key) { _utils.events[key].forEach(function (eventName) { return _this2.container.addEventListener(eventName, _this2.events[key], false); }); }; for (var key in this.events) { _loop(key); } } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { var _this3 = this; var _loop2 = function _loop2(key) { _utils.events[key].forEach(function (eventName) { return _this3.container.removeEventListener(eventName, _this3.events[key]); }); }; for (var key in this.events) { _loop2(key); } } }, { key: 'getEdgeOffset', value: function getEdgeOffset(edge, node) { var offset = arguments.length <= 2 || arguments[2] === undefined ? 0 : arguments[2]; // Get the actual offsetTop / offsetLeft value, no matter how deep the node is nested if (node) { if (node.parentNode !== this.container) { return this.getEdgeOffset(edge, node.parentNode, offset + node['offset' + edge]); } else { return node['offset' + edge] + offset; } } } }, { key: 'getOffset', value: function getOffset(e) { return { x: e.touches ? e.touches[0].clientX : e.clientX, y: e.touches ? e.touches[0].clientY : e.clientY }; } }, { key: 'getLockPixelOffsets', value: function getLockPixelOffsets() { var lockOffset = this.props.lockOffset; if (!Array.isArray(lockOffset)) { lockOffset = [lockOffset, lockOffset]; } (0, _invariant2.default)(lockOffset.length === 2, 'lockOffset prop of SortableContainer should be a single ' + 'value or an array of exactly two values. Given %s', lockOffset); var _lockOffset = lockOffset; var _lockOffset2 = (0, _slicedToArray3.default)(_lockOffset, 2); var minLockOffset = _lockOffset2[0]; var maxLockOffset = _lockOffset2[1]; return [this.getLockPixelOffset(minLockOffset), this.getLockPixelOffset(maxLockOffset)]; } }, { key: 'getLockPixelOffset', value: function getLockPixelOffset(lockOffset) { var offset = lockOffset; var unit = 'px'; if (typeof lockOffset === 'string') { var match = /^[+-]?\d*(?:\.\d*)?(px|%)$/.exec(lockOffset); (0, _invariant2.default)(match !== null, 'lockOffset value should be a number or a string of a ' + 'number followed by "px" or "%". Given %s', lockOffset); offset = parseFloat(lockOffset); unit = match[1]; } (0, _invariant2.default)(isFinite(offset), 'lockOffset value should be a finite. Given %s', lockOffset); if (unit === '%') { offset = offset * this.dimension / 100; } return offset; } }, { key: 'updatePosition', value: function updatePosition(e) { var _props2 = this.props; var axis = _props2.axis; var lockAxis = _props2.lockAxis; var lockToContainerEdges = _props2.lockToContainerEdges; var offset = this.getOffset(e); var translate = { x: offset.x - this.initialOffset.x, y: offset.y - this.initialOffset.y }; this.translate = translate[axis]; if (lockToContainerEdges) { var _getLockPixelOffsets = this.getLockPixelOffsets(); var _getLockPixelOffsets2 = (0, _slicedToArray3.default)(_getLockPixelOffsets, 2); var minLockOffset = _getLockPixelOffsets2[0]; var maxLockOffset = _getLockPixelOffsets2[1]; var minOffset = this.dimension / 2 - minLockOffset; var maxOffset = this.dimension / 2 - maxLockOffset; translate[axis] = (0, _utils.limit)(this.minTranslate + minOffset, this.maxTranslate - maxOffset, translate[axis]); } switch (lockAxis) { case 'x': translate.y = 0; break; case 'y': translate.x = 0; break; } this.helper.style[_utils.vendorPrefix + 'Transform'] = 'translate3d(' + translate.x + 'px,' + translate.y + 'px, 0)'; } }, { key: 'animateNodes', value: function animateNodes() { var _props3 = this.props; var axis = _props3.axis; var transitionDuration = _props3.transitionDuration; var hideSortableGhost = _props3.hideSortableGhost; var nodes = this.manager.getOrderedRefs(); var deltaScroll = this.scrollContainer['scroll' + this.edge] - this.initialScroll; var sortingOffset = this.offsetEdge + this.translate + deltaScroll; this.newIndex = null; for (var i = 0, len = nodes.length; i < len; i++) { var _nodes$i = nodes[i]; var node = _nodes$i.node; var edgeOffset = _nodes$i.edgeOffset; var index = node.sortableInfo.index; var dimension = axis == 'x' ? node.offsetWidth : node.offsetHeight; var offset = this.dimension > dimension ? dimension / 2 : this.dimension / 2; var translate = 0; var translateX = 0; var translateY = 0; // If we haven't cached the node's offsetTop / offsetLeft value if (edgeOffset == null) { nodes[i].edgeOffset = edgeOffset = this.getEdgeOffset(this.edge, node); } // If the node is the one we're currently animating, skip it if (index === this.index) { if (hideSortableGhost) { /* * With windowing libraries such as `react-virtualized`, the sortableGhost * node may change while scrolling down and then back up (or vice-versa), * so we need to update the reference to the new node just to be safe. */ this.sortableGhost = node; node.style.visibility = 'hidden'; } continue; } if (transitionDuration) { node.style[_utils.vendorPrefix + 'TransitionDuration'] = transitionDuration + 'ms'; } if (index > this.index && sortingOffset + offset >= edgeOffset) { translate = -(this.dimension + this.marginOffset[axis]); this.newIndex = index; } else if (index < this.index && sortingOffset <= edgeOffset + offset) { translate = this.dimension + this.marginOffset[axis]; if (this.newIndex == null) { this.newIndex = index; } } if (axis == 'x') { translateX = translate; } else { translateY = translate; } node.style[_utils.vendorPrefix + 'Transform'] = 'translate3d(' + translateX + 'px,' + translateY + 'px,0)'; } if (this.newIndex == null) { this.newIndex = this.index; } } }, { key: 'getWrappedInstance', value: function getWrappedInstance() { (0, _invariant2.default)(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableContainer() call'); return this.refs.wrappedInstance; } }, { key: 'render', value: function render() { var ref = config.withRef ? 'wrappedInstance' : null; return _react2.default.createElement(WrappedComponent, (0, _extends3.default)({ ref: ref }, this.props, this.state)); } }]); return _class; }(_react.Component), _class.displayName = WrappedComponent.displayName ? 'SortableList(' + WrappedComponent.displayName + ')' : 'SortableList', _class.WrappedComponent = WrappedComponent, _class.defaultProps = { axis: 'y', transitionDuration: 300, pressDelay: 0, distance: 0, useWindowAsScrollContainer: false, hideSortableGhost: true, contentWindow: typeof window !== 'undefined' ? window : null, shouldCancelStart: function shouldCancelStart(e) { // Cancel sorting if the event target is an `input`, `textarea`, `select` or `option` if (['input', 'textarea', 'select', 'option'].indexOf(e.target.tagName.toLowerCase()) !== -1) { return true; // Return true to cancel sorting } }, lockToContainerEdges: false, lockOffset: '50%' }, _class.propTypes = { axis: _react.PropTypes.oneOf(['x', 'y']), distance: _react.PropTypes.number, lockAxis: _react.PropTypes.string, helperClass: _react.PropTypes.string, transitionDuration: _react.PropTypes.number, contentWindow: _react.PropTypes.any, onSortStart: _react.PropTypes.func, onSortMove: _react.PropTypes.func, onSortEnd: _react.PropTypes.func, shouldCancelStart: _react.PropTypes.func, pressDelay: _react.PropTypes.number, useDragHandle: _react.PropTypes.bool, useWindowAsScrollContainer: _react.PropTypes.bool, hideSortableGhost: _react.PropTypes.bool, lockToContainerEdges: _react.PropTypes.bool, lockOffset: _react.PropTypes.oneOfType([_react.PropTypes.number, _react.PropTypes.string, _react.PropTypes.arrayOf(_react.PropTypes.oneOfType([_react.PropTypes.number, _react.PropTypes.string]))]), getContainer: _react.PropTypes.func }, _class.childContextTypes = { manager: _react.PropTypes.object.isRequired }, _temp; } /***/ }, /* 4 */ /***/ function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _assign = __webpack_require__(5); var _assign2 = _interopRequireDefault(_assign); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _assign2.default || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /***/ }, /* 5 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(6), __esModule: true }; /***/ }, /* 6 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(7); module.exports = __webpack_require__(10).Object.assign; /***/ }, /* 7 */ /***/ function(module, exports, __webpack_require__) { // 19.1.3.1 Object.assign(target, source) var $export = __webpack_require__(8); $export($export.S + $export.F, 'Object', {assign: __webpack_require__(23)}); /***/ }, /* 8 */ /***/ function(module, exports, __webpack_require__) { var global = __webpack_require__(9) , core = __webpack_require__(10) , ctx = __webpack_require__(11) , hide = __webpack_require__(13) , PROTOTYPE = 'prototype'; var $export = function(type, name, source){ var IS_FORCED = type & $export.F , IS_GLOBAL = type & $export.G , IS_STATIC = type & $export.S , IS_PROTO = type & $export.P , IS_BIND = type & $export.B , IS_WRAP = type & $export.W , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) , expProto = exports[PROTOTYPE] , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] , key, own, out; if(IS_GLOBAL)source = name; for(key in source){ // contains in native own = !IS_FORCED && target && target[key] !== undefined; if(own && key in exports)continue; // export native or passed out = own ? target[key] : source[key]; // prevent global pollution for namespaces exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] // bind timers to global for call from export context : IS_BIND && own ? ctx(out, global) // wrap global constructors for prevent change them in library : IS_WRAP && target[key] == out ? (function(C){ var F = function(a, b, c){ if(this instanceof C){ switch(arguments.length){ case 0: return new C; case 1: return new C(a); case 2: return new C(a, b); } return new C(a, b, c); } return C.apply(this, arguments); }; F[PROTOTYPE] = C[PROTOTYPE]; return F; // make static versions for prototype methods })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% if(IS_PROTO){ (exports.virtual || (exports.virtual = {}))[key] = out; // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out); } } }; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap $export.U = 64; // safe $export.R = 128; // real proto method for `library` module.exports = $export; /***/ }, /* 9 */ /***/ function(module, exports) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef /***/ }, /* 10 */ /***/ function(module, exports) { var core = module.exports = {version: '2.4.0'}; if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef /***/ }, /* 11 */ /***/ function(module, exports, __webpack_require__) { // optional / simple context binding var aFunction = __webpack_require__(12); module.exports = function(fn, that, length){ aFunction(fn); if(that === undefined)return fn; switch(length){ case 1: return function(a){ return fn.call(that, a); }; case 2: return function(a, b){ return fn.call(that, a, b); }; case 3: return function(a, b, c){ return fn.call(that, a, b, c); }; } return function(/* ...args */){ return fn.apply(that, arguments); }; }; /***/ }, /* 12 */ /***/ function(module, exports) { module.exports = function(it){ if(typeof it != 'function')throw TypeError(it + ' is not a function!'); return it; }; /***/ }, /* 13 */ /***/ function(module, exports, __webpack_require__) { var dP = __webpack_require__(14) , createDesc = __webpack_require__(22); module.exports = __webpack_require__(18) ? function(object, key, value){ return dP.f(object, key, createDesc(1, value)); } : function(object, key, value){ object[key] = value; return object; }; /***/ }, /* 14 */ /***/ function(module, exports, __webpack_require__) { var anObject = __webpack_require__(15) , IE8_DOM_DEFINE = __webpack_require__(17) , toPrimitive = __webpack_require__(21) , dP = Object.defineProperty; exports.f = __webpack_require__(18) ? Object.defineProperty : function defineProperty(O, P, Attributes){ anObject(O); P = toPrimitive(P, true); anObject(Attributes); if(IE8_DOM_DEFINE)try { return dP(O, P, Attributes); } catch(e){ /* empty */ } if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); if('value' in Attributes)O[P] = Attributes.value; return O; }; /***/ }, /* 15 */ /***/ function(module, exports, __webpack_require__) { var isObject = __webpack_require__(16); module.exports = function(it){ if(!isObject(it))throw TypeError(it + ' is not an object!'); return it; }; /***/ }, /* 16 */ /***/ function(module, exports) { module.exports = function(it){ return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }, /* 17 */ /***/ function(module, exports, __webpack_require__) { module.exports = !__webpack_require__(18) && !__webpack_require__(19)(function(){ return Object.defineProperty(__webpack_require__(20)('div'), 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }, /* 18 */ /***/ function(module, exports, __webpack_require__) { // Thank's IE8 for his funny defineProperty module.exports = !__webpack_require__(19)(function(){ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }, /* 19 */ /***/ function(module, exports) { module.exports = function(exec){ try { return !!exec(); } catch(e){ return true; } }; /***/ }, /* 20 */ /***/ function(module, exports, __webpack_require__) { var isObject = __webpack_require__(16) , document = __webpack_require__(9).document // in old IE typeof document.createElement is 'object' , is = isObject(document) && isObject(document.createElement); module.exports = function(it){ return is ? document.createElement(it) : {}; }; /***/ }, /* 21 */ /***/ function(module, exports, __webpack_require__) { // 7.1.1 ToPrimitive(input [, PreferredType]) var isObject = __webpack_require__(16); // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function(it, S){ if(!isObject(it))return it; var fn, val; if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; throw TypeError("Can't convert object to primitive value"); }; /***/ }, /* 22 */ /***/ function(module, exports) { module.exports = function(bitmap, value){ return { enumerable : !(bitmap & 1), configurable: !(bitmap & 2), writable : !(bitmap & 4), value : value }; }; /***/ }, /* 23 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; // 19.1.2.1 Object.assign(target, source, ...) var getKeys = __webpack_require__(24) , gOPS = __webpack_require__(39) , pIE = __webpack_require__(40) , toObject = __webpack_require__(41) , IObject = __webpack_require__(28) , $assign = Object.assign; // should work with symbols and should have deterministic property order (V8 bug) module.exports = !$assign || __webpack_require__(19)(function(){ var A = {} , B = {} , S = Symbol() , K = 'abcdefghijklmnopqrst'; A[S] = 7; K.split('').forEach(function(k){ B[k] = k; }); return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; }) ? function assign(target, source){ // eslint-disable-line no-unused-vars var T = toObject(target) , aLen = arguments.length , index = 1 , getSymbols = gOPS.f , isEnum = pIE.f; while(aLen > index){ var S = IObject(arguments[index++]) , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S) , length = keys.length , j = 0 , key; while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key]; } return T; } : $assign; /***/ }, /* 24 */ /***/ function(module, exports, __webpack_require__) { // 19.1.2.14 / 15.2.3.14 Object.keys(O) var $keys = __webpack_require__(25) , enumBugKeys = __webpack_require__(38); module.exports = Object.keys || function keys(O){ return $keys(O, enumBugKeys); }; /***/ }, /* 25 */ /***/ function(module, exports, __webpack_require__) { var has = __webpack_require__(26) , toIObject = __webpack_require__(27) , arrayIndexOf = __webpack_require__(31)(false) , IE_PROTO = __webpack_require__(35)('IE_PROTO'); module.exports = function(object, names){ var O = toIObject(object) , i = 0 , result = [] , key; for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key); // Don't enum bug & hidden keys while(names.length > i)if(has(O, key = names[i++])){ ~arrayIndexOf(result, key) || result.push(key); } return result; }; /***/ }, /* 26 */ /***/ function(module, exports) { var hasOwnProperty = {}.hasOwnProperty; module.exports = function(it, key){ return hasOwnProperty.call(it, key); }; /***/ }, /* 27 */ /***/ function(module, exports, __webpack_require__) { // to indexed object, toObject with fallback for non-array-like ES3 strings var IObject = __webpack_require__(28) , defined = __webpack_require__(30); module.exports = function(it){ return IObject(defined(it)); }; /***/ }, /* 28 */ /***/ function(module, exports, __webpack_require__) { // fallback for non-array-like ES3 and non-enumerable old V8 strings var cof = __webpack_require__(29); module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ return cof(it) == 'String' ? it.split('') : Object(it); }; /***/ }, /* 29 */ /***/ function(module, exports) { var toString = {}.toString; module.exports = function(it){ return toString.call(it).slice(8, -1); }; /***/ }, /* 30 */ /***/ function(module, exports) { // 7.2.1 RequireObjectCoercible(argument) module.exports = function(it){ if(it == undefined)throw TypeError("Can't call method on " + it); return it; }; /***/ }, /* 31 */ /***/ function(module, exports, __webpack_require__) { // false -> Array#indexOf // true -> Array#includes var toIObject = __webpack_require__(27) , toLength = __webpack_require__(32) , toIndex = __webpack_require__(34); module.exports = function(IS_INCLUDES){ return function($this, el, fromIndex){ var O = toIObject($this) , length = toLength(O.length) , index = toIndex(fromIndex, length) , value; // Array#includes uses SameValueZero equality algorithm if(IS_INCLUDES && el != el)while(length > index){ value = O[index++]; if(value != value)return true; // Array#toIndex ignores holes, Array#includes - not } else for(;length > index; index++)if(IS_INCLUDES || index in O){ if(O[index] === el)return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; /***/ }, /* 32 */ /***/ function(module, exports, __webpack_require__) { // 7.1.15 ToLength var toInteger = __webpack_require__(33) , min = Math.min; module.exports = function(it){ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; /***/ }, /* 33 */ /***/ function(module, exports) { // 7.1.4 ToInteger var ceil = Math.ceil , floor = Math.floor; module.exports = function(it){ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; /***/ }, /* 34 */ /***/ function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(33) , max = Math.max , min = Math.min; module.exports = function(index, length){ index = toInteger(index); return index < 0 ? max(index + length, 0) : min(index, length); }; /***/ }, /* 35 */ /***/ function(module, exports, __webpack_require__) { var shared = __webpack_require__(36)('keys') , uid = __webpack_require__(37); module.exports = function(key){ return shared[key] || (shared[key] = uid(key)); }; /***/ }, /* 36 */ /***/ function(module, exports, __webpack_require__) { var global = __webpack_require__(9) , SHARED = '__core-js_shared__' , store = global[SHARED] || (global[SHARED] = {}); module.exports = function(key){ return store[key] || (store[key] = {}); }; /***/ }, /* 37 */ /***/ function(module, exports) { var id = 0 , px = Math.random(); module.exports = function(key){ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); }; /***/ }, /* 38 */ /***/ function(module, exports) { // IE 8- don't enum bug keys module.exports = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); /***/ }, /* 39 */ /***/ function(module, exports) { exports.f = Object.getOwnPropertySymbols; /***/ }, /* 40 */ /***/ function(module, exports) { exports.f = {}.propertyIsEnumerable; /***/ }, /* 41 */ /***/ function(module, exports, __webpack_require__) { // 7.1.13 ToObject(argument) var defined = __webpack_require__(30); module.exports = function(it){ return Object(defined(it)); }; /***/ }, /* 42 */ /***/ function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _isIterable2 = __webpack_require__(43); var _isIterable3 = _interopRequireDefault(_isIterable2); var _getIterator2 = __webpack_require__(64); var _getIterator3 = _interopRequireDefault(_getIterator2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if ((0, _isIterable3.default)(Object(arr))) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); /***/ }, /* 43 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(44), __esModule: true }; /***/ }, /* 44 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(45); __webpack_require__(60); module.exports = __webpack_require__(62); /***/ }, /* 45 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(46); var global = __webpack_require__(9) , hide = __webpack_require__(13) , Iterators = __webpack_require__(49) , TO_STRING_TAG = __webpack_require__(58)('toStringTag'); for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){ var NAME = collections[i] , Collection = global[NAME] , proto = Collection && Collection.prototype; if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME); Iterators[NAME] = Iterators.Array; } /***/ }, /* 46 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var addToUnscopables = __webpack_require__(47) , step = __webpack_require__(48) , Iterators = __webpack_require__(49) , toIObject = __webpack_require__(27); // 22.1.3.4 Array.prototype.entries() // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() module.exports = __webpack_require__(50)(Array, 'Array', function(iterated, kind){ this._t = toIObject(iterated); // target this._i = 0; // next index this._k = kind; // kind // 22.1.5.2.1 %ArrayIteratorPrototype%.next() }, function(){ var O = this._t , kind = this._k , index = this._i++; if(!O || index >= O.length){ this._t = undefined; return step(1); } if(kind == 'keys' )return step(0, index); if(kind == 'values')return step(0, O[index]); return step(0, [index, O[index]]); }, 'values'); // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) Iterators.Arguments = Iterators.Array; addToUnscopables('keys'); addToUnscopables('values'); addToUnscopables('entries'); /***/ }, /* 47 */ /***/ function(module, exports) { module.exports = function(){ /* empty */ }; /***/ }, /* 48 */ /***/ function(module, exports) { module.exports = function(done, value){ return {value: value, done: !!done}; }; /***/ }, /* 49 */ /***/ function(module, exports) { module.exports = {}; /***/ }, /* 50 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var LIBRARY = __webpack_require__(51) , $export = __webpack_require__(8) , redefine = __webpack_require__(52) , hide = __webpack_require__(13) , has = __webpack_require__(26) , Iterators = __webpack_require__(49) , $iterCreate = __webpack_require__(53) , setToStringTag = __webpack_require__(57) , getPrototypeOf = __webpack_require__(59) , ITERATOR = __webpack_require__(58)('iterator') , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next` , FF_ITERATOR = '@@iterator' , KEYS = 'keys' , VALUES = 'values'; var returnThis = function(){ return this; }; module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){ $iterCreate(Constructor, NAME, next); var getMethod = function(kind){ if(!BUGGY && kind in proto)return proto[kind]; switch(kind){ case KEYS: return function keys(){ return new Constructor(this, kind); }; case VALUES: return function values(){ return new Constructor(this, kind); }; } return function entries(){ return new Constructor(this, kind); }; }; var TAG = NAME + ' Iterator' , DEF_VALUES = DEFAULT == VALUES , VALUES_BUG = false , proto = Base.prototype , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] , $default = $native || getMethod(DEFAULT) , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined , $anyNative = NAME == 'Array' ? proto.entries || $native : $native , methods, key, IteratorPrototype; // Fix native if($anyNative){ IteratorPrototype = getPrototypeOf($anyNative.call(new Base)); if(IteratorPrototype !== Object.prototype){ // Set @@toStringTag to native iterators setToStringTag(IteratorPrototype, TAG, true); // fix for some old engines if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis); } } // fix Array#{values, @@iterator}.name in V8 / FF if(DEF_VALUES && $native && $native.name !== VALUES){ VALUES_BUG = true; $default = function values(){ return $native.call(this); }; } // Define iterator if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){ hide(proto, ITERATOR, $default); } // Plug for library Iterators[NAME] = $default; Iterators[TAG] = returnThis; if(DEFAULT){ methods = { values: DEF_VALUES ? $default : getMethod(VALUES), keys: IS_SET ? $default : getMethod(KEYS), entries: $entries }; if(FORCED)for(key in methods){ if(!(key in proto))redefine(proto, key, methods[key]); } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); } return methods; }; /***/ }, /* 51 */ /***/ function(module, exports) { module.exports = true; /***/ }, /* 52 */ /***/ function(module, exports, __webpack_require__) { module.exports = __webpack_require__(13); /***/ }, /* 53 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var create = __webpack_require__(54) , descriptor = __webpack_require__(22) , setToStringTag = __webpack_require__(57) , IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() __webpack_require__(13)(IteratorPrototype, __webpack_require__(58)('iterator'), function(){ return this; }); module.exports = function(Constructor, NAME, next){ Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)}); setToStringTag(Constructor, NAME + ' Iterator'); }; /***/ }, /* 54 */ /***/ function(module, exports, __webpack_require__) { // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) var anObject = __webpack_require__(15) , dPs = __webpack_require__(55) , enumBugKeys = __webpack_require__(38) , IE_PROTO = __webpack_require__(35)('IE_PROTO') , Empty = function(){ /* empty */ } , PROTOTYPE = 'prototype'; // Create object with fake `null` prototype: use iframe Object with cleared prototype var createDict = function(){ // Thrash, waste and sodomy: IE GC bug var iframe = __webpack_require__(20)('iframe') , i = enumBugKeys.length , gt = '>' , iframeDocument; iframe.style.display = 'none'; __webpack_require__(56).appendChild(iframe); iframe.src = 'javascript:'; // eslint-disable-line no-script-url // createDict = iframe.contentWindow.Object; // html.removeChild(iframe); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); iframeDocument.write('<script>document.F=Object</script' + gt); iframeDocument.close(); createDict = iframeDocument.F; while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]]; return createDict(); }; module.exports = Object.create || function create(O, Properties){ var result; if(O !== null){ Empty[PROTOTYPE] = anObject(O); result = new Empty; Empty[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO] = O; } else result = createDict(); return Properties === undefined ? result : dPs(result, Properties); }; /***/ }, /* 55 */ /***/ function(module, exports, __webpack_require__) { var dP = __webpack_require__(14) , anObject = __webpack_require__(15) , getKeys = __webpack_req