| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 
							- const { isAbsolute, join } = require('path');
 
- const { stringifyRequest } = require('loader-utils');
 
- const {
 
-   stringify,
 
-   stringifySymbol,
 
-   generateImport,
 
-   generateExport,
 
-   generateSpritePlaceholder
 
- } = require('./utils');
 
- /**
 
-  * @param {Object} params
 
-  * @param {SpriteSymbol} params.symbol - Sprite symbol instance {@see https://git.io/v9k8g}
 
-  * @param {SVGSpriteLoaderConfig} params.config - Parsed loader config
 
-  * @param {string} params.context - Context folder of current processing module
 
-  * @param {Object} params.loaderContext {@see https://webpack.js.org/api/loaders/#the-loader-context}
 
-  * @return {string}
 
-  */
 
- function runtimeGenerator(params) {
 
-   const { symbol, config, context, loaderContext } = params;
 
-   const { extract, esModule, spriteModule, symbolModule, runtimeCompat, publicPath } = config;
 
-   let runtime;
 
-   if (extract) {
 
-     const spritePlaceholder = generateSpritePlaceholder(symbol.request.file);
 
-     const path = stringify(publicPath) || '__webpack_public_path__';
 
-     const data = `{
 
-       id: ${stringify(symbol.useId)},
 
-       viewBox: ${stringify(symbol.viewBox)},
 
-       url: ${path} + ${stringify(spritePlaceholder)},
 
-       toString: function () {
 
-         return this.url;
 
-       }
 
-     }`;
 
-     runtime = generateExport(data, esModule);
 
-   } else {
 
-     const spriteModuleAbsPath = isAbsolute(spriteModule) ? spriteModule : join(context, spriteModule);
 
-     const symbolModuleAbsPath = isAbsolute(symbolModule) ? symbolModule : join(context, symbolModule);
 
-     const spriteModuleImport = stringifyRequest(loaderContext, spriteModuleAbsPath);
 
-     const symbolModuleImport = stringifyRequest(loaderContext, symbolModuleAbsPath);
 
-     runtime = [
 
-       generateImport('SpriteSymbol', symbolModuleImport, esModule),
 
-       generateImport('sprite', spriteModuleImport, esModule),
 
-       `var symbol = new SpriteSymbol(${stringifySymbol(symbol)})`,
 
-       'var result = sprite.add(symbol)',
 
-       generateExport(runtimeCompat ? '"#" + symbol.id' : 'symbol', esModule)
 
-     ].join(';\n');
 
-   }
 
-   return runtime;
 
- }
 
- module.exports = runtimeGenerator;
 
 
  |