@thednp/color-picker 2.0.2 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. package/README.md +25 -14
  2. package/dist/css/color-picker.css +3 -6
  3. package/dist/css/color-picker.css.map +1 -0
  4. package/dist/css/color-picker.min.css +1 -2
  5. package/dist/css/color-picker.min.css.map +1 -0
  6. package/dist/css/color-picker.rtl.css +3 -6
  7. package/dist/css/color-picker.rtl.css.map +1 -0
  8. package/dist/css/color-picker.rtl.min.css +1 -2
  9. package/dist/css/color-picker.rtl.min.css.map +1 -0
  10. package/dist/js/color-picker.cjs +2 -2
  11. package/dist/js/color-picker.cjs.map +1 -1
  12. package/dist/js/color-picker.d.ts +307 -300
  13. package/dist/js/color-picker.js +2 -2
  14. package/dist/js/color-picker.js.map +1 -1
  15. package/dist/js/color-picker.mjs +369 -332
  16. package/dist/js/color-picker.mjs.map +1 -1
  17. package/package.json +36 -44
  18. package/.eslintrc.cjs +0 -199
  19. package/.lgtm.yml +0 -9
  20. package/.prettierrc.json +0 -15
  21. package/.stylelintrc.json +0 -236
  22. package/compile.cjs +0 -51
  23. package/dts.config.ts +0 -15
  24. package/src/scss/_variables.scss +0 -6
  25. package/src/scss/color-picker.rtl.scss +0 -27
  26. package/src/scss/color-picker.scss +0 -536
  27. package/src/ts/colorPalette.ts +0 -89
  28. package/src/ts/index.ts +0 -1237
  29. package/src/ts/interface/ColorNames.ts +0 -20
  30. package/src/ts/interface/colorPickerLabels.ts +0 -20
  31. package/src/ts/interface/colorPickerOptions.ts +0 -11
  32. package/src/ts/interface/paletteOptions.ts +0 -6
  33. package/src/ts/util/colorNames.ts +0 -21
  34. package/src/ts/util/colorPickerLabels.ts +0 -24
  35. package/src/ts/util/getColorControls.ts +0 -90
  36. package/src/ts/util/getColorForm.ts +0 -75
  37. package/src/ts/util/getColorMenu.ts +0 -83
  38. package/src/ts/util/isValidJSON.ts +0 -19
  39. package/src/ts/util/setMarkup.ts +0 -130
  40. package/src/ts/util/vHidden.ts +0 -2
  41. package/test/color-palette.test.ts +0 -137
  42. package/test/color-picker.test.ts +0 -705
  43. package/test/fixtures/colorNamesFrench.js +0 -3
  44. package/test/fixtures/componentLabelsFrench.js +0 -21
  45. package/test/fixtures/format.js +0 -3
  46. package/test/fixtures/getMarkup.js +0 -36
  47. package/test/fixtures/getRandomInt.js +0 -6
  48. package/test/fixtures/sampleWebcolors.js +0 -18
  49. package/test/fixtures/swipe.ts +0 -33
  50. package/test/fixtures/testSample.js +0 -8
  51. package/test/fixtures/write.ts +0 -37
  52. package/tsconfig.json +0 -47
  53. package/vite.config.mts +0 -27
  54. package/vitest.config-ui.ts +0 -26
  55. package/vitest.config.ts +0 -26
