Files
klz-cables.com/.pnpm-store/v10/files/8e/c228672733ad1c7ed4a15ee3bc75cfc3f4c35a4c2693c62330fe63dc7dd25bb73f7cccba4de98ed5cab4f0e596865f7c2f36883ab46f09ba892bb27f9c6b4b
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

74 lines
2.6 KiB
Plaintext

import { frame } from '../../frameloop/frame.mjs';
import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';
import { transformProps } from '../html/utils/keys-transform.mjs';
import { buildSVGAttrs } from './utils/build-attrs.mjs';
import { createSvgRenderState } from './utils/create-render-state.mjs';
import { isSVGTag } from './utils/is-svg-tag.mjs';
import { renderSVG } from './utils/render.mjs';
import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';
function updateSVGDimensions(instance, renderState) {
try {
renderState.dimensions =
typeof instance.getBBox === "function"
? instance.getBBox()
: instance.getBoundingClientRect();
}
catch (e) {
// Most likely trying to measure an unrendered element under Firefox
renderState.dimensions = {
x: 0,
y: 0,
width: 0,
height: 0,
};
}
}
const layoutProps = ["x", "y", "width", "height", "cx", "cy", "r"];
const svgMotionConfig = {
useVisualState: makeUseVisualState({
scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,
createRenderState: createSvgRenderState,
onUpdate: ({ props, prevProps, current, renderState, latestValues, }) => {
if (!current)
return;
let hasTransform = !!props.drag;
if (!hasTransform) {
for (const key in latestValues) {
if (transformProps.has(key)) {
hasTransform = true;
break;
}
}
}
if (!hasTransform)
return;
let needsMeasure = !prevProps;
if (prevProps) {
/**
* Check the layout props for changes, if any are found we need to
* measure the element again.
*/
for (let i = 0; i < layoutProps.length; i++) {
const key = layoutProps[i];
if (props[key] !==
prevProps[key]) {
needsMeasure = true;
}
}
}
if (!needsMeasure)
return;
frame.read(() => {
updateSVGDimensions(current, renderState);
frame.render(() => {
buildSVGAttrs(renderState, latestValues, isSVGTag(current.tagName), props.transformTemplate);
renderSVG(current, renderState);
});
});
},
}),
};
export { svgMotionConfig };