12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports._rs = exports._el = void 0;
- exports.observe = observe;
- exports.unobserve = unobserve;
- var _resizeObserverPolyfill = _interopRequireDefault(require("resize-observer-polyfill"));
- // =============================== Const ===============================
- var elementListeners = new Map();
- function onResize(entities) {
- entities.forEach(function (entity) {
- var _elementListeners$get;
- var target = entity.target;
- (_elementListeners$get = elementListeners.get(target)) === null || _elementListeners$get === void 0 || _elementListeners$get.forEach(function (listener) {
- return listener(target);
- });
- });
- }
- // Note: ResizeObserver polyfill not support option to measure border-box resize
- var resizeObserver = new _resizeObserverPolyfill.default(onResize);
- // Dev env only
- var _el = exports._el = process.env.NODE_ENV !== 'production' ? elementListeners : null; // eslint-disable-line
- var _rs = exports._rs = process.env.NODE_ENV !== 'production' ? onResize : null; // eslint-disable-line
- // ============================== Observe ==============================
- function observe(element, callback) {
- if (!elementListeners.has(element)) {
- elementListeners.set(element, new Set());
- resizeObserver.observe(element);
- }
- elementListeners.get(element).add(callback);
- }
- function unobserve(element, callback) {
- if (elementListeners.has(element)) {
- elementListeners.get(element).delete(callback);
- if (!elementListeners.get(element).size) {
- resizeObserver.unobserve(element);
- elementListeners.delete(element);
- }
- }
- }
|