@@ -1,3 +0,0 @@
1
- const colorNamesFrench = 'blanc,noir,gris,rouge,orange,brun,or,olive,jaune,citron,vert,sarcelle,cyan,bleu,violet,magenta,rose';
2
-
3
- export default colorNamesFrench;
@@ -1,21 +0,0 @@
1
- const componentLabelsFrench = {
2
- pickerLabel: "Couleur Sélection",
3
- appearanceLabel: "Apparence de la couleur",
4
- valueLabel: "Valeur de couleur",
5
- toggleLabel: "Sélectionner la couleur",
6
- presetsLabel: "Préréglages de couleur",
7
- defaultsLabel: "Couleur par défaut",
8
- formatLabel: "Format",
9
- alphaLabel: "Alpha",
10
- hexLabel: "Hexadécimal",
11
- hueLabel: "Nuance",
12
- whitenessLabel: "Blancheur",
13
- blacknessLabel: "Noirceur",
14
- saturationLabel: "Saturation",
15
- lightnessLabel: "Légèreté",
16
- redLabel: "Rouge",
17
- greenLabel: "Vert",
18
- blueLabel: "Bleu",
19
- };
20
-
21
- export default componentLabelsFrench;
@@ -1,3 +0,0 @@
1
- const FORMAT = ['hsl', 'rgb', 'hwb', 'hex'];
2
-
3
- export default FORMAT;
@@ -1,36 +0,0 @@
1
- import testSample from "./testSample";
2
- import getRandomInt from "./getRandomInt";
3
-
4
- export default function getMarkup(id, format) {
5
- const set = testSample[getRandomInt(0,3)];
6
- const value = set[format];
7
-
8
- const container = document.createElement('div');
9
-
10
- const label = document.createElement('label');
11
- label.setAttribute('for', `color-picker-${id}`);
12
- label.innerText = `Color Picker Test`;
13
-
14
- const cpWrapper = document.createElement('div');
15
- cpWrapper.className = 'color-picker';
16
-
17
- const input = document.createElement('input');
18
- input.type = 'text';
19
- input.id = `color-picker-${id}`;
20
- input.className = 'btn-appearance color-preview';
21
- input.setAttribute('value', value);
22
- input.setAttribute('autocomplete', "off");
23
- input.setAttribute('spellcheck', "false");
24
- input.setAttribute('data-format', format);
25
-
26
- const a = document.createElement('a');
27
- a.setAttribute('href', '#');
28
- a.innerText = 'Some link';
29
- a.className = 'my-link';
30
- a.style = 'position: absolute; top: 0px; right:0; opacity: 0.015';
31
-
32
- cpWrapper.append(input);
33
- container.append(label, cpWrapper, a);
34
-
35
- return { container, set, value};
36
- }
@@ -1,6 +0,0 @@
1
- export default function getRandomInt(min, max) {
2
- min = Math.ceil(min);
3
- max = Math.round(max);
4
- // The maximum is exclusive and the minimum is inclusive
5
- return Math.round(Math.random() * (max - min) + min);
6
- }
@@ -1,18 +0,0 @@
1
- const sampleWebcolors = [
2
- {name:"white",rgb:"rgb(255, 255, 255)",hex:"#ffffff",hsl:"hsl(0, 0%, 100%)",hsl4:"hsl(0deg 0% 100%)",hwb:"hwb(0deg 100% 0%)",hsv:{h:0,s:0,v:1,a:1}},
3
- {name:"black",rgb:"rgb(0, 0, 0)",hex:"#000000",hsl:"hsl(0, 0%, 0%)",hsl4:"hsl(0deg 0% 0%)",hwb:"hwb(0deg 0% 100%)",hsv:{h:0,s:0,v:0,a:1}},
4
- {name:"yellow",rgb:"rgb(255, 255, 0)",hex:"#ffff00",hsl:"hsl(60, 100%, 50%)",hsl4:"hsl(60deg 100% 50%)",hwb:"hwb(60deg 0% 0%)",hsv: {h: 0.167, s: 1, v: 1, a: 1}},
5
- {name:"green",rgb:"rgb(0, 128, 0)",hex:"#008000",hsl:"hsl(120, 100%, 25%)",hsl4:"hsl(120deg 100% 25%)",hwb:"hwb(120deg 0% 50%)",hsv: {h: 0.333, s: 1, v: 0.502, a: 1}},
6
- {name:"red",rgb:"rgb(255, 0, 0)",hex:"#ff0000",hsl:"hsl(0, 100%, 50%)",hsl4:"hsl(0deg 100% 50%)",hwb:"hwb(0deg 0% 0%)",hsv:{h:0,s:1,v:1,a:1}},
7
- {name:"pink",rgb:"rgb(255, 192, 203)",hex:"#ffc0cb",hsl:"hsl(350, 100%, 88%)",hsl4:"hsl(350deg 100% 88%)",hwb:"hwb(350deg 75% 0%)",hsv:{h:0.971,s:0.247,v:1,a:1}},
8
- {name:"brown",rgb:"rgb(165, 42, 42)",hex:"#a52a2a",hsl:"hsl(0, 59%, 41%)",hsl4:"hsl(0deg 59% 41%)",hwb:"hwb(0deg 16% 35%)",hsv:{h:0,s:0.745,v:0.647,a:1}},
9
- {name:"orange",rgb:"rgb(255, 165, 0)",hex:"#ffa500",hsl:"hsl(39, 100%, 50%)",hsl4:"hsl(39deg 100% 50%)",hwb:"hwb(39deg 0% 0%)",hsv:{h:0.108,s:1,v:1,a:1}},
10
- {name:"darkorange",rgb:"rgb(255, 140, 0)",hex:"#ff8c00",hsl:"hsl(33, 100%, 50%)",hsl4:"hsl(33deg 100% 50%)",hwb:"hwb(33deg 0% 0%)",hsv:{h:0.092,s:1,v:1,a:1}},
11
- {name:"cyan",rgb:"rgb(0, 255, 255)",hex:"#00ffff",hsl:"hsl(180, 100%, 50%)",hsl4:"hsl(180deg 100% 50%)",hwb:"hwb(180deg 0% 0%)",hsv:{h:0.5,s:1,v:1,a:1}},
12
- {name:"yellow",rgb:"rgb(255, 255, 0)",hex:"#ffff00",hsl:"hsl(60, 100%, 50%)",hsl4:"hsl(60deg 100% 50%)",hwb:"hwb(60deg 0% 0%)",hsv:{h:0.167,s:1,v:1,a:1}},
13
- {name:"navy",rgb:"rgb(0, 0, 128)",hex:"#000080",hsl:"hsl(240, 100%, 25%)",hsl4:"hsl(240deg 100% 25%)",hwb:"hwb(240deg 0% 50%)",hsv:{h:0.667,s:1,v:0.502,a:1}},
14
- {name:"orchid",rgb:"rgb(218, 112, 214)",hex:"#da70d6",hsl:"hsl(302, 59%, 65%)",hsl4:"hsl(302deg 59% 65%)",hwb:"hwb(302deg 44% 15%)",hsv:{h: 0.84, s: 0.486, v: 0.855, a: 1}},
15
- {name:"indigo",rgb:"rgb(75, 0, 130)",hex:"#4b0082",hsl:"hsl(275, 100%, 25%)",hsl4:"hsl(275deg 100% 25%)",hwb:"hwb(275deg 0% 49%)",hsv:{h: 0.763, s: 1, v: 0.51, a: 1}},
16
- ];
17
-
18
- export default sampleWebcolors;
@@ -1,33 +0,0 @@
1
- /**
2
- * Triggers a number of pointer events for a given target and
3
- * an array of coordinates.
4
- * @param target the element to dispatch the pointer event(s)
5
- * @param points an array of [clientX, clientY] coordinates
6
- * @param offset an optional offset object of { x, y } coordinates
7
- */
8
- const swipe = <T extends HTMLElement = HTMLElement>(target: T, points: [number, number][], offset?: { x: number, y: number }) => {
9
- const rect = target.getBoundingClientRect();
10
- const offsetX = Number.isInteger(offset?.x) ? offset!.x : rect.left;
11
- const offsetY = Number.isInteger(offset?.y) ? offset!.y : rect.top;
12
- if (points.length === 1) points.push([0,0]);
13
-
14
- points.forEach(([x,y], i) => {
15
- // first is a pointerdown, last is a pointerup and all pointermove in between
16
- const ev = i === 0 ? 'pointerdown' : i === points.length - 1 ? 'pointerup' : 'pointermove';
17
- const point = new PointerEvent(ev, {
18
- clientX: x + offsetX, clientY: y + offsetY,
19
- pressure: 1,
20
- bubbles: true, // Whether the event should bubble up the DOM
21
- cancelable: true, // Whether the event can be canceled
22
- pointerId: 0, // The ID of the pointer (e.g., a touch point)
23
- pointerType: "touch", // The type of pointer (e.g., touch or mouse)
24
- width: 1, // The width of the pointer (in pixels)
25
- height: 1, // The height of the pointer (in pixels)
26
- isPrimary: true, // Whether this is the primary pointer (true) or not (false)
27
- });
28
- target.dispatchEvent(point);
29
- target.offsetWidth;
30
- });
31
- };
32
-
33
- export default swipe;
@@ -1,8 +0,0 @@
1
- const testSample = [
2
- {name: 'red', hex: '#f00', rgb: 'rgb(255, 0, 0)', hsl: 'hsl(0, 100%, 50%)', hwb: 'hwb(0deg 0% 0%)'},
3
- {name: 'lime', hex: '#0f0', rgb: 'rgb(0, 255, 0)', hsl: 'hsl(120, 100%, 50%)', hwb: 'hwb(120deg 0% 0%)'},
4
- {name: 'blue', hex: '#00f', rgb: 'rgb(0, 0, 255)', hsl: 'hsl(240, 100%, 50%)', hwb: 'hwb(240deg 0% 0%)'},
5
- {name: 'pink', hex: '#f0f', rgb: 'rgb(255, 0, 255)', hsl: 'hsl(300, 100%, 50%)', hwb: 'hwb(300deg 0% 0%)'},
6
- ];
7
-
8
- export default testSample;
@@ -1,37 +0,0 @@
1
- /**
2
- * A simple utility to type text into input elements.
3
- * It will split the string provided and replace spaces with Space keyboard key
4
- * and will trigger a dispatch for each keyboard key found in the string.
5
- * @param target A button, input element or editable element
6
- * @param value the text to type
7
- *
8
- * @example
9
- * write(target, "hsl 150 0 0")
10
- * write(target, "hslSpace150Space0Space0Enter")
11
- */
12
- const write = <T extends HTMLElement = HTMLElement>(target: T, value: string) => {
13
- const text = value.trim();
14
-
15
- target.focus();
16
- if (target instanceof HTMLInputElement) target.select();
17
- if (['Space', 'Enter'].some(x => text === x) && target.tagName === 'BUTTON') {
18
- target.dispatchEvent(new MouseEvent('click', { bubbles: true }));
19
- // target.dispatchEvent(new KeyboardEvent('keyup', { key: text, code: text, bubbles: true }));
20
- } else {
21
- if (target instanceof HTMLInputElement) {
22
- const newValue = text.replace(/Enter/g, '').replace(/Space/g, ' ');
23
- target.setAttribute('value', newValue);
24
- target.value = newValue;
25
- target.offsetWidth;
26
- // console.log(newValue)
27
- // target.dispatchEvent(new KeyboardEvent('input', { bubbles: true }));
28
- if (text.endsWith('Enter')) {
29
- target.dispatchEvent(new Event('change', { bubbles: true }));
30
- // target.dispatchEvent(new KeyboardEvent('keyup', { key: "Enter", code: "Enter", bubbles: true }));
31
- }
32
-
33
- }
34
- }
35
- }
36
-
37
- export default write;
package/tsconfig.json DELETED
@@ -1,47 +0,0 @@
1
- {
2
- // https://janessagarrow.com/blog/typescript-and-esbuild/
3
- "compilerOptions": {
4
- "lib": [
5
- "DOM",
6
- "ESNext",
7
- "DOM.Iterable"
8
- ],
9
- // "types": ["vite", "vite/client", "@thednp/shorty", "@thednp/color"],
10
- "rootDir": "./",
11
- "baseUrl": "./",
12
- "module": "ESNext",
13
- "target": "ESNext",
14
- "moduleResolution": "Bundler",
15
- "allowJs": true,
16
- "forceConsistentCasingInFileNames": true,
17
- "useDefineForClassFields": true,
18
- "strict": true,
19
- "sourceMap": true,
20
- "resolveJsonModule": true,
21
- "esModuleInterop": true,
22
- "isolatedModules": true,
23
- "noUnusedLocals": true,
24
- "noUnusedParameters": true,
25
- "noImplicitReturns": true,
26
- "removeComments": false,
27
- "allowSyntheticDefaultImports": true,
28
- "noEmit": true,
29
- "skipLibCheck": true, // allows dts-bundle-generator to import from package.json
30
- "paths": {
31
- "~/*": [
32
- "./src/*"
33
- ],
34
- }
35
- },
36
- "include": [
37
- "src/*",
38
- "src/**/*",
39
- "test/**/*"
40
- ],
41
- "exclude": [
42
- "node_modules",
43
- "experiments",
44
- "coverage",
45
- "dist"
46
- ],
47
- }
package/vite.config.mts DELETED
@@ -1,27 +0,0 @@
1
- import { resolve } from 'node:path';
2
- import { defineConfig } from 'vite';
3
-
4
- const NAME = 'ColorPicker';
5
-
6
- const fileName = {
7
- es: `color-picker.mjs`,
8
- cjs: `color-picker.cjs`,
9
- iife: `color-picker.js`,
10
- };
11
-
12
- export default defineConfig({
13
- base: './',
14
- build: {
15
- emptyOutDir: true,
16
- outDir: 'dist/js',
17
- lib: {
18
- entry: resolve(__dirname, 'src/ts/index.ts'),
19
- name: NAME,
20
- formats: ['es', 'cjs', 'iife'],
21
- fileName: (format: string) => fileName[format],
22
- },
23
- sourcemap: true,
24
- target: "ESNext",
25
- },
26
- });
27
-
@@ -1,26 +0,0 @@
1
- import { defineConfig } from "vitest/config";
2
- import { resolve } from 'node:path';
3
-
4
- export default defineConfig({
5
- resolve: {
6
- alias: {
7
- "~": resolve(__dirname, "src"),
8
- },
9
- },
10
- test: {
11
- css: true,
12
- globals: true,
13
- coverage: {
14
- provider: "istanbul",
15
- reporter: ["html", "text", "lcov"],
16
- enabled: true,
17
- include: ["src/**/*.{ts,tsx}"],
18
- },
19
- browser: {
20
- // provider: 'webdriverio', // or 'webdriverio'
21
- enabled: true,
22
- headless: false,
23
- name: 'chromium', // browser name is required
24
- },
25
- },
26
- });
package/vitest.config.ts DELETED
@@ -1,26 +0,0 @@
1
- import { defineConfig } from "vitest/config";
2
- import { resolve } from 'node:path';
3
-
4
- export default defineConfig({
5
- resolve: {
6
- alias: {
7
- "~": resolve(__dirname, "src"),
8
- },
9
- },
10
- test: {
11
- css: true,
12
- globals: true,
13
- coverage: {
14
- provider: "istanbul",
15
- reporter: ["html", "text", "lcov"],
16
- enabled: true,
17
- include: ["src/**/*.{ts,tsx}"],
18
- },
19
- browser: {
20
- provider: 'playwright', // or 'webdriverio'
21
- enabled: true,
22
- headless: true,
23
- name: 'chromium', // browser name is required
24
- },
25
- },
26
- });