@airplane/views
Version:
A React library for building Airplane views. Views components are optimized in style and functionality to produce internal apps that are easy to build and maintain.
29 lines (28 loc) • 933 B
JavaScript
import { useContext, useMemo } from "react";
import { useComponentId } from "./useId.js";
import { ComponentStateContext, DefaultComponentState } from "../context/context.js";
const useComponentState = (id) => {
const stateContext = useContext(ComponentStateContext);
const componentID = useComponentId(id);
const componentState = stateContext.components[componentID];
return useMemo(() => {
return componentState || {
...DefaultComponentState,
id: componentID
};
}, [componentState, componentID]);
};
const useComponentStates = (ids) => {
const stateContext = useContext(ComponentStateContext);
return useMemo(() => ids.reduce((obj, id) => Object.assign(obj, {
[id]: stateContext.components[id] || {
...DefaultComponentState,
id
}
}), {}), [ids, stateContext.components]);
};
export {
useComponentState,
useComponentStates
};
//# sourceMappingURL=useComponentState.js.map