first commit
This commit is contained in:
63
node_modules/motion-dom/dist/es/resize/handle-element.mjs
generated
vendored
Normal file
63
node_modules/motion-dom/dist/es/resize/handle-element.mjs
generated
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
import { isSVGElement } from '../utils/is-svg-element.mjs';
|
||||
import { resolveElements } from '../utils/resolve-elements.mjs';
|
||||
|
||||
const resizeHandlers = new WeakMap();
|
||||
let observer;
|
||||
const getSize = (borderBoxAxis, svgAxis, htmlAxis) => (target, borderBoxSize) => {
|
||||
if (borderBoxSize && borderBoxSize[0]) {
|
||||
return borderBoxSize[0][(borderBoxAxis + "Size")];
|
||||
}
|
||||
else if (isSVGElement(target) && "getBBox" in target) {
|
||||
return target.getBBox()[svgAxis];
|
||||
}
|
||||
else {
|
||||
return target[htmlAxis];
|
||||
}
|
||||
};
|
||||
const getWidth = /*@__PURE__*/ getSize("inline", "width", "offsetWidth");
|
||||
const getHeight = /*@__PURE__*/ getSize("block", "height", "offsetHeight");
|
||||
function notifyTarget({ target, borderBoxSize }) {
|
||||
resizeHandlers.get(target)?.forEach((handler) => {
|
||||
handler(target, {
|
||||
get width() {
|
||||
return getWidth(target, borderBoxSize);
|
||||
},
|
||||
get height() {
|
||||
return getHeight(target, borderBoxSize);
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
function notifyAll(entries) {
|
||||
entries.forEach(notifyTarget);
|
||||
}
|
||||
function createResizeObserver() {
|
||||
if (typeof ResizeObserver === "undefined")
|
||||
return;
|
||||
observer = new ResizeObserver(notifyAll);
|
||||
}
|
||||
function resizeElement(target, handler) {
|
||||
if (!observer)
|
||||
createResizeObserver();
|
||||
const elements = resolveElements(target);
|
||||
elements.forEach((element) => {
|
||||
let elementHandlers = resizeHandlers.get(element);
|
||||
if (!elementHandlers) {
|
||||
elementHandlers = new Set();
|
||||
resizeHandlers.set(element, elementHandlers);
|
||||
}
|
||||
elementHandlers.add(handler);
|
||||
observer?.observe(element);
|
||||
});
|
||||
return () => {
|
||||
elements.forEach((element) => {
|
||||
const elementHandlers = resizeHandlers.get(element);
|
||||
elementHandlers?.delete(handler);
|
||||
if (!elementHandlers?.size) {
|
||||
observer?.unobserve(element);
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
export { resizeElement };
|
||||
31
node_modules/motion-dom/dist/es/resize/handle-window.mjs
generated
vendored
Normal file
31
node_modules/motion-dom/dist/es/resize/handle-window.mjs
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
const windowCallbacks = new Set();
|
||||
let windowResizeHandler;
|
||||
function createWindowResizeHandler() {
|
||||
windowResizeHandler = () => {
|
||||
const info = {
|
||||
get width() {
|
||||
return window.innerWidth;
|
||||
},
|
||||
get height() {
|
||||
return window.innerHeight;
|
||||
},
|
||||
};
|
||||
windowCallbacks.forEach((callback) => callback(info));
|
||||
};
|
||||
window.addEventListener("resize", windowResizeHandler);
|
||||
}
|
||||
function resizeWindow(callback) {
|
||||
windowCallbacks.add(callback);
|
||||
if (!windowResizeHandler)
|
||||
createWindowResizeHandler();
|
||||
return () => {
|
||||
windowCallbacks.delete(callback);
|
||||
if (!windowCallbacks.size &&
|
||||
typeof windowResizeHandler === "function") {
|
||||
window.removeEventListener("resize", windowResizeHandler);
|
||||
windowResizeHandler = undefined;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export { resizeWindow };
|
||||
8
node_modules/motion-dom/dist/es/resize/index.mjs
generated
vendored
Normal file
8
node_modules/motion-dom/dist/es/resize/index.mjs
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
import { resizeElement } from './handle-element.mjs';
|
||||
import { resizeWindow } from './handle-window.mjs';
|
||||
|
||||
function resize(a, b) {
|
||||
return typeof a === "function" ? resizeWindow(a) : resizeElement(a, b);
|
||||
}
|
||||
|
||||
export { resize };
|
||||
Reference in New Issue
Block a user