resize-event.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. 'use strict';
  2. exports.__esModule = true;
  3. exports.removeResizeListener = exports.addResizeListener = undefined;
  4. var _resizeObserverPolyfill = require('resize-observer-polyfill');
  5. var _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);
  6. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  7. var isServer = typeof window === 'undefined';
  8. /* istanbul ignore next */
  9. var resizeHandler = function resizeHandler(entries) {
  10. for (var _iterator = entries, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
  11. var _ref;
  12. if (_isArray) {
  13. if (_i >= _iterator.length) break;
  14. _ref = _iterator[_i++];
  15. } else {
  16. _i = _iterator.next();
  17. if (_i.done) break;
  18. _ref = _i.value;
  19. }
  20. var entry = _ref;
  21. var listeners = entry.target.__resizeListeners__ || [];
  22. if (listeners.length) {
  23. listeners.forEach(function (fn) {
  24. fn();
  25. });
  26. }
  27. }
  28. };
  29. /* istanbul ignore next */
  30. var addResizeListener = exports.addResizeListener = function addResizeListener(element, fn) {
  31. if (isServer) return;
  32. if (!element.__resizeListeners__) {
  33. element.__resizeListeners__ = [];
  34. element.__ro__ = new _resizeObserverPolyfill2.default(resizeHandler);
  35. element.__ro__.observe(element);
  36. }
  37. element.__resizeListeners__.push(fn);
  38. };
  39. /* istanbul ignore next */
  40. var removeResizeListener = exports.removeResizeListener = function removeResizeListener(element, fn) {
  41. if (!element || !element.__resizeListeners__) return;
  42. element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
  43. if (!element.__resizeListeners__.length) {
  44. element.__ro__.disconnect();
  45. }
  46. };