{"version":3,"sources":["jsdelivr-header.js","/npm/@iconify/vue@4.1.1/dist/iconify.js"],"names":[],"mappings":"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","file":"/npm/@iconify/vue@4.1.1/dist/iconify.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@iconify/vue@4.1.1/dist/iconify.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'vue'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Icon = {}, global.Vue));\n})(this, (function (exports, vue) { 'use strict';\n\n  const matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\n  const 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  };\n  const 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\n  const defaultIconDimensions = Object.freeze(\n    {\n      left: 0,\n      top: 0,\n      width: 16,\n      height: 16\n    }\n  );\n  const defaultIconTransformations = Object.freeze({\n    rotate: 0,\n    vFlip: false,\n    hFlip: false\n  });\n  const defaultIconProps = Object.freeze({\n    ...defaultIconDimensions,\n    ...defaultIconTransformations\n  });\n  const defaultExtendedIconProps = Object.freeze({\n    ...defaultIconProps,\n    body: \"\",\n    hidden: false\n  });\n\n  function 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\n  function 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\n  function 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\n  function 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\n  function 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\n  const optionalPropertyDefaults = {\n    provider: \"\",\n    aliases: {},\n    not_found: {},\n    ...defaultIconDimensions\n  };\n  function 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  }\n  function 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\n  const dataStorage = /* @__PURE__ */ Object.create(null);\n  function newStorage(provider, prefix) {\n    return {\n      provider,\n      prefix,\n      icons: /* @__PURE__ */ Object.create(null),\n      missing: /* @__PURE__ */ new Set()\n    };\n  }\n  function getStorage(provider, prefix) {\n    const providerStorage = dataStorage[provider] || (dataStorage[provider] = /* @__PURE__ */ Object.create(null));\n    return providerStorage[prefix] || (providerStorage[prefix] = newStorage(provider, prefix));\n  }\n  function 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  }\n  function 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  }\n  function 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\n  let simpleNames = false;\n  function allowSimpleNames(allow) {\n    if (typeof allow === \"boolean\") {\n      simpleNames = allow;\n    }\n    return simpleNames;\n  }\n  function 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  }\n  function 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  }\n  function 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  }\n  function iconExists(name) {\n    return !!getIconData(name);\n  }\n  function getIcon(name) {\n    const result = getIconData(name);\n    return result ? {\n      ...defaultIconProps,\n      ...result\n    } : null;\n  }\n\n  const defaultIconSizeCustomisations = Object.freeze({\n    width: null,\n    height: null\n  });\n  const defaultIconCustomisations = Object.freeze({\n    // Dimensions\n    ...defaultIconSizeCustomisations,\n    // Transformations\n    ...defaultIconTransformations\n  });\n\n  const unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\n  const unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\n  function 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\n  const isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\n  function 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\n  const regex = /\\sid=\"(\\S+)\"/g;\n  const randomPrefix = \"IconifyId\" + Date.now().toString(16) + (Math.random() * 16777216 | 0).toString(16);\n  let counter = 0;\n  function 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\n  const storage = /* @__PURE__ */ Object.create(null);\n  function setAPIModule(provider, item) {\n    storage[provider] = item;\n  }\n  function getAPIModule(provider) {\n    return storage[provider] || storage[\"\"];\n  }\n\n  function 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  }\n  const configStorage = /* @__PURE__ */ Object.create(null);\n  const fallBackAPISources = [\n    \"https://api.simplesvg.com\",\n    \"https://api.unisvg.com\"\n  ];\n  const fallBackAPI = [];\n  while (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  }\n  configStorage[\"\"] = createAPIConfig({\n    resources: [\"https://api.iconify.design\"].concat(fallBackAPI)\n  });\n  function addAPIProvider(provider, customConfig) {\n    const config = createAPIConfig(customConfig);\n    if (config === null) {\n      return false;\n    }\n    configStorage[provider] = config;\n    return true;\n  }\n  function getAPIConfig(provider) {\n    return configStorage[provider];\n  }\n  function listAPIProviders() {\n    return Object.keys(configStorage);\n  }\n\n  const detectFetch = () => {\n    let callback;\n    try {\n      callback = fetch;\n      if (typeof callback === \"function\") {\n        return callback;\n      }\n    } catch (err) {\n    }\n  };\n  let fetchModule = detectFetch();\n  function setFetch(fetch2) {\n    fetchModule = fetch2;\n  }\n  function getFetch() {\n    return fetchModule;\n  }\n  function 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  }\n  function shouldAbort(status) {\n    return status === 404;\n  }\n  const 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  };\n  function getPath(provider) {\n    if (typeof provider === \"string\") {\n      const config = getAPIConfig(provider);\n      if (config) {\n        return config.path;\n      }\n    }\n    return \"/\";\n  }\n  const 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  };\n  const fetchAPIModule = {\n    prepare,\n    send\n  };\n\n  function 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\n  function 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  }\n  function 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  }\n  let idCounter = 0;\n  function 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\n  function 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\n  var defaultConfig = {\n    resources: [],\n    index: 0,\n    timeout: 2e3,\n    rotate: 750,\n    random: false,\n    dataAfterTimeout: false\n  };\n\n  // src/query.ts\n  function 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\n  function 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\n  function emptyCallback$1() {\n  }\n  const redundancyCache = /* @__PURE__ */ Object.create(null);\n  function 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  }\n  function 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\n  const browserCacheVersion = \"iconify2\";\n  const browserCachePrefix = \"iconify\";\n  const browserCacheCountKey = browserCachePrefix + \"-count\";\n  const browserCacheVersionKey = browserCachePrefix + \"-version\";\n  const browserStorageHour = 36e5;\n  const browserStorageCacheExpiration = 168;\n\n  function getStoredItem(func, key) {\n    try {\n      return func.getItem(key);\n    } catch (err) {\n    }\n  }\n  function setStoredItem(func, key, value) {\n    try {\n      func.setItem(key, value);\n      return true;\n    } catch (err) {\n    }\n  }\n  function removeStoredItem(func, key) {\n    try {\n      func.removeItem(key);\n    } catch (err) {\n    }\n  }\n\n  function setBrowserStorageItemsCount(storage, value) {\n    return setStoredItem(storage, browserCacheCountKey, value.toString());\n  }\n  function getBrowserStorageItemsCount(storage) {\n    return parseInt(getStoredItem(storage, browserCacheCountKey)) || 0;\n  }\n\n  const browserStorageConfig = {\n    local: true,\n    session: true\n  };\n  const browserStorageEmptyItems = {\n    local: /* @__PURE__ */ new Set(),\n    session: /* @__PURE__ */ new Set()\n  };\n  let browserStorageStatus = false;\n  function setBrowserStorageStatus(status) {\n    browserStorageStatus = status;\n  }\n\n  let _window = typeof window === \"undefined\" ? {} : window;\n  function 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\n  function 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\n  function 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\n  function 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  }\n  function 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\n  function emptyCallback() {\n  }\n  function loadedNewIcons(storage) {\n    if (!storage.iconsLoaderFlag) {\n      storage.iconsLoaderFlag = true;\n      setTimeout(() => {\n        storage.iconsLoaderFlag = false;\n        updateCallbacks(storage);\n      });\n    }\n  }\n  function 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  }\n  const 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  };\n  const 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\n  function 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\n  function 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\n  const separator = /[\\s,]+/;\n  function 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\n  function 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\n  function 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\n  function encodeSVGforURL(svg) {\n    return svg.replace(/\"/g, \"'\").replace(/%/g, \"%25\").replace(/#/g, \"%23\").replace(/</g, \"%3C\").replace(/>/g, \"%3E\").replace(/\\s+/g, \" \");\n  }\n  function svgToData(svg) {\n    return \"data:image/svg+xml,\" + encodeSVGforURL(svg);\n  }\n  function svgToURL(svg) {\n    return 'url(\"' + svgToData(svg) + '\")';\n  }\n\n  const defaultExtendedIconCustomisations = {\n      ...defaultIconCustomisations,\n      inline: false,\n  };\n\n  /**\n   * Default SVG attributes\n   */\n  const 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   */\n  const commonProps = {\n      display: 'inline-block',\n  };\n  const monotoneProps = {\n      backgroundColor: 'currentColor',\n  };\n  const coloredProps = {\n      backgroundColor: 'transparent',\n  };\n  // Dynamically add common props to variables above\n  const propsToAdd = {\n      Image: 'var(--svg)',\n      Repeat: 'no-repeat',\n      Size: '100% 100%',\n  };\n  const propsToAddTo = {\n      webkitMask: monotoneProps,\n      mask: monotoneProps,\n      background: coloredProps,\n  };\n  for (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   */\n  const 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   */\n  function fixSize(value) {\n      return value + (value.match(/^[-0-9.]+$/) ? 'px' : '');\n  }\n  /**\n   * Render icon\n   */\n  const render = (\n  // Icon must be validated before calling this function\n  icon, \n  // Partial properties\n  props) => {\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 vue.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 vue.h('span', componentProps);\n  };\n\n  /**\n   * Enable cache\n   */\n  function enableCache(storage) {\n      toggleBrowserCache(storage, true);\n  }\n  /**\n   * Disable cache\n   */\n  function disableCache(storage) {\n      toggleBrowserCache(storage, false);\n  }\n  /**\n   * Initialise stuff\n   */\n  // Enable short names\n  allowSimpleNames(true);\n  // Set API module\n  setAPIModule('', fetchAPIModule);\n  /**\n   * Browser stuff\n   */\n  if (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   */\n  const emptyIcon = {\n      ...defaultIconProps,\n      body: '',\n  };\n  const Icon = vue.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   */\n  const _api = {\n      getAPIConfig,\n      setAPIModule,\n      sendAPIQuery,\n      setFetch,\n      getFetch,\n      listAPIProviders,\n  };\n\n  exports.Icon = Icon;\n  exports._api = _api;\n  exports.addAPIProvider = addAPIProvider;\n  exports.addCollection = addCollection;\n  exports.addIcon = addIcon;\n  exports.buildIcon = iconToSVG;\n  exports.calculateSize = calculateSize;\n  exports.disableCache = disableCache;\n  exports.enableCache = enableCache;\n  exports.getIcon = getIcon;\n  exports.iconExists = iconExists;\n  exports.listIcons = listIcons;\n  exports.loadIcon = loadIcon;\n  exports.loadIcons = loadIcons;\n  exports.replaceIDs = replaceIDs;\n\n}));\n"]}