UNPKG

jimu-mobile

Version:

积木组件库助力移动端开发

223 lines (180 loc) 5.97 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _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 (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); exports.generateMatchMediaString = generateMatchMediaString; exports.setBreakpoints = setBreakpoints; exports.getBreakpoints = getBreakpoints; exports.clearBreakpoints = clearBreakpoints; exports.isDifferent = isDifferent; exports.findBreakpoints = findBreakpoints; exports.initBreakpoints = initBreakpoints; exports.findMatch = findMatch; exports.doubleUnit = doubleUnit; exports.assign = assign; var canUseDOM = exports.canUseDOM = function () { return typeof window !== 'undefined' && window.document && window.document.createElement && window.matchMedia; }(); var settings = exports.settings = { palm: { max: 600 }, lap: { max: 959, min: 601 }, portable: { max: 959 }, desk: { min: 960 } }; function generateMatchMediaString(_ref) { var min = _ref.min, max = _ref.max; var minStr = min ? '(min-width: ' + min + 'px)' : null; var maxStr = max ? '(max-width: ' + max + 'px)' : null; var str = minStr && maxStr ? minStr + ' and ' + maxStr : minStr || maxStr; return str; } var matchMediaQueries = exports.matchMediaQueries = Object.keys(settings).reduce(function (acc, breakpoint) { acc[breakpoint] = generateMatchMediaString(settings[breakpoint]); return acc; }, {}); var mediaQueries = exports.mediaQueries = Object.keys(matchMediaQueries).reduce(function (acc, breakpoint) { acc[breakpoint] = '@media screen and ' + matchMediaQueries[breakpoint]; return acc; }, {}); var breakpoints = []; var breakpointsString = ''; function setBreakpoints(arr) { breakpoints = arr; breakpointsString = breakpoints.toString(); return breakpoints; } function getBreakpoints(asString) { return asString ? breakpointsString : [].concat(breakpoints); } function clearBreakpoints() { breakpoints = []; return breakpoints; } function isDifferent(arr) { return arr.toString() !== breakpointsString; } function findBreakpoints() { if (!canUseDOM) return getBreakpoints(); var newBreakpoints = Object.keys(matchMediaQueries).filter(function (breakpoint) { return window.matchMedia(matchMediaQueries[breakpoint]).matches; }); return isDifferent(newBreakpoints) && setBreakpoints(newBreakpoints); } var initialized = false; function initBreakpoints() { if (!initialized) { initialized = true; findBreakpoints(); } } var optimizedResize = exports.optimizedResize = function () { var callbacks = new Map(); var running = false; function resize() { if (!running) { running = true; if (window.requestAnimationFrame) { window.requestAnimationFrame(runCallbacks); } else { setTimeout(runCallbacks, 66); } } } function runCallbacks() { var values = callbacks.values(); var more = true; while (more) { var _values$next = values.next(), done = _values$next.done, callback = _values$next.value; if (done) { more = false; } else { callback(); } } running = false; } function addCallback(callback, key) { if (typeof callback === 'function') { callbacks.set(key || callback, callback); } } function removeCallback(key) { callbacks.delete(key); } return { init: function init(callback) { window.addEventListener('resize', resize); addCallback(callback); }, add: function add(callback, key) { addCallback(callback, key); }, remove: function remove(key) { removeCallback(key); } }; }(); function findMatch() { for (var _len = arguments.length, arr = Array(_len), _key = 0; _key < _len; _key++) { arr[_key] = arguments[_key]; } var breakpoint = false; if (!arr || arr.length === 0) return breakpoint; if (breakpoints.length === 0) findBreakpoints(); for (var i = 0, len = arr.length; i < len; i++) { if (breakpoints.indexOf(arr[i]) !== -1) { breakpoint = arr[i]; break; } } return breakpoint; } var valunit = /(\d+)(\w+)/; function doubleUnit(str) { var _str$match = str.match(valunit), _str$match2 = _slicedToArray(_str$match, 3), val = _str$match2[1], unit = _str$match2[2]; return '' + val * 2 + unit; } var vertical = exports.vertical = { top: 'flex-start', center: 'center', bottom: 'flex-end' }; var horizontal = exports.horizontal = { left: 'flex-start', center: 'center', right: 'flex-end' }; var variables = exports.variables = { gutter: '11px' }; function assign(target) { if (target == null) { throw new TypeError('Object.assign target cannot be null or undefined'); } var to = Object(target); var hasOwnProperty = Object.prototype.hasOwnProperty; for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) { var nextSource = arguments[nextIndex]; if (nextSource == null) { continue; } var source = Object(nextSource); // We don't currently support accessors nor proxies. Therefore this // copy cannot throw. If we ever supported this then we must handle // exceptions and side-effects. We don't support symbols so they won't // be transferred. for (var key in source) { if (hasOwnProperty.call(source, key)) { to[key] = source[key]; } } } return to; }