UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

61 lines (57 loc) 1.73 kB
/** * xdesign v1.0.6 * (c) 2023 xdesign * @license MIT */ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties'; import { unref, getCurrentScope, onScopeDispose, watch } from 'vue'; var _excluded = ["window"]; var defaultWindow = typeof window !== "undefined" ? window : void 0; function unrefElement(elRef) { var _plain$$el; var plain = unref(elRef); return (_plain$$el = plain === null || plain === void 0 ? void 0 : plain.$el) !== null && _plain$$el !== void 0 ? _plain$$el : plain; } function tryOnScopeDispose(fn) { if (getCurrentScope()) { onScopeDispose(fn); return true; } return false; } function useMutationObserver(target, callback) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _options$window = options.window, window2 = _options$window === void 0 ? defaultWindow : _options$window, mutationOptions = _objectWithoutProperties(options, _excluded); var observer; var isSupported = window2 && "MutationObserver" in window2; var cleanup = function cleanup() { if (observer) { observer.disconnect(); observer = void 0; } }; var stopWatch = watch(function () { return unrefElement(target); }, function (el) { cleanup(); if (isSupported && window2 && el) { observer = new MutationObserver(callback); observer.observe(el, mutationOptions); } }, { immediate: true }); var stop = function stop() { cleanup(); stopWatch(); }; tryOnScopeDispose(stop); return { isSupported: isSupported, stop: stop }; } export { defaultWindow, tryOnScopeDispose, unrefElement, useMutationObserver }; //# sourceMappingURL=hooks.js.map