react-film
Version:
React component for showing carousel just like a film strip
62 lines (41 loc) • 6.09 kB
JavaScript
;
require("core-js/modules/es.array.iterator.js");
require("core-js/modules/es.object.to-string.js");
require("core-js/modules/es.string.iterator.js");
require("core-js/modules/es.weak-map.js");
require("core-js/modules/web.dom-collections.iterator.js");
require("core-js/modules/es.object.define-property.js");
require("core-js/modules/es.object.get-own-property-descriptor.js");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = computeScrollLeft;
var browser = _interopRequireWildcard(require("./browser"));
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function computeScrollLeft(dir, scrollable, itemContainer, index) {
var rtl = dir === 'rtl';
if (itemContainer && scrollable) {
var items = itemContainer.children; // This will enumerate <li> inside <FilmStrip>
var item = items[Math.max(0, Math.min(items.length - 1, index))];
if (item) {
if (scrollable.offsetWidth === scrollable.scrollWidth) {
return 0;
} // eslint-disable-next-line no-magic-numbers
var result = item.offsetLeft + (item.offsetWidth - scrollable.offsetWidth) / 2;
if (rtl) {
result = Math.min(result, 0);
result = Math.max(result, scrollable.offsetWidth - scrollable.scrollWidth);
} else {
result = Math.max(result, 0);
result = Math.min(result, scrollable.scrollWidth - scrollable.offsetWidth);
}
if (rtl && (browser.edgeUWP || browser.internetExplorer)) {
result = -result;
}
return result;
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wdXRlU2Nyb2xsTGVmdC5qcyJdLCJuYW1lcyI6WyJjb21wdXRlU2Nyb2xsTGVmdCIsImRpciIsInNjcm9sbGFibGUiLCJpdGVtQ29udGFpbmVyIiwiaW5kZXgiLCJydGwiLCJpdGVtcyIsImNoaWxkcmVuIiwiaXRlbSIsIk1hdGgiLCJtYXgiLCJtaW4iLCJsZW5ndGgiLCJvZmZzZXRXaWR0aCIsInNjcm9sbFdpZHRoIiwicmVzdWx0Iiwib2Zmc2V0TGVmdCIsImJyb3dzZXIiLCJlZGdlVVdQIiwiaW50ZXJuZXRFeHBsb3JlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7O0FBRWUsU0FBU0EsaUJBQVQsQ0FBMkJDLEdBQTNCLEVBQWdDQyxVQUFoQyxFQUE0Q0MsYUFBNUMsRUFBMkRDLEtBQTNELEVBQWtFO0FBQy9FLE1BQU1DLEdBQUcsR0FBR0osR0FBRyxLQUFLLEtBQXBCOztBQUVBLE1BQUlFLGFBQWEsSUFBSUQsVUFBckIsRUFBaUM7QUFDL0IsUUFBTUksS0FBSyxHQUFHSCxhQUFhLENBQUNJLFFBQTVCLENBRCtCLENBQ087O0FBQ3RDLFFBQU1DLElBQUksR0FBR0YsS0FBSyxDQUFDRyxJQUFJLENBQUNDLEdBQUwsQ0FBUyxDQUFULEVBQVlELElBQUksQ0FBQ0UsR0FBTCxDQUFTTCxLQUFLLENBQUNNLE1BQU4sR0FBZSxDQUF4QixFQUEyQlIsS0FBM0IsQ0FBWixDQUFELENBQWxCOztBQUVBLFFBQUlJLElBQUosRUFBVTtBQUNSLFVBQUlOLFVBQVUsQ0FBQ1csV0FBWCxLQUEyQlgsVUFBVSxDQUFDWSxXQUExQyxFQUF1RDtBQUNyRCxlQUFPLENBQVA7QUFDRCxPQUhPLENBS1I7OztBQUNBLFVBQUlDLE1BQU0sR0FBR1AsSUFBSSxDQUFDUSxVQUFMLEdBQWtCLENBQUNSLElBQUksQ0FBQ0ssV0FBTCxHQUFtQlgsVUFBVSxDQUFDVyxXQUEvQixJQUE4QyxDQUE3RTs7QUFFQSxVQUFJUixHQUFKLEVBQVM7QUFDUFUsUUFBQUEsTUFBTSxHQUFHTixJQUFJLENBQUNFLEdBQUwsQ0FBU0ksTUFBVCxFQUFpQixDQUFqQixDQUFUO0FBQ0FBLFFBQUFBLE1BQU0sR0FBR04sSUFBSSxDQUFDQyxHQUFMLENBQVNLLE1BQVQsRUFBaUJiLFVBQVUsQ0FBQ1csV0FBWCxHQUF5QlgsVUFBVSxDQUFDWSxXQUFyRCxDQUFUO0FBQ0QsT0FIRCxNQUdPO0FBQ0xDLFFBQUFBLE1BQU0sR0FBR04sSUFBSSxDQUFDQyxHQUFMLENBQVNLLE1BQVQsRUFBaUIsQ0FBakIsQ0FBVDtBQUNBQSxRQUFBQSxNQUFNLEdBQUdOLElBQUksQ0FBQ0UsR0FBTCxDQUFTSSxNQUFULEVBQWlCYixVQUFVLENBQUNZLFdBQVgsR0FBeUJaLFVBQVUsQ0FBQ1csV0FBckQsQ0FBVDtBQUNEOztBQUVELFVBQUlSLEdBQUcsS0FBS1ksT0FBTyxDQUFDQyxPQUFSLElBQW1CRCxPQUFPLENBQUNFLGdCQUFoQyxDQUFQLEVBQTBEO0FBQ3hESixRQUFBQSxNQUFNLEdBQUcsQ0FBQ0EsTUFBVjtBQUNEOztBQUVELGFBQU9BLE1BQVA7QUFDRDtBQUNGO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBicm93c2VyIGZyb20gJy4vYnJvd3Nlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXB1dGVTY3JvbGxMZWZ0KGRpciwgc2Nyb2xsYWJsZSwgaXRlbUNvbnRhaW5lciwgaW5kZXgpIHtcbiAgY29uc3QgcnRsID0gZGlyID09PSAncnRsJztcblxuICBpZiAoaXRlbUNvbnRhaW5lciAmJiBzY3JvbGxhYmxlKSB7XG4gICAgY29uc3QgaXRlbXMgPSBpdGVtQ29udGFpbmVyLmNoaWxkcmVuOyAvLyBUaGlzIHdpbGwgZW51bWVyYXRlIDxsaT4gaW5zaWRlIDxGaWxtU3RyaXA+XG4gICAgY29uc3QgaXRlbSA9IGl0ZW1zW01hdGgubWF4KDAsIE1hdGgubWluKGl0ZW1zLmxlbmd0aCAtIDEsIGluZGV4KSldO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGlmIChzY3JvbGxhYmxlLm9mZnNldFdpZHRoID09PSBzY3JvbGxhYmxlLnNjcm9sbFdpZHRoKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgbGV0IHJlc3VsdCA9IGl0ZW0ub2Zmc2V0TGVmdCArIChpdGVtLm9mZnNldFdpZHRoIC0gc2Nyb2xsYWJsZS5vZmZzZXRXaWR0aCkgLyAyO1xuXG4gICAgICBpZiAocnRsKSB7XG4gICAgICAgIHJlc3VsdCA9IE1hdGgubWluKHJlc3VsdCwgMCk7XG4gICAgICAgIHJlc3VsdCA9IE1hdGgubWF4KHJlc3VsdCwgc2Nyb2xsYWJsZS5vZmZzZXRXaWR0aCAtIHNjcm9sbGFibGUuc2Nyb2xsV2lkdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gTWF0aC5tYXgocmVzdWx0LCAwKTtcbiAgICAgICAgcmVzdWx0ID0gTWF0aC5taW4ocmVzdWx0LCBzY3JvbGxhYmxlLnNjcm9sbFdpZHRoIC0gc2Nyb2xsYWJsZS5vZmZzZXRXaWR0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChydGwgJiYgKGJyb3dzZXIuZWRnZVVXUCB8fCBicm93c2VyLmludGVybmV0RXhwbG9yZXIpKSB7XG4gICAgICAgIHJlc3VsdCA9IC1yZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG59XG4iXX0=