@thednp/color-picker 0.0.1-alpha1

Sign up to get free protection for your applications and to get access to all the features.
package/types/cp.d.ts ADDED
@@ -0,0 +1,411 @@
1
+ declare module "color-picker/src/js/util/colorNames" {
2
+ export default colorNames;
3
+ /**
4
+ * A complete list of web safe colors.
5
+ * @see https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json
6
+ * @type {string[]}
7
+ */
8
+ const colorNames: string[];
9
+ }
10
+ declare module "color-picker/src/js/color" {
11
+ /**
12
+ * Returns a new `Color` instance.
13
+ * @see https://github.com/bgrins/TinyColor
14
+ * @class
15
+ */
16
+ export default class Color {
17
+ /**
18
+ * @constructor
19
+ * @param {CP.ColorInput} input
20
+ * @param {CP.ColorOptions=} config
21
+ */
22
+ constructor(input: CP.ColorInput, config?: CP.ColorOptions | undefined);
23
+ /** @type {CP.ColorInput} */
24
+ originalInput: CP.ColorInput;
25
+ /** @type {number} */
26
+ r: number;
27
+ /** @type {number} */
28
+ g: number;
29
+ /** @type {number} */
30
+ b: number;
31
+ /** @type {number} */
32
+ a: number;
33
+ /** @type {boolean} */
34
+ ok: boolean;
35
+ /** @type {number} */
36
+ roundA: number;
37
+ /** @type {CP.ColorFormats} */
38
+ format: CP.ColorFormats;
39
+ /**
40
+ * Checks if the current input value is a valid colour.
41
+ * @returns {boolean} the query result
42
+ */
43
+ get isValid(): boolean;
44
+ /**
45
+ * Checks if the current colour requires a light text colour.
46
+ * @returns {boolean} the query result
47
+ */
48
+ get isDark(): boolean;
49
+ /**
50
+ * Returns the perceived luminance of a color.
51
+ * @see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
52
+ * @returns {number} a number in [0-1] range
53
+ */
54
+ get luminance(): number;
55
+ /**
56
+ * Returns the perceived brightness of the color.
57
+ * @returns {number} a number in [0-255] range
58
+ */
59
+ get brightness(): number;
60
+ /**
61
+ * Returns the color as a RGBA object.
62
+ * @returns {CP.RGBA}
63
+ */
64
+ toRgb(): CP.RGBA;
65
+ /**
66
+ * Returns the RGBA values concatenated into a string.
67
+ * @returns {string} the CSS valid color in RGB/RGBA format
68
+ */
69
+ toRgbString(): string;
70
+ /**
71
+ * Returns the HEX value of the color.
72
+ * @returns {string} the hexadecimal color format
73
+ */
74
+ toHex(): string;
75
+ /**
76
+ * Returns the HEX value of the color.
77
+ * @returns {string} the CSS valid color in hexadecimal format
78
+ */
79
+ toHexString(): string;
80
+ /**
81
+ * Returns the color as a HSVA object.
82
+ * @returns {CP.HSVA} the `{h,s,v,a}` object
83
+ */
84
+ toHsv(): CP.HSVA;
85
+ /**
86
+ * Returns the color as a HSLA object.
87
+ * @returns {CP.HSLA}
88
+ */
89
+ toHsl(): CP.HSLA;
90
+ /**
91
+ * Returns the HSLA values concatenated into a string.
92
+ * @returns {string} the CSS valid color in HSL/HSLA format
93
+ */
94
+ toHslString(): string;
95
+ /**
96
+ * Sets the alpha value on the current color.
97
+ * @param {number} alpha a new alpha value in [0-1] range.
98
+ * @returns {Color} a new `Color` instance
99
+ */
100
+ setAlpha(alpha: number): Color;
101
+ /**
102
+ * Saturate the color with a given amount.
103
+ * @param {number=} amount a value in [0-100] range
104
+ * @returns {Color} a new `Color` instance
105
+ */
106
+ saturate(amount?: number | undefined): Color;
107
+ /**
108
+ * Desaturate the color with a given amount.
109
+ * @param {number=} amount a value in [0-100] range
110
+ * @returns {Color} a new `Color` instance
111
+ */
112
+ desaturate(amount?: number | undefined): Color;
113
+ /**
114
+ * Completely desaturates a color into greyscale.
115
+ * Same as calling `desaturate(100)`
116
+ * @returns {Color} a new `Color` instance
117
+ */
118
+ greyscale(): Color;
119
+ /** Returns a clone of the current `Color` instance. */
120
+ clone(): Color;
121
+ /**
122
+ * Returns the color value in CSS valid string format.
123
+ * @returns {string}
124
+ */
125
+ toString(): string;
126
+ }
127
+ }
128
+ declare module "color-picker/src/js/util/vHidden" {
129
+ export default vHidden;
130
+ const vHidden: "v-hidden";
131
+ }
132
+ declare module "color-picker/src/js/util/getColorForm" {
133
+ /**
134
+ * Returns the color form.
135
+ * @param {CP.ColorPicker} self the `ColorPicker` instance
136
+ * @returns {HTMLElement | Element}
137
+ */
138
+ export default function getColorForm(self: CP.ColorPicker): HTMLElement | Element;
139
+ }
140
+ declare module "color-picker/src/js/util/getColorControl" {
141
+ /**
142
+ * Returns a new color control `HTMLElement`.
143
+ * @param {number} iteration
144
+ * @param {number} id
145
+ * @param {number} width
146
+ * @param {number} height
147
+ * @param {string=} labelledby
148
+ * @returns {HTMLElement | Element}
149
+ */
150
+ export default function getColorControl(iteration: number, id: number, width: number, height: number, labelledby?: string | undefined): HTMLElement | Element;
151
+ }
152
+ declare module "color-picker/src/js/color-picker" {
153
+ /**
154
+ * Color Picker
155
+ * @see http://thednp.github.io/color-picker
156
+ */
157
+ export default class ColorPicker {
158
+ /**
159
+ * Returns a new ColorPicker instance.
160
+ * @param {HTMLInputElement | string} target the target `<input>` element
161
+ */
162
+ constructor(target: HTMLInputElement | string);
163
+ /** @type {HTMLInputElement} */
164
+ input: HTMLInputElement;
165
+ /** @type {HTMLElement} */
166
+ parent: HTMLElement;
167
+ /** @type {number} */
168
+ id: number;
169
+ /** @type {HTMLCanvasElement?} */
170
+ dragElement: HTMLCanvasElement | null;
171
+ /** @type {boolean} */
172
+ isOpen: boolean;
173
+ /** @type {Record<string, number>} */
174
+ controlPositions: Record<string, number>;
175
+ /** @type {Record<string, string>} */
176
+ colorLabels: Record<string, string>;
177
+ /** @type {Array<string> | false} */
178
+ keywords: Array<string> | false;
179
+ /** @type {Color} */
180
+ color: Color;
181
+ /** @type {Record<string, string>} */
182
+ componentLabels: Record<string, string>;
183
+ /** Shows the `ColorPicker` dropdown. */
184
+ showPicker(): void;
185
+ /**
186
+ * Toggle the `ColorPicker` dropdown visibility.
187
+ * @param {Event} e
188
+ * @this {ColorPicker}
189
+ */
190
+ togglePicker(this: ColorPicker, e: Event): void;
191
+ /** Toggles the visibility of the `ColorPicker` presets menu. */
192
+ toggleMenu(): void;
193
+ /**
194
+ * Handles all `ColorPicker` click listeners.
195
+ * @param {Partial<Event>} e
196
+ * @this {ColorPicker}
197
+ */
198
+ menuClickHandler(this: ColorPicker, e: Partial<Event>): void;
199
+ /**
200
+ * Handles all `ColorPicker` click listeners.
201
+ * @param {KeyboardEvent} e
202
+ * @this {ColorPicker}
203
+ */
204
+ menuKeyHandler(this: ColorPicker, e: KeyboardEvent): void;
205
+ /**
206
+ * Handles the `ColorPicker` touchstart / mousedown events listeners.
207
+ * @param {TouchEvent} e
208
+ * @this {ColorPicker}
209
+ */
210
+ pointerDown(this: ColorPicker, e: TouchEvent): void;
211
+ /**
212
+ * Handles the `ColorPicker` touchmove / mousemove events listeners.
213
+ * @param {TouchEvent} e
214
+ */
215
+ pointerMove(e: TouchEvent): void;
216
+ /**
217
+ * Handles the `ColorPicker` touchend / mouseup events listeners.
218
+ * @param {TouchEvent} e
219
+ * @this {ColorPicker}
220
+ */
221
+ pointerUp(this: ColorPicker, { target }: TouchEvent): void;
222
+ /**
223
+ * Handles the `ColorPicker` scroll listener when open.
224
+ * @param {Event} e
225
+ * @this {ColorPicker}
226
+ */
227
+ handleScroll(this: ColorPicker, e: Event): void;
228
+ /**
229
+ * Handles the `focusout` listener of the `ColorPicker`.
230
+ * @param {FocusEvent} e
231
+ * @this {ColorPicker}
232
+ */
233
+ handleFocusOut(this: ColorPicker, { relatedTarget }: FocusEvent): void;
234
+ /** Handles the event listeners of the color form. */
235
+ changeHandler(): void;
236
+ /**
237
+ * Handles the `focusout` listener of the `ColorPicker`.
238
+ * @param {KeyboardEvent} e
239
+ * @this {ColorPicker}
240
+ */
241
+ handleDismiss(this: ColorPicker, { code }: KeyboardEvent): void;
242
+ /**
243
+ * Handles the `Space` and `Enter` keys inputs.
244
+ * @param {KeyboardEvent} e
245
+ * @this {ColorPicker}
246
+ */
247
+ keyHandler(this: ColorPicker, e: KeyboardEvent): void;
248
+ /**
249
+ * Handles the `ColorPicker` events listeners associated with the color knobs.
250
+ * @param {KeyboardEvent} e
251
+ */
252
+ handleKnobs(e: KeyboardEvent): void;
253
+ /** @type {HTMLElement} */
254
+ pickerToggle: HTMLElement;
255
+ /** @type {HTMLElement} */
256
+ menuToggle: HTMLElement;
257
+ /** @type {HTMLElement} */
258
+ colorMenu: HTMLElement;
259
+ /** @type {HTMLElement} */
260
+ colorPicker: HTMLElement;
261
+ /** @type {HTMLElement} */
262
+ controls: HTMLElement;
263
+ /** @type {HTMLInputElement[]} */
264
+ inputs: HTMLInputElement[];
265
+ /** @type {(HTMLElement)[]} */
266
+ controlKnobs: (HTMLElement)[];
267
+ /** @type {HTMLCanvasElement[]} */
268
+ visuals: HTMLCanvasElement[];
269
+ /** @type {HTMLLabelElement[]} */
270
+ knobLabels: HTMLLabelElement[];
271
+ /** @type {HTMLLabelElement} */
272
+ appearance: HTMLLabelElement;
273
+ /** @type {number} */
274
+ width1: number;
275
+ /** @type {number} */
276
+ height1: number;
277
+ /** @type {number} */
278
+ width2: number;
279
+ /** @type {number} */
280
+ height2: number;
281
+ /** @type {*} */
282
+ ctx1: any;
283
+ /** @type {*} */
284
+ ctx2: any;
285
+ /** @type {number} */
286
+ width3: number;
287
+ /** @type {number} */
288
+ height3: number;
289
+ /** @type {*} */
290
+ ctx3: any;
291
+ /**
292
+ * Sets a new color value.
293
+ * @param {string} v new color value
294
+ */
295
+ set value(arg: string);
296
+ /** Returns the current color value */
297
+ get value(): string;
298
+ /** Check if the input is required to have a valid value. */
299
+ get required(): boolean;
300
+ /**
301
+ * Returns the colour format.
302
+ * @returns {CP.ColorFormats | string}
303
+ */
304
+ get format(): string;
305
+ /** Returns the input name. */
306
+ get name(): string | null;
307
+ /**
308
+ * Returns the label associated to the input.
309
+ * @returns {HTMLLabelElement?}
310
+ */
311
+ get label(): HTMLLabelElement | null;
312
+ /** Check if the color presets include any non-color. */
313
+ get includeNonColor(): boolean;
314
+ /** Returns hexadecimal value of the current color. */
315
+ get hex(): string;
316
+ /** Returns the current color value in {h,s,v,a} object format. */
317
+ get hsv(): CP.HSVA;
318
+ /** Returns the current color value in {h,s,l,a} object format. */
319
+ get hsl(): CP.HSLA;
320
+ /** Returns the current color value in {r,g,b,a} object format. */
321
+ get rgb(): CP.RGBA;
322
+ /** Returns the current color brightness. */
323
+ get brightness(): number;
324
+ /** Returns the current color luminance. */
325
+ get luminance(): number;
326
+ /** Checks if the current colour requires a light text color. */
327
+ get isDark(): boolean;
328
+ /** Checks if the current input value is a valid color. */
329
+ get isValid(): boolean;
330
+ /** Updates `ColorPicker` visuals. */
331
+ updateVisuals(): void;
332
+ /**
333
+ * Updates `ColorPicker` first control:
334
+ * * `lightness` and `saturation` for HEX/RGB;
335
+ * * `lightness` and `hue` for HSL.
336
+ *
337
+ * @param {Record<string, number>} offsets
338
+ */
339
+ changeControl1(offsets: Record<string, number>): void;
340
+ /**
341
+ * Updates `ColorPicker` second control:
342
+ * * `hue` for HEX/RGB;
343
+ * * `saturation` for HSL.
344
+ *
345
+ * @param {Record<string, number>} offset
346
+ */
347
+ changeControl2(offset: Record<string, number>): void;
348
+ /**
349
+ * Updates `ColorPicker` last control,
350
+ * the `alpha` channel for RGB/HSL.
351
+ *
352
+ * @param {Record<string, number>} offset
353
+ */
354
+ changeAlpha(offset: Record<string, number>): void;
355
+ /** Update opened dropdown position on scroll. */
356
+ updateDropdownPosition(): void;
357
+ /** Update control knobs' positions. */
358
+ setControlPositions(): void;
359
+ /** Update the visual appearance label. */
360
+ setColorAppearence(): void;
361
+ /** Updates the control knobs positions. */
362
+ updateControls(): void;
363
+ /**
364
+ * Update all color form inputs.
365
+ * @param {boolean=} isPrevented when `true`, the component original event is prevented
366
+ */
367
+ updateInputs(isPrevented?: boolean | undefined): void;
368
+ /** Show the dropdown. */
369
+ show(): void;
370
+ /**
371
+ * Hides the currently opened dropdown.
372
+ * @param {boolean=} focusPrevented
373
+ */
374
+ hide(focusPrevented?: boolean | undefined): void;
375
+ dispose(): void;
376
+ }
377
+ import Color from "color-picker/src/js/color";
378
+ }
379
+ declare module "color-picker/src/js/color-picker-element" {
380
+ export default ColorPickerElement;
381
+ /**
382
+ * @see https://codepen.io/dgrammatiko/pen/zLvXwR
383
+ * @see https://codepen.io/thednp/pen/yLVzZzW
384
+ * @see https://www.eyecon.ro/colorpicker/
385
+ * @see http://www.dematte.at/colorPicker/
386
+ *
387
+ * @example
388
+ * <color-picker>
389
+ * <input type="text">
390
+ * </color-picker>
391
+ */
392
+ class ColorPickerElement extends HTMLElement {
393
+ /** @type {ColorPicker?} */
394
+ colorPicker: ColorPicker | null;
395
+ /** @type {HTMLInputElement} */
396
+ input: HTMLInputElement;
397
+ /** @type {boolean} */
398
+ isDisconnected: boolean;
399
+ get value(): string;
400
+ get color(): Color | null;
401
+ connectedCallback(): void;
402
+ disconnectedCallback(): void;
403
+ }
404
+ import ColorPicker from "color-picker/src/js/color-picker";
405
+ import Color from "color-picker/src/js/color";
406
+ }
407
+ declare module "color-picker/types/source/source" {
408
+ export { default as Color } from "color-picker/src/js/color";
409
+ export { default as ColorPicker } from "color-picker/src/js/color-picker";
410
+ export { default as ColorPickerElement } from "color-picker/src/js/color-picker-element";
411
+ }
@@ -0,0 +1,41 @@
1
+ export as namespace CP;
2
+ export {Color, ColorPicker, ColorPickerElement};
3
+
4
+ export {
5
+ HSL,
6
+ HSLA,
7
+ RGB,
8
+ RGBA,
9
+ HSV,
10
+ HSVA,
11
+ ColorObject,
12
+ ColorFormats,
13
+ ColorInput,
14
+ ColorOptions,
15
+ GetInstance,
16
+ InitCallback,
17
+ } from './source/types';
18
+
19
+ import './cp';
20
+ import { default as Color } from "color-picker/src/js/color";
21
+ import { default as ColorPicker } from "color-picker/src/js/color-picker";
22
+ import { default as ColorPickerElement } from "color-picker/src/js/color-picker-element";
23
+
24
+ declare module "@thednp/color-picker" {
25
+ export default ColorPicker;
26
+ }
27
+
28
+ declare module "@thednp/color-picker/src/js/color" {
29
+ export default Color;
30
+ }
31
+
32
+ declare module "@thednp/color-picker/src/js/color-picker" {
33
+ export default ColorPicker;
34
+ }
35
+
36
+ declare module "@thednp/color-picker/src/js/color-picker-element" {
37
+ export default ColorPickerElement;
38
+ }
39
+
40
+ export * as SHORTER from "shorter-js";
41
+ export * as EventListener from "event-listener.js";
@@ -0,0 +1,4 @@
1
+ // export { default as Color } from "../../types/source/types";
2
+ export { default as Color } from "../../src/js/color";
3
+ export { default as ColorPicker } from "../../src/js/color-picker";
4
+ export { default as ColorPickerElement } from "../../src/js/color-picker-element";
@@ -0,0 +1,67 @@
1
+ /**
2
+ * A `Color` compatible object.
3
+ */
4
+ export interface ColorObject {
5
+ r: number;
6
+ g: number;
7
+ b: number;
8
+ a: number;
9
+ ok: boolean;
10
+ format: ColorFormats;
11
+ }
12
+
13
+ /**
14
+ * A representation of additive color mixing.
15
+ * Projection of primary color lights on a white screen shows secondary
16
+ * colors where two overlap; the combination of all three of red, green,
17
+ * and blue in equal intensities makes white.
18
+ */
19
+ export interface RGB {
20
+ r: number;
21
+ g: number;
22
+ b: number;
23
+ }
24
+
25
+ export interface RGBA extends RGB {
26
+ a: number;
27
+ }
28
+
29
+ /**
30
+ * The HSL model describes colors in terms of hue, saturation,
31
+ * and lightness (also called luminance).
32
+ * @link https://en.wikibooks.org/wiki/Color_Models:_RGB,_HSV,_HSL#HSL
33
+ */
34
+ export interface HSL {
35
+ // h: number | string;
36
+ // s: number | string;
37
+ // l: number | string;
38
+ h: number;
39
+ s: number;
40
+ l: number;
41
+ }
42
+
43
+ export interface HSLA extends HSL {
44
+ a: number;
45
+ }
46
+
47
+ /**
48
+ * The HSV, or HSB, model describes colors in terms of
49
+ * hue, saturation, and value (brightness).
50
+ * @link https://en.wikibooks.org/wiki/Color_Models:_RGB,_HSV,_HSL#HSV
51
+ */
52
+ export interface HSV {
53
+ h: number;
54
+ s: number;
55
+ v: number;
56
+ }
57
+
58
+ export interface HSVA extends HSV {
59
+ a: number;
60
+ }
61
+
62
+ export interface ColorOptions { format: ColorFormats; }
63
+ export type ColorInput = string | number | RGB | RGBA | HSL | HSLA | HSV | HSVA | ColorObject;
64
+ export type ColorFormats = string | 'rgb' | 'hex' | 'hex3' | 'hex6' | 'hsl' | 'hsv';
65
+
66
+ export type GetInstance<T> = (element: string | HTMLInputElement) => T | null;
67
+ export type InitCallback<T> = (element: string | HTMLInputElement, config?: ColorOptions) => T;