"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.StyleRegex = exports.LoaderName = exports.StylingType = void 0; const tooltip_1 = __importDefault(require("./tooltip")); var StylingType; (function (StylingType) { StylingType["CSS"] = "CSS"; StylingType["SASS"] = "SASS"; StylingType["LESS"] = "LESS"; StylingType["PostCSS"] = "PostCSS"; })(StylingType = exports.StylingType || (exports.StylingType = {})); var LoaderName; (function (LoaderName) { LoaderName["CSS"] = "css-loader"; LoaderName["SASS"] = "sass-loader"; LoaderName["STYLE"] = "style-loader"; LoaderName["LESS"] = "less-loader"; LoaderName["POSTCSS"] = "postcss-loader"; })(LoaderName = exports.LoaderName || (exports.LoaderName = {})); var StyleRegex; (function (StyleRegex) { StyleRegex["CSS"] = "/.css$/"; StyleRegex["SASS"] = "/.(sa|sc|c)ss$/"; StyleRegex["LESS"] = "/.(less|css)$/"; StyleRegex["PostCSS"] = "/.css$/"; })(StyleRegex = exports.StyleRegex || (exports.StyleRegex = {})); function style(self, stylingType) { const ExtractUseProps = []; let regExpForStyles = null; switch (stylingType) { case StylingType.CSS: regExpForStyles = StyleRegex.CSS; self.dependencies.push(LoaderName.CSS); if (!self.isProd) { self.dependencies.push(LoaderName.STYLE); ExtractUseProps.push({ loader: `"${LoaderName.STYLE}"`, }); } ExtractUseProps.push({ loader: `"${LoaderName.CSS}"`, options: { sourceMap: true, }, }); break; case StylingType.SASS: regExpForStyles = StyleRegex.SASS; self.dependencies.push('node-sass', LoaderName.SASS, LoaderName.CSS); if (!self.isProd) { self.dependencies.push(LoaderName.STYLE); ExtractUseProps.push({ loader: `"${LoaderName.STYLE}"`, }); } ExtractUseProps.push({ loader: `"${LoaderName.CSS}"`, options: { sourceMap: true, }, }, { loader: `"${LoaderName.SASS}"`, options: { sourceMap: true, }, }); break; case StylingType.LESS: regExpForStyles = StyleRegex.LESS; self.dependencies.push('less', LoaderName.LESS, LoaderName.CSS); if (!self.isProd) { self.dependencies.push(LoaderName.STYLE); ExtractUseProps.push({ loader: `"${LoaderName.STYLE}"`, }); } ExtractUseProps.push({ loader: `"${LoaderName.CSS}"`, options: { sourceMap: true, }, }, { loader: `"${LoaderName.LESS}"`, options: { sourceMap: true, }, }); break; case StylingType.PostCSS: regExpForStyles = StyleRegex.PostCSS; self.configuration.config.topScope.push(tooltip_1.default.postcss(), "const autoprefixer = require('autoprefixer');", "const precss = require('precss');", '\n'); self.dependencies.push('precss', 'autoprefixer', LoaderName.CSS, LoaderName.POSTCSS); if (!self.isProd) { self.dependencies.push(LoaderName.STYLE); ExtractUseProps.push({ loader: `"${LoaderName.STYLE}"`, }); } ExtractUseProps.push({ loader: `"${LoaderName.CSS}"`, options: { importLoaders: 1, sourceMap: true, }, }, { loader: `"${LoaderName.POSTCSS}"`, options: { plugins: `function () { return [ precss, autoprefixer ]; }`, }, }); break; } return { ExtractUseProps, regExpForStyles }; } exports.default = style;