{"version":3,"file":"index.cjs","sources":["../../../../../../../packages/theme/cssinjs/hooks/useStyleRegister/index.tsx"],"sourcesContent":["import type { VueNode } from '@antdv/types';\nimport type * as CSS from 'csstype';\nimport type { Ref } from 'vue';\nimport type { Linter, Theme, Transformer } from '../..';\nimport type Cache from '../../Cache';\nimport type Keyframes from '../../Keyframes';\nimport type { HashPriority } from '../../StyleContext';\nimport { canUseDom, removeCSS, updateCSS } from '@antdv/utils';\nimport hash from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport { compile, serialize, stringify } from 'stylis';\nimport { computed } from 'vue';\n\nimport { contentQuotesLinter, hashedAnimationLinter } from '../../linters';\nimport { ATTR_CACHE_PATH, ATTR_MARK, ATTR_TOKEN, CSS_IN_JS_INSTANCE, useStyleInject } from '../../StyleContext';\nimport { supportLayer } from '../../util';\nimport useGlobalCache from '../useGlobalCache';\nimport { ATTR_CACHE_MAP, existPath, getStyleAndHash, serialize as serializeCacheMap } from './cacheMapUtil';\n\nconst isClientSide = canUseDom();\n\nconst SKIP_CHECK = '_skip_check_';\nconst MULTI_VALUE = '_multi_value_';\nexport type CSSProperties = Omit<CSS.PropertiesFallback<number | string>, 'animationName'> & {\n  animationName?: CSS.PropertiesFallback<number | string>['animationName'] | Keyframes\n};\n\nexport type CSSPropertiesWithMultiValues = {\n  [K in keyof CSSProperties]:\n  | CSSProperties[K]\n  | ReadonlyArray<Extract<CSSProperties[K], string>>\n  | {\n    [SKIP_CHECK]?: boolean;\n    [MULTI_VALUE]?: boolean;\n    value: CSSProperties[K] | Array<CSSProperties[K]>;\n  };\n};\n\nexport type CSSPseudos = { [K in CSS.Pseudos]?: CSSObject };\n\ntype ArrayCSSInterpolation = readonly CSSInterpolation[];\n\nexport type InterpolationPrimitive = null | undefined | boolean | number | string | CSSObject;\n\nexport type CSSInterpolation = InterpolationPrimitive | ArrayCSSInterpolation | Keyframes;\n\nexport type CSSOthersObject = Record<string, CSSInterpolation>;\n\nexport interface CSSObject extends CSSPropertiesWithMultiValues, CSSPseudos, CSSOthersObject {}\n\n// ============================================================================\n// ==                                 Parser                                 ==\n// ============================================================================\n// Preprocessor style content to browser support one\nexport function normalizeStyle(styleStr: string): string {\n  const serialized = serialize(compile(styleStr), stringify);\n  return serialized.replace(/\\{%%%:[^;];\\}/g, ';');\n}\n\nfunction isCompoundCSSProperty(value: CSSObject[string]) {\n  return typeof value === 'object' && value && (SKIP_CHECK in value || MULTI_VALUE in value);\n}\n\n// 注入 hash 值\nfunction injectSelectorHash(key: string, hashId: string, hashPriority?: HashPriority) {\n  if (!hashId)\n    return key;\n\n  const hashClassName = `.${hashId}`;\n  const hashSelector = hashPriority === 'low' ? `:where(${hashClassName})` : hashClassName;\n\n  // 注入 hashId\n  const keys = key.split(',').map((k) => {\n    const fullPath = k.trim().split(/\\s+/);\n\n    // 如果 Selector 第一个是 HTML Element，那我们就插到它的后面。反之，就插到最前面。\n    let firstPath = fullPath[0] || '';\n    const htmlElement = firstPath.match(/^\\w+/)?.[0] || '';\n\n    firstPath = `${htmlElement}${hashSelector}${firstPath.slice(htmlElement.length)}`;\n\n    return [firstPath, ...fullPath.slice(1)].join(' ');\n  });\n  return keys.join(',');\n}\n\nexport interface ParseConfig {\n  hashId?: string\n  hashPriority?: HashPriority\n  layer?: string\n  path?: string\n  transformers?: Transformer[]\n  linters?: Linter[]\n}\n\nexport interface ParseInfo {\n  root?: boolean\n  injectHash?: boolean\n  parentSelectors: string[]\n}\n\n// Global effect style will mount once and not removed\n// The effect will not save in SSR cache (e.g. keyframes)\nconst globalEffectStyleKeys = new Set();\n\n/**\n * @private Test only. Clear the global effect style keys.\n */\nexport const _cf\n  = process.env.NODE_ENV !== 'production' ? () => globalEffectStyleKeys.clear() : undefined;\n\n// Parse CSSObject to style content\nexport function parseStyle(interpolation: CSSInterpolation, config: ParseConfig = {}, { root, injectHash, parentSelectors }: ParseInfo = {\n  root: true,\n  parentSelectors: [],\n}): [\n  parsedStr: string,\n  // Style content which should be unique on all of the style (e.g. Keyframes).\n  // Firefox will flick with same animation name when exist multiple same keyframes.\n  effectStyle: Record<string, string>,\n  ] {\n  const { hashId, layer, path, hashPriority, transformers = [], linters = [] } = config;\n  let styleStr = '';\n  let effectStyle: Record<string, string> = {};\n\n  function parseKeyframes(keyframes: Keyframes) {\n    const animationName = keyframes.getName(hashId);\n    if (!effectStyle[animationName]) {\n      const [parsedStr] = parseStyle(keyframes.style, config, {\n        root: false,\n        parentSelectors,\n      });\n\n      effectStyle[animationName] = `@keyframes ${keyframes.getName(hashId)}${parsedStr}`;\n    }\n  }\n\n  function flattenList(list: ArrayCSSInterpolation, fullList: CSSObject[] = []) {\n    list.forEach((item) => {\n      if (Array.isArray(item))\n        flattenList(item, fullList);\n      else if (item)\n        fullList.push(item as CSSObject);\n    });\n\n    return fullList;\n  }\n\n  const flattenStyleList = flattenList(\n    Array.isArray(interpolation) ? interpolation : [interpolation],\n  );\n\n  flattenStyleList.forEach((originStyle) => {\n    // Only root level can use raw string\n    const style: CSSObject = typeof originStyle === 'string' && !root ? {} : originStyle;\n\n    if (typeof style === 'string') {\n      styleStr += `${style}\\n`;\n    } else if ((style as any)._keyframe) {\n      // Keyframe\n      parseKeyframes(style as unknown as Keyframes);\n    } else {\n      const mergedStyle = transformers.reduce((prev, trans) => trans?.visit?.(prev) || prev, style);\n\n      // Normal CSSObject\n      Object.keys(mergedStyle).forEach((key) => {\n        const value = mergedStyle[key];\n\n        if (\n          typeof value === 'object'\n          && value\n          && (key !== 'animationName' || !(value as Keyframes)._keyframe)\n          && !isCompoundCSSProperty(value)\n        ) {\n          let subInjectHash = false;\n\n          // 当成嵌套对象来处理\n          let mergedKey = key.trim();\n          // Whether treat child as root. In most case it is false.\n          let nextRoot = false;\n\n          // 拆分多个选择器\n          if ((root || injectHash) && hashId) {\n            if (mergedKey.startsWith('@')) {\n              // 略过媒体查询，交给子节点继续插入 hashId\n              subInjectHash = true;\n            } else {\n              // 注入 hashId\n              mergedKey = injectSelectorHash(key, hashId, hashPriority);\n            }\n          } else if (root && !hashId && (mergedKey === '&' || mergedKey === '')) {\n            // In case of `{ '&': { a: { color: 'red' } } }` or `{ '': { a: { color: 'red' } } }` without hashId,\n            // we will get `&{a:{color:red;}}` or `{a:{color:red;}}` string for stylis to compile.\n            // But it does not conform to stylis syntax,\n            // and finally we will get `{color:red;}` as css, which is wrong.\n            // So we need to remove key in root, and treat child `{ a: { color: 'red' } }` as root.\n            mergedKey = '';\n            nextRoot = true;\n          }\n\n          const [parsedStr, childEffectStyle] = parseStyle(value as any, config, {\n            root: nextRoot,\n            injectHash: subInjectHash,\n            parentSelectors: [...parentSelectors, mergedKey],\n          });\n\n          effectStyle = {\n            ...effectStyle,\n            ...childEffectStyle,\n          };\n\n          styleStr += `${mergedKey}${parsedStr}`;\n        } else {\n          function appendStyle(cssKey: string, cssValue: any) {\n            if (\n              process.env.NODE_ENV !== 'production'\n              && (typeof value !== 'object' || !(value as any)?.[SKIP_CHECK])\n            ) {\n              [contentQuotesLinter, hashedAnimationLinter, ...linters].forEach(linter =>\n                linter(cssKey, cssValue, { path, hashId, parentSelectors }),\n              );\n            }\n\n            // 如果是样式则直接插入\n            const styleName = cssKey.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`);\n\n            // Auto suffix with px\n            let formatValue = cssValue;\n            if (!unitless[cssKey] && typeof formatValue === 'number' && formatValue !== 0)\n              formatValue = `${formatValue}px`;\n\n            // handle animationName & Keyframe value\n            if (cssKey === 'animationName' && (cssValue as Keyframes)?._keyframe) {\n              parseKeyframes(cssValue as Keyframes);\n              formatValue = (cssValue as Keyframes).getName(hashId);\n            }\n\n            styleStr += `${styleName}:${formatValue};`;\n          }\n          const actualValue = (value as any)?.value ?? value;\n          if (\n            typeof value === 'object'\n            && (value as any)?.[MULTI_VALUE]\n            && Array.isArray(actualValue)\n          ) {\n            actualValue.forEach((item) => {\n              appendStyle(key, item);\n            });\n          } else {\n            appendStyle(key, actualValue);\n          }\n        }\n      });\n    }\n  });\n\n  if (!root) {\n    styleStr = `{${styleStr}}`;\n  } else if (layer && supportLayer()) {\n    const layerCells = layer.split(',');\n    const layerName = layerCells[layerCells.length - 1].trim();\n    styleStr = `@layer ${layerName} {${styleStr}}`;\n\n    // Order of layer if needed\n    if (layerCells.length > 1) {\n      // zombieJ: stylis do not support layer order, so we need to handle it manually.\n      styleStr = `@layer ${layer}{%%%:%}${styleStr}`;\n    }\n  }\n\n  return [styleStr, effectStyle];\n}\n\n// ============================================================================\n// ==                                Register                                ==\n// ============================================================================\nfunction uniqueHash(path: Array<string | number>, styleStr: string) {\n  return hash(`${path.join('%')}${styleStr}`);\n}\n\n// function Empty() {\n//   return null;\n// }\n\n/**\n * Register a style to the global style sheet.\n */\nexport default function useStyleRegister(\n  info: Ref<{\n    theme: Theme<any, any>\n    token: any\n    path: string[]\n    hashId?: string\n    layer?: string\n    nonce?: string | (() => string)\n    clientOnly?: boolean\n    /**\n     * Tell cssinjs the insert order of style.\n     * It's useful when you need to insert style\n     * before other style to overwrite for the same selector priority.\n     */\n    order?: number\n  }>,\n  styleFn: () => CSSInterpolation,\n) {\n  const styleContext = useStyleInject();\n\n  const tokenKey = computed(() => info.value.token._tokenKey as string);\n\n  const fullPath = computed(() => [tokenKey.value, ...info.value.path]);\n\n  // Check if need insert style\n  let isMergedClientSide = isClientSide;\n  if (process.env.NODE_ENV !== 'production' && styleContext.value.mock !== undefined)\n    isMergedClientSide = styleContext.value.mock === 'client';\n\n  // const [cacheStyle[0], cacheStyle[1], cacheStyle[2]]\n  useGlobalCache<\n    [\n      styleStr: string,\n      tokenKey: string,\n      styleId: string,\n      effectStyle: Record<string, string>,\n      clientOnly: boolean | undefined,\n      order: number,\n    ]\n  >(\n    'style',\n    fullPath,\n    // Create cache if needed\n    () => {\n      const { path, hashId, layer, nonce, clientOnly, order = 0 } = info.value;\n      const cachePath = fullPath.value.join('|');\n      // Get style from SSR inline style directly\n      if (existPath(cachePath)) {\n        const [inlineCacheStyleStr, styleHash] = getStyleAndHash(cachePath);\n        if (inlineCacheStyleStr)\n          return [inlineCacheStyleStr, tokenKey.value, styleHash, {}, clientOnly, order];\n      }\n      const styleObj = styleFn();\n      const { hashPriority, container, transformers, linters, cache } = styleContext.value;\n\n      const [parsedStyle, effectStyle] = parseStyle(styleObj, {\n        hashId,\n        hashPriority,\n        layer,\n        path: path.join('-'),\n        transformers,\n        linters,\n      });\n      const styleStr = normalizeStyle(parsedStyle);\n      const styleId = uniqueHash(fullPath.value, styleStr);\n\n      if (isMergedClientSide) {\n        const mergedCSSConfig: Parameters<typeof updateCSS>[2] = {\n          mark: ATTR_MARK,\n          prepend: 'queue',\n          attachTo: container,\n          priority: order,\n        };\n\n        const nonceStr = typeof nonce === 'function' ? nonce() : nonce;\n\n        if (nonceStr)\n          mergedCSSConfig.csp = { nonce: nonceStr };\n\n        const style = updateCSS(styleStr, styleId, mergedCSSConfig);\n\n        (style as any)[CSS_IN_JS_INSTANCE] = cache.instanceId;\n\n        // Used for `useCacheToken` to remove on batch when token removed\n        style.setAttribute(ATTR_TOKEN, tokenKey.value);\n\n        // Dev usage to find which cache path made this easily\n        if (process.env.NODE_ENV !== 'production')\n          style.setAttribute(ATTR_CACHE_PATH, fullPath.value.join('|'));\n\n        // Inject client side effect style\n        Object.keys(effectStyle).forEach((effectKey) => {\n          if (!globalEffectStyleKeys.has(effectKey)) {\n            globalEffectStyleKeys.add(effectKey);\n\n            // Inject\n            updateCSS(normalizeStyle(effectStyle[effectKey]), `_effect-${effectKey}`, {\n              mark: ATTR_MARK,\n              prepend: 'queue',\n              attachTo: container,\n            });\n          }\n        });\n      }\n\n      return [styleStr, tokenKey.value, styleId, effectStyle, clientOnly, order];\n    },\n    // Remove cache if no need\n    ([, , styleId], fromHMR) => {\n      if ((fromHMR || styleContext.value.autoClear) && isClientSide)\n        removeCSS(styleId, { mark: ATTR_MARK });\n    },\n  );\n\n  return (node: VueNode) => {\n    return node;\n    // let styleNode: VueNode;\n    // if (!styleContext.ssrInline || isMergedClientSide || !styleContext.defaultCache) {\n    //   styleNode = <Empty />;\n    // } else {\n    //   styleNode = (\n    //     <style\n    //       {...{\n    //         [ATTR_TOKEN]: cacheStyle.value[1],\n    //         [ATTR_MARK]: cacheStyle.value[2],\n    //       }}\n    //       innerHTML={cacheStyle.value[0]}\n    //     />\n    //   );\n    // }\n\n    // return (\n    //   <>\n    //     {styleNode}\n    //     {node}\n    //   </>\n    // );\n  };\n}\n\n// ============================================================================\n// ==                                  SSR                                   ==\n// ============================================================================\nexport function extractStyle(cache: Cache, plain = false) {\n  const matchPrefix = 'style%';\n\n  // prefix with `style` is used for `useStyleRegister` to cache style context\n  const styleKeys = Array.from(cache.cache.keys()).filter(key => key.startsWith(matchPrefix));\n\n  // Common effect styles like animation\n  const effectStyles: Record<string, boolean> = {};\n\n  // Mapping of cachePath to style hash\n  const cachePathMap: Record<string, string> = {};\n\n  let styleText = '';\n\n  function toStyleStr(\n    style: string,\n    tokenKey?: string,\n    styleId?: string,\n    customizeAttrs: Record<string, string> = {},\n  ) {\n    const attrs: Record<string, string | undefined> = {\n      ...customizeAttrs,\n      [ATTR_TOKEN]: tokenKey,\n      [ATTR_MARK]: styleId,\n    };\n\n    const attrStr = Object.keys(attrs)\n      .map((attr) => {\n        const val = attrs[attr];\n        return val ? `${attr}=\"${val}\"` : null;\n      })\n      .filter(v => v)\n      .join(' ');\n\n    return plain ? style : `<style ${attrStr}>${style}</style>`;\n  }\n\n  // ====================== Fill Style ======================\n  type OrderStyle = [order: number, style: string];\n\n  const orderStyles: OrderStyle[] = styleKeys\n    .map((key) => {\n      const cachePath = key.slice(matchPrefix.length).replace(/%/g, '|');\n\n      const [styleStr, tokenKey, styleId, effectStyle, clientOnly, order]: [ string, string, string, Record<string, string>, boolean, number ] = cache.cache.get(key)![1];\n\n      // Skip client only style\n      if (clientOnly)\n        return null! as OrderStyle;\n\n      // ====================== Style ======================\n      // Used for vc-util\n      const sharedAttrs = {\n        'data-vc-order': 'prependQueue',\n        'data-vc-priority': `${order}`,\n      };\n\n      let keyStyleText = toStyleStr(styleStr, tokenKey, styleId, sharedAttrs);\n\n      // Save cache path with hash mapping\n      cachePathMap[cachePath] = styleId;\n\n      // =============== Create effect style ===============\n      if (effectStyle) {\n        Object.keys(effectStyle).forEach((effectKey) => {\n          // Effect style can be reused\n          if (!effectStyles[effectKey]) {\n            effectStyles[effectKey] = true;\n            keyStyleText += toStyleStr(\n              normalizeStyle(effectStyle[effectKey]),\n              tokenKey,\n              `_effect-${effectKey}`,\n              sharedAttrs,\n            );\n          }\n        });\n      }\n\n      const ret: OrderStyle = [order, keyStyleText];\n\n      return ret;\n    })\n    .filter(o => o);\n\n  orderStyles\n    .sort((o1, o2) => o1[0] - o2[0])\n    .forEach(([, style]) => {\n      styleText += style;\n    });\n\n  // ==================== Fill Cache Path ====================\n  styleText += toStyleStr(\n    `.${ATTR_CACHE_MAP}{content:\"${serializeCacheMap(cachePathMap)}\";}`,\n    undefined,\n    undefined,\n    {\n      [ATTR_CACHE_MAP]: ATTR_CACHE_MAP,\n    },\n  );\n\n  return styleText;\n}\n"],"names":["isClientSide","canUseDom","SKIP_CHECK","MULTI_VALUE","normalizeStyle","styleStr","serialized","serialize","compile","stringify","replace","isCompoundCSSProperty","value","injectSelectorHash","key","hashId","hashPriority","hashClassName","hashSelector","keys","split","map","k","fullPath","trim","firstPath","htmlElement","match","slice","length","join","globalEffectStyleKeys","Set","_cf","process","env","NODE_ENV","clear","undefined","parseStyle","interpolation","config","root","injectHash","parentSelectors","layer","path","transformers","linters","effectStyle","parseKeyframes","keyframes","animationName","getName","parsedStr","style","flattenList","list","fullList","forEach","item","Array","isArray","push","flattenStyleList","originStyle","_keyframe","mergedStyle","reduce","prev","trans","visit","Object","subInjectHash","mergedKey","nextRoot","startsWith","childEffectStyle","appendStyle","cssKey","cssValue","contentQuotesLinter","hashedAnimationLinter","linter","styleName","toLowerCase","formatValue","unitless","actualValue","supportLayer","layerCells","layerName","uniqueHash","hash","useStyleRegister","info","styleFn","styleContext","useStyleInject","tokenKey","computed","token","_tokenKey","isMergedClientSide","mock","useGlobalCache","nonce","clientOnly","order","cachePath","existPath","inlineCacheStyleStr","styleHash","getStyleAndHash","styleObj","container","cache","parsedStyle","styleId","mergedCSSConfig","mark","ATTR_MARK","prepend","attachTo","priority","nonceStr","csp","updateCSS","CSS_IN_JS_INSTANCE","instanceId","setAttribute","ATTR_TOKEN","ATTR_CACHE_PATH","effectKey","has","add","fromHMR","autoClear","removeCSS","node","extractStyle","plain","matchPrefix","styleKeys","from","filter","effectStyles","cachePathMap","styleText","toStyleStr","customizeAttrs","attrs","attrStr","attr","val","v","orderStyles","get","sharedAttrs","keyStyleText","ret","o","sort","o1","o2","ATTR_CACHE_MAP","serializeCacheMap"],"mappings":"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"}