mirror of
https://github.com/Microsoft/vscode
synced 2024-08-28 05:19:39 +00:00
add parse-color to css extension
This commit is contained in:
parent
21a81d08b8
commit
3cda472710
|
@ -5,6 +5,7 @@
|
|||
'use strict';
|
||||
|
||||
import * as path from 'path';
|
||||
import * as parse from 'parse-color';
|
||||
|
||||
import { languages, window, commands, workspace, ExtensionContext, DocumentColorProvider, Color, CancellationToken, TextDocument, ColorInfo } from 'vscode';
|
||||
import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, RequestType, Range, TextEdit } from 'vscode-languageclient';
|
||||
|
@ -24,14 +25,23 @@ class ColorProvider implements DocumentColorProvider {
|
|||
async provideDocumentColors(document: TextDocument, token: CancellationToken): Promise<ColorInfo[]> {
|
||||
const ranges = await this.client.sendRequest(ColorSymbolRequest.type, document.uri.toString());
|
||||
|
||||
return ranges.map(r => {
|
||||
return ranges.reduce((result, r) => {
|
||||
const range = this.client.protocol2CodeConverter.asRange(r);
|
||||
const color = Color.fromHex('#000000');
|
||||
const value = document.getText(range);
|
||||
const parsedColor = parse(value);
|
||||
|
||||
if (!parsedColor || !parsedColor.rgba) {
|
||||
return result;
|
||||
}
|
||||
|
||||
const [red, green, blue, alpha] = parsedColor.rgba;
|
||||
const color = new Color(red, green, blue, alpha);
|
||||
const format = '#{red:X}{green:X}{blue:X}';
|
||||
const availableFormats = [format];
|
||||
|
||||
return new ColorInfo(range, color, format, availableFormats);
|
||||
});
|
||||
result.push(new ColorInfo(range, color, format, availableFormats));
|
||||
return result;
|
||||
}, []);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
21
extensions/css/client/src/typings/parse-color.d.ts
vendored
Normal file
21
extensions/css/client/src/typings/parse-color.d.ts
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
declare module "parse-color" {
|
||||
|
||||
interface Color {
|
||||
rgb: [number, number, number],
|
||||
hsl: [number, number, number],
|
||||
hsv: [number, number, number],
|
||||
cmyk: [number, number, number, number],
|
||||
keyword: string,
|
||||
hex: string,
|
||||
rgba: [number, number, number, number],
|
||||
hsla: [number, number, number, number],
|
||||
hsva: [number, number, number, number],
|
||||
cmyka: [number, number, number, number, number]
|
||||
}
|
||||
|
||||
function parse(value: string): Color;
|
||||
|
||||
module parse { }
|
||||
|
||||
export = parse;
|
||||
}
|
10
extensions/css/npm-shrinkwrap.json
generated
10
extensions/css/npm-shrinkwrap.json
generated
|
@ -2,6 +2,16 @@
|
|||
"name": "css",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"color-convert": {
|
||||
"version": "0.5.3",
|
||||
"from": "color-convert@>=0.5.0 <0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz"
|
||||
},
|
||||
"parse-color": {
|
||||
"version": "1.0.0",
|
||||
"from": "parse-color@latest",
|
||||
"resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz"
|
||||
},
|
||||
"vscode-jsonrpc": {
|
||||
"version": "3.2.0",
|
||||
"from": "vscode-jsonrpc@>=3.2.0 <4.0.0",
|
||||
|
|
|
@ -673,6 +673,7 @@
|
|||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"parse-color": "^1.0.0",
|
||||
"vscode-languageclient": "^3.2.0",
|
||||
"vscode-nls": "^2.0.2"
|
||||
},
|
||||
|
|
Loading…
Reference in a new issue