colorsort-js 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +17 -0
- package/dist/colorsort.js +5412 -0
- package/dist/colorsort.js.map +1 -0
- package/dist/colorsort.umd.cjs +5 -0
- package/dist/colorsort.umd.cjs.map +1 -0
- package/dist/trained.json +1804 -0
- package/dist/types/src/auto-sort.d.ts +1 -0
- package/dist/types/src/auto.d.ts +6 -0
- package/dist/types/src/color.d.ts +42 -0
- package/dist/types/src/fft.d.ts +3 -0
- package/dist/types/src/genetic-algo.d.ts +63 -0
- package/dist/types/src/index.d.ts +23 -0
- package/dist/types/src/method-runner.d.ts +21 -0
- package/dist/types/src/metrics-extended.d.ts +27 -0
- package/dist/types/src/metrics-fft.d.ts +44 -0
- package/dist/types/src/metrics-hilbert.d.ts +9 -0
- package/dist/types/src/metrics-spectral-similarity.d.ts +21 -0
- package/dist/types/src/metrics-spectral.d.ts +55 -0
- package/dist/types/src/metrics.d.ts +8 -0
- package/dist/types/src/randomizer.d.ts +1 -0
- package/dist/types/src/resample.d.ts +6 -0
- package/dist/types/src/similarity.d.ts +8 -0
- package/dist/types/src/sorting-methods/clustering.d.ts +34 -0
- package/dist/types/src/sorting-methods/genetic.d.ts +3 -0
- package/dist/types/src/sorting-methods/graph.d.ts +14 -0
- package/dist/types/src/sorting-methods/harmonize.d.ts +22 -0
- package/dist/types/src/sorting-methods/hilbert.d.ts +14 -0
- package/dist/types/src/sorting-methods/index.d.ts +21 -0
- package/dist/types/src/sorting-methods/momentum.d.ts +12 -0
- package/dist/types/src/sorting-methods/principal.d.ts +9 -0
- package/dist/types/src/sorting-methods/radial.d.ts +17 -0
- package/dist/types/src/sorting-methods/ramp.d.ts +77 -0
- package/dist/types/src/sorting-methods/raw.d.ts +7 -0
- package/dist/types/src/sorting-methods/spectral.d.ts +26 -0
- package/dist/types/src/spectral-edit.d.ts +53 -0
- package/dist/types/src/statistics.d.ts +12 -0
- package/dist/types/src/type-detect.d.ts +16 -0
- package/dist/types/src/type-relative.d.ts +2 -0
- package/dist/types/src/type-variances.d.ts +19 -0
- package/dist/types/src/uni-neighbors.d.ts +6 -0
- package/dist/types/src/uni-tsp.d.ts +2 -0
- package/dist/types/src/vector.d.ts +15 -0
- package/package.json +61 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Vector3 } from './vector.ts';
|
|
2
|
+
export interface SpectralProcessingOptions {
|
|
3
|
+
eq?: {
|
|
4
|
+
lowGain: number;
|
|
5
|
+
midGain: number;
|
|
6
|
+
highGain: number;
|
|
7
|
+
};
|
|
8
|
+
dc?: number;
|
|
9
|
+
compression?: {
|
|
10
|
+
threshold: number;
|
|
11
|
+
ratio: number;
|
|
12
|
+
attack: number;
|
|
13
|
+
release: number;
|
|
14
|
+
};
|
|
15
|
+
exciter?: {
|
|
16
|
+
amount: number;
|
|
17
|
+
frequency: number;
|
|
18
|
+
};
|
|
19
|
+
phaseShift?: number;
|
|
20
|
+
reverb?: {
|
|
21
|
+
decay: number;
|
|
22
|
+
mix: number;
|
|
23
|
+
};
|
|
24
|
+
stereoWidth?: number;
|
|
25
|
+
distortion?: {
|
|
26
|
+
amount: number;
|
|
27
|
+
type: 'soft' | 'hard' | 'tube';
|
|
28
|
+
};
|
|
29
|
+
combFilter?: {
|
|
30
|
+
frequency: number;
|
|
31
|
+
feedback: number;
|
|
32
|
+
mix: number;
|
|
33
|
+
};
|
|
34
|
+
spectralBlur?: {
|
|
35
|
+
amount: number;
|
|
36
|
+
};
|
|
37
|
+
spectralGate?: {
|
|
38
|
+
threshold: number;
|
|
39
|
+
ratio: number;
|
|
40
|
+
};
|
|
41
|
+
partialExtraction?: {
|
|
42
|
+
fundamental: number;
|
|
43
|
+
harmonics: number;
|
|
44
|
+
bandwidth: number;
|
|
45
|
+
};
|
|
46
|
+
lightnessSmoothing?: number;
|
|
47
|
+
}
|
|
48
|
+
export declare function applySpectralProcessing(labColors: Vector3[], options?: SpectralProcessingOptions): {
|
|
49
|
+
colors: Vector3[];
|
|
50
|
+
resampled: Vector3[];
|
|
51
|
+
processed: Vector3[];
|
|
52
|
+
spectrum: any[][];
|
|
53
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function variance(arr: number[]): number;
|
|
2
|
+
export declare function mean(arr: number[]): number;
|
|
3
|
+
export declare function energy(magnitudes: number[]): number;
|
|
4
|
+
export declare function highFreqRatio(magnitudes: number[]): number;
|
|
5
|
+
export declare function round2(x: number): number;
|
|
6
|
+
export declare function round3(x: number): number;
|
|
7
|
+
export declare function round4(x: number): number;
|
|
8
|
+
/**
|
|
9
|
+
* Interpolate NaN values in a signal using surrounding valid values
|
|
10
|
+
* This prevents false discontinuities in FFT when achromatic colors produce NaN
|
|
11
|
+
*/
|
|
12
|
+
export declare function interpolateNaNs(signal: number[]): number[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TypeVariances } from './type-variances.ts';
|
|
2
|
+
import { Vector3 } from './vector.ts';
|
|
3
|
+
export type PaletteType = {
|
|
4
|
+
Kl: number;
|
|
5
|
+
Kc: number;
|
|
6
|
+
Kh: number;
|
|
7
|
+
type: string;
|
|
8
|
+
data: TypeVariances & {
|
|
9
|
+
lightnessRange: number;
|
|
10
|
+
chromaRange: number;
|
|
11
|
+
hueSpread: number;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare function detectPaletteType(lchColors: Vector3[]): PaletteType;
|
|
15
|
+
export declare function calculateHueSpread(hues: number[]): number;
|
|
16
|
+
export declare function lchColorsHueSpread(lchColors: Vector3[]): number;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Vector3 } from './vector.ts';
|
|
2
|
+
export type TypeVariances = {
|
|
3
|
+
L: number;
|
|
4
|
+
C: number;
|
|
5
|
+
H: number;
|
|
6
|
+
meanL: number;
|
|
7
|
+
meanC: number;
|
|
8
|
+
meanH: number;
|
|
9
|
+
};
|
|
10
|
+
export declare function calculateVariances(lchColors: Vector3[]): TypeVariances;
|
|
11
|
+
export declare function calculateAdaptiveWeights(variances: {
|
|
12
|
+
L: number;
|
|
13
|
+
C: number;
|
|
14
|
+
H: number;
|
|
15
|
+
}): {
|
|
16
|
+
Kl: number;
|
|
17
|
+
Kc: number;
|
|
18
|
+
Kh: number;
|
|
19
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ColorHelper } from './method-runner.ts';
|
|
2
|
+
import { Vector3 } from './vector.ts';
|
|
3
|
+
export type ColorCompare = (a: Vector3, b: Vector3) => number;
|
|
4
|
+
export declare function closest(data: Vector3[], compareColors: ColorCompare): [Vector3, Vector3];
|
|
5
|
+
export declare function closestList(data: Vector3[], compareColors: ColorCompare): [Vector3, Vector3][];
|
|
6
|
+
export declare function inlinest(data: Vector3[], helper: ColorHelper): [Vector3, Vector3];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type Vector3 = [number, number, number];
|
|
2
|
+
export type Vector4 = [number, number, number, number];
|
|
3
|
+
export declare function distance(a: Vector3, b: Vector3): number;
|
|
4
|
+
export declare function distance12(a: Vector3, b: Vector3): number;
|
|
5
|
+
export declare function distance4(a: Vector4, b: Vector4): number;
|
|
6
|
+
export declare function distanceRadial0(a: Vector3, b: Vector3): number;
|
|
7
|
+
export declare function distanceRadial2(a: Vector3, b: Vector3): number;
|
|
8
|
+
export declare function normalize(v: Vector3): Vector3;
|
|
9
|
+
export declare function subtract(a: Vector3, b: Vector3): Vector3;
|
|
10
|
+
export declare function add(a: Vector3, b: Vector3): Vector3;
|
|
11
|
+
export declare function dot(a: Vector3, b: Vector3): number;
|
|
12
|
+
export declare function centroid(colors: Vector3[]): Vector3;
|
|
13
|
+
export declare function compareColors(a: Vector3, b: Vector3): number;
|
|
14
|
+
export declare function compareColorsH(a: Vector3, b: Vector3): number;
|
|
15
|
+
export declare function compareColors210(a: Vector3, b: Vector3): number;
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "colorsort-js",
|
|
3
|
+
"description": "Various color sorting methods",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Jan Forst",
|
|
7
|
+
"email": "ensonador@gmail.com"
|
|
8
|
+
},
|
|
9
|
+
"bugs": "https://github.com/darosh/colorsort-js/issues",
|
|
10
|
+
"dependencies": {},
|
|
11
|
+
"devDependencies": {
|
|
12
|
+
"@types/chroma-js": "^3.1.2",
|
|
13
|
+
"@types/culori": "^4.0.1",
|
|
14
|
+
"@types/debug": "^4.1.12",
|
|
15
|
+
"@types/js-levenshtein": "^1.1.3",
|
|
16
|
+
"@types/node": "^25.0.3",
|
|
17
|
+
"chroma-js": "^3.2.0",
|
|
18
|
+
"colord": "2.9.3",
|
|
19
|
+
"colorgram": "^0.2.0",
|
|
20
|
+
"colorjs.io": "^0.6.0",
|
|
21
|
+
"commons-math-interpolation": "^2.2.4",
|
|
22
|
+
"culori": "^4.0.2",
|
|
23
|
+
"fft.js": "^4.0.4",
|
|
24
|
+
"js-levenshtein": "^1.1.6",
|
|
25
|
+
"ml-kmeans": "^7.0.0",
|
|
26
|
+
"poline": "^0.13.0"
|
|
27
|
+
},
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/types/src/index.ts",
|
|
31
|
+
"import": "./dist/colorsort.js",
|
|
32
|
+
"require": "./dist/colorsort.umd.js"
|
|
33
|
+
},
|
|
34
|
+
"./trained.json": "./dist/trained.json"
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"dist/"
|
|
38
|
+
],
|
|
39
|
+
"homepage": "https://github.com/darosh/colorsort-js",
|
|
40
|
+
"keywords": [
|
|
41
|
+
"color",
|
|
42
|
+
"sorting"
|
|
43
|
+
],
|
|
44
|
+
"license": "MIT",
|
|
45
|
+
"main": "./dist/colorsort.js",
|
|
46
|
+
"private": false,
|
|
47
|
+
"repository": "https://github.com/darosh/colorsort-js.git",
|
|
48
|
+
"type": "module",
|
|
49
|
+
"types": "./dist/types/src/index.ts",
|
|
50
|
+
"scripts": {
|
|
51
|
+
"bench": "deno --allow-write scripts/bench.js",
|
|
52
|
+
"build": "tsc && vite build",
|
|
53
|
+
"postbuild": "cp ../colorsort-data-trained/dist/trained.json ./dist/trained.json",
|
|
54
|
+
"dev": "vite build --watch",
|
|
55
|
+
"lint": "tsc && oxlint ./src --fix && oxfmt ./src",
|
|
56
|
+
"range": "deno --allow-write scripts/range.js",
|
|
57
|
+
"test": "deno run -A npm:vitest run --bail=1",
|
|
58
|
+
"test:methods": "deno run -A npm:vitest run ./tests/methods.test.js",
|
|
59
|
+
"test:ramp": "deno run -A npm:vitest run ./tests/ramp.test.ts"
|
|
60
|
+
}
|
|
61
|
+
}
|