@styled/typescript-styled-plugin
Version:
TypeScript language service plugin that adds IntelliSense for styled components
51 lines • 2.43 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTemplateSettings = exports.StyledPlugin = void 0;
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
const typescript_template_language_service_decorator_1 = require("typescript-template-language-service-decorator");
const _configuration_1 = require("./_configuration");
const _language_service_1 = require("./_language-service");
const _logger_1 = require("./_logger");
const _substituter_1 = require("./_substituter");
const _virtual_document_provider_1 = require("./_virtual-document-provider");
class StyledPlugin {
constructor(typescript) {
this.typescript = typescript;
this._configManager = new _configuration_1.ConfigurationManager();
}
create(info) {
this._logger = new _logger_1.LanguageServiceLogger(info);
this._configManager.updateFromPluginConfig(info.config);
this._logger.log('config: ' + JSON.stringify(this._configManager.config));
if (!isValidTypeScriptVersion(this.typescript)) {
this._logger.log('Invalid typescript version detected. TypeScript 3.x required.');
return info.languageService;
}
return (0, typescript_template_language_service_decorator_1.decorateWithTemplateLanguageService)(this.typescript, info.languageService, info.project, new _language_service_1.StyledTemplateLanguageService(this.typescript, this._configManager, new _virtual_document_provider_1.StyledVirtualDocumentFactory(), this._logger), getTemplateSettings(this._configManager), { logger: this._logger });
}
onConfigurationChanged(config) {
if (this._logger) {
this._logger.log('onConfigurationChanged');
}
this._configManager.updateFromPluginConfig(config);
}
}
exports.StyledPlugin = StyledPlugin;
function getTemplateSettings(configManager) {
return {
get tags() {
return configManager.config.tags;
},
enableForStringWithSubstitutions: true,
getSubstitutions(templateString, spans) {
return (0, _substituter_1.getSubstitutions)(templateString, spans);
},
};
}
exports.getTemplateSettings = getTemplateSettings;
function isValidTypeScriptVersion(typescript) {
const [major] = typescript.version.split('.');
return +major >= 3;
}
//# sourceMappingURL=_plugin.js.map
;