{"version":3,"file":"css.cjs","sources":["../../../../../packages/utils/dom/css.ts"],"sourcesContent":["// const PIXEL_PATTERN = /margin|padding|width|height|max|min|offset/\n\n// const removePixel = {\n//   left: true,\n//   top: true,\n// }\n// const floatMap = {\n//   cssFloat: 1,\n//   styleFloat: 1,\n//   float: 1,\n// }\n\n// function getComputedStyle(node: HTMLElement) {\n//   return node.nodeType === 1 ? node.ownerDocument.defaultView.getComputedStyle(node, null) : {}\n// }\n\n// function getStyleValue(node: HTMLElement, type: string, value: string) {\n//   type = type.toLowerCase()\n//   if (value === 'auto') {\n//     if (type === 'height')\n//       return node.offsetHeight\n\n//     if (type === 'width')\n//       return node.offsetWidth\n//   }\n//   if (!(type in removePixel))\n//     removePixel[type] = PIXEL_PATTERN.test(type)\n\n//   return removePixel[type] ? Number.parseFloat(value) || 0 : value\n// }\n\n// export function get(node: HTMLElement, name: any) {\n//   const length = arguments.length\n//   const style = getComputedStyle(node)\n\n//   name = floatMap[name] ? ('cssFloat' in node.style ? 'cssFloat' : 'styleFloat') : name\n\n//   return length === 1 ? style : getStyleValue(node, name, style[name] || node.style[name])\n// }\n\n// export function set(node: HTMLElement, name: any, value: string | number) {\n//   const length = arguments.length\n//   name = floatMap[name] ? ('cssFloat' in node.style ? 'cssFloat' : 'styleFloat') : name\n//   if (length === 3) {\n//     if (typeof value === 'number' && PIXEL_PATTERN.test(name))\n//       value = `${value}px`\n\n//     node.style[name as string] = value // Number\n//     return value\n//   }\n//   for (const x in name) {\n//     if (name.hasOwnProperty(x))\n//       set(node, x, name[x])\n//   }\n//   return getComputedStyle(node)\n// }\n\nexport function getOuterWidth(el: HTMLElement) {\n  if (el === document.body)\n    return document.documentElement.clientWidth;\n\n  return el.offsetWidth;\n}\n\nexport function getOuterHeight(el: HTMLElement) {\n  if (el === document.body)\n    return window.innerHeight || document.documentElement.clientHeight;\n\n  return el.offsetHeight;\n}\n\nexport function getDocSize() {\n  const width = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);\n  const height = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n\n  return {\n    width,\n    height,\n  };\n}\n\nexport function getClientSize() {\n  const width = document.documentElement.clientWidth;\n  const height = window.innerHeight || document.documentElement.clientHeight;\n  return {\n    width,\n    height,\n  };\n}\n\nexport function getOffset(node: any) {\n  const box = node.getBoundingClientRect();\n  const docElem = document.documentElement;\n\n  // < ie8 不支持 win.pageXOffset, 则使用 docElem.scrollLeft\n  return {\n    left:\n      box.left\n      + (window.scrollX || docElem.scrollLeft)\n      - (docElem.clientLeft || document.body.clientLeft || 0),\n    top:\n      box.top\n      + (window.scrollX || docElem.scrollTop)\n      - (docElem.clientTop || document.body.clientTop || 0),\n  };\n}\nexport function styleToString(style: CSSStyleDeclaration) {\n  // There are some different behavior between Firefox & Chrome.\n  // We have to handle this ourself.\n  const styleNames = Array.prototype.slice.apply(style);\n  return styleNames.map(name => `${name}: ${style.getPropertyValue(name)};`).join('');\n}\n\nexport function styleObjectToString(style: Record<string, string>) {\n  return Object.keys(style).reduce((acc, name) => {\n    const styleValue = style[name];\n    if (typeof styleValue === 'undefined' || styleValue === null) {\n      return acc;\n    }\n\n    acc += `${name}: ${style[name]};`;\n    return acc;\n  }, '');\n}\n"],"names":[],"mappings":";;AAyDO,SAAS,cAAc,EAAiB,EAAA;AAC7C,EAAA,IAAI,OAAO,QAAS,CAAA,IAAA;AAClB,IAAA,OAAO,SAAS,eAAgB,CAAA,WAAA,CAAA;AAElC,EAAA,OAAO,EAAG,CAAA,WAAA,CAAA;AACZ,CAAA;AAEO,SAAS,eAAe,EAAiB,EAAA;AAC9C,EAAA,IAAI,OAAO,QAAS,CAAA,IAAA;AAClB,IAAO,OAAA,MAAA,CAAO,WAAe,IAAA,QAAA,CAAS,eAAgB,CAAA,YAAA,CAAA;AAExD,EAAA,OAAO,EAAG,CAAA,YAAA,CAAA;AACZ,CAAA;AAEO,SAAS,UAAa,GAAA;AAC3B,EAAM,MAAA,KAAA,GAAQ,KAAK,GAAI,CAAA,QAAA,CAAS,gBAAgB,WAAa,EAAA,QAAA,CAAS,KAAK,WAAW,CAAA,CAAA;AACtF,EAAM,MAAA,MAAA,GAAS,KAAK,GAAI,CAAA,QAAA,CAAS,gBAAgB,YAAc,EAAA,QAAA,CAAS,KAAK,YAAY,CAAA,CAAA;AAEzF,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,MAAA;AAAA,GACF,CAAA;AACF,CAAA;AAEO,SAAS,aAAgB,GAAA;AAC9B,EAAM,MAAA,KAAA,GAAQ,SAAS,eAAgB,CAAA,WAAA,CAAA;AACvC,EAAA,MAAM,MAAS,GAAA,MAAA,CAAO,WAAe,IAAA,QAAA,CAAS,eAAgB,CAAA,YAAA,CAAA;AAC9D,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,MAAA;AAAA,GACF,CAAA;AACF,CAAA;AAEO,SAAS,UAAU,IAAW,EAAA;AACnC,EAAM,MAAA,GAAA,GAAM,KAAK,qBAAsB,EAAA,CAAA;AACvC,EAAA,MAAM,UAAU,QAAS,CAAA,eAAA,CAAA;AAGzB,EAAO,OAAA;AAAA,IACL,IAAA,EACE,GAAI,CAAA,IAAA,IACD,MAAO,CAAA,OAAA,IAAW,OAAQ,CAAA,UAAA,CAAA,IAC1B,OAAQ,CAAA,UAAA,IAAc,QAAS,CAAA,IAAA,CAAK,UAAc,IAAA,CAAA,CAAA;AAAA,IACvD,GAAA,EACE,GAAI,CAAA,GAAA,IACD,MAAO,CAAA,OAAA,IAAW,OAAQ,CAAA,SAAA,CAAA,IAC1B,OAAQ,CAAA,SAAA,IAAa,QAAS,CAAA,IAAA,CAAK,SAAa,IAAA,CAAA,CAAA;AAAA,GACvD,CAAA;AACF,CAAA;AACO,SAAS,cAAc,KAA4B,EAAA;AAGxD,EAAA,MAAM,UAAa,GAAA,KAAA,CAAM,SAAU,CAAA,KAAA,CAAM,MAAM,KAAK,CAAA,CAAA;AACpD,EAAA,OAAO,UAAW,CAAA,GAAA,CAAI,CAAQ,IAAA,KAAA,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,KAAM,CAAA,gBAAA,CAAiB,IAAI,CAAC,CAAG,CAAA,CAAA,CAAA,CAAE,KAAK,EAAE,CAAA,CAAA;AACpF,CAAA;AAEO,SAAS,oBAAoB,KAA+B,EAAA;AACjE,EAAA,OAAO,OAAO,IAAK,CAAA,KAAK,EAAE,MAAO,CAAA,CAAC,KAAK,IAAS,KAAA;AAC9C,IAAM,MAAA,UAAA,GAAa,MAAM,IAAI,CAAA,CAAA;AAC7B,IAAA,IAAI,OAAO,UAAA,KAAe,WAAe,IAAA,UAAA,KAAe,IAAM,EAAA;AAC5D,MAAO,OAAA,GAAA,CAAA;AAAA,KACT;AAEA,IAAA,GAAA,IAAO,CAAG,EAAA,IAAI,CAAK,EAAA,EAAA,KAAA,CAAM,IAAI,CAAC,CAAA,CAAA,CAAA,CAAA;AAC9B,IAAO,OAAA,GAAA,CAAA;AAAA,KACN,EAAE,CAAA,CAAA;AACP;;;;;;;;;;"}