index.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. "use strict";
  2. exports.__esModule = true;
  3. exports["default"] = void 0;
  4. var _computeScrollIntoView = _interopRequireDefault(require("compute-scroll-into-view"));
  5. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
  6. function isOptionsObject(options) {
  7. return options === Object(options) && Object.keys(options).length !== 0;
  8. }
  9. function defaultBehavior(actions, behavior) {
  10. if (behavior === void 0) {
  11. behavior = 'auto';
  12. }
  13. var canSmoothScroll = ('scrollBehavior' in document.body.style);
  14. actions.forEach(function (_ref) {
  15. var el = _ref.el,
  16. top = _ref.top,
  17. left = _ref.left;
  18. if (el.scroll && canSmoothScroll) {
  19. el.scroll({
  20. top: top,
  21. left: left,
  22. behavior: behavior
  23. });
  24. } else {
  25. el.scrollTop = top;
  26. el.scrollLeft = left;
  27. }
  28. });
  29. }
  30. function getOptions(options) {
  31. if (options === false) {
  32. return {
  33. block: 'end',
  34. inline: 'nearest'
  35. };
  36. }
  37. if (isOptionsObject(options)) {
  38. return options;
  39. }
  40. return {
  41. block: 'start',
  42. inline: 'nearest'
  43. };
  44. }
  45. function scrollIntoView(target, options) {
  46. var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target);
  47. if (isOptionsObject(options) && typeof options.behavior === 'function') {
  48. return options.behavior(isTargetAttached ? (0, _computeScrollIntoView["default"])(target, options) : []);
  49. }
  50. if (!isTargetAttached) {
  51. return;
  52. }
  53. var computeOptions = getOptions(options);
  54. return defaultBehavior((0, _computeScrollIntoView["default"])(target, computeOptions), computeOptions.behavior);
  55. }
  56. var _default = scrollIntoView;
  57. exports["default"] = _default;
  58. module.exports = exports.default;