import { createBox } from "../../projection/geometry/models.js";
import { DOMVisualElement } from "../dom/DOMVisualElement.js";
import { camelToDash } from "../dom/utils/camel-to-dash.js";
import { buildSVGAttrs } from "./utils/build-attrs.js";
import { camelCaseAttributes } from "./utils/camel-case-attrs.js";
import { isSVGTag } from "./utils/is-svg-tag.js";
import { renderSVG } from "./utils/render.js";
import { scrapeMotionValuesFromProps } from "./utils/scrape-motion-values.js";
import { transformProps } from "../../../../../motion-dom/dist/es/render/utils/keys-transform.js";
import { getDefaultValueType } from "../../../../../motion-dom/dist/es/value/types/maps/defaults.js";
class SVGVisualElement extends DOMVisualElement {
  constructor() {
    super(...arguments);
    this.type = "svg";
    this.isSVGTag = false;
    this.measureInstanceViewportBox = createBox;
  }
  getBaseTargetFromProps(props, key) {
    return props[key];
  }
  readValueFromInstance(instance, key) {
    if (transformProps.has(key)) {
      const defaultType = getDefaultValueType(key);
      return defaultType ? defaultType.default || 0 : 0;
    }
    key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;
    return instance.getAttribute(key);
  }
  scrapeMotionValuesFromProps(props, prevProps, visualElement) {
    return scrapeMotionValuesFromProps(props, prevProps, visualElement);
  }
  build(renderState, latestValues, props) {
    buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate, props.style);
  }
  renderInstance(instance, renderState, styleProp, projection) {
    renderSVG(instance, renderState, styleProp, projection);
  }
  mount(instance) {
    this.isSVGTag = isSVGTag(instance.tagName);
    super.mount(instance);
  }
}
export {
  SVGVisualElement
};
//# sourceMappingURL=SVGVisualElement.js.map
