25 lines
906 B
JavaScript
25 lines
906 B
JavaScript
import { useMemo } from 'react';
|
|
import { copyRawValuesOnly } from '../html/use-props.mjs';
|
|
import { buildSVGAttrs } from './utils/build-attrs.mjs';
|
|
import { createSvgRenderState } from './utils/create-render-state.mjs';
|
|
import { isSVGTag } from './utils/is-svg-tag.mjs';
|
|
|
|
function useSVGProps(props, visualState, _isStatic, Component) {
|
|
const visualProps = useMemo(() => {
|
|
const state = createSvgRenderState();
|
|
buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, isSVGTag(Component), props.transformTemplate);
|
|
return {
|
|
...state.attrs,
|
|
style: { ...state.style },
|
|
};
|
|
}, [visualState]);
|
|
if (props.style) {
|
|
const rawStyles = {};
|
|
copyRawValuesOnly(rawStyles, props.style, props);
|
|
visualProps.style = { ...rawStyles, ...visualProps.style };
|
|
}
|
|
return visualProps;
|
|
}
|
|
|
|
export { useSVGProps };
|