UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

72 lines (71 loc) 2.23 kB
/** * DevExtreme (esm/core/utils/resize_callbacks.js) * Version: 21.1.4 * Build date: Mon Jun 21 2021 * * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import { hasWindow, getWindow } from "./window"; import domAdapter from "../dom_adapter"; import Callbacks from "./callbacks"; import readyCallbacks from "./ready_callbacks"; import callOnce from "./call_once"; var resizeCallbacks = function() { var prevSize; var callbacks = Callbacks(); var originalCallbacksAdd = callbacks.add; var originalCallbacksRemove = callbacks.remove; if (!hasWindow()) { return callbacks } var formatSize = function() { var window = getWindow(); return { width: window.innerWidth, height: window.innerHeight } }; var handleResize = function() { var now = formatSize(); if (now.width === prevSize.width && now.height === prevSize.height) { return } var changedDimension; if (now.width === prevSize.width) { changedDimension = "height" } if (now.height === prevSize.height) { changedDimension = "width" } prevSize = now; callbacks.fire(changedDimension) }; var setPrevSize = callOnce((function() { prevSize = formatSize() })); var removeListener; callbacks.add = function() { var result = originalCallbacksAdd.apply(callbacks, arguments); setPrevSize(); readyCallbacks.add((function() { if (!removeListener && callbacks.has()) { removeListener = domAdapter.listen(getWindow(), "resize", handleResize) } })); return result }; callbacks.remove = function() { var result = originalCallbacksRemove.apply(callbacks, arguments); if (!callbacks.has() && removeListener) { removeListener(); removeListener = void 0 } return result }; return callbacks }(); export default resizeCallbacks;