{"version":3,"file":"index.umd.cjs","sources":["../node_modules/.pnpm/@iconify+vue@4.1.1_vue@3.2.37/node_modules/@iconify/vue/dist/iconify.mjs","../src/svg-icon/svg-icon.vue","../src/svg-icon/index.ts"],"sourcesContent":["import { h, defineComponent } from 'vue';\n\nconst matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\nconst stringToIcon = (value, validate, allowSimpleName, provider = \"\") => {\n  const colonSeparated = value.split(\":\");\n  if (value.slice(0, 1) === \"@\") {\n    if (colonSeparated.length < 2 || colonSeparated.length > 3) {\n      return null;\n    }\n    provider = colonSeparated.shift().slice(1);\n  }\n  if (colonSeparated.length > 3 || !colonSeparated.length) {\n    return null;\n  }\n  if (colonSeparated.length > 1) {\n    const name2 = colonSeparated.pop();\n    const prefix = colonSeparated.pop();\n    const result = {\n      // Allow provider without '@': \"provider:prefix:name\"\n      provider: colonSeparated.length > 0 ? colonSeparated[0] : provider,\n      prefix,\n      name: name2\n    };\n    return validate && !validateIconName(result) ? null : result;\n  }\n  const name = colonSeparated[0];\n  const dashSeparated = name.split(\"-\");\n  if (dashSeparated.length > 1) {\n    const result = {\n      provider,\n      prefix: dashSeparated.shift(),\n      name: dashSeparated.join(\"-\")\n    };\n    return validate && !validateIconName(result) ? null : result;\n  }\n  if (allowSimpleName && provider === \"\") {\n    const result = {\n      provider,\n      prefix: \"\",\n      name\n    };\n    return validate && !validateIconName(result, allowSimpleName) ? null : result;\n  }\n  return null;\n};\nconst validateIconName = (icon, allowSimpleName) => {\n  if (!icon) {\n    return false;\n  }\n  return !!((icon.provider === \"\" || icon.provider.match(matchIconName)) && (allowSimpleName && icon.prefix === \"\" || icon.prefix.match(matchIconName)) && icon.name.match(matchIconName));\n};\n\nconst defaultIconDimensions = Object.freeze(\n  {\n    left: 0,\n    top: 0,\n    width: 16,\n    height: 16\n  }\n);\nconst defaultIconTransformations = Object.freeze({\n  rotate: 0,\n  vFlip: false,\n  hFlip: false\n});\nconst defaultIconProps = Object.freeze({\n  ...defaultIconDimensions,\n  ...defaultIconTransformations\n});\nconst defaultExtendedIconProps = Object.freeze({\n  ...defaultIconProps,\n  body: \"\",\n  hidden: false\n});\n\nfunction mergeIconTransformations(obj1, obj2) {\n  const result = {};\n  if (!obj1.hFlip !== !obj2.hFlip) {\n    result.hFlip = true;\n  }\n  if (!obj1.vFlip !== !obj2.vFlip) {\n    result.vFlip = true;\n  }\n  const rotate = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4;\n  if (rotate) {\n    result.rotate = rotate;\n  }\n  return result;\n}\n\nfunction mergeIconData(parent, child) {\n  const result = mergeIconTransformations(parent, child);\n  for (const key in defaultExtendedIconProps) {\n    if (key in defaultIconTransformations) {\n      if (key in parent && !(key in result)) {\n        result[key] = defaultIconTransformations[key];\n      }\n    } else if (key in child) {\n      result[key] = child[key];\n    } else if (key in parent) {\n      result[key] = parent[key];\n    }\n  }\n  return result;\n}\n\nfunction getIconsTree(data, names) {\n  const icons = data.icons;\n  const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n  const resolved = /* @__PURE__ */ Object.create(null);\n  function resolve(name) {\n    if (icons[name]) {\n      return resolved[name] = [];\n    }\n    if (!(name in resolved)) {\n      resolved[name] = null;\n      const parent = aliases[name] && aliases[name].parent;\n      const value = parent && resolve(parent);\n      if (value) {\n        resolved[name] = [parent].concat(value);\n      }\n    }\n    return resolved[name];\n  }\n  (names || Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve);\n  return resolved;\n}\n\nfunction internalGetIconData(data, name, tree) {\n  const icons = data.icons;\n  const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n  let currentProps = {};\n  function parse(name2) {\n    currentProps = mergeIconData(\n      icons[name2] || aliases[name2],\n      currentProps\n    );\n  }\n  parse(name);\n  tree.forEach(parse);\n  return mergeIconData(data, currentProps);\n}\n\nfunction parseIconSet(data, callback) {\n  const names = [];\n  if (typeof data !== \"object\" || typeof data.icons !== \"object\") {\n    return names;\n  }\n  if (data.not_found instanceof Array) {\n    data.not_found.forEach((name) => {\n      callback(name, null);\n      names.push(name);\n    });\n  }\n  const tree = getIconsTree(data);\n  for (const name in tree) {\n    const item = tree[name];\n    if (item) {\n      callback(name, internalGetIconData(data, name, item));\n      names.push(name);\n    }\n  }\n  return names;\n}\n\nconst optionalPropertyDefaults = {\n  provider: \"\",\n  aliases: {},\n  not_found: {},\n  ...defaultIconDimensions\n};\nfunction checkOptionalProps(item, defaults) {\n  for (const prop in defaults) {\n    if (prop in item && typeof item[prop] !== typeof defaults[prop]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction quicklyValidateIconSet(obj) {\n  if (typeof obj !== \"object\" || obj === null) {\n    return null;\n  }\n  const data = obj;\n  if (typeof data.prefix !== \"string\" || !obj.icons || typeof obj.icons !== \"object\") {\n    return null;\n  }\n  if (!checkOptionalProps(obj, optionalPropertyDefaults)) {\n    return null;\n  }\n  const icons = data.icons;\n  for (const name in icons) {\n    const icon = icons[name];\n    if (!name.match(matchIconName) || typeof icon.body !== \"string\" || !checkOptionalProps(\n      icon,\n      defaultExtendedIconProps\n    )) {\n      return null;\n    }\n  }\n  const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n  for (const name in aliases) {\n    const icon = aliases[name];\n    const parent = icon.parent;\n    if (!name.match(matchIconName) || typeof parent !== \"string\" || !icons[parent] && !aliases[parent] || !checkOptionalProps(\n      icon,\n      defaultExtendedIconProps\n    )) {\n      return null;\n    }\n  }\n  return data;\n}\n\nconst dataStorage = /* @__PURE__ */ Object.create(null);\nfunction newStorage(provider, prefix) {\n  return {\n    provider,\n    prefix,\n    icons: /* @__PURE__ */ Object.create(null),\n    missing: /* @__PURE__ */ new Set()\n  };\n}\nfunction getStorage(provider, prefix) {\n  const providerStorage = dataStorage[provider] || (dataStorage[provider] = /* @__PURE__ */ Object.create(null));\n  return providerStorage[prefix] || (providerStorage[prefix] = newStorage(provider, prefix));\n}\nfunction addIconSet(storage, data) {\n  if (!quicklyValidateIconSet(data)) {\n    return [];\n  }\n  return parseIconSet(data, (name, icon) => {\n    if (icon) {\n      storage.icons[name] = icon;\n    } else {\n      storage.missing.add(name);\n    }\n  });\n}\nfunction addIconToStorage(storage, name, icon) {\n  try {\n    if (typeof icon.body === \"string\") {\n      storage.icons[name] = { ...icon };\n      return true;\n    }\n  } catch (err) {\n  }\n  return false;\n}\nfunction listIcons(provider, prefix) {\n  let allIcons = [];\n  const providers = typeof provider === \"string\" ? [provider] : Object.keys(dataStorage);\n  providers.forEach((provider2) => {\n    const prefixes = typeof provider2 === \"string\" && typeof prefix === \"string\" ? [prefix] : Object.keys(dataStorage[provider2] || {});\n    prefixes.forEach((prefix2) => {\n      const storage = getStorage(provider2, prefix2);\n      allIcons = allIcons.concat(\n        Object.keys(storage.icons).map(\n          (name) => (provider2 !== \"\" ? \"@\" + provider2 + \":\" : \"\") + prefix2 + \":\" + name\n        )\n      );\n    });\n  });\n  return allIcons;\n}\n\nlet simpleNames = false;\nfunction allowSimpleNames(allow) {\n  if (typeof allow === \"boolean\") {\n    simpleNames = allow;\n  }\n  return simpleNames;\n}\nfunction getIconData(name) {\n  const icon = typeof name === \"string\" ? stringToIcon(name, true, simpleNames) : name;\n  if (icon) {\n    const storage = getStorage(icon.provider, icon.prefix);\n    const iconName = icon.name;\n    return storage.icons[iconName] || (storage.missing.has(iconName) ? null : void 0);\n  }\n}\nfunction addIcon(name, data) {\n  const icon = stringToIcon(name, true, simpleNames);\n  if (!icon) {\n    return false;\n  }\n  const storage = getStorage(icon.provider, icon.prefix);\n  return addIconToStorage(storage, icon.name, data);\n}\nfunction addCollection(data, provider) {\n  if (typeof data !== \"object\") {\n    return false;\n  }\n  if (typeof provider !== \"string\") {\n    provider = data.provider || \"\";\n  }\n  if (simpleNames && !provider && !data.prefix) {\n    let added = false;\n    if (quicklyValidateIconSet(data)) {\n      data.prefix = \"\";\n      parseIconSet(data, (name, icon) => {\n        if (icon && addIcon(name, icon)) {\n          added = true;\n        }\n      });\n    }\n    return added;\n  }\n  const prefix = data.prefix;\n  if (!validateIconName({\n    provider,\n    prefix,\n    name: \"a\"\n  })) {\n    return false;\n  }\n  const storage = getStorage(provider, prefix);\n  return !!addIconSet(storage, data);\n}\nfunction iconExists(name) {\n  return !!getIconData(name);\n}\nfunction getIcon(name) {\n  const result = getIconData(name);\n  return result ? {\n    ...defaultIconProps,\n    ...result\n  } : null;\n}\n\nconst defaultIconSizeCustomisations = Object.freeze({\n  width: null,\n  height: null\n});\nconst defaultIconCustomisations = Object.freeze({\n  // Dimensions\n  ...defaultIconSizeCustomisations,\n  // Transformations\n  ...defaultIconTransformations\n});\n\nconst unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\nconst unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\nfunction calculateSize(size, ratio, precision) {\n  if (ratio === 1) {\n    return size;\n  }\n  precision = precision || 100;\n  if (typeof size === \"number\") {\n    return Math.ceil(size * ratio * precision) / precision;\n  }\n  if (typeof size !== \"string\") {\n    return size;\n  }\n  const oldParts = size.split(unitsSplit);\n  if (oldParts === null || !oldParts.length) {\n    return size;\n  }\n  const newParts = [];\n  let code = oldParts.shift();\n  let isNumber = unitsTest.test(code);\n  while (true) {\n    if (isNumber) {\n      const num = parseFloat(code);\n      if (isNaN(num)) {\n        newParts.push(code);\n      } else {\n        newParts.push(Math.ceil(num * ratio * precision) / precision);\n      }\n    } else {\n      newParts.push(code);\n    }\n    code = oldParts.shift();\n    if (code === void 0) {\n      return newParts.join(\"\");\n    }\n    isNumber = !isNumber;\n  }\n}\n\nconst isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\nfunction iconToSVG(icon, customisations) {\n  const fullIcon = {\n    ...defaultIconProps,\n    ...icon\n  };\n  const fullCustomisations = {\n    ...defaultIconCustomisations,\n    ...customisations\n  };\n  const box = {\n    left: fullIcon.left,\n    top: fullIcon.top,\n    width: fullIcon.width,\n    height: fullIcon.height\n  };\n  let body = fullIcon.body;\n  [fullIcon, fullCustomisations].forEach((props) => {\n    const transformations = [];\n    const hFlip = props.hFlip;\n    const vFlip = props.vFlip;\n    let rotation = props.rotate;\n    if (hFlip) {\n      if (vFlip) {\n        rotation += 2;\n      } else {\n        transformations.push(\n          \"translate(\" + (box.width + box.left).toString() + \" \" + (0 - box.top).toString() + \")\"\n        );\n        transformations.push(\"scale(-1 1)\");\n        box.top = box.left = 0;\n      }\n    } else if (vFlip) {\n      transformations.push(\n        \"translate(\" + (0 - box.left).toString() + \" \" + (box.height + box.top).toString() + \")\"\n      );\n      transformations.push(\"scale(1 -1)\");\n      box.top = box.left = 0;\n    }\n    let tempValue;\n    if (rotation < 0) {\n      rotation -= Math.floor(rotation / 4) * 4;\n    }\n    rotation = rotation % 4;\n    switch (rotation) {\n      case 1:\n        tempValue = box.height / 2 + box.top;\n        transformations.unshift(\n          \"rotate(90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n        );\n        break;\n      case 2:\n        transformations.unshift(\n          \"rotate(180 \" + (box.width / 2 + box.left).toString() + \" \" + (box.height / 2 + box.top).toString() + \")\"\n        );\n        break;\n      case 3:\n        tempValue = box.width / 2 + box.left;\n        transformations.unshift(\n          \"rotate(-90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n        );\n        break;\n    }\n    if (rotation % 2 === 1) {\n      if (box.left !== box.top) {\n        tempValue = box.left;\n        box.left = box.top;\n        box.top = tempValue;\n      }\n      if (box.width !== box.height) {\n        tempValue = box.width;\n        box.width = box.height;\n        box.height = tempValue;\n      }\n    }\n    if (transformations.length) {\n      body = '<g transform=\"' + transformations.join(\" \") + '\">' + body + \"</g>\";\n    }\n  });\n  const customisationsWidth = fullCustomisations.width;\n  const customisationsHeight = fullCustomisations.height;\n  const boxWidth = box.width;\n  const boxHeight = box.height;\n  let width;\n  let height;\n  if (customisationsWidth === null) {\n    height = customisationsHeight === null ? \"1em\" : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n    width = calculateSize(height, boxWidth / boxHeight);\n  } else {\n    width = customisationsWidth === \"auto\" ? boxWidth : customisationsWidth;\n    height = customisationsHeight === null ? calculateSize(width, boxHeight / boxWidth) : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n  }\n  const attributes = {};\n  const setAttr = (prop, value) => {\n    if (!isUnsetKeyword(value)) {\n      attributes[prop] = value.toString();\n    }\n  };\n  setAttr(\"width\", width);\n  setAttr(\"height\", height);\n  attributes.viewBox = box.left.toString() + \" \" + box.top.toString() + \" \" + boxWidth.toString() + \" \" + boxHeight.toString();\n  return {\n    attributes,\n    body\n  };\n}\n\nconst regex = /\\sid=\"(\\S+)\"/g;\nconst randomPrefix = \"IconifyId\" + Date.now().toString(16) + (Math.random() * 16777216 | 0).toString(16);\nlet counter = 0;\nfunction replaceIDs(body, prefix = randomPrefix) {\n  const ids = [];\n  let match;\n  while (match = regex.exec(body)) {\n    ids.push(match[1]);\n  }\n  if (!ids.length) {\n    return body;\n  }\n  const suffix = \"suffix\" + (Math.random() * 16777216 | Date.now()).toString(16);\n  ids.forEach((id) => {\n    const newID = typeof prefix === \"function\" ? prefix(id) : prefix + (counter++).toString();\n    const escapedID = id.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n    body = body.replace(\n      // Allowed characters before id: [#;\"]\n      // Allowed characters after id: [)\"], .[a-z]\n      new RegExp('([#;\"])(' + escapedID + ')([\")]|\\\\.[a-z])', \"g\"),\n      \"$1\" + newID + suffix + \"$3\"\n    );\n  });\n  body = body.replace(new RegExp(suffix, \"g\"), \"\");\n  return body;\n}\n\nconst storage = /* @__PURE__ */ Object.create(null);\nfunction setAPIModule(provider, item) {\n  storage[provider] = item;\n}\nfunction getAPIModule(provider) {\n  return storage[provider] || storage[\"\"];\n}\n\nfunction createAPIConfig(source) {\n  let resources;\n  if (typeof source.resources === \"string\") {\n    resources = [source.resources];\n  } else {\n    resources = source.resources;\n    if (!(resources instanceof Array) || !resources.length) {\n      return null;\n    }\n  }\n  const result = {\n    // API hosts\n    resources,\n    // Root path\n    path: source.path || \"/\",\n    // URL length limit\n    maxURL: source.maxURL || 500,\n    // Timeout before next host is used.\n    rotate: source.rotate || 750,\n    // Timeout before failing query.\n    timeout: source.timeout || 5e3,\n    // Randomise default API end point.\n    random: source.random === true,\n    // Start index\n    index: source.index || 0,\n    // Receive data after time out (used if time out kicks in first, then API module sends data anyway).\n    dataAfterTimeout: source.dataAfterTimeout !== false\n  };\n  return result;\n}\nconst configStorage = /* @__PURE__ */ Object.create(null);\nconst fallBackAPISources = [\n  \"https://api.simplesvg.com\",\n  \"https://api.unisvg.com\"\n];\nconst fallBackAPI = [];\nwhile (fallBackAPISources.length > 0) {\n  if (fallBackAPISources.length === 1) {\n    fallBackAPI.push(fallBackAPISources.shift());\n  } else {\n    if (Math.random() > 0.5) {\n      fallBackAPI.push(fallBackAPISources.shift());\n    } else {\n      fallBackAPI.push(fallBackAPISources.pop());\n    }\n  }\n}\nconfigStorage[\"\"] = createAPIConfig({\n  resources: [\"https://api.iconify.design\"].concat(fallBackAPI)\n});\nfunction addAPIProvider(provider, customConfig) {\n  const config = createAPIConfig(customConfig);\n  if (config === null) {\n    return false;\n  }\n  configStorage[provider] = config;\n  return true;\n}\nfunction getAPIConfig(provider) {\n  return configStorage[provider];\n}\nfunction listAPIProviders() {\n  return Object.keys(configStorage);\n}\n\nconst detectFetch = () => {\n  let callback;\n  try {\n    callback = fetch;\n    if (typeof callback === \"function\") {\n      return callback;\n    }\n  } catch (err) {\n  }\n};\nlet fetchModule = detectFetch();\nfunction setFetch(fetch2) {\n  fetchModule = fetch2;\n}\nfunction getFetch() {\n  return fetchModule;\n}\nfunction calculateMaxLength(provider, prefix) {\n  const config = getAPIConfig(provider);\n  if (!config) {\n    return 0;\n  }\n  let result;\n  if (!config.maxURL) {\n    result = 0;\n  } else {\n    let maxHostLength = 0;\n    config.resources.forEach((item) => {\n      const host = item;\n      maxHostLength = Math.max(maxHostLength, host.length);\n    });\n    const url = prefix + \".json?icons=\";\n    result = config.maxURL - maxHostLength - config.path.length - url.length;\n  }\n  return result;\n}\nfunction shouldAbort(status) {\n  return status === 404;\n}\nconst prepare = (provider, prefix, icons) => {\n  const results = [];\n  const maxLength = calculateMaxLength(provider, prefix);\n  const type = \"icons\";\n  let item = {\n    type,\n    provider,\n    prefix,\n    icons: []\n  };\n  let length = 0;\n  icons.forEach((name, index) => {\n    length += name.length + 1;\n    if (length >= maxLength && index > 0) {\n      results.push(item);\n      item = {\n        type,\n        provider,\n        prefix,\n        icons: []\n      };\n      length = name.length;\n    }\n    item.icons.push(name);\n  });\n  results.push(item);\n  return results;\n};\nfunction getPath(provider) {\n  if (typeof provider === \"string\") {\n    const config = getAPIConfig(provider);\n    if (config) {\n      return config.path;\n    }\n  }\n  return \"/\";\n}\nconst send = (host, params, callback) => {\n  if (!fetchModule) {\n    callback(\"abort\", 424);\n    return;\n  }\n  let path = getPath(params.provider);\n  switch (params.type) {\n    case \"icons\": {\n      const prefix = params.prefix;\n      const icons = params.icons;\n      const iconsList = icons.join(\",\");\n      const urlParams = new URLSearchParams({\n        icons: iconsList\n      });\n      path += prefix + \".json?\" + urlParams.toString();\n      break;\n    }\n    case \"custom\": {\n      const uri = params.uri;\n      path += uri.slice(0, 1) === \"/\" ? uri.slice(1) : uri;\n      break;\n    }\n    default:\n      callback(\"abort\", 400);\n      return;\n  }\n  let defaultError = 503;\n  fetchModule(host + path).then((response) => {\n    const status = response.status;\n    if (status !== 200) {\n      setTimeout(() => {\n        callback(shouldAbort(status) ? \"abort\" : \"next\", status);\n      });\n      return;\n    }\n    defaultError = 501;\n    return response.json();\n  }).then((data) => {\n    if (typeof data !== \"object\" || data === null) {\n      setTimeout(() => {\n        if (data === 404) {\n          callback(\"abort\", data);\n        } else {\n          callback(\"next\", defaultError);\n        }\n      });\n      return;\n    }\n    setTimeout(() => {\n      callback(\"success\", data);\n    });\n  }).catch(() => {\n    callback(\"next\", defaultError);\n  });\n};\nconst fetchAPIModule = {\n  prepare,\n  send\n};\n\nfunction sortIcons(icons) {\n  const result = {\n    loaded: [],\n    missing: [],\n    pending: []\n  };\n  const storage = /* @__PURE__ */ Object.create(null);\n  icons.sort((a, b) => {\n    if (a.provider !== b.provider) {\n      return a.provider.localeCompare(b.provider);\n    }\n    if (a.prefix !== b.prefix) {\n      return a.prefix.localeCompare(b.prefix);\n    }\n    return a.name.localeCompare(b.name);\n  });\n  let lastIcon = {\n    provider: \"\",\n    prefix: \"\",\n    name: \"\"\n  };\n  icons.forEach((icon) => {\n    if (lastIcon.name === icon.name && lastIcon.prefix === icon.prefix && lastIcon.provider === icon.provider) {\n      return;\n    }\n    lastIcon = icon;\n    const provider = icon.provider;\n    const prefix = icon.prefix;\n    const name = icon.name;\n    const providerStorage = storage[provider] || (storage[provider] = /* @__PURE__ */ Object.create(null));\n    const localStorage = providerStorage[prefix] || (providerStorage[prefix] = getStorage(provider, prefix));\n    let list;\n    if (name in localStorage.icons) {\n      list = result.loaded;\n    } else if (prefix === \"\" || localStorage.missing.has(name)) {\n      list = result.missing;\n    } else {\n      list = result.pending;\n    }\n    const item = {\n      provider,\n      prefix,\n      name\n    };\n    list.push(item);\n  });\n  return result;\n}\n\nfunction removeCallback(storages, id) {\n  storages.forEach((storage) => {\n    const items = storage.loaderCallbacks;\n    if (items) {\n      storage.loaderCallbacks = items.filter((row) => row.id !== id);\n    }\n  });\n}\nfunction updateCallbacks(storage) {\n  if (!storage.pendingCallbacksFlag) {\n    storage.pendingCallbacksFlag = true;\n    setTimeout(() => {\n      storage.pendingCallbacksFlag = false;\n      const items = storage.loaderCallbacks ? storage.loaderCallbacks.slice(0) : [];\n      if (!items.length) {\n        return;\n      }\n      let hasPending = false;\n      const provider = storage.provider;\n      const prefix = storage.prefix;\n      items.forEach((item) => {\n        const icons = item.icons;\n        const oldLength = icons.pending.length;\n        icons.pending = icons.pending.filter((icon) => {\n          if (icon.prefix !== prefix) {\n            return true;\n          }\n          const name = icon.name;\n          if (storage.icons[name]) {\n            icons.loaded.push({\n              provider,\n              prefix,\n              name\n            });\n          } else if (storage.missing.has(name)) {\n            icons.missing.push({\n              provider,\n              prefix,\n              name\n            });\n          } else {\n            hasPending = true;\n            return true;\n          }\n          return false;\n        });\n        if (icons.pending.length !== oldLength) {\n          if (!hasPending) {\n            removeCallback([storage], item.id);\n          }\n          item.callback(\n            icons.loaded.slice(0),\n            icons.missing.slice(0),\n            icons.pending.slice(0),\n            item.abort\n          );\n        }\n      });\n    });\n  }\n}\nlet idCounter = 0;\nfunction storeCallback(callback, icons, pendingSources) {\n  const id = idCounter++;\n  const abort = removeCallback.bind(null, pendingSources, id);\n  if (!icons.pending.length) {\n    return abort;\n  }\n  const item = {\n    id,\n    icons,\n    callback,\n    abort\n  };\n  pendingSources.forEach((storage) => {\n    (storage.loaderCallbacks || (storage.loaderCallbacks = [])).push(item);\n  });\n  return abort;\n}\n\nfunction listToIcons(list, validate = true, simpleNames = false) {\n  const result = [];\n  list.forEach((item) => {\n    const icon = typeof item === \"string\" ? stringToIcon(item, validate, simpleNames) : item;\n    if (icon) {\n      result.push(icon);\n    }\n  });\n  return result;\n}\n\n// src/config.ts\nvar defaultConfig = {\n  resources: [],\n  index: 0,\n  timeout: 2e3,\n  rotate: 750,\n  random: false,\n  dataAfterTimeout: false\n};\n\n// src/query.ts\nfunction sendQuery(config, payload, query, done) {\n  const resourcesCount = config.resources.length;\n  const startIndex = config.random ? Math.floor(Math.random() * resourcesCount) : config.index;\n  let resources;\n  if (config.random) {\n    let list = config.resources.slice(0);\n    resources = [];\n    while (list.length > 1) {\n      const nextIndex = Math.floor(Math.random() * list.length);\n      resources.push(list[nextIndex]);\n      list = list.slice(0, nextIndex).concat(list.slice(nextIndex + 1));\n    }\n    resources = resources.concat(list);\n  } else {\n    resources = config.resources.slice(startIndex).concat(config.resources.slice(0, startIndex));\n  }\n  const startTime = Date.now();\n  let status = \"pending\";\n  let queriesSent = 0;\n  let lastError;\n  let timer = null;\n  let queue = [];\n  let doneCallbacks = [];\n  if (typeof done === \"function\") {\n    doneCallbacks.push(done);\n  }\n  function resetTimer() {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n  }\n  function abort() {\n    if (status === \"pending\") {\n      status = \"aborted\";\n    }\n    resetTimer();\n    queue.forEach((item) => {\n      if (item.status === \"pending\") {\n        item.status = \"aborted\";\n      }\n    });\n    queue = [];\n  }\n  function subscribe(callback, overwrite) {\n    if (overwrite) {\n      doneCallbacks = [];\n    }\n    if (typeof callback === \"function\") {\n      doneCallbacks.push(callback);\n    }\n  }\n  function getQueryStatus() {\n    return {\n      startTime,\n      payload,\n      status,\n      queriesSent,\n      queriesPending: queue.length,\n      subscribe,\n      abort\n    };\n  }\n  function failQuery() {\n    status = \"failed\";\n    doneCallbacks.forEach((callback) => {\n      callback(void 0, lastError);\n    });\n  }\n  function clearQueue() {\n    queue.forEach((item) => {\n      if (item.status === \"pending\") {\n        item.status = \"aborted\";\n      }\n    });\n    queue = [];\n  }\n  function moduleResponse(item, response, data) {\n    const isError = response !== \"success\";\n    queue = queue.filter((queued) => queued !== item);\n    switch (status) {\n      case \"pending\":\n        break;\n      case \"failed\":\n        if (isError || !config.dataAfterTimeout) {\n          return;\n        }\n        break;\n      default:\n        return;\n    }\n    if (response === \"abort\") {\n      lastError = data;\n      failQuery();\n      return;\n    }\n    if (isError) {\n      lastError = data;\n      if (!queue.length) {\n        if (!resources.length) {\n          failQuery();\n        } else {\n          execNext();\n        }\n      }\n      return;\n    }\n    resetTimer();\n    clearQueue();\n    if (!config.random) {\n      const index = config.resources.indexOf(item.resource);\n      if (index !== -1 && index !== config.index) {\n        config.index = index;\n      }\n    }\n    status = \"completed\";\n    doneCallbacks.forEach((callback) => {\n      callback(data);\n    });\n  }\n  function execNext() {\n    if (status !== \"pending\") {\n      return;\n    }\n    resetTimer();\n    const resource = resources.shift();\n    if (resource === void 0) {\n      if (queue.length) {\n        timer = setTimeout(() => {\n          resetTimer();\n          if (status === \"pending\") {\n            clearQueue();\n            failQuery();\n          }\n        }, config.timeout);\n        return;\n      }\n      failQuery();\n      return;\n    }\n    const item = {\n      status: \"pending\",\n      resource,\n      callback: (status2, data) => {\n        moduleResponse(item, status2, data);\n      }\n    };\n    queue.push(item);\n    queriesSent++;\n    timer = setTimeout(execNext, config.rotate);\n    query(resource, payload, item.callback);\n  }\n  setTimeout(execNext);\n  return getQueryStatus;\n}\n\n// src/index.ts\nfunction initRedundancy(cfg) {\n  const config = {\n    ...defaultConfig,\n    ...cfg\n  };\n  let queries = [];\n  function cleanup() {\n    queries = queries.filter((item) => item().status === \"pending\");\n  }\n  function query(payload, queryCallback, doneCallback) {\n    const query2 = sendQuery(\n      config,\n      payload,\n      queryCallback,\n      (data, error) => {\n        cleanup();\n        if (doneCallback) {\n          doneCallback(data, error);\n        }\n      }\n    );\n    queries.push(query2);\n    return query2;\n  }\n  function find(callback) {\n    return queries.find((value) => {\n      return callback(value);\n    }) || null;\n  }\n  const instance = {\n    query,\n    find,\n    setIndex: (index) => {\n      config.index = index;\n    },\n    getIndex: () => config.index,\n    cleanup\n  };\n  return instance;\n}\n\nfunction emptyCallback$1() {\n}\nconst redundancyCache = /* @__PURE__ */ Object.create(null);\nfunction getRedundancyCache(provider) {\n  if (!redundancyCache[provider]) {\n    const config = getAPIConfig(provider);\n    if (!config) {\n      return;\n    }\n    const redundancy = initRedundancy(config);\n    const cachedReundancy = {\n      config,\n      redundancy\n    };\n    redundancyCache[provider] = cachedReundancy;\n  }\n  return redundancyCache[provider];\n}\nfunction sendAPIQuery(target, query, callback) {\n  let redundancy;\n  let send;\n  if (typeof target === \"string\") {\n    const api = getAPIModule(target);\n    if (!api) {\n      callback(void 0, 424);\n      return emptyCallback$1;\n    }\n    send = api.send;\n    const cached = getRedundancyCache(target);\n    if (cached) {\n      redundancy = cached.redundancy;\n    }\n  } else {\n    const config = createAPIConfig(target);\n    if (config) {\n      redundancy = initRedundancy(config);\n      const moduleKey = target.resources ? target.resources[0] : \"\";\n      const api = getAPIModule(moduleKey);\n      if (api) {\n        send = api.send;\n      }\n    }\n  }\n  if (!redundancy || !send) {\n    callback(void 0, 424);\n    return emptyCallback$1;\n  }\n  return redundancy.query(query, send, callback)().abort;\n}\n\nconst browserCacheVersion = \"iconify2\";\nconst browserCachePrefix = \"iconify\";\nconst browserCacheCountKey = browserCachePrefix + \"-count\";\nconst browserCacheVersionKey = browserCachePrefix + \"-version\";\nconst browserStorageHour = 36e5;\nconst browserStorageCacheExpiration = 168;\n\nfunction getStoredItem(func, key) {\n  try {\n    return func.getItem(key);\n  } catch (err) {\n  }\n}\nfunction setStoredItem(func, key, value) {\n  try {\n    func.setItem(key, value);\n    return true;\n  } catch (err) {\n  }\n}\nfunction removeStoredItem(func, key) {\n  try {\n    func.removeItem(key);\n  } catch (err) {\n  }\n}\n\nfunction setBrowserStorageItemsCount(storage, value) {\n  return setStoredItem(storage, browserCacheCountKey, value.toString());\n}\nfunction getBrowserStorageItemsCount(storage) {\n  return parseInt(getStoredItem(storage, browserCacheCountKey)) || 0;\n}\n\nconst browserStorageConfig = {\n  local: true,\n  session: true\n};\nconst browserStorageEmptyItems = {\n  local: /* @__PURE__ */ new Set(),\n  session: /* @__PURE__ */ new Set()\n};\nlet browserStorageStatus = false;\nfunction setBrowserStorageStatus(status) {\n  browserStorageStatus = status;\n}\n\nlet _window = typeof window === \"undefined\" ? {} : window;\nfunction getBrowserStorage(key) {\n  const attr = key + \"Storage\";\n  try {\n    if (_window && _window[attr] && typeof _window[attr].length === \"number\") {\n      return _window[attr];\n    }\n  } catch (err) {\n  }\n  browserStorageConfig[key] = false;\n}\n\nfunction iterateBrowserStorage(key, callback) {\n  const func = getBrowserStorage(key);\n  if (!func) {\n    return;\n  }\n  const version = getStoredItem(func, browserCacheVersionKey);\n  if (version !== browserCacheVersion) {\n    if (version) {\n      const total2 = getBrowserStorageItemsCount(func);\n      for (let i = 0; i < total2; i++) {\n        removeStoredItem(func, browserCachePrefix + i.toString());\n      }\n    }\n    setStoredItem(func, browserCacheVersionKey, browserCacheVersion);\n    setBrowserStorageItemsCount(func, 0);\n    return;\n  }\n  const minTime = Math.floor(Date.now() / browserStorageHour) - browserStorageCacheExpiration;\n  const parseItem = (index) => {\n    const name = browserCachePrefix + index.toString();\n    const item = getStoredItem(func, name);\n    if (typeof item !== \"string\") {\n      return;\n    }\n    try {\n      const data = JSON.parse(item);\n      if (typeof data === \"object\" && typeof data.cached === \"number\" && data.cached > minTime && typeof data.provider === \"string\" && typeof data.data === \"object\" && typeof data.data.prefix === \"string\" && // Valid item: run callback\n      callback(data, index)) {\n        return true;\n      }\n    } catch (err) {\n    }\n    removeStoredItem(func, name);\n  };\n  let total = getBrowserStorageItemsCount(func);\n  for (let i = total - 1; i >= 0; i--) {\n    if (!parseItem(i)) {\n      if (i === total - 1) {\n        total--;\n        setBrowserStorageItemsCount(func, total);\n      } else {\n        browserStorageEmptyItems[key].add(i);\n      }\n    }\n  }\n}\n\nfunction initBrowserStorage() {\n  if (browserStorageStatus) {\n    return;\n  }\n  setBrowserStorageStatus(true);\n  for (const key in browserStorageConfig) {\n    iterateBrowserStorage(key, (item) => {\n      const iconSet = item.data;\n      const provider = item.provider;\n      const prefix = iconSet.prefix;\n      const storage = getStorage(\n        provider,\n        prefix\n      );\n      if (!addIconSet(storage, iconSet).length) {\n        return false;\n      }\n      const lastModified = iconSet.lastModified || -1;\n      storage.lastModifiedCached = storage.lastModifiedCached ? Math.min(storage.lastModifiedCached, lastModified) : lastModified;\n      return true;\n    });\n  }\n}\n\nfunction updateLastModified(storage, lastModified) {\n  const lastValue = storage.lastModifiedCached;\n  if (\n    // Matches or newer\n    lastValue && lastValue >= lastModified\n  ) {\n    return lastValue === lastModified;\n  }\n  storage.lastModifiedCached = lastModified;\n  if (lastValue) {\n    for (const key in browserStorageConfig) {\n      iterateBrowserStorage(key, (item) => {\n        const iconSet = item.data;\n        return item.provider !== storage.provider || iconSet.prefix !== storage.prefix || iconSet.lastModified === lastModified;\n      });\n    }\n  }\n  return true;\n}\nfunction storeInBrowserStorage(storage, data) {\n  if (!browserStorageStatus) {\n    initBrowserStorage();\n  }\n  function store(key) {\n    let func;\n    if (!browserStorageConfig[key] || !(func = getBrowserStorage(key))) {\n      return;\n    }\n    const set = browserStorageEmptyItems[key];\n    let index;\n    if (set.size) {\n      set.delete(index = Array.from(set).shift());\n    } else {\n      index = getBrowserStorageItemsCount(func);\n      if (!setBrowserStorageItemsCount(func, index + 1)) {\n        return;\n      }\n    }\n    const item = {\n      cached: Math.floor(Date.now() / browserStorageHour),\n      provider: storage.provider,\n      data\n    };\n    return setStoredItem(\n      func,\n      browserCachePrefix + index.toString(),\n      JSON.stringify(item)\n    );\n  }\n  if (data.lastModified && !updateLastModified(storage, data.lastModified)) {\n    return;\n  }\n  if (!Object.keys(data.icons).length) {\n    return;\n  }\n  if (data.not_found) {\n    data = Object.assign({}, data);\n    delete data.not_found;\n  }\n  if (!store(\"local\")) {\n    store(\"session\");\n  }\n}\n\nfunction emptyCallback() {\n}\nfunction loadedNewIcons(storage) {\n  if (!storage.iconsLoaderFlag) {\n    storage.iconsLoaderFlag = true;\n    setTimeout(() => {\n      storage.iconsLoaderFlag = false;\n      updateCallbacks(storage);\n    });\n  }\n}\nfunction loadNewIcons(storage, icons) {\n  if (!storage.iconsToLoad) {\n    storage.iconsToLoad = icons;\n  } else {\n    storage.iconsToLoad = storage.iconsToLoad.concat(icons).sort();\n  }\n  if (!storage.iconsQueueFlag) {\n    storage.iconsQueueFlag = true;\n    setTimeout(() => {\n      storage.iconsQueueFlag = false;\n      const { provider, prefix } = storage;\n      const icons2 = storage.iconsToLoad;\n      delete storage.iconsToLoad;\n      let api;\n      if (!icons2 || !(api = getAPIModule(provider))) {\n        return;\n      }\n      const params = api.prepare(provider, prefix, icons2);\n      params.forEach((item) => {\n        sendAPIQuery(provider, item, (data) => {\n          if (typeof data !== \"object\") {\n            item.icons.forEach((name) => {\n              storage.missing.add(name);\n            });\n          } else {\n            try {\n              const parsed = addIconSet(\n                storage,\n                data\n              );\n              if (!parsed.length) {\n                return;\n              }\n              const pending = storage.pendingIcons;\n              if (pending) {\n                parsed.forEach((name) => {\n                  pending.delete(name);\n                });\n              }\n              storeInBrowserStorage(storage, data);\n            } catch (err) {\n              console.error(err);\n            }\n          }\n          loadedNewIcons(storage);\n        });\n      });\n    });\n  }\n}\nconst loadIcons = (icons, callback) => {\n  const cleanedIcons = listToIcons(icons, true, allowSimpleNames());\n  const sortedIcons = sortIcons(cleanedIcons);\n  if (!sortedIcons.pending.length) {\n    let callCallback = true;\n    if (callback) {\n      setTimeout(() => {\n        if (callCallback) {\n          callback(\n            sortedIcons.loaded,\n            sortedIcons.missing,\n            sortedIcons.pending,\n            emptyCallback\n          );\n        }\n      });\n    }\n    return () => {\n      callCallback = false;\n    };\n  }\n  const newIcons = /* @__PURE__ */ Object.create(null);\n  const sources = [];\n  let lastProvider, lastPrefix;\n  sortedIcons.pending.forEach((icon) => {\n    const { provider, prefix } = icon;\n    if (prefix === lastPrefix && provider === lastProvider) {\n      return;\n    }\n    lastProvider = provider;\n    lastPrefix = prefix;\n    sources.push(getStorage(provider, prefix));\n    const providerNewIcons = newIcons[provider] || (newIcons[provider] = /* @__PURE__ */ Object.create(null));\n    if (!providerNewIcons[prefix]) {\n      providerNewIcons[prefix] = [];\n    }\n  });\n  sortedIcons.pending.forEach((icon) => {\n    const { provider, prefix, name } = icon;\n    const storage = getStorage(provider, prefix);\n    const pendingQueue = storage.pendingIcons || (storage.pendingIcons = /* @__PURE__ */ new Set());\n    if (!pendingQueue.has(name)) {\n      pendingQueue.add(name);\n      newIcons[provider][prefix].push(name);\n    }\n  });\n  sources.forEach((storage) => {\n    const { provider, prefix } = storage;\n    if (newIcons[provider][prefix].length) {\n      loadNewIcons(storage, newIcons[provider][prefix]);\n    }\n  });\n  return callback ? storeCallback(callback, sortedIcons, sources) : emptyCallback;\n};\nconst loadIcon = (icon) => {\n  return new Promise((fulfill, reject) => {\n    const iconObj = typeof icon === \"string\" ? stringToIcon(icon, true) : icon;\n    if (!iconObj) {\n      reject(icon);\n      return;\n    }\n    loadIcons([iconObj || icon], (loaded) => {\n      if (loaded.length && iconObj) {\n        const data = getIconData(iconObj);\n        if (data) {\n          fulfill({\n            ...defaultIconProps,\n            ...data\n          });\n          return;\n        }\n      }\n      reject(icon);\n    });\n  });\n};\n\nfunction toggleBrowserCache(storage, value) {\n  switch (storage) {\n    case \"local\":\n    case \"session\":\n      browserStorageConfig[storage] = value;\n      break;\n    case \"all\":\n      for (const key in browserStorageConfig) {\n        browserStorageConfig[key] = value;\n      }\n      break;\n  }\n}\n\nfunction mergeCustomisations(defaults, item) {\n  const result = {\n    ...defaults\n  };\n  for (const key in item) {\n    const value = item[key];\n    const valueType = typeof value;\n    if (key in defaultIconSizeCustomisations) {\n      if (value === null || value && (valueType === \"string\" || valueType === \"number\")) {\n        result[key] = value;\n      }\n    } else if (valueType === typeof result[key]) {\n      result[key] = key === \"rotate\" ? value % 4 : value;\n    }\n  }\n  return result;\n}\n\nconst separator = /[\\s,]+/;\nfunction flipFromString(custom, flip) {\n  flip.split(separator).forEach((str) => {\n    const value = str.trim();\n    switch (value) {\n      case \"horizontal\":\n        custom.hFlip = true;\n        break;\n      case \"vertical\":\n        custom.vFlip = true;\n        break;\n    }\n  });\n}\n\nfunction rotateFromString(value, defaultValue = 0) {\n  const units = value.replace(/^-?[0-9.]*/, \"\");\n  function cleanup(value2) {\n    while (value2 < 0) {\n      value2 += 4;\n    }\n    return value2 % 4;\n  }\n  if (units === \"\") {\n    const num = parseInt(value);\n    return isNaN(num) ? 0 : cleanup(num);\n  } else if (units !== value) {\n    let split = 0;\n    switch (units) {\n      case \"%\":\n        split = 25;\n        break;\n      case \"deg\":\n        split = 90;\n    }\n    if (split) {\n      let num = parseFloat(value.slice(0, value.length - units.length));\n      if (isNaN(num)) {\n        return 0;\n      }\n      num = num / split;\n      return num % 1 === 0 ? cleanup(num) : 0;\n    }\n  }\n  return defaultValue;\n}\n\nfunction iconToHTML(body, attributes) {\n  let renderAttribsHTML = body.indexOf(\"xlink:\") === -1 ? \"\" : ' xmlns:xlink=\"http://www.w3.org/1999/xlink\"';\n  for (const attr in attributes) {\n    renderAttribsHTML += \" \" + attr + '=\"' + attributes[attr] + '\"';\n  }\n  return '<svg xmlns=\"http://www.w3.org/2000/svg\"' + renderAttribsHTML + \">\" + body + \"</svg>\";\n}\n\nfunction encodeSVGforURL(svg) {\n  return svg.replace(/\"/g, \"'\").replace(/%/g, \"%25\").replace(/#/g, \"%23\").replace(/</g, \"%3C\").replace(/>/g, \"%3E\").replace(/\\s+/g, \" \");\n}\nfunction svgToData(svg) {\n  return \"data:image/svg+xml,\" + encodeSVGforURL(svg);\n}\nfunction svgToURL(svg) {\n  return 'url(\"' + svgToData(svg) + '\")';\n}\n\nconst defaultExtendedIconCustomisations = {\n    ...defaultIconCustomisations,\n    inline: false,\n};\n\n/**\n * Default SVG attributes\n */\nconst svgDefaults = {\n    'xmlns': 'http://www.w3.org/2000/svg',\n    'xmlns:xlink': 'http://www.w3.org/1999/xlink',\n    'aria-hidden': true,\n    'role': 'img',\n};\n/**\n * Style modes\n */\nconst commonProps = {\n    display: 'inline-block',\n};\nconst monotoneProps = {\n    backgroundColor: 'currentColor',\n};\nconst coloredProps = {\n    backgroundColor: 'transparent',\n};\n// Dynamically add common props to variables above\nconst propsToAdd = {\n    Image: 'var(--svg)',\n    Repeat: 'no-repeat',\n    Size: '100% 100%',\n};\nconst propsToAddTo = {\n    webkitMask: monotoneProps,\n    mask: monotoneProps,\n    background: coloredProps,\n};\nfor (const prefix in propsToAddTo) {\n    const list = propsToAddTo[prefix];\n    for (const prop in propsToAdd) {\n        list[prefix + prop] = propsToAdd[prop];\n    }\n}\n/**\n * Aliases for customisations.\n * In Vue 'v-' properties are reserved, so v-flip must be renamed\n */\nconst customisationAliases = {};\n['horizontal', 'vertical'].forEach((prefix) => {\n    const attr = prefix.slice(0, 1) + 'Flip';\n    // vertical-flip\n    customisationAliases[prefix + '-flip'] = attr;\n    // v-flip\n    customisationAliases[prefix.slice(0, 1) + '-flip'] = attr;\n    // verticalFlip\n    customisationAliases[prefix + 'Flip'] = attr;\n});\n/**\n * Fix size: add 'px' to numbers\n */\nfunction fixSize(value) {\n    return value + (value.match(/^[-0-9.]+$/) ? 'px' : '');\n}\n/**\n * Render icon\n */\nconst render = (\n// Icon must be validated before calling this function\nicon, \n// Partial properties\nprops) => {\n    // Split properties\n    const customisations = mergeCustomisations(defaultExtendedIconCustomisations, props);\n    const componentProps = { ...svgDefaults };\n    // Check mode\n    const mode = props.mode || 'svg';\n    // Copy style\n    const style = {};\n    const propsStyle = props.style;\n    const customStyle = typeof propsStyle === 'object' && !(propsStyle instanceof Array)\n        ? propsStyle\n        : {};\n    // Get element properties\n    for (let key in props) {\n        const value = props[key];\n        if (value === void 0) {\n            continue;\n        }\n        switch (key) {\n            // Properties to ignore\n            case 'icon':\n            case 'style':\n            case 'onLoad':\n            case 'mode':\n                break;\n            // Boolean attributes\n            case 'inline':\n            case 'hFlip':\n            case 'vFlip':\n                customisations[key] =\n                    value === true || value === 'true' || value === 1;\n                break;\n            // Flip as string: 'horizontal,vertical'\n            case 'flip':\n                if (typeof value === 'string') {\n                    flipFromString(customisations, value);\n                }\n                break;\n            // Color: override style\n            case 'color':\n                style.color = value;\n                break;\n            // Rotation as string\n            case 'rotate':\n                if (typeof value === 'string') {\n                    customisations[key] = rotateFromString(value);\n                }\n                else if (typeof value === 'number') {\n                    customisations[key] = value;\n                }\n                break;\n            // Remove aria-hidden\n            case 'ariaHidden':\n            case 'aria-hidden':\n                // Vue transforms 'aria-hidden' property to 'ariaHidden'\n                if (value !== true && value !== 'true') {\n                    delete componentProps['aria-hidden'];\n                }\n                break;\n            default: {\n                const alias = customisationAliases[key];\n                if (alias) {\n                    // Aliases for boolean customisations\n                    if (value === true || value === 'true' || value === 1) {\n                        customisations[alias] = true;\n                    }\n                }\n                else if (defaultExtendedIconCustomisations[key] === void 0) {\n                    // Copy missing property if it does not exist in customisations\n                    componentProps[key] = value;\n                }\n            }\n        }\n    }\n    // Generate icon\n    const item = iconToSVG(icon, customisations);\n    const renderAttribs = item.attributes;\n    // Inline display\n    if (customisations.inline) {\n        style.verticalAlign = '-0.125em';\n    }\n    if (mode === 'svg') {\n        // Add style\n        componentProps.style = {\n            ...style,\n            ...customStyle,\n        };\n        // Add icon stuff\n        Object.assign(componentProps, renderAttribs);\n        // Counter for ids based on \"id\" property to render icons consistently on server and client\n        let localCounter = 0;\n        let id = props.id;\n        if (typeof id === 'string') {\n            // Convert '-' to '_' to avoid errors in animations\n            id = id.replace(/-/g, '_');\n        }\n        // Add innerHTML and style to props\n        componentProps['innerHTML'] = replaceIDs(item.body, id ? () => id + 'ID' + localCounter++ : 'iconifyVue');\n        // Render icon\n        return h('svg', componentProps);\n    }\n    // Render <span> with style\n    const { body, width, height } = icon;\n    const useMask = mode === 'mask' ||\n        (mode === 'bg' ? false : body.indexOf('currentColor') !== -1);\n    // Generate SVG\n    const html = iconToHTML(body, {\n        ...renderAttribs,\n        width: width + '',\n        height: height + '',\n    });\n    // Generate style\n    componentProps.style = {\n        ...style,\n        '--svg': svgToURL(html),\n        'width': fixSize(renderAttribs.width),\n        'height': fixSize(renderAttribs.height),\n        ...commonProps,\n        ...(useMask ? monotoneProps : coloredProps),\n        ...customStyle,\n    };\n    return h('span', componentProps);\n};\n\n/**\n * Enable cache\n */\nfunction enableCache(storage) {\n    toggleBrowserCache(storage, true);\n}\n/**\n * Disable cache\n */\nfunction disableCache(storage) {\n    toggleBrowserCache(storage, false);\n}\n/**\n * Initialise stuff\n */\n// Enable short names\nallowSimpleNames(true);\n// Set API module\nsetAPIModule('', fetchAPIModule);\n/**\n * Browser stuff\n */\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n    // Set cache and load existing cache\n    initBrowserStorage();\n    const _window = window;\n    // Load icons from global \"IconifyPreload\"\n    if (_window.IconifyPreload !== void 0) {\n        const preload = _window.IconifyPreload;\n        const err = 'Invalid IconifyPreload syntax.';\n        if (typeof preload === 'object' && preload !== null) {\n            (preload instanceof Array ? preload : [preload]).forEach((item) => {\n                try {\n                    if (\n                    // Check if item is an object and not null/array\n                    typeof item !== 'object' ||\n                        item === null ||\n                        item instanceof Array ||\n                        // Check for 'icons' and 'prefix'\n                        typeof item.icons !== 'object' ||\n                        typeof item.prefix !== 'string' ||\n                        // Add icon set\n                        !addCollection(item)) {\n                        console.error(err);\n                    }\n                }\n                catch (e) {\n                    console.error(err);\n                }\n            });\n        }\n    }\n    // Set API from global \"IconifyProviders\"\n    if (_window.IconifyProviders !== void 0) {\n        const providers = _window.IconifyProviders;\n        if (typeof providers === 'object' && providers !== null) {\n            for (let key in providers) {\n                const err = 'IconifyProviders[' + key + '] is invalid.';\n                try {\n                    const value = providers[key];\n                    if (typeof value !== 'object' ||\n                        !value ||\n                        value.resources === void 0) {\n                        continue;\n                    }\n                    if (!addAPIProvider(key, value)) {\n                        console.error(err);\n                    }\n                }\n                catch (e) {\n                    console.error(err);\n                }\n            }\n        }\n    }\n}\n/**\n * Empty icon data, rendered when icon is not available\n */\nconst emptyIcon = {\n    ...defaultIconProps,\n    body: '',\n};\nconst Icon = defineComponent({\n    // Do not inherit other attributes: it is handled by render()\n    inheritAttrs: false,\n    // Set initial data\n    data() {\n        return {\n            // Mounted status\n            iconMounted: false,\n            // Callback counter to trigger re-render\n            counter: 0,\n        };\n    },\n    mounted() {\n        // Current icon name\n        this._name = '';\n        // Loading\n        this._loadingIcon = null;\n        // Mark as mounted\n        this.iconMounted = true;\n    },\n    unmounted() {\n        this.abortLoading();\n    },\n    methods: {\n        abortLoading() {\n            if (this._loadingIcon) {\n                this._loadingIcon.abort();\n                this._loadingIcon = null;\n            }\n        },\n        // Get data for icon to render or null\n        getIcon(icon, onload) {\n            // Icon is an object\n            if (typeof icon === 'object' &&\n                icon !== null &&\n                typeof icon.body === 'string') {\n                // Stop loading\n                this._name = '';\n                this.abortLoading();\n                return {\n                    data: icon,\n                };\n            }\n            // Invalid icon?\n            let iconName;\n            if (typeof icon !== 'string' ||\n                (iconName = stringToIcon(icon, false, true)) === null) {\n                this.abortLoading();\n                return null;\n            }\n            // Load icon\n            const data = getIconData(iconName);\n            if (!data) {\n                // Icon data is not available\n                if (!this._loadingIcon || this._loadingIcon.name !== icon) {\n                    // New icon to load\n                    this.abortLoading();\n                    this._name = '';\n                    if (data !== null) {\n                        // Icon was not loaded\n                        this._loadingIcon = {\n                            name: icon,\n                            abort: loadIcons([iconName], () => {\n                                this.counter++;\n                            }),\n                        };\n                    }\n                }\n                return null;\n            }\n            // Icon data is available\n            this.abortLoading();\n            if (this._name !== icon) {\n                this._name = icon;\n                if (onload) {\n                    onload(icon);\n                }\n            }\n            // Add classes\n            const classes = ['iconify'];\n            if (iconName.prefix !== '') {\n                classes.push('iconify--' + iconName.prefix);\n            }\n            if (iconName.provider !== '') {\n                classes.push('iconify--' + iconName.provider);\n            }\n            return { data, classes };\n        },\n    },\n    // Render icon\n    render() {\n        // Re-render when counter changes\n        this.counter;\n        const props = this.$attrs;\n        // Get icon data\n        const icon = this.iconMounted\n            ? this.getIcon(props.icon, props.onLoad)\n            : null;\n        // Validate icon object\n        if (!icon) {\n            return render(emptyIcon, props);\n        }\n        // Add classes\n        let newProps = props;\n        if (icon.classes) {\n            newProps = {\n                ...props,\n                class: (typeof props['class'] === 'string'\n                    ? props['class'] + ' '\n                    : '') + icon.classes.join(' '),\n            };\n        }\n        // Render icon\n        return render({\n            ...defaultIconProps,\n            ...icon.data,\n        }, newProps);\n    },\n});\n/**\n * Internal API\n */\nconst _api = {\n    getAPIConfig,\n    setAPIModule,\n    sendAPIQuery,\n    setFetch,\n    getFetch,\n    listAPIProviders,\n};\n\nexport { Icon, _api, addAPIProvider, addCollection, addIcon, iconToSVG as buildIcon, calculateSize, disableCache, enableCache, getIcon, iconExists, listIcons, loadIcon, loadIcons, replaceIDs };\n","<template>\n  <template\n    v-if=\"\n      props.icon && (props.icon.includes('http') || props.icon.startsWith('/'))\n    \"\n  >\n    <img\n      :class=\"iconClass\"\n      :style=\"{ fontSize: iconSize }\"\n      v-bind=\"$attrs\"\n      :src=\"props.icon\"\n      @click=\"(e: MouseEvent) => handleClick(e)\"\n    />\n  </template>\n  <template v-else-if=\"props.icon && props.icon.includes(':')\">\n    <Icon\n      :class=\"iconClass\"\n      :style=\"{ fontSize: iconSize }\"\n      v-bind=\"$attrs\"\n      :icon=\"props.prefix ? `@${props.prefix}:${props.icon}` : props.icon\"\n      :color=\"props.color\"\n      @click=\"(e: MouseEvent) => handleClick(e)\"\n    />\n  </template>\n  <template v-else>\n    <svg\n      :class=\"iconClass\"\n      :style=\"{ fontSize: iconSize, color: props.color }\"\n      v-bind=\"$attrs\"\n      @click=\"(e: MouseEvent) => handleClick(e)\"\n    >\n      <use :xlink:href=\"`#icon-${props.icon}`\" fill=\"color\" />\n    </svg>\n  </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from \"vue\";\nimport { Icon } from \"@iconify/vue\";\n\nexport interface ISvgIconProp {\n  class?: string;\n  icon: string;\n  color?: string;\n  size?: number | string;\n  disabled?: boolean;\n  prefix?: string; // iconify 前缀\n}\nconst props = withDefaults(defineProps<ISvgIconProp>(), {\n  class: \"\",\n  color: undefined,\n  size: undefined,\n  disabled: false,\n});\nconst iconClass = computed(() => {\n  let classStr = \"svg-icon\";\n  if (props.class) {\n    classStr += ` ${props.class}`;\n  }\n  if (props.disabled) {\n    classStr += ` disabled-svg`;\n  }\n  return classStr;\n});\n\nconst iconSize = computed(() => {\n  if (props.size !== undefined) {\n    return Number.isNaN(props.size) ? props.size : `${props.size}px`;\n  }\n  return undefined;\n});\n\nconst emits = defineEmits([\"click\"]);\nfunction handleClick(e: MouseEvent) {\n  if (!props.disabled) {\n    emits(\"click\", e);\n  }\n}\n</script>\n\n<style scoped>\n.svg-icon {\n  width: 1em;\n  height: 1em;\n  vertical-align: -0.125em;\n  fill: currentColor;\n  overflow: hidden;\n  position: relative;\n}\n.svg-icon.disabled-svg,\n.svg-icon.disabled-svg:focus,\n.svg-icon.disabled-svg:hover {\n  opacity: 0.5;\n  cursor: not-allowed;\n}\n</style>\n","import { addAPIProvider, disableCache } from \"@iconify/vue\";\nimport SvgIcon from \"./svg-icon.vue\";\nimport type { App } from \"vue\";\n\ninterface SvgIconOption {\n  iconOrigin?: string;\n  iconPrefix?: string;\n}\n\ndisableCache(\"all\");\n\nconst svgIcon = {\n  install(app: App, options?: SvgIconOption): void {\n    const prefix = options?.iconPrefix;\n    if (prefix && options?.iconOrigin) {\n      addAPIProvider(prefix, {\n        resources: [options?.iconOrigin],\n      });\n    }\n    app.component(\"SvgIcon\", SvgIcon);\n  },\n};\n\nexport default svgIcon;\n"],"names":["matchIconName","stringToIcon","value","validate","allowSimpleName","provider","colonSeparated","name2","prefix","result","validateIconName","name","dashSeparated","icon","defaultIconDimensions","defaultIconTransformations","defaultIconProps","defaultExtendedIconProps","mergeIconTransformations","obj1","obj2","rotate","mergeIconData","parent","child","key","getIconsTree","data","names","icons","aliases","resolved","resolve","internalGetIconData","tree","currentProps","parse","parseIconSet","callback","item","optionalPropertyDefaults","checkOptionalProps","defaults","prop","quicklyValidateIconSet","obj","dataStorage","newStorage","getStorage","providerStorage","addIconSet","storage","addIconToStorage","simpleNames","allowSimpleNames","allow","getIconData","iconName","addIcon","addCollection","added","defaultIconSizeCustomisations","defaultIconCustomisations","unitsSplit","unitsTest","calculateSize","size","ratio","precision","oldParts","newParts","code","isNumber","num","isUnsetKeyword","iconToSVG","customisations","fullIcon","fullCustomisations","box","body","props","transformations","hFlip","vFlip","rotation","tempValue","customisationsWidth","customisationsHeight","boxWidth","boxHeight","width","height","attributes","setAttr","regex","randomPrefix","counter","replaceIDs","ids","match","suffix","id","newID","escapedID","setAPIModule","getAPIModule","createAPIConfig","source","resources","configStorage","fallBackAPISources","fallBackAPI","addAPIProvider","customConfig","config","getAPIConfig","fetchModule","calculateMaxLength","maxHostLength","url","shouldAbort","status","prepare","results","maxLength","type","length","index","getPath","fetchAPIModule","host","params","path","iconsList","urlParams","uri","defaultError","response","sortIcons","a","b","lastIcon","localStorage","list","removeCallback","storages","items","row","updateCallbacks","hasPending","oldLength","idCounter","storeCallback","pendingSources","abort","listToIcons","defaultConfig","sendQuery","payload","query","done","resourcesCount","startIndex","nextIndex","startTime","queriesSent","lastError","timer","queue","doneCallbacks","resetTimer","subscribe","overwrite","getQueryStatus","failQuery","clearQueue","moduleResponse","isError","queued","execNext","resource","status2","initRedundancy","cfg","queries","cleanup","queryCallback","doneCallback","query2","error","find","emptyCallback$1","redundancyCache","getRedundancyCache","redundancy","cachedReundancy","sendAPIQuery","target","send","api","cached","moduleKey","browserCacheVersion","browserCachePrefix","browserCacheCountKey","browserCacheVersionKey","browserStorageHour","browserStorageCacheExpiration","getStoredItem","func","setStoredItem","removeStoredItem","setBrowserStorageItemsCount","getBrowserStorageItemsCount","browserStorageConfig","browserStorageEmptyItems","browserStorageStatus","setBrowserStorageStatus","_window","getBrowserStorage","attr","iterateBrowserStorage","version","total2","i","minTime","parseItem","total","initBrowserStorage","iconSet","lastModified","updateLastModified","lastValue","storeInBrowserStorage","store","set","emptyCallback","loadedNewIcons","loadNewIcons","icons2","parsed","pending","err","loadIcons","cleanedIcons","sortedIcons","callCallback","newIcons","sources","lastProvider","lastPrefix","providerNewIcons","pendingQueue","toggleBrowserCache","mergeCustomisations","valueType","separator","flipFromString","custom","flip","str","rotateFromString","defaultValue","units","value2","split","iconToHTML","renderAttribsHTML","encodeSVGforURL","svg","svgToData","svgToURL","defaultExtendedIconCustomisations","svgDefaults","commonProps","monotoneProps","coloredProps","propsToAdd","propsToAddTo","customisationAliases","fixSize","render","componentProps","mode","style","propsStyle","customStyle","alias","renderAttribs","localCounter","h","useMask","html","disableCache","preload","providers","emptyIcon","Icon","defineComponent","onload","classes","newProps","iconClass","computed","classStr","iconSize","handleClick","e","emits","app","options","SvgIcon"],"mappings":"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"}