You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.2 KiB
50 lines
1.2 KiB
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 |
|
} |
|
}
|
|
|