{"version":3,"file":"util.cjs","sources":["../../../../../packages/theme/cssinjs/util.ts"],"sourcesContent":["import type { App, Plugin } from 'vue';\nimport { canUseDom, removeCSS, updateCSS } from '@antdv/utils';\nimport hash from '@emotion/hash';\nimport { Theme } from './theme';\n\n// Create a cache here to avoid always loop generate\nconst flattenTokenCache = new WeakMap<any, string>();\nexport function flattenToken(token: any) {\n  let str = flattenTokenCache.get(token) || '';\n\n  if (!str) {\n    Object.keys(token).forEach((key) => {\n      const value = token[key];\n      str += key;\n      if (value instanceof Theme)\n        str += value.id;\n      else if (value && typeof value === 'object')\n        str += flattenToken(value);\n      else\n        str += value;\n    });\n\n    // Put in cache\n    flattenTokenCache.set(token, str);\n  }\n  return str;\n}\n\n/**\n * Convert derivative token to key string\n */\nexport function token2key(token: any, salt: string): string {\n  return hash(`${salt}_${flattenToken(token)}`);\n}\n\nconst randomSelectorKey = `random-${Date.now()}-${Math.random()}`.replace(/\\./g, '');\n\n// Magic `content` for detect selector support\nconst checkContent = '_bAmBoO_';\n\nfunction supportSelector(\n  styleStr: string,\n  handleElement: (ele: HTMLElement) => void,\n  supportCheck?: (ele: HTMLElement) => boolean,\n): boolean {\n  if (canUseDom()) {\n    updateCSS(styleStr, randomSelectorKey);\n\n    const ele = document.createElement('div');\n    ele.style.position = 'fixed';\n    ele.style.left = '0';\n    ele.style.top = '0';\n    handleElement?.(ele);\n    document.body.appendChild(ele);\n\n    if (process.env.NODE_ENV !== 'production') {\n      ele.innerHTML = 'Test';\n      ele.style.zIndex = '9999999';\n    }\n\n    const support = supportCheck\n      ? supportCheck(ele)\n      : getComputedStyle(ele).content?.includes(checkContent);\n\n    ele.parentNode?.removeChild(ele);\n    removeCSS(randomSelectorKey);\n\n    return support;\n  }\n\n  return false;\n}\n\nlet canLayer: boolean | undefined;\nexport function supportLayer(): boolean {\n  if (canLayer === undefined) {\n    canLayer = supportSelector(\n      `@layer ${randomSelectorKey} { .${randomSelectorKey} { content: \"${checkContent}\"!important; } }`,\n      (ele) => {\n        ele.className = randomSelectorKey;\n      },\n    );\n  }\n\n  return canLayer!;\n}\n\nexport function withInstall<T>(comp: T) {\n  const c = comp as any;\n  c.install = function (app: App) {\n    app.component(c.displayName || c.name, comp);\n  };\n\n  return comp as T & Plugin;\n}\nlet canWhere: boolean | undefined;\nexport function supportWhere(): boolean {\n  if (canWhere === undefined) {\n    canWhere = supportSelector(\n      `:where(.${randomSelectorKey}) { content: \"${checkContent}\"!important; }`,\n      (ele) => {\n        ele.className = randomSelectorKey;\n      },\n    );\n  }\n\n  return canWhere!;\n}\n\nlet canLogic: boolean | undefined;\nexport function supportLogicProps(): boolean {\n  if (canLogic === undefined) {\n    canLogic = supportSelector(\n      `.${randomSelectorKey} { inset-block: 93px !important; }`,\n      (ele) => {\n        ele.className = randomSelectorKey;\n      },\n      ele => getComputedStyle(ele).bottom === '93px',\n    );\n  }\n\n  return canLogic!;\n}\n"],"names":["Theme","canUseDom","updateCSS","removeCSS"],"mappings":";;;;;;;;;AAMA,MAAM,iBAAA,uBAAwB,OAAqB,EAAA,CAAA;AAC5C,SAAS,aAAa,KAAY,EAAA;AACvC,EAAA,IAAI,GAAM,GAAA,iBAAA,CAAkB,GAAI,CAAA,KAAK,CAAK,IAAA,EAAA,CAAA;AAE1C,EAAA,IAAI,CAAC,GAAK,EAAA;AACR,IAAA,MAAA,CAAO,IAAK,CAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AAClC,MAAM,MAAA,KAAA,GAAQ,MAAM,GAAG,CAAA,CAAA;AACvB,MAAO,GAAA,IAAA,GAAA,CAAA;AACP,MAAA,IAAI,KAAiB,YAAAA,aAAA;AACnB,QAAA,GAAA,IAAO,KAAM,CAAA,EAAA,CAAA;AAAA,WACN,IAAA,KAAA,IAAS,OAAO,KAAU,KAAA,QAAA;AACjC,QAAA,GAAA,IAAO,aAAa,KAAK,CAAA,CAAA;AAAA;AAEzB,QAAO,GAAA,IAAA,KAAA,CAAA;AAAA,KACV,CAAA,CAAA;AAGD,IAAkB,iBAAA,CAAA,GAAA,CAAI,OAAO,GAAG,CAAA,CAAA;AAAA,GAClC;AACA,EAAO,OAAA,GAAA,CAAA;AACT,CAAA;AAKgB,SAAA,SAAA,CAAU,OAAY,IAAsB,EAAA;AAC1D,EAAA,OAAO,KAAK,CAAG,EAAA,IAAI,IAAI,YAAa,CAAA,KAAK,CAAC,CAAE,CAAA,CAAA,CAAA;AAC9C,CAAA;AAEA,MAAM,iBAAoB,GAAA,CAAA,OAAA,EAAU,IAAK,CAAA,GAAA,EAAK,CAAA,CAAA,EAAI,IAAK,CAAA,MAAA,EAAQ,CAAA,CAAA,CAAG,OAAQ,CAAA,KAAA,EAAO,EAAE,CAAA,CAAA;AAGnF,MAAM,YAAe,GAAA,UAAA,CAAA;AAErB,SAAS,eAAA,CACP,QACA,EAAA,aAAA,EACA,YACS,EAAA;AA5CX,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AA6CE,EAAA,IAAIC,qBAAa,EAAA;AACf,IAAAC,oBAAA,CAAU,UAAU,iBAAiB,CAAA,CAAA;AAErC,IAAM,MAAA,GAAA,GAAM,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AACxC,IAAA,GAAA,CAAI,MAAM,QAAW,GAAA,OAAA,CAAA;AACrB,IAAA,GAAA,CAAI,MAAM,IAAO,GAAA,GAAA,CAAA;AACjB,IAAA,GAAA,CAAI,MAAM,GAAM,GAAA,GAAA,CAAA;AAChB,IAAgB,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA,GAAA,CAAA,CAAA;AAChB,IAAS,QAAA,CAAA,IAAA,CAAK,YAAY,GAAG,CAAA,CAAA;AAE7B,IAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,MAAA,GAAA,CAAI,SAAY,GAAA,MAAA,CAAA;AAChB,MAAA,GAAA,CAAI,MAAM,MAAS,GAAA,SAAA,CAAA;AAAA,KACrB;AAEA,IAAM,MAAA,OAAA,GAAU,YACZ,GAAA,YAAA,CAAa,GAAG,CAAA,GAAA,CAChB,sBAAiB,GAAG,CAAA,CAAE,OAAtB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA+B,QAAS,CAAA,YAAA,CAAA,CAAA;AAE5C,IAAI,CAAA,EAAA,GAAA,GAAA,CAAA,UAAA,KAAJ,mBAAgB,WAAY,CAAA,GAAA,CAAA,CAAA;AAC5B,IAAAC,oBAAA,CAAU,iBAAiB,CAAA,CAAA;AAE3B,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AAEA,IAAI,QAAA,CAAA;AACG,SAAS,YAAwB,GAAA;AACtC,EAAA,IAAI,aAAa,KAAW,CAAA,EAAA;AAC1B,IAAW,QAAA,GAAA,eAAA;AAAA,MACT,CAAU,OAAA,EAAA,iBAAiB,CAAO,IAAA,EAAA,iBAAiB,gBAAgB,YAAY,CAAA,gBAAA,CAAA;AAAA,MAC/E,CAAC,GAAQ,KAAA;AACP,QAAA,GAAA,CAAI,SAAY,GAAA,iBAAA,CAAA;AAAA,OAClB;AAAA,KACF,CAAA;AAAA,GACF;AAEA,EAAO,OAAA,QAAA,CAAA;AACT,CAAA;AAEO,SAAS,YAAe,IAAS,EAAA;AACtC,EAAA,MAAM,CAAI,GAAA,IAAA,CAAA;AACV,EAAE,CAAA,CAAA,OAAA,GAAU,SAAU,GAAU,EAAA;AAC9B,IAAA,GAAA,CAAI,SAAU,CAAA,CAAA,CAAE,WAAe,IAAA,CAAA,CAAE,MAAM,IAAI,CAAA,CAAA;AAAA,GAC7C,CAAA;AAEA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AACA,IAAI,QAAA,CAAA;AACG,SAAS,YAAwB,GAAA;AACtC,EAAA,IAAI,aAAa,KAAW,CAAA,EAAA;AAC1B,IAAW,QAAA,GAAA,eAAA;AAAA,MACT,CAAA,QAAA,EAAW,iBAAiB,CAAA,cAAA,EAAiB,YAAY,CAAA,cAAA,CAAA;AAAA,MACzD,CAAC,GAAQ,KAAA;AACP,QAAA,GAAA,CAAI,SAAY,GAAA,iBAAA,CAAA;AAAA,OAClB;AAAA,KACF,CAAA;AAAA,GACF;AAEA,EAAO,OAAA,QAAA,CAAA;AACT,CAAA;AAEA,IAAI,QAAA,CAAA;AACG,SAAS,iBAA6B,GAAA;AAC3C,EAAA,IAAI,aAAa,KAAW,CAAA,EAAA;AAC1B,IAAW,QAAA,GAAA,eAAA;AAAA,MACT,IAAI,iBAAiB,CAAA,kCAAA,CAAA;AAAA,MACrB,CAAC,GAAQ,KAAA;AACP,QAAA,GAAA,CAAI,SAAY,GAAA,iBAAA,CAAA;AAAA,OAClB;AAAA,MACA,CAAO,GAAA,KAAA,gBAAA,CAAiB,GAAG,CAAA,CAAE,MAAW,KAAA,MAAA;AAAA,KAC1C,CAAA;AAAA,GACF;AAEA,EAAO,OAAA,QAAA,CAAA;AACT;;;;;;;;;"}