import { measureViewportBox } from "./dist-es-projection-utils-measure.js";
import { DOMVisualElement } from "./dist-es-render-dom-DOMVisualElement.js";
import { isCSSVariableName } from "./dist-es-render-dom-utils-is-css-variable.js";
import { getDefaultValueType } from "./dist-es-render-dom-value-types-defaults.js";
import { buildHTMLStyles } from "./dist-es-render-html-utils-build-styles.js";
import { transformProps } from "./dist-es-render-html-utils-keys-transform.js";
import { renderHTML } from "./dist-es-render-html-utils-render.js";
import { scrapeMotionValuesFromProps } from "./dist-es-render-html-utils-scrape-motion-values.js";
function getComputedStyle(element) {
  return window.getComputedStyle(element);
}
class HTMLVisualElement extends DOMVisualElement {
  constructor() {
    super(...arguments);
    this.type = "html";
    this.renderInstance = renderHTML;
  }
  readValueFromInstance(instance, key) {
    if (transformProps.has(key)) {
      const defaultType = getDefaultValueType(key);
      return defaultType ? defaultType.default || 0 : 0;
    } else {
      const computedStyle = getComputedStyle(instance);
      const value = (isCSSVariableName(key) ? computedStyle.getPropertyValue(key) : computedStyle[key]) || 0;
      return typeof value === "string" ? value.trim() : value;
    }
  }
  measureInstanceViewportBox(instance, { transformPagePoint }) {
    return measureViewportBox(instance, transformPagePoint);
  }
  build(renderState, latestValues, props) {
    buildHTMLStyles(renderState, latestValues, props.transformTemplate);
  }
  scrapeMotionValuesFromProps(props, prevProps, visualElement) {
    return scrapeMotionValuesFromProps(props, prevProps, visualElement);
  }
}
export {
  HTMLVisualElement,
  getComputedStyle
};
//# sourceMappingURL=dist-es-render-html-HTMLVisualElement.js.map
