vite-awesome-svg-loader
Version:
Imports SVGs as source code, base64 and data URI. Preserves stroke width, replaces colors with currentColor. Optimizes SVGs with SVGO. Creates SVG sprites.
1 lines • 29.2 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../integration-utils/dist/index.mjs","../src/utils.ts","../src/SvgImage.ts","../src/SvgIcon.ts"],"sourcesContent":["function e(e,t){if(t!=null&&typeof Symbol!==\"undefined\"&&t[Symbol.hasInstance]){return!!t[Symbol.hasInstance](e)}else{return e instanceof t}}function t(e){\"@swc/helpers - typeof\";return e&&typeof Symbol!==\"undefined\"&&e.constructor===Symbol?\"symbol\":typeof e}var r=Object.create;var n=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var a=function(e,t){return function(){return t||e((t={exports:{}}).exports,t),t.exports}};var s=function(e,r,f,a){var s=true,c=false,l=undefined;if(r&&(typeof r===\"undefined\"?\"undefined\":t(r))==\"object\"||typeof r==\"function\")try{var d=function(){var t=p.value;!u.call(e,t)&&t!==f&&n(e,t,{get:function(){return r[t]},enumerable:!(a=i(r,t))||a.enumerable})};for(var h=o(r)[Symbol.iterator](),p;!(s=(p=h.next()).done);s=true)d()}catch(e){c=true;l=e}finally{try{if(!s&&h.return!=null){h.return()}}finally{if(c){throw l}}}return e};var c=function(e,t,i){return i=e!=null?r(f(e)):{},s(t||!e||!e.__esModule?n(i,\"default\",{value:e,enumerable:!0}):i,e)};var l=a(function(e,t){\"use strict\";var r=function e(e,t,r){var n,i,o,f,u;t==null&&(t=100);function a(){var s=Date.now()-f;s<t&&s>=0?n=setTimeout(a,t-s):(n=null,r||(u=e.apply(o,i),o=i=null))}var s=function s(){o=this,i=arguments,f=Date.now();var s=r&&!n;return n||(n=setTimeout(a,t)),s&&(u=e.apply(o,i),o=i=null),u};return s.clear=function(){n&&(clearTimeout(n),n=null)},s.flush=function(){n&&(u=e.apply(o,i),o=i=null,clearTimeout(n),n=null)},s};r.debounce=r;t.exports=r});var d=a(function(r,n){\"use strict\";(function(){var r;function i(t,n){var o=e(this,i)?this:r;if(o.reset(n),typeof t==\"string\"&&t.length>0&&o.hash(t),o!==this)return o}i.prototype.hash=function(e){var t,r,n,i,o;switch(o=e.length,this.len+=o,r=this.k1,n=0,this.rem){case 0:r^=o>n?e.charCodeAt(n++)&65535:0;case 1:r^=o>n?(e.charCodeAt(n++)&65535)<<8:0;case 2:r^=o>n?(e.charCodeAt(n++)&65535)<<16:0;case 3:r^=o>n?(e.charCodeAt(n)&255)<<24:0,r^=o>n?(e.charCodeAt(n++)&65280)>>8:0}if(this.rem=o+this.rem&3,o-=this.rem,o>0){for(t=this.h1;r=r*11601+(r&65535)*0xcc9e0000&0xffffffff,r=r<<15|r>>>17,r=r*13715+(r&65535)*0x1b870000&0xffffffff,t^=r,t=t<<13|t>>>19,t=t*5+0xe6546b64&0xffffffff,!(n>=o);)r=e.charCodeAt(n++)&65535^(e.charCodeAt(n++)&65535)<<8^(e.charCodeAt(n++)&65535)<<16,i=e.charCodeAt(n++),r^=(i&255)<<24^(i&65280)>>8;switch(r=0,this.rem){case 3:r^=(e.charCodeAt(n+2)&65535)<<16;case 2:r^=(e.charCodeAt(n+1)&65535)<<8;case 1:r^=e.charCodeAt(n)&65535}this.h1=t}return this.k1=r,this},i.prototype.result=function(){var e,t;return e=this.k1,t=this.h1,e>0&&(e=e*11601+(e&65535)*0xcc9e0000&0xffffffff,e=e<<15|e>>>17,e=e*13715+(e&65535)*0x1b870000&0xffffffff,t^=e),t^=this.len,t^=t>>>16,t=t*51819+(t&65535)*0x85eb0000&0xffffffff,t^=t>>>13,t=t*44597+(t&65535)*0xc2b20000&0xffffffff,t^=t>>>16,t>>>0},i.prototype.reset=function(e){return this.h1=typeof e==\"number\"?e:0,this.rem=this.k1=this.len=0,this},r=new i,(typeof n===\"undefined\"?\"undefined\":t(n))<\"u\"?n.exports=i:this.MurmurHash3=i})()});var h=c(l()),p=c(d()),v=\"svg-symbols\",y=\"svg-\",m=\"data-count\";function b(e,r){if((typeof window===\"undefined\"?\"undefined\":t(window))>\"u\"||e===r)return{};var n=document.getElementById(v);if(n||(n=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\"),n.id=v,n.setAttribute(\"aria-hidden\",\"true\"),n.setAttribute(\"style\",\"position:fixed;top:-99999px;left:-99999px;z-index:0;opacity:0;\"),document.body.appendChild(n)),e){var i=y+new p.default(e).result();g(document.getElementById(i))}var o=y+new p.default(r).result(),f=document.getElementById(o);if(f)return f.setAttribute(m,C(f)+1+\"\"),{id:o,attrs:S(f)};var u=new DOMParser().parseFromString(r,\"application/xml\").firstElementChild;if(u===null||u===void 0?void 0:u.querySelector(\"parsererror\"))return console.error(\"Provided source code is not a valid SVG: \"+r),{id:o};if(!u)return console.error(\"Missing child in SVG: \"+r),{id:o};var a=document.createElementNS(\"http://www.w3.org/2000/svg\",\"symbol\");for(var s=0;s<u.attributes.length;s++){var c=u.attributes[s];a.setAttribute(c.name,c.value)}for(a.id=o,a.setAttribute(m,\"1\");u.children.length;)a.appendChild(u.children[0]);return n.appendChild(a),{id:o,attrs:S(a)}}function w(e){!e||(typeof window===\"undefined\"?\"undefined\":t(window))>\"u\"||g(typeof e==\"string\"?document.getElementById(e):e)}function g(e){if(!e)return;var t=C(e,1)-1;e.setAttribute(m,t+\"\"),t<=0&&(x.push(e),A())}var x=[],A=(0,h.default)(function(){for(var e=x.length-1;e>=0;e--){var t=x[e];t.parentElement&&C(t)<=0&&t.parentElement.removeChild(t),x.pop()}},5e3);function C(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!e)return t;var r=parseInt(e.getAttribute(m)||\"1\");return isNaN(r)?t:r}function S(e){var t=e.getAttribute(\"viewBox\")||\"\";if(!t)for(var r=0,n=[\"x\",\"y\",\"width\",\"height\"];r<n.length;r++){var i=n[r];var o=e.getAttribute(i);t+=(o||\"0\")+\" \"}return{viewBox:t,width:\"100%\",height:\"100%\"}}export{v as SVG_ID,y as SYMBOL_ID_PREFIX,m as USAGES_COUNT_ATTR,b as onSrcUpdate,w as onUnmount};/*! Bundled license information:\n\nimurmurhash/imurmurhash.js:\n (**\n * @preserve\n * JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013)\n *\n * @author <a href=\"mailto:jensyt@gmail.com\">Jens Taylor</a>\n * @see http://github.com/homebrewing/brauhaus-diff\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n *)\n*///# sourceMappingURL=index.mjs.map","export type ElementOrSelector = Element | string;\n\n/**\n * Appends given element to the given container\n * @param el Element to append\n * @param to Container\n * @returns Container\n */\nexport function mount(el: Element, to: ElementOrSelector) {\n const container = typeof to === \"string\" ? document.querySelector(to) : to;\n\n if (!container) {\n console.error(`No elements found for selector \"${to}\"`);\n return;\n }\n\n container.appendChild(el);\n return container;\n}\n\nconst IGNORE_ATTRS: Record<string, true> = {\n id: true,\n class: true,\n style: true,\n};\n\n/**\n * Sets attributes of an element\n * @param el Element to set attributes of\n * @param attrs Attributes object\n * @param clear If `true`, all element attributes will be cleared\n */\nexport function setAttrs(el: Element, attrs: Record<string, any>, clear = false) {\n if (clear) {\n // Copy attrs because el.removeAttribute() will break iteration order\n const attrsCopy: string[] = [];\n\n for (const attr of el.attributes) {\n if (!IGNORE_ATTRS[attr.name]) {\n attrsCopy.push(attr.name);\n }\n }\n\n for (const attr of attrsCopy) {\n el.removeAttribute(attr);\n }\n }\n\n for (const attr in attrs) {\n el.setAttribute(attr, attrs[attr]);\n }\n}\n\n/**\n * Sets style properties, works with CSS variables\n * @param el Element to set property of\n * @param prop Property to set, for example: `minHeight`, `--my-var`\n * @param value Value of a property\n */\nexport function setStyleProperty(el: HTMLElement, prop: string, value: string | undefined) {\n if (value) {\n if (el.style[prop as any] !== undefined) {\n el.style[prop as any] = value;\n } else {\n el.style.setProperty(prop, value);\n }\n } else {\n if (el.style[prop as any] !== undefined) {\n el.style[prop as any] = \"\";\n } else {\n el.style.removeProperty(prop);\n }\n }\n}\n","import { onSrcUpdate, onUnmount } from \"integration-utils\";\nimport { ElementOrSelector, mount, setAttrs } from \"./utils\";\n\n/**\n * Basic SVG image. Implements SVG sprites.\n *\n * Will create `<svg>` element that contains all symbols, add passed source code to it and reuse it later.\n *\n * ### Basic usage\n *\n * ```ts\n * import imageSrc from \"./path/to/image.svg\";\n * import anotherImageSrc from \"./path/to/another/image.svg\";\n * import { SvgImage } from \"vite-awesome-svg-loader/vanilla-integration\";\n *\n * const container = document.createElement(\"div\"); // Where to mount SVG\n * const image = new SvgImage(imageSrc, container); // Create image and mount it to the container\n * image.setSvgElAttrs({ id: \"my-svg-symbol\" }); // Change <svg> element attributes\n * image.setUseElAttrs({ className: \"my-svg-symbol-use-el\" }); // Change <use> element attributes\n * image.setSrc(anotherImageSrc); // Change SVG source code\n * console.log(image.getSrc()); // Get and print image source code\n * console.log(image.getContainer()); // Get and print image container\n * console.log(image.getSvgEl()); // Get and print image <svg> element\n * console.log(image.getUseEl()); // Get and print image <use> element\n * image.unmount(); // Remove image from the container\n *\n * // All operations are chainable, so you can do this:\n *\n * const image2 = new SvgImage(imageSrc)\n * .mount(container)\n * .setSvgElAttrs({ id: \"my-svg-symbol\" })\n * .setUseElAttrs({ className: \"my-svg-symbol-use-el\" });\n * ```\n *\n * ### Internal API\n *\n * You can use this API to extend `SvgImage`.\n *\n * Use `constructor()` and {@link SvgImage#mount} to change component markup.\n *\n * Use {@link SvgImage._updateSvgBeforeUserAttrsSet},\n * {@link SvgImage._updateSvgAfterUserAttrsSet},\n * {@link SvgImage._updateUseElBeforeUserAttrsSet},\n * {@link SvgImage._updateUseElAfterUserAttrsSet} hooks to set custom elements attributes.\n *\n * You probably don't need to override required element's attributes. If you actually need to do so, override\n * {@link SvgImage._updateSvgEl}\n *\n * @param src SVG source code\n * @param mountTo Element or selector of an element to mount image to. If not provided, image won't be mounted.\n */\nexport class SvgImage {\n /**\n * User-provided source code\n */\n protected _src: string | undefined;\n\n protected _container: Element | undefined;\n protected readonly _svgEl: SVGElement;\n protected readonly _useEl: SVGUseElement;\n\n /**\n * User-provided attributes\n */\n protected _svgAttrs: Record<string, any> = {};\n\n /**\n * User-provided attributes\n */\n protected _useElAttrs: Record<string, any> = {};\n\n /**\n * Last src update result\n */\n protected _updateSrcRes: ReturnType<typeof onSrcUpdate> = {};\n\n constructor(src: string, mountTo?: ElementOrSelector) {\n this._svgEl = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n this._useEl = document.createElementNS(\"http://www.w3.org/2000/svg\", \"use\");\n this._svgEl.appendChild(this._useEl);\n\n this.setSrc(src);\n\n if (mountTo) {\n this.mount(mountTo);\n }\n }\n\n /**\n * Mounts image to the given element\n * @param to Element or selector of an element to mount image to\n * @returns this\n */\n mount(to: ElementOrSelector) {\n this._container = mount(this._svgEl, to);\n return this;\n }\n\n /**\n * Removes image from the container\n * @returns this\n */\n unmount() {\n this._svgEl.parentElement?.removeChild(this._svgEl);\n this._container = undefined;\n onUnmount(this._updateSrcRes.id);\n return this;\n }\n\n /**\n * Sets `<svg>` element attributes. It won't remove id, class and style.\n * @param attrs Attributes to set\n * @returns this\n */\n setSvgElAttrs(attrs: Record<string, any>) {\n this._svgAttrs = attrs;\n return this._updateSvgEl();\n }\n\n /**\n * Updates SVG element: sets SVG source code, clears previous attributes, sets new attributes\n * @returns this\n */\n protected _updateSvgEl() {\n setAttrs(this._svgEl, { alt: \"\" }, true);\n this._updateSvgBeforeUserAttrsSet();\n setAttrs(this._svgEl, this._svgAttrs);\n this._updateSvgAfterUserAttrsSet();\n\n if (this._updateSrcRes.attrs) {\n setAttrs(this._svgEl, this._updateSrcRes.attrs);\n }\n\n return this;\n }\n\n /**\n * Called before user-provided attributes are set. You can use this function to set custom SVG element attributes.\n */\n protected _updateSvgBeforeUserAttrsSet() {};\n\n /**\n * Called after user-provided attributes are set. You can use this function to set custom SVG element attributes.\n */\n protected _updateSvgAfterUserAttrsSet() {};\n\n /**\n * Sets `<use>` element attributes. It won't remove id, class and style.\n * @param attrs Attributes to set\n * @returns this\n */\n setUseElAttrs(attrs: Record<string, any>) {\n this._useElAttrs = attrs;\n return this._updateUseEl();\n }\n\n /**\n * Updates `<use>` element attributes\n * @returns this\n */\n protected _updateUseEl() {\n setAttrs(this._useEl, {}, true);\n this._updateUseElBeforeUserAttrsSet();\n setAttrs(this._useEl, this._useElAttrs);\n this._updateUseElAfterUserAttrsSet();\n\n if (this._updateSrcRes.id) {\n setAttrs(this._useEl, { href: \"#\" + this._updateSrcRes.id });\n }\n\n return this;\n }\n\n /**\n * Called before user-provided attributes are set. You can use this function to set custom `<use>` element attributes.\n */\n protected _updateUseElBeforeUserAttrsSet() {};\n\n /**\n * Called after user-provided attributes are set. You can use this function to set custom `<use>` element attributes.\n */\n protected _updateUseElAfterUserAttrsSet() {};\n\n /**\n * Sets SVG source code\n * @param src SVG source code\n * @returns this\n */\n setSrc(src: string) {\n this._updateSrcRes = onSrcUpdate(this._src, src);\n this._src = src;\n this._updateSvgEl();\n this._updateUseEl();\n return this;\n }\n\n /**\n * @returns SVG source code\n */\n getSrc() {\n return this._src;\n }\n\n /**\n * @returns A container of this image, or `undefined`, if image is not mounted\n */\n getContainer() {\n return this._container;\n }\n\n /**\n * Returns `<svg>` element.\n *\n * To assign attributes, use {@link setSvgElAttrs} instead.\n *\n * @returns `<svg>` element\n */\n getSvgEl() {\n return this._svgEl;\n }\n\n /**\n * Returns `<use>` element.\n *\n * To assign attributes, use {@link setSvgElAttrs} instead.\n *\n * @returns `<use>` element\n */\n getUseEl() {\n return this._useEl;\n }\n}\n","import { onUnmount } from \"integration-utils\";\nimport { SvgImage } from \"./SvgImage\";\nimport { ElementOrSelector, mount, setAttrs, setStyleProperty } from \"./utils\";\n\nconst DEFAULT_COLOR_TRANSITION = \"0.3s linear\";\n\n/**\n * Basic SVG icon, extends {@link SvgImage}.\n *\n * Usage:\n *\n * ```ts\n * import iconSrc from \"./path/to/icon.svg\";\n *\n * const icon = new SvgIcon(iconSrc, \".my-container\") // Create and mount icon\n * .setContainerAttrs({ title: \"My icon\" }) // Set container attributes\n * .setColor(\"red\") // Set icon color to red\n * .setColorTransition(\"0.2s ease-out\"); // Change icon color transition\n * ```\n *\n * ### Internal API\n *\n * You can use this API to extend `SvgIcon`. This API is the same as in {@link SvgImage}, but with additional methods.\n *\n * Use {@link SvgIcon._updateWrapperBeforeUserAttrsSet}, {@link SvgIcon._updateWrapperAfterUserAttrsSet} to set custom\n * wrapper (`<span>`) attributes.\n *\n * {@link SvgIcon._updateSvgBeforeUserAttrsSet} should call `super._updateSvgBeforeUserAttrsSet()`.\n */\nexport class SvgIcon extends SvgImage {\n protected _span: HTMLSpanElement;\n protected _size: string | undefined;\n protected _color: string | undefined;\n protected _colorTransition: string | undefined;\n\n constructor(src: string, mountTo?: ElementOrSelector) {\n super(src);\n this._span = document.createElement(\"span\");\n this._setWrapperClass();\n this._span.appendChild(this._svgEl);\n this.setColorTransition();\n\n if (mountTo) {\n this.mount(mountTo);\n }\n }\n\n mount(to: ElementOrSelector): this {\n this._container = mount(this._span, to);\n return this;\n }\n\n unmount(): this {\n this._span.parentElement?.removeChild(this._span);\n this._container = undefined;\n onUnmount(this._updateSrcRes.id);\n return this;\n }\n\n protected _updateSvgBeforeUserAttrsSet(): void {\n setAttrs(this._svgEl, { \"aria-hidden\": \"true\" });\n }\n\n /**\n * Sets wrapper (`<span>`) element attributes.\n *\n * **Warning**: you can't change class, size, color and color transition using this method\n *\n * @param attrs Attributes to set\n * @returns this\n */\n setWrapperAttrs(attrs: Record<string, any>) {\n setAttrs(this._span, {}, true);\n\n this._updateWrapperBeforeUserAttrsSet();\n setAttrs(this._span, attrs);\n this._updateWrapperAfterUserAttrsSet();\n\n this.setSize(this._size);\n this.setColor(this._color);\n this.setColorTransition(this._colorTransition);\n this._setWrapperClass();\n return this;\n }\n\n /**\n * Called before user-provided attributes are set. You can use this function to set custom wrapper (`<span>`) attributes.\n */\n protected _updateWrapperBeforeUserAttrsSet() {};\n\n /**\n * Called after user-provided attributes are set. You can use this function to set custom wrapper (`<span>`) attributes.\n */\n protected _updateWrapperAfterUserAttrsSet() {};\n\n protected _setWrapperClass() {\n this._span.classList.add(\"awesome-svg-loader-icon\", \"icon\");\n }\n\n /**\n * @returns Wrapper (`<span>`) element\n */\n getWrapper() {\n return this._span;\n }\n\n /**\n * Sets icon size. Empty string or `undefined` unsets size.\n * @param size Size to set, for example: `\"24px\"`, `\"1rem\"`\n * @returns this\n */\n setSize(size: string | undefined) {\n this._size = size;\n\n for (const prop of [\"width\", \"minWidth\", \"maxWidth\", \"height\", \"minHeight\", \"maxHeight\"]) {\n setStyleProperty(this._span, prop, this._size);\n }\n\n return this;\n }\n\n /**\n * @returns Current icon size or empty string, if size is unset\n */\n getSize() {\n return this._size || \"\";\n }\n\n /**\n * Sets icon color. Empty string or `undefined` unsets color.\n * @param color Color to set, for example: `\"red\"`, `\"var(--icon-color)\"`.\n * @returns this\n */\n setColor(color: string | undefined) {\n this._color = color;\n setStyleProperty(this._span, \"--icon-color\", color);\n return this;\n }\n\n /**\n * @returns Current icon color or empty string, if color is unset\n */\n getColor() {\n return this._color || \"\";\n }\n\n /**\n * Sets icon color transition. This transition is applied when icon color is changed.\n * @param transition Transition to set, for example: `\"0.3s linear\"`, `\"var(--icon-transition)\"`\n * @returns this\n */\n setColorTransition(transition = DEFAULT_COLOR_TRANSITION) {\n this._colorTransition = transition;\n setStyleProperty(this._span, \"--icon-transition\", transition);\n return this;\n }\n\n /**\n * @returns Current icon color transition or empty string, if transition is unset\n */\n getColorTransition() {\n return this._colorTransition || \"\";\n }\n}\n"],"names":["e","t","r","n","i","o","f","u","a","s","c","l","d","p","h","v","y","m","b","g","C","S","w","x","A","mount","el","to","container","IGNORE_ATTRS","setAttrs","attrs","clear","attrsCopy","attr","setStyleProperty","prop","value","SvgImage","src","mountTo","_a","onUnmount","onSrcUpdate","DEFAULT_COLOR_TRANSITION","SvgIcon","size","color","transition"],"mappings":"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"}