Files
v10/dist/dev/utils/use-sync-props.js

23 lines
758 B
JavaScript

import { useRef } from "react";
import { isUndefined } from "@videojs/utils/predicate";
//#region src/utils/use-sync-props.ts
function useSyncProps(target, props, defaults) {
const rest = {};
const synced = /* @__PURE__ */ new Set();
const prevSyncedRef = useRef(null);
const sync = (key, value) => {
if (target[key] !== value) target[key] = value;
};
for (const key of prevSyncedRef.current ?? []) if (isUndefined(props[key])) sync(key, defaults[key]);
for (const key in props) if (key in defaults) {
if (isUndefined(props[key])) continue;
synced.add(key);
sync(key, props[key]);
} else rest[key] = props[key];
prevSyncedRef.current = synced;
return rest;
}
//#endregion
export { useSyncProps };
//# sourceMappingURL=use-sync-props.js.map