@magmacrunch/adenosine-spectrum 0.0.0-stage → 0.1.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.
@@ -0,0 +1,1847 @@
1
+ "use strict";
2
+ var AdSpectrum = (() => {
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/index.ts
22
+ var index_exports = {};
23
+ __export(index_exports, {
24
+ CMF_RANGE: () => CMF_RANGE,
25
+ blackbody: () => blackbody,
26
+ chromaticity: () => chromaticity,
27
+ cmf: () => cmf,
28
+ decodeSrgb: () => decodeSrgb,
29
+ encodeSrgb: () => encodeSrgb,
30
+ illuminantA: () => illuminantA,
31
+ illuminantD65: () => illuminantD65,
32
+ lightColor: () => lightColor,
33
+ linearSrgbToOklab: () => linearSrgbToOklab,
34
+ linearSrgbToXyz: () => linearSrgbToXyz,
35
+ multiply: () => multiply,
36
+ normalize: () => normalize,
37
+ oklabToLinearSrgb: () => oklabToLinearSrgb,
38
+ oklabToXyz: () => oklabToXyz,
39
+ planck: () => planck,
40
+ rayleigh: () => rayleigh,
41
+ sample: () => sample,
42
+ scale: () => scale,
43
+ spectrum: () => spectrum,
44
+ to8bit: () => to8bit,
45
+ toCss: () => toCss,
46
+ toXYZ: () => toXYZ,
47
+ valueAt: () => valueAt,
48
+ wavelengthColor: () => wavelengthColor,
49
+ wienPeak: () => wienPeak,
50
+ xyzToLinearSrgb: () => xyzToLinearSrgb,
51
+ xyzToOklab: () => xyzToOklab,
52
+ xyzToSrgb: () => xyzToSrgb
53
+ });
54
+
55
+ // src/data.ts
56
+ var CMF_START = 360;
57
+ var CMF_STEP = 1;
58
+ var CMF_X = [
59
+ 1299e-7,
60
+ 145847e-9,
61
+ 1638021e-10,
62
+ 1840037e-10,
63
+ 2066902e-10,
64
+ 2321e-7,
65
+ 260728e-9,
66
+ 293075e-9,
67
+ 329388e-9,
68
+ 369914e-9,
69
+ 4149e-7,
70
+ 4641587e-10,
71
+ 518986e-9,
72
+ 581854e-9,
73
+ 6552347e-10,
74
+ 7416e-7,
75
+ 8450296e-10,
76
+ 9645268e-10,
77
+ 1094949e-9,
78
+ 1231154e-9,
79
+ 1368e-6,
80
+ 150205e-8,
81
+ 1642328e-9,
82
+ 1802382e-9,
83
+ 1995757e-9,
84
+ 2236e-6,
85
+ 2535385e-9,
86
+ 2892603e-9,
87
+ 3300829e-9,
88
+ 3753236e-9,
89
+ 4243e-6,
90
+ 4762389e-9,
91
+ 5330048e-9,
92
+ 5978712e-9,
93
+ 6741117e-9,
94
+ 765e-5,
95
+ 8751373e-9,
96
+ 0.01002888,
97
+ 0.0114217,
98
+ 0.01286901,
99
+ 0.01431,
100
+ 0.01570443,
101
+ 0.01714744,
102
+ 0.01878122,
103
+ 0.02074801,
104
+ 0.02319,
105
+ 0.02620736,
106
+ 0.02978248,
107
+ 0.03388092,
108
+ 0.03846824,
109
+ 0.04351,
110
+ 0.0489956,
111
+ 0.0550226,
112
+ 0.0617188,
113
+ 0.069212,
114
+ 0.07763,
115
+ 0.08695811,
116
+ 0.09717672,
117
+ 0.1084063,
118
+ 0.1207672,
119
+ 0.13438,
120
+ 0.1493582,
121
+ 0.1653957,
122
+ 0.1819831,
123
+ 0.198611,
124
+ 0.21477,
125
+ 0.2301868,
126
+ 0.2448797,
127
+ 0.2587773,
128
+ 0.2718079,
129
+ 0.2839,
130
+ 0.2949438,
131
+ 0.3048965,
132
+ 0.3137873,
133
+ 0.3216454,
134
+ 0.3285,
135
+ 0.3343513,
136
+ 0.3392101,
137
+ 0.3431213,
138
+ 0.3461296,
139
+ 0.34828,
140
+ 0.3495999,
141
+ 0.3501474,
142
+ 0.350013,
143
+ 0.349287,
144
+ 0.34806,
145
+ 0.3463733,
146
+ 0.3442624,
147
+ 0.3418088,
148
+ 0.3390941,
149
+ 0.3362,
150
+ 0.3331977,
151
+ 0.3300411,
152
+ 0.3266357,
153
+ 0.3228868,
154
+ 0.3187,
155
+ 0.3140251,
156
+ 0.308884,
157
+ 0.3032904,
158
+ 0.2972579,
159
+ 0.2908,
160
+ 0.2839701,
161
+ 0.2767214,
162
+ 0.2689178,
163
+ 0.2604227,
164
+ 0.2511,
165
+ 0.2408475,
166
+ 0.2298512,
167
+ 0.2184072,
168
+ 0.2068115,
169
+ 0.19536,
170
+ 0.1842136,
171
+ 0.1733273,
172
+ 0.1626881,
173
+ 0.1522833,
174
+ 0.1421,
175
+ 0.1321786,
176
+ 0.1225696,
177
+ 0.1132752,
178
+ 0.1042979,
179
+ 0.09564,
180
+ 0.08729955,
181
+ 0.07930804,
182
+ 0.07171776,
183
+ 0.06458099,
184
+ 0.05795001,
185
+ 0.05186211,
186
+ 0.04628152,
187
+ 0.04115088,
188
+ 0.03641283,
189
+ 0.03201,
190
+ 0.0279172,
191
+ 0.0241444,
192
+ 0.020687,
193
+ 0.0175404,
194
+ 0.0147,
195
+ 0.01216179,
196
+ 991996e-8,
197
+ 796724e-8,
198
+ 6296346e-9,
199
+ 49e-4,
200
+ 3777173e-9,
201
+ 294532e-8,
202
+ 242488e-8,
203
+ 2236293e-9,
204
+ 24e-4,
205
+ 292552e-8,
206
+ 383656e-8,
207
+ 517484e-8,
208
+ 698208e-8,
209
+ 93e-4,
210
+ 0.01214949,
211
+ 0.01553588,
212
+ 0.01947752,
213
+ 0.02399277,
214
+ 0.0291,
215
+ 0.03481485,
216
+ 0.04112016,
217
+ 0.04798504,
218
+ 0.05537861,
219
+ 0.06327,
220
+ 0.07163501,
221
+ 0.08046224,
222
+ 0.08973996,
223
+ 0.09945645,
224
+ 0.1096,
225
+ 0.1201674,
226
+ 0.1311145,
227
+ 0.1423679,
228
+ 0.1538542,
229
+ 0.1655,
230
+ 0.1772571,
231
+ 0.18914,
232
+ 0.2011694,
233
+ 0.2133658,
234
+ 0.2257499,
235
+ 0.2383209,
236
+ 0.2510668,
237
+ 0.2639922,
238
+ 0.2771017,
239
+ 0.2904,
240
+ 0.3038912,
241
+ 0.3175726,
242
+ 0.3314384,
243
+ 0.3454828,
244
+ 0.3597,
245
+ 0.3740839,
246
+ 0.3886396,
247
+ 0.4033784,
248
+ 0.4183115,
249
+ 0.4334499,
250
+ 0.4487953,
251
+ 0.464336,
252
+ 0.480064,
253
+ 0.4959713,
254
+ 0.5120501,
255
+ 0.5282959,
256
+ 0.5446916,
257
+ 0.5612094,
258
+ 0.5778215,
259
+ 0.5945,
260
+ 0.6112209,
261
+ 0.6279758,
262
+ 0.6447602,
263
+ 0.6615697,
264
+ 0.6784,
265
+ 0.6952392,
266
+ 0.7120586,
267
+ 0.7288284,
268
+ 0.7455188,
269
+ 0.7621,
270
+ 0.7785432,
271
+ 0.7948256,
272
+ 0.8109264,
273
+ 0.8268248,
274
+ 0.8425,
275
+ 0.8579325,
276
+ 0.8730816,
277
+ 0.8878944,
278
+ 0.9023181,
279
+ 0.9163,
280
+ 0.9297995,
281
+ 0.9427984,
282
+ 0.9552776,
283
+ 0.9672179,
284
+ 0.9786,
285
+ 0.9893856,
286
+ 0.9995488,
287
+ 1.0090892,
288
+ 1.0180064,
289
+ 1.0263,
290
+ 1.0339827,
291
+ 1.040986,
292
+ 1.047188,
293
+ 1.0524667,
294
+ 1.0567,
295
+ 1.0597944,
296
+ 1.0617992,
297
+ 1.0628068,
298
+ 1.0629096,
299
+ 1.0622,
300
+ 1.0607352,
301
+ 1.0584436,
302
+ 1.0552244,
303
+ 1.0509768,
304
+ 1.0456,
305
+ 1.0390369,
306
+ 1.0313608,
307
+ 1.0226662,
308
+ 1.0130477,
309
+ 1.0026,
310
+ 0.9913675,
311
+ 0.9793314,
312
+ 0.9664916,
313
+ 0.9528479,
314
+ 0.9384,
315
+ 0.923194,
316
+ 0.907244,
317
+ 0.890502,
318
+ 0.87292,
319
+ 0.8544499,
320
+ 0.835084,
321
+ 0.814946,
322
+ 0.794186,
323
+ 0.772954,
324
+ 0.7514,
325
+ 0.7295836,
326
+ 0.7075888,
327
+ 0.6856022,
328
+ 0.6638104,
329
+ 0.6424,
330
+ 0.6215149,
331
+ 0.6011138,
332
+ 0.5811052,
333
+ 0.5613977,
334
+ 0.5419,
335
+ 0.5225995,
336
+ 0.5035464,
337
+ 0.4847436,
338
+ 0.4661939,
339
+ 0.4479,
340
+ 0.4298613,
341
+ 0.412098,
342
+ 0.394644,
343
+ 0.3775333,
344
+ 0.3608,
345
+ 0.3444563,
346
+ 0.3285168,
347
+ 0.3130192,
348
+ 0.2980011,
349
+ 0.2835,
350
+ 0.2695448,
351
+ 0.2561184,
352
+ 0.2431896,
353
+ 0.2307272,
354
+ 0.2187,
355
+ 0.2070971,
356
+ 0.1959232,
357
+ 0.1851708,
358
+ 0.1748323,
359
+ 0.1649,
360
+ 0.1553667,
361
+ 0.14623,
362
+ 0.13749,
363
+ 0.1291467,
364
+ 0.1212,
365
+ 0.1136397,
366
+ 0.106465,
367
+ 0.09969044,
368
+ 0.09333061,
369
+ 0.0874,
370
+ 0.08190096,
371
+ 0.07680428,
372
+ 0.07207712,
373
+ 0.06768664,
374
+ 0.0636,
375
+ 0.05980685,
376
+ 0.05628216,
377
+ 0.05297104,
378
+ 0.04981861,
379
+ 0.04677,
380
+ 0.04378405,
381
+ 0.04087536,
382
+ 0.03807264,
383
+ 0.03540461,
384
+ 0.0329,
385
+ 0.03056419,
386
+ 0.02838056,
387
+ 0.02634484,
388
+ 0.02445275,
389
+ 0.0227,
390
+ 0.02108429,
391
+ 0.01959988,
392
+ 0.01823732,
393
+ 0.01698717,
394
+ 0.01584,
395
+ 0.01479064,
396
+ 0.01383132,
397
+ 0.01294868,
398
+ 0.0121292,
399
+ 0.01135916,
400
+ 0.01062935,
401
+ 9938846e-9,
402
+ 9288422e-9,
403
+ 8678854e-9,
404
+ 8110916e-9,
405
+ 7582388e-9,
406
+ 7088746e-9,
407
+ 6627313e-9,
408
+ 6195408e-9,
409
+ 5790346e-9,
410
+ 5409826e-9,
411
+ 5052583e-9,
412
+ 4717512e-9,
413
+ 4403507e-9,
414
+ 4109457e-9,
415
+ 3833913e-9,
416
+ 3575748e-9,
417
+ 3334342e-9,
418
+ 3109075e-9,
419
+ 2899327e-9,
420
+ 2704348e-9,
421
+ 252302e-8,
422
+ 2354168e-9,
423
+ 2196616e-9,
424
+ 204919e-8,
425
+ 191096e-8,
426
+ 1781438e-9,
427
+ 166011e-8,
428
+ 1546459e-9,
429
+ 1439971e-9,
430
+ 1340042e-9,
431
+ 1246275e-9,
432
+ 1158471e-9,
433
+ 107643e-8,
434
+ 9999493e-10,
435
+ 9287358e-10,
436
+ 8624332e-10,
437
+ 8007503e-10,
438
+ 743396e-9,
439
+ 6900786e-10,
440
+ 6405156e-10,
441
+ 5945021e-10,
442
+ 5518646e-10,
443
+ 512429e-9,
444
+ 4760213e-10,
445
+ 4424536e-10,
446
+ 4115117e-10,
447
+ 3829814e-10,
448
+ 3566491e-10,
449
+ 3323011e-10,
450
+ 3097586e-10,
451
+ 2888871e-10,
452
+ 2695394e-10,
453
+ 2515682e-10,
454
+ 2348261e-10,
455
+ 219171e-9,
456
+ 2045258e-10,
457
+ 1908405e-10,
458
+ 1780654e-10,
459
+ 1661505e-10,
460
+ 1550236e-10,
461
+ 1446219e-10,
462
+ 1349098e-10,
463
+ 125852e-9,
464
+ 117413e-9,
465
+ 1095515e-10,
466
+ 1022245e-10,
467
+ 9539445e-11,
468
+ 890239e-10,
469
+ 8307527e-11,
470
+ 7751269e-11,
471
+ 7231304e-11,
472
+ 6745778e-11,
473
+ 6292844e-11,
474
+ 5870652e-11,
475
+ 5477028e-11,
476
+ 5109918e-11,
477
+ 4767654e-11,
478
+ 4448567e-11,
479
+ 4150994e-11,
480
+ 3873324e-11,
481
+ 3614203e-11,
482
+ 3372352e-11,
483
+ 3146487e-11,
484
+ 2935326e-11,
485
+ 2737573e-11,
486
+ 2552433e-11,
487
+ 2379376e-11,
488
+ 221787e-10,
489
+ 2067383e-11,
490
+ 1927226e-11,
491
+ 179664e-10,
492
+ 1674991e-11,
493
+ 1561648e-11,
494
+ 1455977e-11,
495
+ 1357387e-11,
496
+ 1265436e-11,
497
+ 1179723e-11,
498
+ 1099844e-11,
499
+ 1025398e-11,
500
+ 9559646e-12,
501
+ 8912044e-12,
502
+ 8308358e-12,
503
+ 7745769e-12,
504
+ 7221456e-12,
505
+ 6732475e-12,
506
+ 6276423e-12,
507
+ 5851304e-12,
508
+ 5455118e-12,
509
+ 5085868e-12,
510
+ 4741466e-12,
511
+ 4420236e-12,
512
+ 4120783e-12,
513
+ 3841716e-12,
514
+ 3581652e-12,
515
+ 3339127e-12,
516
+ 3112949e-12,
517
+ 2902121e-12,
518
+ 2705645e-12,
519
+ 2522525e-12,
520
+ 2351726e-12,
521
+ 2192415e-12,
522
+ 2043902e-12,
523
+ 1905497e-12,
524
+ 1776509e-12,
525
+ 1656215e-12,
526
+ 1544022e-12,
527
+ 143944e-11,
528
+ 1341977e-12,
529
+ 1251141e-12
530
+ ];
531
+ var CMF_Y = [
532
+ 3917e-9,
533
+ 4393581e-12,
534
+ 4929604e-12,
535
+ 5532136e-12,
536
+ 6208245e-12,
537
+ 6965e-9,
538
+ 7813219e-12,
539
+ 8767336e-12,
540
+ 9839844e-12,
541
+ 1104323e-11,
542
+ 1239e-8,
543
+ 1388641e-11,
544
+ 1555728e-11,
545
+ 1744296e-11,
546
+ 1958375e-11,
547
+ 2202e-8,
548
+ 2483965e-11,
549
+ 2804126e-11,
550
+ 3153104e-11,
551
+ 3521521e-11,
552
+ 39e-6,
553
+ 428264e-10,
554
+ 469146e-10,
555
+ 515896e-10,
556
+ 571764e-10,
557
+ 64e-6,
558
+ 7234421e-11,
559
+ 8221224e-11,
560
+ 9350816e-11,
561
+ 1061361e-10,
562
+ 12e-5,
563
+ 134984e-9,
564
+ 151492e-9,
565
+ 170208e-9,
566
+ 191816e-9,
567
+ 217e-6,
568
+ 2469067e-10,
569
+ 28124e-8,
570
+ 31852e-8,
571
+ 3572667e-10,
572
+ 396e-6,
573
+ 4337147e-10,
574
+ 473024e-9,
575
+ 517876e-9,
576
+ 5722187e-10,
577
+ 64e-5,
578
+ 72456e-8,
579
+ 8255e-7,
580
+ 94116e-8,
581
+ 106988e-8,
582
+ 121e-5,
583
+ 1362091e-9,
584
+ 1530752e-9,
585
+ 1720368e-9,
586
+ 1935323e-9,
587
+ 218e-5,
588
+ 24548e-7,
589
+ 2764e-6,
590
+ 31178e-7,
591
+ 35264e-7,
592
+ 4e-3,
593
+ 454624e-8,
594
+ 515932e-8,
595
+ 582928e-8,
596
+ 654616e-8,
597
+ 73e-4,
598
+ 8086507e-9,
599
+ 890872e-8,
600
+ 976768e-8,
601
+ 0.01066443,
602
+ 0.0116,
603
+ 0.01257317,
604
+ 0.01358272,
605
+ 0.01462968,
606
+ 0.01571509,
607
+ 0.01684,
608
+ 0.01800736,
609
+ 0.01921448,
610
+ 0.02045392,
611
+ 0.02171824,
612
+ 0.023,
613
+ 0.02429461,
614
+ 0.02561024,
615
+ 0.02695857,
616
+ 0.02835125,
617
+ 0.0298,
618
+ 0.03131083,
619
+ 0.03288368,
620
+ 0.03452112,
621
+ 0.03622571,
622
+ 0.038,
623
+ 0.03984667,
624
+ 0.041768,
625
+ 0.043766,
626
+ 0.04584267,
627
+ 0.048,
628
+ 0.05024368,
629
+ 0.05257304,
630
+ 0.05498056,
631
+ 0.05745872,
632
+ 0.06,
633
+ 0.06260197,
634
+ 0.06527752,
635
+ 0.06804208,
636
+ 0.07091109,
637
+ 0.0739,
638
+ 0.077016,
639
+ 0.0802664,
640
+ 0.0836668,
641
+ 0.0872328,
642
+ 0.09098,
643
+ 0.09491755,
644
+ 0.09904584,
645
+ 0.1033674,
646
+ 0.1078846,
647
+ 0.1126,
648
+ 0.117532,
649
+ 0.1226744,
650
+ 0.1279928,
651
+ 0.1334528,
652
+ 0.13902,
653
+ 0.1446764,
654
+ 0.1504693,
655
+ 0.1564619,
656
+ 0.1627177,
657
+ 0.1693,
658
+ 0.1762431,
659
+ 0.1835581,
660
+ 0.1912735,
661
+ 0.199418,
662
+ 0.20802,
663
+ 0.2171199,
664
+ 0.2267345,
665
+ 0.2368571,
666
+ 0.2474812,
667
+ 0.2586,
668
+ 0.2701849,
669
+ 0.2822939,
670
+ 0.2950505,
671
+ 0.308578,
672
+ 0.323,
673
+ 0.3384021,
674
+ 0.3546858,
675
+ 0.3716986,
676
+ 0.3892875,
677
+ 0.4073,
678
+ 0.4256299,
679
+ 0.4443096,
680
+ 0.4633944,
681
+ 0.4829395,
682
+ 0.503,
683
+ 0.5235693,
684
+ 0.544512,
685
+ 0.56569,
686
+ 0.5869653,
687
+ 0.6082,
688
+ 0.6293456,
689
+ 0.6503068,
690
+ 0.6708752,
691
+ 0.6908424,
692
+ 0.71,
693
+ 0.7281852,
694
+ 0.7454636,
695
+ 0.7619694,
696
+ 0.7778368,
697
+ 0.7932,
698
+ 0.8081104,
699
+ 0.8224962,
700
+ 0.8363068,
701
+ 0.8494916,
702
+ 0.862,
703
+ 0.8738108,
704
+ 0.8849624,
705
+ 0.8954936,
706
+ 0.9054432,
707
+ 0.9148501,
708
+ 0.9237348,
709
+ 0.9320924,
710
+ 0.9399226,
711
+ 0.9472252,
712
+ 0.954,
713
+ 0.9602561,
714
+ 0.9660074,
715
+ 0.9712606,
716
+ 0.9760225,
717
+ 0.9803,
718
+ 0.9840924,
719
+ 0.9874182,
720
+ 0.9903128,
721
+ 0.9928116,
722
+ 0.9949501,
723
+ 0.9967108,
724
+ 0.9980983,
725
+ 0.999112,
726
+ 0.9997482,
727
+ 1,
728
+ 0.9998567,
729
+ 0.9993046,
730
+ 0.9983255,
731
+ 0.9968987,
732
+ 0.995,
733
+ 0.9926005,
734
+ 0.9897426,
735
+ 0.9864444,
736
+ 0.9827241,
737
+ 0.9786,
738
+ 0.9740837,
739
+ 0.9691712,
740
+ 0.9638568,
741
+ 0.9581349,
742
+ 0.952,
743
+ 0.9454504,
744
+ 0.9384992,
745
+ 0.9311628,
746
+ 0.9234576,
747
+ 0.9154,
748
+ 0.9070064,
749
+ 0.8982772,
750
+ 0.8892048,
751
+ 0.8797816,
752
+ 0.87,
753
+ 0.8598613,
754
+ 0.849392,
755
+ 0.838622,
756
+ 0.8275813,
757
+ 0.8163,
758
+ 0.8047947,
759
+ 0.793082,
760
+ 0.781192,
761
+ 0.7691547,
762
+ 0.757,
763
+ 0.7447541,
764
+ 0.7324224,
765
+ 0.7200036,
766
+ 0.7074965,
767
+ 0.6949,
768
+ 0.6822192,
769
+ 0.6694716,
770
+ 0.6566744,
771
+ 0.6438448,
772
+ 0.631,
773
+ 0.6181555,
774
+ 0.6053144,
775
+ 0.5924756,
776
+ 0.5796379,
777
+ 0.5668,
778
+ 0.5539611,
779
+ 0.5411372,
780
+ 0.5283528,
781
+ 0.5156323,
782
+ 0.503,
783
+ 0.4904688,
784
+ 0.4780304,
785
+ 0.4656776,
786
+ 0.4534032,
787
+ 0.4412,
788
+ 0.42908,
789
+ 0.417036,
790
+ 0.405032,
791
+ 0.393032,
792
+ 0.381,
793
+ 0.3689184,
794
+ 0.3568272,
795
+ 0.3447768,
796
+ 0.3328176,
797
+ 0.321,
798
+ 0.3093381,
799
+ 0.2978504,
800
+ 0.2865936,
801
+ 0.2756245,
802
+ 0.265,
803
+ 0.2547632,
804
+ 0.2448896,
805
+ 0.2353344,
806
+ 0.2260528,
807
+ 0.217,
808
+ 0.2081616,
809
+ 0.1995488,
810
+ 0.1911552,
811
+ 0.1829744,
812
+ 0.175,
813
+ 0.1672235,
814
+ 0.1596464,
815
+ 0.1522776,
816
+ 0.1451259,
817
+ 0.1382,
818
+ 0.1315003,
819
+ 0.1250248,
820
+ 0.1187792,
821
+ 0.1127691,
822
+ 0.107,
823
+ 0.1014762,
824
+ 0.09618864,
825
+ 0.09112296,
826
+ 0.08626485,
827
+ 0.0816,
828
+ 0.07712064,
829
+ 0.07282552,
830
+ 0.06871008,
831
+ 0.06476976,
832
+ 0.061,
833
+ 0.05739621,
834
+ 0.05395504,
835
+ 0.05067376,
836
+ 0.04754965,
837
+ 0.04458,
838
+ 0.04175872,
839
+ 0.03908496,
840
+ 0.03656384,
841
+ 0.03420048,
842
+ 0.032,
843
+ 0.02996261,
844
+ 0.02807664,
845
+ 0.02632936,
846
+ 0.02470805,
847
+ 0.0232,
848
+ 0.02180077,
849
+ 0.02050112,
850
+ 0.01928108,
851
+ 0.01812069,
852
+ 0.017,
853
+ 0.01590379,
854
+ 0.01483718,
855
+ 0.01381068,
856
+ 0.01283478,
857
+ 0.01192,
858
+ 0.01106831,
859
+ 0.01027339,
860
+ 9533311e-9,
861
+ 8846157e-9,
862
+ 821e-5,
863
+ 7623781e-9,
864
+ 7085424e-9,
865
+ 6591476e-9,
866
+ 6138485e-9,
867
+ 5723e-6,
868
+ 5343059e-9,
869
+ 4995796e-9,
870
+ 4676404e-9,
871
+ 4380075e-9,
872
+ 4102e-6,
873
+ 3838453e-9,
874
+ 3589099e-9,
875
+ 3354219e-9,
876
+ 3134093e-9,
877
+ 2929e-6,
878
+ 2738139e-9,
879
+ 2559876e-9,
880
+ 2393244e-9,
881
+ 2237275e-9,
882
+ 2091e-6,
883
+ 1953587e-9,
884
+ 182458e-8,
885
+ 170358e-8,
886
+ 1590187e-9,
887
+ 1484e-6,
888
+ 1384496e-9,
889
+ 1291268e-9,
890
+ 1204092e-9,
891
+ 1122744e-9,
892
+ 1047e-6,
893
+ 9765896e-10,
894
+ 9111088e-10,
895
+ 8501332e-10,
896
+ 7932384e-10,
897
+ 74e-5,
898
+ 6900827e-10,
899
+ 64331e-8,
900
+ 599496e-9,
901
+ 5584547e-10,
902
+ 52e-5,
903
+ 4839136e-10,
904
+ 4500528e-10,
905
+ 4183452e-10,
906
+ 3887184e-10,
907
+ 3611e-7,
908
+ 3353835e-10,
909
+ 3114404e-10,
910
+ 2891656e-10,
911
+ 2684539e-10,
912
+ 2492e-7,
913
+ 2313019e-10,
914
+ 2146856e-10,
915
+ 1992884e-10,
916
+ 1850475e-10,
917
+ 1719e-7,
918
+ 1597781e-10,
919
+ 1486044e-10,
920
+ 1383016e-10,
921
+ 1287925e-10,
922
+ 12e-5,
923
+ 1118595e-10,
924
+ 1043224e-10,
925
+ 973356e-10,
926
+ 9084587e-11,
927
+ 848e-7,
928
+ 7914667e-11,
929
+ 73858e-9,
930
+ 68916e-9,
931
+ 6430267e-11,
932
+ 6e-5,
933
+ 5598187e-11,
934
+ 522256e-10,
935
+ 487184e-10,
936
+ 4544747e-11,
937
+ 424e-7,
938
+ 3956104e-11,
939
+ 3691512e-11,
940
+ 3444868e-11,
941
+ 3214816e-11,
942
+ 3e-5,
943
+ 2799125e-11,
944
+ 2611356e-11,
945
+ 2436024e-11,
946
+ 2272461e-11,
947
+ 212e-7,
948
+ 1977855e-11,
949
+ 1845285e-11,
950
+ 1721687e-11,
951
+ 1606459e-11,
952
+ 1499e-8,
953
+ 1398728e-11,
954
+ 1305155e-11,
955
+ 1217818e-11,
956
+ 1136254e-11,
957
+ 106e-7,
958
+ 9885877e-12,
959
+ 9217304e-12,
960
+ 8592362e-12,
961
+ 8009133e-12,
962
+ 74657e-10,
963
+ 6959567e-12,
964
+ 6487995e-12,
965
+ 6048699e-12,
966
+ 5639396e-12,
967
+ 52578e-10,
968
+ 4901771e-12,
969
+ 456972e-11,
970
+ 4260194e-12,
971
+ 3971739e-12,
972
+ 37029e-10,
973
+ 3452163e-12,
974
+ 3218302e-12,
975
+ 30003e-10,
976
+ 2797139e-12,
977
+ 26078e-10,
978
+ 243122e-11,
979
+ 2266531e-12,
980
+ 2113013e-12,
981
+ 1969943e-12,
982
+ 18366e-10,
983
+ 171223e-11,
984
+ 1596228e-12,
985
+ 148809e-11,
986
+ 1387314e-12,
987
+ 12934e-10,
988
+ 120582e-11,
989
+ 1124143e-12,
990
+ 1048009e-12,
991
+ 977058e-12,
992
+ 91093e-11,
993
+ 849251e-12,
994
+ 791721e-12,
995
+ 73809e-11,
996
+ 68811e-11,
997
+ 64153e-11,
998
+ 59809e-11,
999
+ 557575e-12,
1000
+ 519808e-12,
1001
+ 484612e-12,
1002
+ 45181e-11
1003
+ ];
1004
+ var CMF_Z = [
1005
+ 6061e-7,
1006
+ 6808792e-10,
1007
+ 7651456e-10,
1008
+ 8600124e-10,
1009
+ 9665928e-10,
1010
+ 1086e-6,
1011
+ 1220586e-9,
1012
+ 1372729e-9,
1013
+ 1543579e-9,
1014
+ 1734286e-9,
1015
+ 1946e-6,
1016
+ 2177777e-9,
1017
+ 2435809e-9,
1018
+ 2731953e-9,
1019
+ 3078064e-9,
1020
+ 3486e-6,
1021
+ 3975227e-9,
1022
+ 454088e-8,
1023
+ 515832e-8,
1024
+ 5802907e-9,
1025
+ 6450001e-9,
1026
+ 7083216e-9,
1027
+ 7745488e-9,
1028
+ 8501152e-9,
1029
+ 9414544e-9,
1030
+ 0.01054999,
1031
+ 0.0119658,
1032
+ 0.01365587,
1033
+ 0.01558805,
1034
+ 0.01773015,
1035
+ 0.02005001,
1036
+ 0.02251136,
1037
+ 0.02520288,
1038
+ 0.02827972,
1039
+ 0.03189704,
1040
+ 0.03621,
1041
+ 0.04143771,
1042
+ 0.04750372,
1043
+ 0.05411988,
1044
+ 0.06099803,
1045
+ 0.06785001,
1046
+ 0.07448632,
1047
+ 0.08136156,
1048
+ 0.08915364,
1049
+ 0.09854048,
1050
+ 0.1102,
1051
+ 0.1246133,
1052
+ 0.1417017,
1053
+ 0.1613035,
1054
+ 0.1832568,
1055
+ 0.2074,
1056
+ 0.2336921,
1057
+ 0.2626114,
1058
+ 0.2947746,
1059
+ 0.3307985,
1060
+ 0.3713,
1061
+ 0.4162091,
1062
+ 0.4654642,
1063
+ 0.5196948,
1064
+ 0.5795303,
1065
+ 0.6456,
1066
+ 0.7184838,
1067
+ 0.7967133,
1068
+ 0.8778459,
1069
+ 0.959439,
1070
+ 1.0390501,
1071
+ 1.1153673,
1072
+ 1.1884971,
1073
+ 1.2581233,
1074
+ 1.3239296,
1075
+ 1.3856,
1076
+ 1.4426352,
1077
+ 1.4948035,
1078
+ 1.5421903,
1079
+ 1.5848807,
1080
+ 1.62296,
1081
+ 1.6564048,
1082
+ 1.6852959,
1083
+ 1.7098745,
1084
+ 1.7303821,
1085
+ 1.74706,
1086
+ 1.7600446,
1087
+ 1.7696233,
1088
+ 1.7762637,
1089
+ 1.7804334,
1090
+ 1.7826,
1091
+ 1.7829682,
1092
+ 1.7816998,
1093
+ 1.7791982,
1094
+ 1.7758671,
1095
+ 1.77211,
1096
+ 1.7682589,
1097
+ 1.764039,
1098
+ 1.7589438,
1099
+ 1.7524663,
1100
+ 1.7441,
1101
+ 1.7335595,
1102
+ 1.7208581,
1103
+ 1.7059369,
1104
+ 1.6887372,
1105
+ 1.6692,
1106
+ 1.6475287,
1107
+ 1.6234127,
1108
+ 1.5960223,
1109
+ 1.564528,
1110
+ 1.5281,
1111
+ 1.4861114,
1112
+ 1.4395215,
1113
+ 1.3898799,
1114
+ 1.3387362,
1115
+ 1.28764,
1116
+ 1.2374223,
1117
+ 1.1878243,
1118
+ 1.1387611,
1119
+ 1.090148,
1120
+ 1.0419,
1121
+ 0.9941976,
1122
+ 0.9473473,
1123
+ 0.9014531,
1124
+ 0.8566193,
1125
+ 0.8129501,
1126
+ 0.7705173,
1127
+ 0.7294448,
1128
+ 0.6899136,
1129
+ 0.6521049,
1130
+ 0.6162,
1131
+ 0.5823286,
1132
+ 0.5504162,
1133
+ 0.5203376,
1134
+ 0.4919673,
1135
+ 0.46518,
1136
+ 0.4399246,
1137
+ 0.4161836,
1138
+ 0.3938822,
1139
+ 0.3729459,
1140
+ 0.3533,
1141
+ 0.3348578,
1142
+ 0.3175521,
1143
+ 0.3013375,
1144
+ 0.2861686,
1145
+ 0.272,
1146
+ 0.2588171,
1147
+ 0.2464838,
1148
+ 0.2347718,
1149
+ 0.2234533,
1150
+ 0.2123,
1151
+ 0.2011692,
1152
+ 0.1901196,
1153
+ 0.1792254,
1154
+ 0.1685608,
1155
+ 0.1582,
1156
+ 0.1481383,
1157
+ 0.1383758,
1158
+ 0.1289942,
1159
+ 0.1200751,
1160
+ 0.1117,
1161
+ 0.1039048,
1162
+ 0.09666748,
1163
+ 0.08998272,
1164
+ 0.08384531,
1165
+ 0.07824999,
1166
+ 0.07320899,
1167
+ 0.06867816,
1168
+ 0.06456784,
1169
+ 0.06078835,
1170
+ 0.05725001,
1171
+ 0.05390435,
1172
+ 0.05074664,
1173
+ 0.04775276,
1174
+ 0.04489859,
1175
+ 0.04216,
1176
+ 0.03950728,
1177
+ 0.03693564,
1178
+ 0.03445836,
1179
+ 0.03208872,
1180
+ 0.02984,
1181
+ 0.02771181,
1182
+ 0.02569444,
1183
+ 0.02378716,
1184
+ 0.02198925,
1185
+ 0.0203,
1186
+ 0.01871805,
1187
+ 0.01724036,
1188
+ 0.01586364,
1189
+ 0.01458461,
1190
+ 0.0134,
1191
+ 0.01230723,
1192
+ 0.01130188,
1193
+ 0.01037792,
1194
+ 9529306e-9,
1195
+ 8749999e-9,
1196
+ 80352e-7,
1197
+ 73816e-7,
1198
+ 67854e-7,
1199
+ 62428e-7,
1200
+ 5749999e-9,
1201
+ 53036e-7,
1202
+ 48998e-7,
1203
+ 45342e-7,
1204
+ 42024e-7,
1205
+ 39e-4,
1206
+ 36232e-7,
1207
+ 33706e-7,
1208
+ 31414e-7,
1209
+ 29348e-7,
1210
+ 2749999e-9,
1211
+ 25852e-7,
1212
+ 24386e-7,
1213
+ 23094e-7,
1214
+ 21968e-7,
1215
+ 21e-4,
1216
+ 2017733e-9,
1217
+ 19482e-7,
1218
+ 18898e-7,
1219
+ 1840933e-9,
1220
+ 18e-4,
1221
+ 1766267e-9,
1222
+ 17378e-7,
1223
+ 17112e-7,
1224
+ 1683067e-9,
1225
+ 1650001e-9,
1226
+ 1610133e-9,
1227
+ 15644e-7,
1228
+ 15136e-7,
1229
+ 1458533e-9,
1230
+ 14e-4,
1231
+ 1336667e-9,
1232
+ 127e-5,
1233
+ 1205e-6,
1234
+ 1146667e-9,
1235
+ 11e-4,
1236
+ 10688e-7,
1237
+ 10494e-7,
1238
+ 10356e-7,
1239
+ 10212e-7,
1240
+ 1e-3,
1241
+ 96864e-8,
1242
+ 92992e-8,
1243
+ 88688e-8,
1244
+ 84256e-8,
1245
+ 8e-4,
1246
+ 76096e-8,
1247
+ 72368e-8,
1248
+ 68592e-8,
1249
+ 64544e-8,
1250
+ 6e-4,
1251
+ 5478667e-10,
1252
+ 4916e-7,
1253
+ 4354e-7,
1254
+ 3834667e-10,
1255
+ 34e-5,
1256
+ 3072533e-10,
1257
+ 28316e-8,
1258
+ 26544e-8,
1259
+ 2518133e-10,
1260
+ 24e-5,
1261
+ 2295467e-10,
1262
+ 22064e-8,
1263
+ 21196e-8,
1264
+ 2021867e-10,
1265
+ 19e-5,
1266
+ 1742133e-10,
1267
+ 15564e-8,
1268
+ 13596e-8,
1269
+ 1168533e-10,
1270
+ 1e-4,
1271
+ 8613333e-11,
1272
+ 746e-7,
1273
+ 65e-6,
1274
+ 5693333e-11,
1275
+ 4999999e-11,
1276
+ 4416e-8,
1277
+ 3948e-8,
1278
+ 3572e-8,
1279
+ 3264e-8,
1280
+ 3e-5,
1281
+ 2765333e-11,
1282
+ 2556e-8,
1283
+ 2364e-8,
1284
+ 2181333e-11,
1285
+ 2e-5,
1286
+ 1813333e-11,
1287
+ 162e-7,
1288
+ 142e-7,
1289
+ 1213333e-11,
1290
+ 1e-5,
1291
+ 7733333e-12,
1292
+ 54e-7,
1293
+ 32e-7,
1294
+ 1333333e-12,
1295
+ 0,
1296
+ 0,
1297
+ 0,
1298
+ 0,
1299
+ 0,
1300
+ 0,
1301
+ 0,
1302
+ 0,
1303
+ 0,
1304
+ 0,
1305
+ 0,
1306
+ 0,
1307
+ 0,
1308
+ 0,
1309
+ 0,
1310
+ 0,
1311
+ 0,
1312
+ 0,
1313
+ 0,
1314
+ 0,
1315
+ 0,
1316
+ 0,
1317
+ 0,
1318
+ 0,
1319
+ 0,
1320
+ 0,
1321
+ 0,
1322
+ 0,
1323
+ 0,
1324
+ 0,
1325
+ 0,
1326
+ 0,
1327
+ 0,
1328
+ 0,
1329
+ 0,
1330
+ 0,
1331
+ 0,
1332
+ 0,
1333
+ 0,
1334
+ 0,
1335
+ 0,
1336
+ 0,
1337
+ 0,
1338
+ 0,
1339
+ 0,
1340
+ 0,
1341
+ 0,
1342
+ 0,
1343
+ 0,
1344
+ 0,
1345
+ 0,
1346
+ 0,
1347
+ 0,
1348
+ 0,
1349
+ 0,
1350
+ 0,
1351
+ 0,
1352
+ 0,
1353
+ 0,
1354
+ 0,
1355
+ 0,
1356
+ 0,
1357
+ 0,
1358
+ 0,
1359
+ 0,
1360
+ 0,
1361
+ 0,
1362
+ 0,
1363
+ 0,
1364
+ 0,
1365
+ 0,
1366
+ 0,
1367
+ 0,
1368
+ 0,
1369
+ 0,
1370
+ 0,
1371
+ 0,
1372
+ 0,
1373
+ 0,
1374
+ 0,
1375
+ 0,
1376
+ 0,
1377
+ 0,
1378
+ 0,
1379
+ 0,
1380
+ 0,
1381
+ 0,
1382
+ 0,
1383
+ 0,
1384
+ 0,
1385
+ 0,
1386
+ 0,
1387
+ 0,
1388
+ 0,
1389
+ 0,
1390
+ 0,
1391
+ 0,
1392
+ 0,
1393
+ 0,
1394
+ 0,
1395
+ 0,
1396
+ 0,
1397
+ 0,
1398
+ 0,
1399
+ 0,
1400
+ 0,
1401
+ 0,
1402
+ 0,
1403
+ 0,
1404
+ 0,
1405
+ 0,
1406
+ 0,
1407
+ 0,
1408
+ 0,
1409
+ 0,
1410
+ 0,
1411
+ 0,
1412
+ 0,
1413
+ 0,
1414
+ 0,
1415
+ 0,
1416
+ 0,
1417
+ 0,
1418
+ 0,
1419
+ 0,
1420
+ 0,
1421
+ 0,
1422
+ 0,
1423
+ 0,
1424
+ 0,
1425
+ 0,
1426
+ 0,
1427
+ 0,
1428
+ 0,
1429
+ 0,
1430
+ 0,
1431
+ 0,
1432
+ 0,
1433
+ 0,
1434
+ 0,
1435
+ 0,
1436
+ 0,
1437
+ 0,
1438
+ 0,
1439
+ 0,
1440
+ 0,
1441
+ 0,
1442
+ 0,
1443
+ 0,
1444
+ 0,
1445
+ 0,
1446
+ 0,
1447
+ 0,
1448
+ 0,
1449
+ 0,
1450
+ 0,
1451
+ 0,
1452
+ 0,
1453
+ 0,
1454
+ 0,
1455
+ 0,
1456
+ 0,
1457
+ 0,
1458
+ 0,
1459
+ 0,
1460
+ 0,
1461
+ 0,
1462
+ 0,
1463
+ 0,
1464
+ 0,
1465
+ 0,
1466
+ 0,
1467
+ 0,
1468
+ 0,
1469
+ 0,
1470
+ 0,
1471
+ 0,
1472
+ 0,
1473
+ 0,
1474
+ 0,
1475
+ 0
1476
+ ];
1477
+ var D65_START = 300;
1478
+ var D65_STEP = 5;
1479
+ var D65_VALUES = [
1480
+ 0.0341,
1481
+ 1.6643,
1482
+ 3.2945,
1483
+ 11.7652,
1484
+ 20.236,
1485
+ 28.6447,
1486
+ 37.0535,
1487
+ 38.5011,
1488
+ 39.9488,
1489
+ 42.4302,
1490
+ 44.9117,
1491
+ 45.775,
1492
+ 46.6383,
1493
+ 49.3637,
1494
+ 52.0891,
1495
+ 51.0323,
1496
+ 49.9755,
1497
+ 52.3118,
1498
+ 54.6482,
1499
+ 68.7015,
1500
+ 82.7549,
1501
+ 87.1204,
1502
+ 91.486,
1503
+ 92.4589,
1504
+ 93.4318,
1505
+ 90.057,
1506
+ 86.6823,
1507
+ 95.7736,
1508
+ 104.865,
1509
+ 110.936,
1510
+ 117.008,
1511
+ 117.41,
1512
+ 117.812,
1513
+ 116.336,
1514
+ 114.861,
1515
+ 115.392,
1516
+ 115.923,
1517
+ 112.367,
1518
+ 108.811,
1519
+ 109.082,
1520
+ 109.354,
1521
+ 108.578,
1522
+ 107.802,
1523
+ 106.296,
1524
+ 104.79,
1525
+ 106.239,
1526
+ 107.689,
1527
+ 106.047,
1528
+ 104.405,
1529
+ 104.225,
1530
+ 104.046,
1531
+ 102.023,
1532
+ 100,
1533
+ 98.1671,
1534
+ 96.3342,
1535
+ 96.0611,
1536
+ 95.788,
1537
+ 92.2368,
1538
+ 88.6856,
1539
+ 89.3459,
1540
+ 90.0062,
1541
+ 89.8026,
1542
+ 89.5991,
1543
+ 88.6489,
1544
+ 87.6987,
1545
+ 85.4936,
1546
+ 83.2886,
1547
+ 83.4939,
1548
+ 83.6992,
1549
+ 81.863,
1550
+ 80.0268,
1551
+ 80.1207,
1552
+ 80.2146,
1553
+ 81.2462,
1554
+ 82.2778,
1555
+ 80.281,
1556
+ 78.2842,
1557
+ 74.0027,
1558
+ 69.7213,
1559
+ 70.6652,
1560
+ 71.6091,
1561
+ 72.979,
1562
+ 74.349,
1563
+ 67.9765,
1564
+ 61.604,
1565
+ 65.7448,
1566
+ 69.8856,
1567
+ 72.4863,
1568
+ 75.087,
1569
+ 69.3398,
1570
+ 63.5927,
1571
+ 55.0054,
1572
+ 46.4182,
1573
+ 56.6118,
1574
+ 66.8054,
1575
+ 65.0941,
1576
+ 63.3828
1577
+ ];
1578
+ var XYZ_TO_LINEAR_SRGB = [
1579
+ [3.2406, -1.5372, -0.4986],
1580
+ [-0.9689, 1.8758, 0.0415],
1581
+ [0.0557, -0.204, 1.057]
1582
+ ];
1583
+ var LINEAR_SRGB_TO_XYZ = [
1584
+ [0.412395588967, 0.357583430764, 0.180492647382],
1585
+ [0.212586230786, 0.715170303703, 0.0722004986433],
1586
+ [0.0192972154917, 0.119183864581, 0.950497125132]
1587
+ ];
1588
+ var OKLAB_M1 = [
1589
+ [0.8189330101, 0.3618667424, -0.1288597137],
1590
+ [0.0329845436, 0.9293118715, 0.0361456387],
1591
+ [0.0482003018, 0.2643662691, 0.633851707]
1592
+ ];
1593
+ var OKLAB_M1_INV = [
1594
+ [1.2270138511, -0.557799980652, 0.281256148966],
1595
+ [-0.0405801784233, 1.11225686962, -0.0716766786656],
1596
+ [-0.0763812845057, -0.421481978418, 1.58616322044]
1597
+ ];
1598
+ var OKLAB_M2 = [
1599
+ [0.2104542553, 0.793617785, -0.0040720468],
1600
+ [1.977998495, -2.428592205, 0.4505937099],
1601
+ [0.0259040371, 0.7827717662, -0.808675766]
1602
+ ];
1603
+ var OKLAB_M2_INV = [
1604
+ [0.999999998451, 0.396337792174, 0.215803758061],
1605
+ [1.00000000888, -0.105561342324, -0.0638541747717],
1606
+ [1.00000005467, -0.089484182095, -1.29148553786]
1607
+ ];
1608
+
1609
+ // src/spectrum.ts
1610
+ var CMF_RANGE = { start: CMF_START, end: CMF_START + CMF_STEP * (CMF_X.length - 1) };
1611
+ var H = 662607015e-42;
1612
+ var C = 299792458;
1613
+ var K = 1380649e-29;
1614
+ function spectrum(start, step, values) {
1615
+ if (!(step > 0)) throw new RangeError(`spectrum step must be positive, got ${step}`);
1616
+ if (values.length === 0) throw new RangeError("spectrum needs at least one value");
1617
+ return { start, step, values: values.slice() };
1618
+ }
1619
+ function sample(fn, start = CMF_RANGE.start, end = CMF_RANGE.end, step = 1) {
1620
+ if (!(step > 0)) throw new RangeError(`sample step must be positive, got ${step}`);
1621
+ const n = Math.floor((end - start) / step + 1e-9) + 1;
1622
+ const values = Array.from({ length: n }, (_, i) => fn(start + i * step));
1623
+ return { start, step, values };
1624
+ }
1625
+ function valueAt(s, nm) {
1626
+ if (typeof s === "function") return s(nm);
1627
+ const pos = (nm - s.start) / s.step;
1628
+ const last = s.values.length - 1;
1629
+ if (pos < 0 || pos > last + 1e-9) return 0;
1630
+ const i = Math.min(Math.floor(pos), last);
1631
+ if (i === last) return s.values[last];
1632
+ const f = pos - i;
1633
+ return s.values[i] * (1 - f) + s.values[i + 1] * f;
1634
+ }
1635
+ function multiply(a, ...others) {
1636
+ const values = a.values.map((v, i) => {
1637
+ const nm = a.start + i * a.step;
1638
+ let out = v;
1639
+ for (const o of others) out *= valueAt(o, nm);
1640
+ return out;
1641
+ });
1642
+ return { start: a.start, step: a.step, values };
1643
+ }
1644
+ function scale(s, k) {
1645
+ return { start: s.start, step: s.step, values: s.values.map((v) => v * k) };
1646
+ }
1647
+ function normalize(s) {
1648
+ const max = Math.max(...s.values);
1649
+ return max > 0 ? scale(s, 1 / max) : s;
1650
+ }
1651
+ function planck(nm, kelvin) {
1652
+ const lam = nm * 1e-9;
1653
+ const perMetre = 2 * H * C * C / (lam ** 5 * Math.expm1(H * C / (lam * K * kelvin)));
1654
+ return perMetre * 1e-9;
1655
+ }
1656
+ function wienPeak(kelvin) {
1657
+ return 2897771955e-3 / kelvin;
1658
+ }
1659
+ function blackbody(kelvin, start = CMF_RANGE.start, end = CMF_RANGE.end, step = 1) {
1660
+ const ref = planck(560, kelvin);
1661
+ return sample((nm) => planck(nm, kelvin) / ref, start, end, step);
1662
+ }
1663
+ var d65Cache = null;
1664
+ var aCache = null;
1665
+ function illuminantD65() {
1666
+ return d65Cache ??= { start: D65_START, step: D65_STEP, values: D65_VALUES };
1667
+ }
1668
+ function illuminantA() {
1669
+ const c = 1435e4 / 2848;
1670
+ return aCache ??= sample(
1671
+ (nm) => 100 * (560 / nm) ** 5 * (Math.expm1(c / 560) / Math.expm1(c / nm)),
1672
+ 300,
1673
+ 830,
1674
+ 1
1675
+ );
1676
+ }
1677
+ function rayleigh(opticalDepth, referenceNm = 550) {
1678
+ return (nm) => Math.exp(-opticalDepth * (referenceNm / nm) ** 4);
1679
+ }
1680
+ function cmf(nm) {
1681
+ const pos = (nm - CMF_START) / CMF_STEP;
1682
+ const last = CMF_X.length - 1;
1683
+ if (pos < 0 || pos > last) return [0, 0, 0];
1684
+ const i = Math.min(Math.floor(pos), last - 1);
1685
+ const f = pos - i;
1686
+ return [
1687
+ CMF_X[i] * (1 - f) + CMF_X[i + 1] * f,
1688
+ CMF_Y[i] * (1 - f) + CMF_Y[i + 1] * f,
1689
+ CMF_Z[i] * (1 - f) + CMF_Z[i + 1] * f
1690
+ ];
1691
+ }
1692
+ function integrate(s) {
1693
+ let x = 0, y = 0, z = 0;
1694
+ for (let i = 0; i < CMF_X.length; i++) {
1695
+ const v = valueAt(s, CMF_START + i * CMF_STEP);
1696
+ if (v === 0) continue;
1697
+ x += v * CMF_X[i];
1698
+ y += v * CMF_Y[i];
1699
+ z += v * CMF_Z[i];
1700
+ }
1701
+ return [x * CMF_STEP, y * CMF_STEP, z * CMF_STEP];
1702
+ }
1703
+ function toXYZ(s, opts = {}) {
1704
+ const { illuminant } = opts;
1705
+ if (!illuminant) return integrate(s);
1706
+ const lit = integrate((nm) => valueAt(s, nm) * valueAt(illuminant, nm));
1707
+ const white = integrate(illuminant)[1];
1708
+ if (!(white > 0)) throw new RangeError("illuminant has no luminance");
1709
+ return [lit[0] / white, lit[1] / white, lit[2] / white];
1710
+ }
1711
+ function chromaticity(xyz) {
1712
+ const sum = xyz[0] + xyz[1] + xyz[2];
1713
+ if (!(sum > 0)) return [0.3127, 0.329];
1714
+ return [xyz[0] / sum, xyz[1] / sum];
1715
+ }
1716
+ function apply(m, v) {
1717
+ const [r0, r1, r2] = m;
1718
+ const [x, y, z] = v;
1719
+ return [
1720
+ r0[0] * x + r0[1] * y + r0[2] * z,
1721
+ r1[0] * x + r1[1] * y + r1[2] * z,
1722
+ r2[0] * x + r2[1] * y + r2[2] * z
1723
+ ];
1724
+ }
1725
+ function xyzToOklab(xyz) {
1726
+ return apply(OKLAB_M2, apply(OKLAB_M1, xyz).map(Math.cbrt));
1727
+ }
1728
+ function oklabToXyz(lab) {
1729
+ return apply(OKLAB_M1_INV, apply(OKLAB_M2_INV, lab).map((v) => v * v * v));
1730
+ }
1731
+ function linearSrgbToOklab(rgb) {
1732
+ return xyzToOklab(linearSrgbToXyz(rgb));
1733
+ }
1734
+ function oklabToLinearSrgb(lab) {
1735
+ return xyzToLinearSrgb(oklabToXyz(lab));
1736
+ }
1737
+ function xyzToLinearSrgb(xyz) {
1738
+ return apply(XYZ_TO_LINEAR_SRGB, xyz);
1739
+ }
1740
+ function linearSrgbToXyz(rgb) {
1741
+ return apply(LINEAR_SRGB_TO_XYZ, rgb);
1742
+ }
1743
+ function encodeSrgb(v) {
1744
+ return v <= 31308e-7 ? 12.92 * v : 1.055 * v ** (1 / 2.4) - 0.055;
1745
+ }
1746
+ function decodeSrgb(v) {
1747
+ return v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;
1748
+ }
1749
+ var EPS = 1e-9;
1750
+ var inGamut = (rgb) => rgb.every((v) => v >= -EPS && v <= 1 + EPS);
1751
+ var clamp01 = (rgb) => rgb.map((v) => Math.min(1, Math.max(0, v)));
1752
+ function chromaReduce(lin) {
1753
+ if (inGamut(lin)) return clamp01(lin);
1754
+ const [L, a, b] = linearSrgbToOklab(lin);
1755
+ if (L >= 1) return [1, 1, 1];
1756
+ if (L <= 0) return [0, 0, 0];
1757
+ const c = Math.hypot(a, b);
1758
+ const ca = a / c, cb = b / c;
1759
+ let lo = 0, hi = c;
1760
+ for (let i = 0; i < 40; i++) {
1761
+ const mid = (lo + hi) / 2;
1762
+ if (inGamut(oklabToLinearSrgb([L, mid * ca, mid * cb]))) lo = mid;
1763
+ else hi = mid;
1764
+ }
1765
+ return clamp01(oklabToLinearSrgb([L, lo * ca, lo * cb]));
1766
+ }
1767
+ function hueOf(lin) {
1768
+ const [, a, b] = linearSrgbToOklab(lin);
1769
+ const h = Math.atan2(b, a);
1770
+ return h < 0 ? h + 2 * Math.PI : h;
1771
+ }
1772
+ var CORNERS = [[1, 0, 0], [1, 1, 0], [0, 1, 0], [0, 1, 1], [0, 0, 1], [1, 0, 1]];
1773
+ var cornerHues = null;
1774
+ function cusp(hue) {
1775
+ const unwrapped = cornerHues ??= CORNERS.map(hueOf);
1776
+ const target = hue < unwrapped[0] ? hue + 2 * Math.PI : hue;
1777
+ let i = unwrapped.length - 1;
1778
+ for (let k = 0; k < unwrapped.length - 1; k++) {
1779
+ if (target < unwrapped[k + 1]) {
1780
+ i = k;
1781
+ break;
1782
+ }
1783
+ }
1784
+ const from = CORNERS[i], to = CORNERS[(i + 1) % CORNERS.length];
1785
+ const h0 = unwrapped[i];
1786
+ const along = (t) => from.map((v, j) => v + (to[j] - v) * t);
1787
+ const hueAlong = (t) => {
1788
+ const h = hueOf(along(t));
1789
+ return h < h0 - 1e-9 ? h + 2 * Math.PI : h;
1790
+ };
1791
+ let lo = 0, hi = 1;
1792
+ for (let k = 0; k < 40; k++) {
1793
+ const mid = (lo + hi) / 2;
1794
+ if (hueAlong(mid) < target) lo = mid;
1795
+ else hi = mid;
1796
+ }
1797
+ return along((lo + hi) / 2);
1798
+ }
1799
+ function intoGamut(rgb, luminance, gamut) {
1800
+ if (gamut === "none") return rgb;
1801
+ if (gamut === "clip") return clamp01(rgb);
1802
+ if (gamut === "perceptual") return chromaReduce(rgb);
1803
+ let out = rgb;
1804
+ const min = Math.min(...out);
1805
+ if (min < 0) {
1806
+ if (!(luminance > 0)) return [0, 0, 0];
1807
+ const k = luminance / (luminance - min);
1808
+ out = out.map((v) => luminance + (v - luminance) * k);
1809
+ }
1810
+ const max = Math.max(...out);
1811
+ if (max > 1) out = out.map((v) => v / max);
1812
+ return out.map((v) => Math.max(0, v));
1813
+ }
1814
+ function fullBrightness(lin, gamut) {
1815
+ let out;
1816
+ if (gamut === "perceptual") out = Math.min(...lin) < -EPS ? cusp(hueOf(lin)) : lin.map((v) => Math.max(0, v));
1817
+ else out = intoGamut(lin, 1, gamut);
1818
+ const max = Math.max(...out);
1819
+ return out.map((v) => v / max);
1820
+ }
1821
+ function xyzToSrgb(xyz, opts = {}) {
1822
+ const lin = intoGamut(xyzToLinearSrgb(xyz), xyz[1], opts.gamut ?? "perceptual");
1823
+ return lin.map(encodeSrgb);
1824
+ }
1825
+ function lightColor(s, opts = {}) {
1826
+ const xyz = integrate(s);
1827
+ if (!(xyz[1] > 0)) return [0, 0, 0];
1828
+ const unit = [xyz[0] / xyz[1], 1, xyz[2] / xyz[1]];
1829
+ return fullBrightness(xyzToLinearSrgb(unit), opts.gamut ?? "perceptual").map(encodeSrgb);
1830
+ }
1831
+ function wavelengthColor(nm, opts = {}) {
1832
+ const [x, y, z] = cmf(nm);
1833
+ if (!(y > 0)) return [0, 0, 0];
1834
+ let lin = fullBrightness(xyzToLinearSrgb([x / y, 1, z / y]), opts.gamut ?? "perceptual");
1835
+ if (opts.brightness === "luminous") lin = lin.map((v) => v * y);
1836
+ return lin.map(encodeSrgb);
1837
+ }
1838
+ function to8bit(rgb) {
1839
+ return rgb.map((v) => Math.round(Math.min(1, Math.max(0, v)) * 255));
1840
+ }
1841
+ function toCss(rgb, alpha) {
1842
+ const [r, g, b] = to8bit(rgb);
1843
+ return alpha === void 0 ? `rgb(${r},${g},${b})` : `rgba(${r},${g},${b},${alpha})`;
1844
+ }
1845
+ return __toCommonJS(index_exports);
1846
+ })();
1847
+ //# sourceMappingURL=index.global.js.map