Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
import symbol from '../assets/twitter.svg';
// Import sprite instance which already contains twitter logo required above
import sprite from 'svg-sprite-loader/runtime/sprite.build';
// Render sprite
const spriteContent = sprite.stringify();
const pageContent = `
${spriteContent}
<svg viewBox="${symbol.viewBox}">
</svg>
`;
let runtime;
let symbolId = symbol.id.replace('--sprite', '');
if (extract) {
const spritePlaceholder = generateSpritePlaceholder(
symbol.request.file
);
const publicPath = stringify(publicPath) || '__webpack_public_path__';
const viewBoxParts = symbol.viewBox.split(' ');
const width = parseInt(viewBoxParts[2], 10);
const height = parseInt(viewBoxParts[3], 10);
const data = `{
id: ${stringify(symbolId)},
viewBox: ${stringify(symbol.viewBox)},
url: ${publicPath} + ${stringify(spritePlaceholder)},
width: ${width},
height: ${height},
toString: function () {
return this.url;
}
}`;
runtime = generateExport(data, esModule);
} else {
const spriteModuleAbsPath = path.isAbsolute(spriteModule)
? spriteModule
: path.join(context, spriteModule);
const symbolModuleAbsPath = path.isAbsolute(symbolModule)
? symbolModule
extract,
esModule,
spriteModule,
symbolModule,
runtimeCompat,
publicPath,
} = config;
let runtime;
let symbolId = symbol.id.replace('--sprite', '');
if (extract) {
const spritePlaceholder = generateSpritePlaceholder(
symbol.request.file
);
const publicPath = stringify(publicPath) || '__webpack_public_path__';
const viewBoxParts = symbol.viewBox.split(' ');
const width = parseInt(viewBoxParts[2], 10);
const height = parseInt(viewBoxParts[3], 10);
const data = `{
id: ${stringify(symbolId)},
viewBox: ${stringify(symbol.viewBox)},
url: ${publicPath} + ${stringify(spritePlaceholder)},
width: ${width},
height: ${height},
toString: function () {
return this.url;
}
}`;
let runtime;
let symbolId = symbol.id.replace('--sprite', '');
if (extract) {
const spritePlaceholder = generateSpritePlaceholder(symbol.request.file);
const publicPath = loaderContext._compiler.options.output.publicPath;
const viewBoxParts = symbol.viewBox.split(' ');
const width = parseInt(viewBoxParts[2], 10);
const height = parseInt(viewBoxParts[3], 10);
const data = `{
id: ${stringify(symbolId)},
viewBox: ${stringify(symbol.viewBox)},
url: ${publicPath} + ${stringify(spritePlaceholder)},
width: ${width},
height: ${height}
}`;
runtime = generateExport(data, esModule);
} else {
const spriteModuleImport = stringifyRequest({ context }, spriteModule);
const symbolModuleImport = stringifyRequest({ context }, symbolModule);
runtime = [
generateImport('SpriteSymbol', symbolModuleImport, esModule),
generateImport('sprite', spriteModuleImport, esModule),
generateImport('React', 'react', esModule),
`let symbol = new SpriteSymbol(${stringifySymbol(symbol)})`,
'sprite.add(symbol)',
let symbolId = symbol.id.replace('--sprite', '');
if (extract) {
const spritePlaceholder = generateSpritePlaceholder(
symbol.request.file
);
const publicPath = stringify(publicPath) || '__webpack_public_path__';
const viewBoxParts = symbol.viewBox.split(' ');
const width = parseInt(viewBoxParts[2], 10);
const height = parseInt(viewBoxParts[3], 10);
const data = `{
id: ${stringify(symbolId)},
viewBox: ${stringify(symbol.viewBox)},
url: ${publicPath} + ${stringify(spritePlaceholder)},
width: ${width},
height: ${height},
toString: function () {
return this.url;
}
}`;
runtime = generateExport(data, esModule);
} else {
const spriteModuleAbsPath = path.isAbsolute(spriteModule)
? spriteModule
: path.join(context, spriteModule);
const symbolModuleAbsPath = path.isAbsolute(symbolModule)
? symbolModule
: path.join(context, symbolModule);
let runtime;
let symbolId = symbol.id.replace('--sprite-notrc', '');
if (extract) {
const spritePlaceholder = generateSpritePlaceholder(
symbol.request.file
);
const publicPath = stringify(publicPath) || '__webpack_public_path__';
const viewBoxParts = symbol.viewBox.split(' ');
const width = parseInt(viewBoxParts[2], 10);
const height = parseInt(viewBoxParts[3], 10);
const data = `{
id: ${stringify(symbolId)},
viewBox: ${stringify(symbol.viewBox)},
url: ${publicPath} + ${stringify(spritePlaceholder)},
width: ${width},
height: ${height},
toString: function () {
return this.url;
}
}`;
runtime = generateExport(data, esModule);
} else {
const spriteModuleAbsPath = path.isAbsolute(spriteModule)
? spriteModule
: path.join(context, spriteModule);
const symbolModuleAbsPath = path.isAbsolute(symbolModule)
? symbolModule
const { extract, esModule, spriteModule, symbolModule, runtimeCompat } = config;
let runtime;
let symbolId = symbol.id.replace('--sprite', '');
if (extract) {
const spritePlaceholder = generateSpritePlaceholder(symbol.request.file);
const publicPath = loaderContext._compiler.options.output.publicPath;
const viewBoxParts = symbol.viewBox.split(' ');
const width = parseInt(viewBoxParts[2], 10);
const height = parseInt(viewBoxParts[3], 10);
const data = `{
id: ${stringify(symbolId)},
viewBox: ${stringify(symbol.viewBox)},
url: ${publicPath} + ${stringify(spritePlaceholder)},
width: ${width},
height: ${height}
}`;
runtime = generateExport(data, esModule);
} else {
const spriteModuleImport = stringifyRequest({ context }, spriteModule);
const symbolModuleImport = stringifyRequest({ context }, symbolModule);
runtime = [
generateImport('SpriteSymbol', symbolModuleImport, esModule),
generateImport('sprite', spriteModuleImport, esModule),
generateImport('React', 'react', esModule),
`let symbol = new SpriteSymbol(${stringifySymbol(symbol)})`,
module.exports = function runtimeGenerator({ symbol, config, context, loaderContext }) {
const { extract, esModule, spriteModule, symbolModule, runtimeCompat } = config;
let runtime;
let symbolId = symbol.id.replace('--sprite', '');
if (extract) {
const spritePlaceholder = generateSpritePlaceholder(symbol.request.file);
const publicPath = loaderContext._compiler.options.output.publicPath;
const viewBoxParts = symbol.viewBox.split(' ');
const width = parseInt(viewBoxParts[2], 10);
const height = parseInt(viewBoxParts[3], 10);
const data = `{
id: ${stringify(symbolId)},
viewBox: ${stringify(symbol.viewBox)},
url: ${publicPath} + ${stringify(spritePlaceholder)},
width: ${width},
height: ${height}
}`;
runtime = generateExport(data, esModule);
} else {
const spriteModuleImport = stringifyRequest({ context }, spriteModule);
const symbolModuleImport = stringifyRequest({ context }, symbolModule);
runtime = [
generateImport('SpriteSymbol', symbolModuleImport, esModule),
generateImport('sprite', spriteModuleImport, esModule),
generateImport('React', 'react', esModule),
const spritePlaceholder = generateSpritePlaceholder(symbol.request.file);
const publicPath = loaderContext._compiler.options.output.publicPath;
const viewBoxParts = symbol.viewBox.split(' ');
const width = parseInt(viewBoxParts[2], 10);
const height = parseInt(viewBoxParts[3], 10);
const data = `{
id: ${stringify(symbolId)},
viewBox: ${stringify(symbol.viewBox)},
url: ${publicPath} + ${stringify(spritePlaceholder)},
width: ${width},
height: ${height}
}`;
runtime = generateExport(data, esModule);
} else {
const spriteModuleImport = stringifyRequest({ context }, spriteModule);
const symbolModuleImport = stringifyRequest({ context }, symbolModule);
runtime = [
generateImport('SpriteSymbol', symbolModuleImport, esModule),
generateImport('sprite', spriteModuleImport, esModule),
generateImport('React', 'react', esModule),
`let symbol = new SpriteSymbol(${stringifySymbol(symbol)})`,
'sprite.add(symbol)',
];
let rcDisplayName = `${pascalCase(symbolId)}SpriteSymbolComponent`;
runtime.push(
`export default function ${rcDisplayName}(props) {
const viewBoxParts = symbol.viewBox.split(' ');
const width = parseInt(viewBoxParts[2], 10);
const height = parseInt(viewBoxParts[3], 10);
const data = `{
id: ${stringify(symbolId)},
viewBox: ${stringify(symbol.viewBox)},
url: ${publicPath} + ${stringify(spritePlaceholder)},
width: ${width},
height: ${height},
toString: function () {
return this.url;
}
}`;
runtime = generateExport(data, esModule);
} else {
const spriteModuleAbsPath = path.isAbsolute(spriteModule)
? spriteModule
: path.join(context, spriteModule);
const symbolModuleAbsPath = path.isAbsolute(symbolModule)
? symbolModule
: path.join(context, symbolModule);
const spriteModuleImport = stringifyRequest(
loaderContext,
spriteModuleAbsPath
);
const symbolModuleImport = stringifyRequest(
loaderContext,
symbolModuleAbsPath
);