"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const aria = require("./aria.js");
const types = require("../types.js");
const shared_esmBundler = require("../../../../@vue/shared/dist/shared.esm-bundler.js");
const objects = require("../objects.js");
const error = require("../error.js");
const index = require("../../../node_modules/@vueuse/shared/index.js");
const SCOPE = "utils/dom/style";
const classNameToArray = (cls = "") => cls.split(" ").filter((item) => !!item.trim());
const hasClass = (el, cls) => {
  if (!el || !cls) return false;
  if (cls.includes(" ")) throw new Error("className should not contain space.");
  return el.classList.contains(cls);
};
const addClass = (el, cls) => {
  if (!el || !cls.trim()) return;
  el.classList.add(...classNameToArray(cls));
};
const removeClass = (el, cls) => {
  if (!el || !cls.trim()) return;
  el.classList.remove(...classNameToArray(cls));
};
const getStyle = (element, styleName) => {
  var _a;
  if (!index.isClient || !element || !styleName || aria.isShadowRoot(element)) return "";
  let key = shared_esmBundler.camelize(styleName);
  if (key === "float") key = "cssFloat";
  try {
    const style = element.style[key];
    if (style) return style;
    const computed = (_a = document.defaultView) == null ? void 0 : _a.getComputedStyle(element, "");
    return computed ? computed[key] : "";
  } catch {
    return element.style[key];
  }
};
const setStyle = (element, styleName, value) => {
  if (!element || !styleName) return;
  if (shared_esmBundler.isObject(styleName)) objects.entriesOf(styleName).forEach(([prop, value2]) => setStyle(element, prop, value2));
  else {
    const key = shared_esmBundler.camelize(styleName);
    element.style[key] = value;
  }
};
function addUnit(value, defaultUnit = "px") {
  if (!value && value !== 0) return "";
  if (types.isNumber(value) || types.isStringNumber(value)) return `${value}${defaultUnit}`;
  else if (shared_esmBundler.isString(value)) return value;
  error.debugWarn(SCOPE, "binding value must be a string or number");
}
exports.addClass = addClass;
exports.addUnit = addUnit;
exports.classNameToArray = classNameToArray;
exports.getStyle = getStyle;
exports.hasClass = hasClass;
exports.removeClass = removeClass;
exports.setStyle = setStyle;
