UNPKG

tpa-style-webpack-plugin

Version:

A Webpack plugin that handles wix tpa styles, it separates static css file that injects dynamic style at runtime.

108 lines 4.46 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import { forEach, isNumber, reduceObj } from './utils'; import parseCssFont from 'parse-css-font'; export var wixStylesFontUtils = { getFullFontStyles: function (_a) { var fontStyles = _a.fontStyles, siteTextPresets = _a.siteTextPresets; var ret = {}; var parsedFontStyles = reduceObj(fontStyles, function (acc, _a) { var key = _a.key, value = _a.value; // Fix color styles due to '.' to '-' conversion acc[key.replace(/\./g, '-')] = parseWixStylesFont(value); return acc; }); var parsedSiteTextPresets = reduceObj(siteTextPresets, function (acc, _a) { var key = _a.key, preset = _a.value; var presetValue = cleanWixFontValue(preset.value); var parsedCssFont; try { parsedCssFont = parseCssFont(presetValue); } catch (e) { parsedCssFont = parseCssFont(presetValue + ' ;'); } acc[key] = __assign(__assign(__assign({}, parsedCssFont), { preset: key, editorKey: preset.editorKey }), (preset.displayName ? { displayName: preset.displayName } : {})); return acc; }); // Basic template colors forEach(parsedSiteTextPresets, function (preset, key) { return (ret[key] = parsedFontStyles[key] || preset); }); // LIGHT/MEDIUM/STRONG ret.LIGHT = parseCssFont('12px HelveticaNeueW01-45Ligh'); ret.MEDIUM = parseCssFont('12px HelveticaNeueW01-55Roma'); ret.STRONG = parseCssFont('12px HelveticaNeueW01-65Medi'); ret = __assign(__assign({}, ret), parsedFontStyles); forEach(ret, function (font, key) { ret[key] = __assign(__assign({}, font), { supports: { uppercase: true } }); if (['snellroundhandw', 'niconne'].some(function (fontName) { return font.family.indexOf(fontName) > -1; })) { ret[key].supports.uppercase = false; } if (ret[key].lineHeight === 'normal') { ret[key].lineHeight = '1.4em'; // Wix's normal line height is 1.4em... } if (ret[key].size === 'normal') { ret[key].size = '17px'; } }); return ret; }, toFontCssValue: function (value) { var size = isNumber(value.size) ? value.size + 'px' : value.size; var lineHeight = isNumber(value.lineHeight) ? value.lineHeight + 'px' : value.lineHeight; var family = value.family.map(function (val) { return (val.indexOf(' ') > -1 ? JSON.stringify(val) : val); }).join(','); return value.style + " " + value.variant + " " + value.weight + " " + size + "/" + lineHeight + " " + family; }, isStringHack: function (fontParam) { return fontParam.fontStyleParam === false; }, isValidFontParam: function (fontParam) { return fontParam.family !== undefined; }, }; function cleanWixFontValue(value) { return value.replace(/^font\s*:\s*/, '').replace(/\s;$/, ''); } function parseWixStylesFont(font) { var parsedValue; try { parsedValue = parseCssFont(cleanWixFontValue(font.value || '')); } catch (e) { parsedValue = { family: [], }; } var value = ''; if (font.style.italic) { value += 'italic '; } if (font.style.bold) { value += 'bold '; } var size = font.size || 'normal'; if (isNumber(size)) { size = size + "px"; } var lineHeight = font.lineHeight || parsedValue.lineHeight || 'normal'; if (isNumber(lineHeight)) { lineHeight = lineHeight + "px"; } value += size + "/" + lineHeight + " "; value += font.cssFontFamily || font.family || 'NONE_EXISTS_FONT'; var fontObj = __assign({}, parseCssFont(value)); if (parsedValue.family && parsedValue.family.length >= fontObj.family.length) { fontObj.family = parsedValue.family; } fontObj.underline = font.style && font.style.underline; return fontObj; } //# sourceMappingURL=wixStyleFontUtils.js.map