{"version":3,"file":"sprite.cjs","names":["resolveContainer","insertSvg","err","createIconlyError"],"sources":["../src/sprite.ts"],"sourcesContent":["import { insertSvg, resolveContainer } from './dom';\nimport { createIconlyError } from './errors';\nimport { err } from './result';\nimport type { IconlyIcon, Result, SpriteConfig, SpriteInstance } from './types';\n\nconst escapeAttr = (value: string): string =>\n  value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\"/g, '&quot;').replace(/>/g, '&gt;');\n\nexport const buildSpriteString = (icons: IconlyIcon[]): string => {\n  const symbols = icons\n    .map(\n      (icon) =>\n        `<symbol id=\"${escapeAttr(icon.name)}\" viewBox=\"${escapeAttr(icon.viewBox)}\">${icon.body}</symbol>`,\n    )\n    .join('');\n\n  return `<svg xmlns=\"http://www.w3.org/2000/svg\">${symbols}</svg>`;\n};\n\nexport const createSprite = (config: SpriteConfig): SpriteInstance => {\n  const { icons, container, sanitize } = config;\n\n  return {\n    render: (): Result<void> => {\n      try {\n        const containerResult = resolveContainer(container);\n\n        if (!containerResult.ok) {\n          return containerResult;\n        }\n\n        return insertSvg(containerResult.value, buildSpriteString(icons), { sanitize });\n      } catch (error: unknown) {\n        return err(\n          createIconlyError('unexpected_error', 'Unexpected error while rendering sprite.', error),\n        );\n      }\n    },\n  };\n};\n\nexport type { IconlyIcon, SpriteConfig, SpriteInstance, SvgSanitizer } from './types';\n"],"mappings":";;;;AAKA,MAAM,cAAc,UAClB,MAAM,QAAQ,MAAM,OAAO,CAAC,CAAC,QAAQ,MAAM,MAAM,CAAC,CAAC,QAAQ,MAAM,QAAQ,CAAC,CAAC,QAAQ,MAAM,MAAM;AAEjG,MAAa,qBAAqB,UAAgC;CAQhE,OAAO,2CAPS,MACb,KACE,SACC,eAAe,WAAW,KAAK,IAAI,EAAE,aAAa,WAAW,KAAK,OAAO,EAAE,IAAI,KAAK,KAAK,UAC7F,CAAC,CACA,KAAK,EAEgD,EAAE;AAC5D;AAEA,MAAa,gBAAgB,WAAyC;CACpE,MAAM,EAAE,OAAO,WAAW,aAAa;CAEvC,OAAO,EACL,cAA4B;EAC1B,IAAI;GACF,MAAM,kBAAkBA,6BAAiB,SAAS;GAElD,IAAI,CAAC,gBAAgB,IACnB,OAAO;GAGT,OAAOC,sBAAU,gBAAgB,OAAO,kBAAkB,KAAK,GAAG,EAAE,SAAS,CAAC;EAChF,SAAS,OAAgB;GACvB,OAAOC,gBACLC,8BAAkB,oBAAoB,4CAA4C,KAAK,CACzF;EACF;CACF,EACF;AACF"}