UNPKG

@styled/typescript-styled-plugin

Version:

TypeScript language service plugin that adds IntelliSense for styled components

51 lines 2.43 kB
"use strict"; 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