/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { Codicon } from './codicons.js'; export var ThemeColor; (function (ThemeColor) { function isThemeColor(obj) { return obj && typeof obj === 'object' && typeof obj.id === 'string'; } ThemeColor.isThemeColor = isThemeColor; })(ThemeColor || (ThemeColor = {})); export var ThemeIcon; (function (ThemeIcon) { ThemeIcon.iconNameSegment = '[A-Za-z0-9]+'; ThemeIcon.iconNameExpression = '[A-Za-z0-9-]+'; ThemeIcon.iconModifierExpression = '~[A-Za-z]+'; ThemeIcon.iconNameCharacter = '[A-Za-z0-9~-]'; const ThemeIconIdRegex = new RegExp(`^(${ThemeIcon.iconNameExpression})(${ThemeIcon.iconModifierExpression})?$`); function asClassNameArray(icon) { const match = ThemeIconIdRegex.exec(icon.id); if (!match) { return asClassNameArray(Codicon.error); } const [, id, modifier] = match; const classNames = ['codicon', 'codicon-' + id]; if (modifier) { classNames.push('codicon-modifier-' + modifier.substring(1)); } return classNames; } ThemeIcon.asClassNameArray = asClassNameArray; function asClassName(icon) { return asClassNameArray(icon).join(' '); } ThemeIcon.asClassName = asClassName; function asCSSSelector(icon) { return '.' + asClassNameArray(icon).join('.'); } ThemeIcon.asCSSSelector = asCSSSelector; function isThemeIcon(obj) { return obj && typeof obj === 'object' && typeof obj.id === 'string' && (typeof obj.color === 'undefined' || ThemeColor.isThemeColor(obj.color)); } ThemeIcon.isThemeIcon = isThemeIcon; const _regexFromString = new RegExp(`^\\$\\((${ThemeIcon.iconNameExpression}(?:${ThemeIcon.iconModifierExpression})?)\\)$`); function fromString(str) { const match = _regexFromString.exec(str); if (!match) { return undefined; } const [, name] = match; return { id: name }; } ThemeIcon.fromString = fromString; function fromId(id) { return { id }; } ThemeIcon.fromId = fromId; function modify(icon, modifier) { let id = icon.id; const tildeIndex = id.lastIndexOf('~'); if (tildeIndex !== -1) { id = id.substring(0, tildeIndex); } if (modifier) { id = `${id}~${modifier}`; } return { id }; } ThemeIcon.modify = modify; function getModifier(icon) { const tildeIndex = icon.id.lastIndexOf('~'); if (tildeIndex !== -1) { return icon.id.substring(tildeIndex + 1); } return undefined; } ThemeIcon.getModifier = getModifier; function isEqual(ti1, ti2) { var _a, _b; return ti1.id === ti2.id && ((_a = ti1.color) === null || _a === void 0 ? void 0 : _a.id) === ((_b = ti2.color) === null || _b === void 0 ? void 0 : _b.id); } ThemeIcon.isEqual = isEqual; })(ThemeIcon || (ThemeIcon = {}));