{"version":3,"file":"cacheMapUtil.cjs","sources":["../../../../../../../packages/theme/cssinjs/hooks/useStyleRegister/cacheMapUtil.ts"],"sourcesContent":["import { canUseDom } from '@antdv/utils';\nimport { ATTR_MARK } from '../../StyleContext';\n\nexport const ATTR_CACHE_MAP = 'data-ant-cssinjs-cache-path';\n\n/**\n * This marks style from the css file.\n * Which means not exist in `<style />` tag.\n */\nexport const CSS_FILE_STYLE = '_FILE_STYLE__';\n\nexport function serialize(cachePathMap: Record<string, string>) {\n  return Object.keys(cachePathMap)\n    .map((path) => {\n      const hash = cachePathMap[path];\n      return `${path}:${hash}`;\n    })\n    .join(';');\n}\n\nlet cachePathMap: Record<string, string>;\nlet fromCSSFile = true;\n\n/**\n * @private Test usage only. Can save remove if no need.\n */\nexport function reset(mockCache?: Record<string, string>, fromFile = true) {\n  cachePathMap = mockCache!;\n  fromCSSFile = fromFile;\n}\n\nexport function prepare() {\n  if (!cachePathMap) {\n    cachePathMap = {};\n\n    if (canUseDom()) {\n      const div = document.createElement('div');\n      div.className = ATTR_CACHE_MAP;\n      div.style.position = 'fixed';\n      div.style.visibility = 'hidden';\n      div.style.top = '-9999px';\n      document.body.appendChild(div);\n\n      let content = getComputedStyle(div).content || '';\n      content = content.replace(/^\"/, '').replace(/\"$/, '');\n\n      // Fill data\n      content.split(';').forEach((item) => {\n        const [path, hash] = item.split(':');\n        cachePathMap[path] = hash;\n      });\n\n      // Remove inline record style\n      const inlineMapStyle = document.querySelector(`style[${ATTR_CACHE_MAP}]`);\n      if (inlineMapStyle) {\n        fromCSSFile = false;\n        inlineMapStyle.parentNode?.removeChild(inlineMapStyle);\n      }\n\n      document.body.removeChild(div);\n    }\n  }\n}\n\nexport function existPath(path: string) {\n  prepare();\n\n  return !!cachePathMap[path];\n}\n\nexport function getStyleAndHash(path: string): [style: string | null, hash: string] {\n  const hash = cachePathMap[path];\n  let styleStr: string | null = null;\n\n  if (hash && canUseDom()) {\n    if (fromCSSFile) {\n      styleStr = CSS_FILE_STYLE;\n    } else {\n      const style = document.querySelector(`style[${ATTR_MARK}=\"${cachePathMap[path]}\"]`);\n\n      if (style) {\n        styleStr = style.innerHTML;\n      } else {\n        // Clean up since not exist anymore\n        delete cachePathMap[path];\n      }\n    }\n  }\n\n  return [styleStr, hash];\n}\n"],"names":["cachePathMap","canUseDom","ATTR_MARK"],"mappings":"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"}