51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const { resolveScript } = require('./resolveScript')
 | |
| 
 | |
| module.exports = function selectBlock(
 | |
|   descriptor,
 | |
|   scopeId,
 | |
|   options,
 | |
|   loaderContext,
 | |
|   query,
 | |
|   appendExtension
 | |
| ) {
 | |
|   // template
 | |
|   if (query.type === `template`) {
 | |
|     if (appendExtension) {
 | |
|       loaderContext.resourcePath += '.' + (descriptor.template.lang || 'html')
 | |
|     }
 | |
|     loaderContext.callback(
 | |
|       null,
 | |
|       descriptor.template.content,
 | |
|       descriptor.template.map
 | |
|     )
 | |
|     return
 | |
|   }
 | |
| 
 | |
|   // script
 | |
|   if (query.type === `script`) {
 | |
|     const script = resolveScript(descriptor, scopeId, options, loaderContext)
 | |
|     if (appendExtension) {
 | |
|       loaderContext.resourcePath += '.' + (script.lang || 'js')
 | |
|     }
 | |
|     loaderContext.callback(null, script.content, script.map)
 | |
|     return
 | |
|   }
 | |
| 
 | |
|   // styles
 | |
|   if (query.type === `style` && query.index != null) {
 | |
|     const style = descriptor.styles[query.index]
 | |
|     if (appendExtension) {
 | |
|       loaderContext.resourcePath += '.' + (style.lang || 'css')
 | |
|     }
 | |
|     loaderContext.callback(null, style.content, style.map)
 | |
|     return
 | |
|   }
 | |
| 
 | |
|   // custom
 | |
|   if (query.type === 'custom' && query.index != null) {
 | |
|     const block = descriptor.customBlocks[query.index]
 | |
|     loaderContext.callback(null, block.content, block.map)
 | |
|     return
 | |
|   }
 | |
| }
 |