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