f1rq.ovh/.svelte-kit/output/server/chunks/use-motion-template.js
2025-03-25 21:30:34 +01:00

56 lines
1.4 KiB
JavaScript

import sync from "framesync";
import { d as motionValue } from "./navigations.js";
const useCombineMotionValues = (values, combineValues) => {
let subscriptions = [];
let vals = values;
const unsubscribe = () => {
subscriptions.forEach((unsubscribe2) => unsubscribe2());
};
const subscribe = () => {
subscriptions = vals.map((val) => val.onChange(handler));
updateValue();
};
const value = motionValue(combineValues(), () => {
unsubscribe();
subscribe();
return unsubscribe;
});
let updateValue = () => {
value.set(combineValues());
};
const handler = () => {
sync.update(updateValue, false, true);
};
value.reset = (_values, _combineValues) => {
vals = _values;
unsubscribe();
updateValue = () => {
value.set(_combineValues());
};
subscribe();
};
return value;
};
const useMotionTemplate = (fragments, ...values) => {
let numFragments = fragments.length;
const buildValue = () => {
let output = ``;
for (let i = 0; i < numFragments; i++) {
output += fragments[i];
const value2 = values[i];
if (value2) output += values[i].get();
}
return output;
};
const value = useCombineMotionValues(values, buildValue);
value.resetInner = value.reset;
value.reset = (f, ...vs) => {
numFragments = f.length;
value.resetInner(vs, buildValue);
};
return value;
};
export {
useMotionTemplate as u
};