@rfkit/charts 1.10.1 → 1.10.2
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/README.md +21 -0
- package/components/Overlay/Dropdown/index.d.ts +3 -0
- package/components/ui/scroll-area.d.ts +3 -1
- package/index.d.ts +1 -1
- package/index.js +1148 -174
- package/modules/Spectrum/FrequencyDataBoard/hooks/index.d.ts +1 -1
- package/modules/Spectrum/FrequencyDataBoard/hooks/useStationInfoAtCursor.d.ts +1 -1
- package/modules/Spectrum/FrequencyDataBoard/index.d.ts +1 -1
- package/modules/Spectrum/FrequencyDataBoard/panels/StationInfoPanel/index.d.ts +2 -2
- package/modules/Spectrum/FrequencyDataBoard/panels/index.d.ts +1 -1
- package/modules/Spectrum/Signal/Switch/index.d.ts +2 -1
- package/modules/Spectrum/Signal/index.d.ts +1 -1
- package/modules/Spectrum/Signal/metadata/index.d.ts +2 -1
- package/modules/Spectrum/Signal/metadata/level.d.ts +25 -0
- package/modules/Spectrum/Signal/metadata/signalType.d.ts +18 -13
- package/modules/Spectrum/Signal/model/index.d.ts +3 -2
- package/modules/Spectrum/Signal/model/match.d.ts +15 -0
- package/modules/Spectrum/Signal/model/resolver.d.ts +24 -1
- package/modules/Spectrum/Signal/model/tree.d.ts +70 -0
- package/modules/Spectrum/Signal/model/useStationInfoAtCursor.d.ts +5 -2
- package/modules/Spectrum/Signal/model/useUnifiedSignals.d.ts +3 -2
- package/modules/Spectrum/Signal/presenters/SignalSegments/index.d.ts +1 -1
- package/package.json +1 -1
- package/types/common.d.ts +3 -0
- package/types/store/signal.d.ts +3 -0
- package/modules/Spectrum/Signal/utils.d.ts +0 -27
package/index.js
CHANGED
|
@@ -121,9 +121,15 @@ var __webpack_modules__ = {
|
|
|
121
121
|
--tw-skew-x: initial;
|
|
122
122
|
--tw-skew-y: initial;
|
|
123
123
|
--tw-space-y-reverse: 0;
|
|
124
|
+
--tw-divide-y-reverse: 0;
|
|
124
125
|
--tw-border-style: solid;
|
|
125
126
|
--tw-leading: initial;
|
|
126
127
|
--tw-font-weight: initial;
|
|
128
|
+
--tw-ordinal: initial;
|
|
129
|
+
--tw-slashed-zero: initial;
|
|
130
|
+
--tw-numeric-figure: initial;
|
|
131
|
+
--tw-numeric-spacing: initial;
|
|
132
|
+
--tw-numeric-fraction: initial;
|
|
127
133
|
--tw-shadow: 0 0 #0000;
|
|
128
134
|
--tw-shadow-color: initial;
|
|
129
135
|
--tw-shadow-alpha: 100%;
|
|
@@ -202,9 +208,15 @@ var __webpack_modules__ = {
|
|
|
202
208
|
--tw-skew-x: initial;
|
|
203
209
|
--tw-skew-y: initial;
|
|
204
210
|
--tw-space-y-reverse: 0;
|
|
211
|
+
--tw-divide-y-reverse: 0;
|
|
205
212
|
--tw-border-style: solid;
|
|
206
213
|
--tw-leading: initial;
|
|
207
214
|
--tw-font-weight: initial;
|
|
215
|
+
--tw-ordinal: initial;
|
|
216
|
+
--tw-slashed-zero: initial;
|
|
217
|
+
--tw-numeric-figure: initial;
|
|
218
|
+
--tw-numeric-spacing: initial;
|
|
219
|
+
--tw-numeric-fraction: initial;
|
|
208
220
|
--tw-shadow: 0 0 #0000;
|
|
209
221
|
--tw-shadow-color: initial;
|
|
210
222
|
--tw-shadow-alpha: 100%;
|
|
@@ -493,6 +505,10 @@ var __webpack_modules__ = {
|
|
|
493
505
|
inset-inline: 0;
|
|
494
506
|
}
|
|
495
507
|
|
|
508
|
+
[data-rfkit-charts-root] .inset-y-0 {
|
|
509
|
+
inset-block: 0;
|
|
510
|
+
}
|
|
511
|
+
|
|
496
512
|
[data-rfkit-charts-root] .top-0 {
|
|
497
513
|
top: 0;
|
|
498
514
|
}
|
|
@@ -597,6 +613,10 @@ var __webpack_modules__ = {
|
|
|
597
613
|
isolation: isolate;
|
|
598
614
|
}
|
|
599
615
|
|
|
616
|
+
[data-rfkit-charts-root] .z-0 {
|
|
617
|
+
z-index: 0;
|
|
618
|
+
}
|
|
619
|
+
|
|
600
620
|
[data-rfkit-charts-root] .z-10 {
|
|
601
621
|
z-index: 10;
|
|
602
622
|
}
|
|
@@ -759,6 +779,14 @@ var __webpack_modules__ = {
|
|
|
759
779
|
margin-bottom: calc(var(--spacing) * 2);
|
|
760
780
|
}
|
|
761
781
|
|
|
782
|
+
[data-rfkit-charts-root] .ml-4 {
|
|
783
|
+
margin-left: calc(var(--spacing) * 4);
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
[data-rfkit-charts-root] .ml-6 {
|
|
787
|
+
margin-left: calc(var(--spacing) * 6);
|
|
788
|
+
}
|
|
789
|
+
|
|
762
790
|
[data-rfkit-charts-root] .ml-\\[-0\\.5px\\] {
|
|
763
791
|
margin-left: -.5px;
|
|
764
792
|
}
|
|
@@ -811,6 +839,11 @@ var __webpack_modules__ = {
|
|
|
811
839
|
display: inline-flex;
|
|
812
840
|
}
|
|
813
841
|
|
|
842
|
+
[data-rfkit-charts-root] .size-2 {
|
|
843
|
+
width: calc(var(--spacing) * 2);
|
|
844
|
+
height: calc(var(--spacing) * 2);
|
|
845
|
+
}
|
|
846
|
+
|
|
814
847
|
[data-rfkit-charts-root] .size-3 {
|
|
815
848
|
width: calc(var(--spacing) * 3);
|
|
816
849
|
height: calc(var(--spacing) * 3);
|
|
@@ -839,6 +872,10 @@ var __webpack_modules__ = {
|
|
|
839
872
|
height: calc(var(--spacing) * 1.5);
|
|
840
873
|
}
|
|
841
874
|
|
|
875
|
+
[data-rfkit-charts-root] .h-2 {
|
|
876
|
+
height: calc(var(--spacing) * 2);
|
|
877
|
+
}
|
|
878
|
+
|
|
842
879
|
[data-rfkit-charts-root] .h-2\\.5 {
|
|
843
880
|
height: calc(var(--spacing) * 2.5);
|
|
844
881
|
}
|
|
@@ -939,6 +976,10 @@ var __webpack_modules__ = {
|
|
|
939
976
|
max-height: calc(var(--spacing) * 96);
|
|
940
977
|
}
|
|
941
978
|
|
|
979
|
+
[data-rfkit-charts-root] .max-h-\\[var\\(--radix-dropdown-menu-content-available-height\\)\\] {
|
|
980
|
+
max-height: var(--radix-dropdown-menu-content-available-height);
|
|
981
|
+
}
|
|
982
|
+
|
|
942
983
|
[data-rfkit-charts-root] .min-h-0 {
|
|
943
984
|
min-height: 0;
|
|
944
985
|
}
|
|
@@ -987,6 +1028,10 @@ var __webpack_modules__ = {
|
|
|
987
1028
|
width: calc(var(--spacing) * 9);
|
|
988
1029
|
}
|
|
989
1030
|
|
|
1031
|
+
[data-rfkit-charts-root] .w-10 {
|
|
1032
|
+
width: calc(var(--spacing) * 10);
|
|
1033
|
+
}
|
|
1034
|
+
|
|
990
1035
|
[data-rfkit-charts-root] .w-14 {
|
|
991
1036
|
width: calc(var(--spacing) * 14);
|
|
992
1037
|
}
|
|
@@ -1044,6 +1089,10 @@ var __webpack_modules__ = {
|
|
|
1044
1089
|
width: 100%;
|
|
1045
1090
|
}
|
|
1046
1091
|
|
|
1092
|
+
[data-rfkit-charts-root] .w-max {
|
|
1093
|
+
width: max-content;
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1047
1096
|
[data-rfkit-charts-root] .w-px {
|
|
1048
1097
|
width: 1px;
|
|
1049
1098
|
}
|
|
@@ -1072,6 +1121,10 @@ var __webpack_modules__ = {
|
|
|
1072
1121
|
max-width: 520px;
|
|
1073
1122
|
}
|
|
1074
1123
|
|
|
1124
|
+
[data-rfkit-charts-root] .max-w-\\[calc\\(100vw-1rem\\)\\] {
|
|
1125
|
+
max-width: calc(100vw - 1rem);
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1075
1128
|
[data-rfkit-charts-root] .max-w-full {
|
|
1076
1129
|
max-width: 100%;
|
|
1077
1130
|
}
|
|
@@ -1351,6 +1404,12 @@ var __webpack_modules__ = {
|
|
|
1351
1404
|
gap: var(--size-gap-base);
|
|
1352
1405
|
}
|
|
1353
1406
|
|
|
1407
|
+
[data-rfkit-charts-root] :where(.space-y-0\\.5 > :not(:last-child)) {
|
|
1408
|
+
--tw-space-y-reverse: 0;
|
|
1409
|
+
margin-block-start: calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));
|
|
1410
|
+
margin-block-end: calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)));
|
|
1411
|
+
}
|
|
1412
|
+
|
|
1354
1413
|
[data-rfkit-charts-root] :where(.space-y-1 > :not(:last-child)) {
|
|
1355
1414
|
--tw-space-y-reverse: 0;
|
|
1356
1415
|
margin-block-start: calc(var(--spacing) * var(--tw-space-y-reverse));
|
|
@@ -1385,6 +1444,24 @@ var __webpack_modules__ = {
|
|
|
1385
1444
|
row-gap: calc(var(--spacing) * 2);
|
|
1386
1445
|
}
|
|
1387
1446
|
|
|
1447
|
+
[data-rfkit-charts-root] :where(.divide-y > :not(:last-child)) {
|
|
1448
|
+
--tw-divide-y-reverse: 0;
|
|
1449
|
+
border-bottom-style: var(--tw-border-style);
|
|
1450
|
+
border-top-style: var(--tw-border-style);
|
|
1451
|
+
border-top-width: calc(1px * var(--tw-divide-y-reverse));
|
|
1452
|
+
border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
|
|
1453
|
+
}
|
|
1454
|
+
|
|
1455
|
+
[data-rfkit-charts-root] :where(.divide-border\\/40 > :not(:last-child)) {
|
|
1456
|
+
border-color: var(--border);
|
|
1457
|
+
}
|
|
1458
|
+
|
|
1459
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1460
|
+
[data-rfkit-charts-root] :where(.divide-border\\/40 > :not(:last-child)) {
|
|
1461
|
+
border-color: color-mix(in oklab, var(--border) 40%, transparent);
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1388
1465
|
[data-rfkit-charts-root] .self-center {
|
|
1389
1466
|
align-self: center;
|
|
1390
1467
|
}
|
|
@@ -1576,7 +1653,17 @@ var __webpack_modules__ = {
|
|
|
1576
1653
|
border-left-color: #0000;
|
|
1577
1654
|
}
|
|
1578
1655
|
|
|
1579
|
-
[data-rfkit-charts-root] .bg-accent, [data-rfkit-charts-root] .bg-accent\\/
|
|
1656
|
+
[data-rfkit-charts-root] .bg-accent, [data-rfkit-charts-root] .bg-accent\\/72 {
|
|
1657
|
+
background-color: var(--accent);
|
|
1658
|
+
}
|
|
1659
|
+
|
|
1660
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1661
|
+
[data-rfkit-charts-root] .bg-accent\\/72 {
|
|
1662
|
+
background-color: color-mix(in oklab, var(--accent) 72%, transparent);
|
|
1663
|
+
}
|
|
1664
|
+
}
|
|
1665
|
+
|
|
1666
|
+
[data-rfkit-charts-root] .bg-accent\\/80 {
|
|
1580
1667
|
background-color: var(--accent);
|
|
1581
1668
|
}
|
|
1582
1669
|
|
|
@@ -1886,8 +1973,8 @@ var __webpack_modules__ = {
|
|
|
1886
1973
|
padding-top: 0;
|
|
1887
1974
|
}
|
|
1888
1975
|
|
|
1889
|
-
[data-rfkit-charts-root] .pt-
|
|
1890
|
-
padding-top: var(--spacing);
|
|
1976
|
+
[data-rfkit-charts-root] .pt-2 {
|
|
1977
|
+
padding-top: calc(var(--spacing) * 2);
|
|
1891
1978
|
}
|
|
1892
1979
|
|
|
1893
1980
|
[data-rfkit-charts-root] .pt-\\[calc\\(var\\(--size-gap-base\\)\\/2\\)\\] {
|
|
@@ -1922,6 +2009,10 @@ var __webpack_modules__ = {
|
|
|
1922
2009
|
padding-left: calc(var(--spacing) * .5);
|
|
1923
2010
|
}
|
|
1924
2011
|
|
|
2012
|
+
[data-rfkit-charts-root] .pl-1 {
|
|
2013
|
+
padding-left: var(--spacing);
|
|
2014
|
+
}
|
|
2015
|
+
|
|
1925
2016
|
[data-rfkit-charts-root] .pl-8 {
|
|
1926
2017
|
padding-left: calc(var(--spacing) * 8);
|
|
1927
2018
|
}
|
|
@@ -2021,6 +2112,10 @@ var __webpack_modules__ = {
|
|
|
2021
2112
|
font-weight: var(--font-weight-semibold);
|
|
2022
2113
|
}
|
|
2023
2114
|
|
|
2115
|
+
[data-rfkit-charts-root] .break-words {
|
|
2116
|
+
overflow-wrap: break-word;
|
|
2117
|
+
}
|
|
2118
|
+
|
|
2024
2119
|
[data-rfkit-charts-root] .text-ellipsis {
|
|
2025
2120
|
text-overflow: ellipsis;
|
|
2026
2121
|
}
|
|
@@ -2105,6 +2200,11 @@ var __webpack_modules__ = {
|
|
|
2105
2200
|
color: var(--color-white);
|
|
2106
2201
|
}
|
|
2107
2202
|
|
|
2203
|
+
[data-rfkit-charts-root] .tabular-nums {
|
|
2204
|
+
--tw-numeric-spacing: tabular-nums;
|
|
2205
|
+
font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
|
|
2206
|
+
}
|
|
2207
|
+
|
|
2108
2208
|
[data-rfkit-charts-root] .\\[font-variant-numeric\\:tabular-nums\\] {
|
|
2109
2209
|
font-variant-numeric: tabular-nums;
|
|
2110
2210
|
}
|
|
@@ -2125,6 +2225,10 @@ var __webpack_modules__ = {
|
|
|
2125
2225
|
opacity: .3;
|
|
2126
2226
|
}
|
|
2127
2227
|
|
|
2228
|
+
[data-rfkit-charts-root] .opacity-35 {
|
|
2229
|
+
opacity: .35;
|
|
2230
|
+
}
|
|
2231
|
+
|
|
2128
2232
|
[data-rfkit-charts-root] .opacity-40 {
|
|
2129
2233
|
opacity: .4;
|
|
2130
2234
|
}
|
|
@@ -2180,6 +2284,20 @@ var __webpack_modules__ = {
|
|
|
2180
2284
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2181
2285
|
}
|
|
2182
2286
|
|
|
2287
|
+
[data-rfkit-charts-root] .shadow-\\[inset_0_0_0_1px_color-mix\\(in_srgb\\,var\\(--primary\\)_28\\%\\,transparent\\)\\] {
|
|
2288
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, var(--primary));
|
|
2289
|
+
}
|
|
2290
|
+
|
|
2291
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2292
|
+
[data-rfkit-charts-root] .shadow-\\[inset_0_0_0_1px_color-mix\\(in_srgb\\,var\\(--primary\\)_28\\%\\,transparent\\)\\] {
|
|
2293
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, color-mix(in srgb, var(--primary) 28%, transparent));
|
|
2294
|
+
}
|
|
2295
|
+
}
|
|
2296
|
+
|
|
2297
|
+
[data-rfkit-charts-root] .shadow-\\[inset_0_0_0_1px_color-mix\\(in_srgb\\,var\\(--primary\\)_28\\%\\,transparent\\)\\] {
|
|
2298
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2299
|
+
}
|
|
2300
|
+
|
|
2183
2301
|
[data-rfkit-charts-root] .shadow-lg {
|
|
2184
2302
|
--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a), 0 4px 6px -4px var(--tw-shadow-color, #0000001a);
|
|
2185
2303
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -2215,6 +2333,11 @@ var __webpack_modules__ = {
|
|
|
2215
2333
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2216
2334
|
}
|
|
2217
2335
|
|
|
2336
|
+
[data-rfkit-charts-root] .ring-1 {
|
|
2337
|
+
--tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
2338
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2339
|
+
}
|
|
2340
|
+
|
|
2218
2341
|
[data-rfkit-charts-root] .\\[box-shadow\\:0_0_0_1px_color-mix\\(in_srgb\\,var\\(--background\\)_82\\%\\,transparent\\)\\,[data-rfkit-charts-root] 0_1px_4px_color-mix\\(in_srgb\\,var\\(--foreground\\)_32\\%\\,transparent\\)\\] {
|
|
2219
2342
|
box-shadow: 0 0 0 1px var(--background), 0 1px 4px var(--foreground);
|
|
2220
2343
|
}
|
|
@@ -2235,6 +2358,20 @@ var __webpack_modules__ = {
|
|
|
2235
2358
|
}
|
|
2236
2359
|
}
|
|
2237
2360
|
|
|
2361
|
+
[data-rfkit-charts-root] .ring-background\\/30 {
|
|
2362
|
+
--tw-ring-color: var(--background);
|
|
2363
|
+
}
|
|
2364
|
+
|
|
2365
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2366
|
+
[data-rfkit-charts-root] .ring-background\\/30 {
|
|
2367
|
+
--tw-ring-color: color-mix(in oklab, var(--background) 30%, transparent);
|
|
2368
|
+
}
|
|
2369
|
+
}
|
|
2370
|
+
|
|
2371
|
+
[data-rfkit-charts-root] .ring-border {
|
|
2372
|
+
--tw-ring-color: var(--border);
|
|
2373
|
+
}
|
|
2374
|
+
|
|
2238
2375
|
[data-rfkit-charts-root] .ring-offset-background {
|
|
2239
2376
|
--tw-ring-offset-color: var(--background);
|
|
2240
2377
|
}
|
|
@@ -2404,6 +2541,10 @@ var __webpack_modules__ = {
|
|
|
2404
2541
|
animation-play-state: paused;
|
|
2405
2542
|
}
|
|
2406
2543
|
|
|
2544
|
+
[data-rfkit-charts-root] .ring-inset {
|
|
2545
|
+
--tw-ring-inset: inset;
|
|
2546
|
+
}
|
|
2547
|
+
|
|
2407
2548
|
[data-rfkit-charts-root] .group-focus-within\\:opacity-90:is(:where(.group):focus-within *) {
|
|
2408
2549
|
opacity: .9;
|
|
2409
2550
|
}
|
|
@@ -2539,6 +2680,16 @@ var __webpack_modules__ = {
|
|
|
2539
2680
|
}
|
|
2540
2681
|
}
|
|
2541
2682
|
|
|
2683
|
+
[data-rfkit-charts-root] .hover\\:bg-accent\\/80:hover {
|
|
2684
|
+
background-color: var(--accent);
|
|
2685
|
+
}
|
|
2686
|
+
|
|
2687
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2688
|
+
[data-rfkit-charts-root] .hover\\:bg-accent\\/80:hover {
|
|
2689
|
+
background-color: color-mix(in oklab, var(--accent) 80%, transparent);
|
|
2690
|
+
}
|
|
2691
|
+
}
|
|
2692
|
+
|
|
2542
2693
|
[data-rfkit-charts-root] .hover\\:bg-background\\/70:hover {
|
|
2543
2694
|
background-color: var(--background);
|
|
2544
2695
|
}
|
|
@@ -2924,16 +3075,12 @@ var __webpack_modules__ = {
|
|
|
2924
3075
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
2925
3076
|
}
|
|
2926
3077
|
|
|
2927
|
-
[data-rfkit-charts-root] .data-\\[state\\=checked\\]\\:border-
|
|
2928
|
-
border-color:
|
|
2929
|
-
}
|
|
2930
|
-
|
|
2931
|
-
[data-rfkit-charts-root] .data-\\[state\\=checked\\]\\:bg-current[data-state="checked"] {
|
|
2932
|
-
background-color: currentColor;
|
|
3078
|
+
[data-rfkit-charts-root] .data-\\[state\\=checked\\]\\:border-primary[data-state="checked"] {
|
|
3079
|
+
border-color: var(--primary);
|
|
2933
3080
|
}
|
|
2934
3081
|
|
|
2935
|
-
[data-rfkit-charts-root] .data-\\[state\\=checked\\]\\:text-
|
|
2936
|
-
color: var(--
|
|
3082
|
+
[data-rfkit-charts-root] .data-\\[state\\=checked\\]\\:text-primary-foreground[data-state="checked"] {
|
|
3083
|
+
color: var(--primary-foreground, #fff);
|
|
2937
3084
|
}
|
|
2938
3085
|
|
|
2939
3086
|
[data-rfkit-charts-root] .data-\\[state\\=closed\\]\\:animate-out[data-state="closed"] {
|
|
@@ -2948,6 +3095,18 @@ var __webpack_modules__ = {
|
|
|
2948
3095
|
--tw-exit-scale: .95;
|
|
2949
3096
|
}
|
|
2950
3097
|
|
|
3098
|
+
[data-rfkit-charts-root] .data-\\[state\\=indeterminate\\]\\:border-primary[data-state="indeterminate"] {
|
|
3099
|
+
border-color: var(--primary);
|
|
3100
|
+
}
|
|
3101
|
+
|
|
3102
|
+
[data-rfkit-charts-root] .data-\\[state\\=indeterminate\\]\\:bg-primary[data-state="indeterminate"] {
|
|
3103
|
+
background-color: var(--primary);
|
|
3104
|
+
}
|
|
3105
|
+
|
|
3106
|
+
[data-rfkit-charts-root] .data-\\[state\\=indeterminate\\]\\:text-primary-foreground[data-state="indeterminate"] {
|
|
3107
|
+
color: var(--primary-foreground, #fff);
|
|
3108
|
+
}
|
|
3109
|
+
|
|
2951
3110
|
[data-rfkit-charts-root] .data-\\[state\\=open\\]\\:animate-in[data-state="open"] {
|
|
2952
3111
|
animation: enter var(--tw-animation-duration, var(--tw-duration, .15s)) var(--tw-ease, ease) var(--tw-animation-delay, 0s) var(--tw-animation-iteration-count, 1) var(--tw-animation-direction, normal) var(--tw-animation-fill-mode, none);
|
|
2953
3112
|
}
|
|
@@ -3126,6 +3285,14 @@ var __webpack_modules__ = {
|
|
|
3126
3285
|
justify-content: center;
|
|
3127
3286
|
}
|
|
3128
3287
|
|
|
3288
|
+
[data-rfkit-charts-root] .\\[\\&\\>span\\:last-child\\]\\:ml-0 > span:last-child {
|
|
3289
|
+
margin-left: 0;
|
|
3290
|
+
}
|
|
3291
|
+
|
|
3292
|
+
[data-rfkit-charts-root] .\\[\\&\\>span\\:last-child\\]\\:text-primary > span:last-child {
|
|
3293
|
+
color: var(--primary);
|
|
3294
|
+
}
|
|
3295
|
+
|
|
3129
3296
|
[data-rfkit-charts-root] .\\[\\&\\>svg\\]\\:h-full > svg {
|
|
3130
3297
|
height: 100%;
|
|
3131
3298
|
}
|
|
@@ -3471,6 +3638,12 @@ var __webpack_modules__ = {
|
|
|
3471
3638
|
initial-value: 0;
|
|
3472
3639
|
}
|
|
3473
3640
|
|
|
3641
|
+
@property --tw-divide-y-reverse {
|
|
3642
|
+
syntax: "*";
|
|
3643
|
+
inherits: false;
|
|
3644
|
+
initial-value: 0;
|
|
3645
|
+
}
|
|
3646
|
+
|
|
3474
3647
|
@property --tw-border-style {
|
|
3475
3648
|
syntax: "*";
|
|
3476
3649
|
inherits: false;
|
|
@@ -3487,6 +3660,31 @@ var __webpack_modules__ = {
|
|
|
3487
3660
|
inherits: false
|
|
3488
3661
|
}
|
|
3489
3662
|
|
|
3663
|
+
@property --tw-ordinal {
|
|
3664
|
+
syntax: "*";
|
|
3665
|
+
inherits: false
|
|
3666
|
+
}
|
|
3667
|
+
|
|
3668
|
+
@property --tw-slashed-zero {
|
|
3669
|
+
syntax: "*";
|
|
3670
|
+
inherits: false
|
|
3671
|
+
}
|
|
3672
|
+
|
|
3673
|
+
@property --tw-numeric-figure {
|
|
3674
|
+
syntax: "*";
|
|
3675
|
+
inherits: false
|
|
3676
|
+
}
|
|
3677
|
+
|
|
3678
|
+
@property --tw-numeric-spacing {
|
|
3679
|
+
syntax: "*";
|
|
3680
|
+
inherits: false
|
|
3681
|
+
}
|
|
3682
|
+
|
|
3683
|
+
@property --tw-numeric-fraction {
|
|
3684
|
+
syntax: "*";
|
|
3685
|
+
inherits: false
|
|
3686
|
+
}
|
|
3687
|
+
|
|
3490
3688
|
@property --tw-shadow {
|
|
3491
3689
|
syntax: "*";
|
|
3492
3690
|
inherits: false;
|
|
@@ -5789,6 +5987,7 @@ function createParams() {
|
|
|
5789
5987
|
show: true,
|
|
5790
5988
|
display: false,
|
|
5791
5989
|
data: [],
|
|
5990
|
+
hiddenCategoryKeys: [],
|
|
5792
5991
|
onChange: ()=>{}
|
|
5793
5992
|
},
|
|
5794
5993
|
signalAnalysis: {
|
|
@@ -17401,14 +17600,15 @@ const ScrollBar = /*#__PURE__*/ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(({
|
|
|
17401
17600
|
})
|
|
17402
17601
|
}));
|
|
17403
17602
|
ScrollBar.displayName = ScrollAreaScrollbar.displayName;
|
|
17404
|
-
const scroll_area_ScrollArea = /*#__PURE__*/ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(({ className, children, ...props }, ref)=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(react_scroll_area_dist_Root, {
|
|
17603
|
+
const scroll_area_ScrollArea = /*#__PURE__*/ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(({ className, viewportClassName, children, ...props }, ref)=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(react_scroll_area_dist_Root, {
|
|
17405
17604
|
ref: ref,
|
|
17406
17605
|
"data-slot": "scroll-area",
|
|
17407
17606
|
className: cn_cn('relative overflow-hidden', className),
|
|
17408
17607
|
...props,
|
|
17409
17608
|
children: [
|
|
17410
17609
|
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Viewport, {
|
|
17411
|
-
|
|
17610
|
+
"data-slot": "scroll-area-viewport",
|
|
17611
|
+
className: cn_cn('h-full w-full rounded-[inherit]', viewportClassName),
|
|
17412
17612
|
children: children
|
|
17413
17613
|
}),
|
|
17414
17614
|
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ScrollBar, {}),
|
|
@@ -18114,7 +18314,7 @@ const Tooltip_Tooltip = ({ children, content, delay = 200, duration = 3000, offs
|
|
|
18114
18314
|
});
|
|
18115
18315
|
};
|
|
18116
18316
|
const Overlay_Tooltip = Tooltip_Tooltip;
|
|
18117
|
-
const Dropdown_Dropdown = ({ value: value1, options, onChange, placeholder = "\u8BF7\u9009\u62E9", triggerContent, triggerTitle, closeOnSelect = true, triggerVariant = 'default', showChevron = true, triggerClassName, contentClassName })=>{
|
|
18317
|
+
const Dropdown_Dropdown = ({ value: value1, options, onChange, placeholder = "\u8BF7\u9009\u62E9", triggerContent, triggerTitle, closeOnSelect = true, triggerVariant = 'default', showChevron = true, triggerClassName, contentClassName, contentAlignOffset, customContent, triggerTestId })=>{
|
|
18118
18318
|
const [open, setOpen] = (0, __WEBPACK_EXTERNAL_MODULE_react__.useState)(false);
|
|
18119
18319
|
const handleSelect = (0, __WEBPACK_EXTERNAL_MODULE_react__.useCallback)((option)=>{
|
|
18120
18320
|
const nextValue = option.value ?? null;
|
|
@@ -18144,6 +18344,7 @@ const Dropdown_Dropdown = ({ value: value1, options, onChange, placeholder = "\u
|
|
|
18144
18344
|
asChild: true,
|
|
18145
18345
|
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("button", {
|
|
18146
18346
|
type: "button",
|
|
18347
|
+
"data-testid": triggerTestId,
|
|
18147
18348
|
className: cn_cn('cursor-pointer appearance-none select-none border-0 bg-transparent text-left', 'default' === triggerVariant && TOOLBAR_OUTLINED_TRIGGER_CLASS_NAME, 'default' === triggerVariant && TOOLBAR_OUTLINED_TRIGGER_OPEN_CLASS_NAME, 'plain' === triggerVariant && TOOLBAR_INLINE_TRIGGER_CLASS_NAME, triggerClassName),
|
|
18148
18349
|
children: [
|
|
18149
18350
|
resolvedTriggerContent,
|
|
@@ -18166,10 +18367,11 @@ const Dropdown_Dropdown = ({ value: value1, options, onChange, placeholder = "\u
|
|
|
18166
18367
|
}) : triggerNode,
|
|
18167
18368
|
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(dropdown_menu_DropdownMenuContent, {
|
|
18168
18369
|
align: "start",
|
|
18370
|
+
alignOffset: contentAlignOffset,
|
|
18169
18371
|
collisionPadding: 8,
|
|
18170
18372
|
className: cn_cn('min-w-[140px] [min-width:var(--radix-dropdown-menu-trigger-width)]', contentClassName),
|
|
18171
|
-
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(scroll_area_ScrollArea, {
|
|
18172
|
-
|
|
18373
|
+
children: customContent ?? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(scroll_area_ScrollArea, {
|
|
18374
|
+
viewportClassName: "h-auto max-h-64",
|
|
18173
18375
|
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
18174
18376
|
children: options.map((option, index)=>'separator' === option.type ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(dropdown_menu_DropdownMenuSeparator, {
|
|
18175
18377
|
style: option.style
|
|
@@ -18697,6 +18899,7 @@ const ToolbarGroupSeparator = ({ className })=>/*#__PURE__*/ (0, __WEBPACK_EXTER
|
|
|
18697
18899
|
className: cn_cn(TOOLBAR_GROUP_SEPARATOR_CLASS_NAME, className),
|
|
18698
18900
|
orientation: "vertical"
|
|
18699
18901
|
});
|
|
18902
|
+
const TOOLBAR_DROPDOWN_GROUP_ALIGN_OFFSET = -27;
|
|
18700
18903
|
const ToolbarDropdown = (props)=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Dropdown, {
|
|
18701
18904
|
...props,
|
|
18702
18905
|
triggerVariant: "default",
|
|
@@ -18718,13 +18921,14 @@ const ToolbarIconDropdown = ({ icon, title, triggerClassName, ...props })=>{
|
|
|
18718
18921
|
triggerContent: iconNode
|
|
18719
18922
|
});
|
|
18720
18923
|
};
|
|
18721
|
-
const ToolbarDropdownGroup = ({ leading, triggerClassName, ...props })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(ToolbarGroup, {
|
|
18924
|
+
const ToolbarDropdownGroup = ({ leading, triggerClassName, contentAlignOffset = TOOLBAR_DROPDOWN_GROUP_ALIGN_OFFSET, ...props })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(ToolbarGroup, {
|
|
18722
18925
|
children: [
|
|
18723
18926
|
leading,
|
|
18724
18927
|
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Dropdown, {
|
|
18725
18928
|
...props,
|
|
18726
18929
|
triggerVariant: "plain",
|
|
18727
18930
|
contentClassName: cn_cn(TOOLBAR_DROPDOWN_CONTENT_CLASS_NAME, props.contentClassName),
|
|
18931
|
+
contentAlignOffset: contentAlignOffset,
|
|
18728
18932
|
triggerClassName: cn_cn(TOOLBAR_INLINE_INSET_CLASS_NAME, triggerClassName)
|
|
18729
18933
|
})
|
|
18730
18934
|
]
|
|
@@ -22846,28 +23050,196 @@ const OccupancyCursorPopover = ({ id })=>{
|
|
|
22846
23050
|
});
|
|
22847
23051
|
};
|
|
22848
23052
|
const Occupancy_CursorPopover = OccupancyCursorPopover;
|
|
23053
|
+
const SignalType = {
|
|
23054
|
+
LEGITIMATE: 'Legitimate',
|
|
23055
|
+
UNKNOWN: 'UnKnown',
|
|
23056
|
+
KNOWN: 'Know',
|
|
23057
|
+
VIOLATION: 'Violation',
|
|
23058
|
+
ILLEGAL: 'Illegal'
|
|
23059
|
+
};
|
|
22849
23060
|
const SIGNAL_TYPE_MAP = {
|
|
22850
23061
|
Legitimate: {
|
|
22851
23062
|
name: "\u5408\u6CD5",
|
|
22852
|
-
color: '
|
|
23063
|
+
color: 'var(--success)',
|
|
22853
23064
|
isLegitimate: true
|
|
22854
23065
|
},
|
|
23066
|
+
UnKnown: {
|
|
23067
|
+
name: "\u672A\u77E5",
|
|
23068
|
+
color: 'var(--muted-foreground)',
|
|
23069
|
+
isLegitimate: false
|
|
23070
|
+
},
|
|
22855
23071
|
Know: {
|
|
22856
23072
|
name: "\u5DF2\u77E5",
|
|
22857
|
-
color: '
|
|
23073
|
+
color: 'var(--primary)',
|
|
22858
23074
|
isLegitimate: true
|
|
22859
23075
|
},
|
|
22860
|
-
|
|
22861
|
-
name: "\
|
|
22862
|
-
color: '
|
|
23076
|
+
Violation: {
|
|
23077
|
+
name: "\u8FDD\u89C4",
|
|
23078
|
+
color: 'var(--warning)',
|
|
22863
23079
|
isLegitimate: false
|
|
22864
23080
|
},
|
|
22865
23081
|
Illegal: {
|
|
22866
|
-
name: "\
|
|
22867
|
-
color: '
|
|
23082
|
+
name: "\u975E\u6CD5",
|
|
23083
|
+
color: 'var(--destructive)',
|
|
22868
23084
|
isLegitimate: false
|
|
22869
23085
|
}
|
|
22870
23086
|
};
|
|
23087
|
+
const SIGNAL_TYPE_ORDER = [
|
|
23088
|
+
SignalType.LEGITIMATE,
|
|
23089
|
+
SignalType.UNKNOWN,
|
|
23090
|
+
SignalType.KNOWN,
|
|
23091
|
+
SignalType.VIOLATION,
|
|
23092
|
+
SignalType.ILLEGAL
|
|
23093
|
+
];
|
|
23094
|
+
const normalizeSignalType = (value1)=>{
|
|
23095
|
+
if ('string' == typeof value1 && SIGNAL_TYPE_ORDER.includes(value1)) return value1;
|
|
23096
|
+
return SignalType.UNKNOWN;
|
|
23097
|
+
};
|
|
23098
|
+
const SIGNAL_LEVEL_UNASSIGNED = -1;
|
|
23099
|
+
const SIGNAL_LEVEL_FIRST = 0;
|
|
23100
|
+
const SIGNAL_LEVEL_SECOND = 1;
|
|
23101
|
+
const SIGNAL_LEVEL_THIRD = 2;
|
|
23102
|
+
const SIGNAL_LEVEL_ORDER = [
|
|
23103
|
+
SIGNAL_LEVEL_UNASSIGNED,
|
|
23104
|
+
SIGNAL_LEVEL_FIRST,
|
|
23105
|
+
SIGNAL_LEVEL_SECOND,
|
|
23106
|
+
SIGNAL_LEVEL_THIRD
|
|
23107
|
+
];
|
|
23108
|
+
const SIGNAL_LEVEL_MAP = {
|
|
23109
|
+
[SIGNAL_LEVEL_UNASSIGNED]: {
|
|
23110
|
+
name: "\u672A\u5206\u914D",
|
|
23111
|
+
color: 'color-mix(in oklab, var(--success) 35%, var(--background))'
|
|
23112
|
+
},
|
|
23113
|
+
[SIGNAL_LEVEL_FIRST]: {
|
|
23114
|
+
name: "\u4E00\u7EA7",
|
|
23115
|
+
color: 'color-mix(in oklab, var(--success) 55%, var(--background))'
|
|
23116
|
+
},
|
|
23117
|
+
[SIGNAL_LEVEL_SECOND]: {
|
|
23118
|
+
name: "\u4E8C\u7EA7",
|
|
23119
|
+
color: 'color-mix(in oklab, var(--success) 75%, var(--background))'
|
|
23120
|
+
},
|
|
23121
|
+
[SIGNAL_LEVEL_THIRD]: {
|
|
23122
|
+
name: "\u4E09\u7EA7",
|
|
23123
|
+
color: 'var(--success)'
|
|
23124
|
+
}
|
|
23125
|
+
};
|
|
23126
|
+
const normalizeSignalLevel = (value1)=>{
|
|
23127
|
+
if ('number' != typeof value1 || !Number.isInteger(value1)) return SIGNAL_LEVEL_UNASSIGNED;
|
|
23128
|
+
if (value1 === SIGNAL_LEVEL_UNASSIGNED || value1 === SIGNAL_LEVEL_FIRST || value1 === SIGNAL_LEVEL_SECOND || value1 === SIGNAL_LEVEL_THIRD) return value1;
|
|
23129
|
+
return SIGNAL_LEVEL_UNASSIGNED;
|
|
23130
|
+
};
|
|
23131
|
+
const resolveSignalColor = (item)=>{
|
|
23132
|
+
if (item.color) return item.color;
|
|
23133
|
+
const signalType = normalizeSignalType(item.signalType);
|
|
23134
|
+
if ('simple' === item.source && signalType === SignalType.LEGITIMATE) return SIGNAL_LEVEL_MAP[normalizeSignalLevel(item.level)].color;
|
|
23135
|
+
return SIGNAL_TYPE_MAP[signalType].color;
|
|
23136
|
+
};
|
|
23137
|
+
const SIGNAL_SOURCE_ORDER = [
|
|
23138
|
+
'station',
|
|
23139
|
+
'simple'
|
|
23140
|
+
];
|
|
23141
|
+
const SIGNAL_SOURCE_LABEL = {
|
|
23142
|
+
station: "\u53F0\u7AD9\u5E93",
|
|
23143
|
+
simple: "\u4FE1\u53F7\u5E93"
|
|
23144
|
+
};
|
|
23145
|
+
function tree_isStationInfo(item) {
|
|
23146
|
+
return 'signalName' in item && 'orgName' in item;
|
|
23147
|
+
}
|
|
23148
|
+
const resolveSignalSource = (item)=>tree_isStationInfo(item) ? 'station' : 'simple';
|
|
23149
|
+
const getSignalLeafKey = (item)=>`${resolveSignalSource(item)}:${normalizeSignalType(item.signalType)}:${normalizeSignalLevel(item.level)}`;
|
|
23150
|
+
function getUnifiedSignalKey(item) {
|
|
23151
|
+
const source = resolveSignalSource(item);
|
|
23152
|
+
if (item.id) return `${source}:${item.id}`;
|
|
23153
|
+
if (tree_isStationInfo(item)) return `${source}:${item.signalName}-${item.frequency}`;
|
|
23154
|
+
if (null != item.startFrequency && null != item.stopFrequency) return `${source}:${item.startFrequency}-${item.stopFrequency}`;
|
|
23155
|
+
return `${source}:${item.frequency}-${item.bandwidth}`;
|
|
23156
|
+
}
|
|
23157
|
+
const buildSignalTree = (signalItems)=>{
|
|
23158
|
+
const leafKeysWithData = new Set(signalItems.map(getSignalLeafKey));
|
|
23159
|
+
const sources = [];
|
|
23160
|
+
for (const source of SIGNAL_SOURCE_ORDER){
|
|
23161
|
+
const sourceDataLeafKeys = [
|
|
23162
|
+
...leafKeysWithData
|
|
23163
|
+
].filter((key)=>key.startsWith(`${source}:`));
|
|
23164
|
+
if (0 === sourceDataLeafKeys.length) continue;
|
|
23165
|
+
if ('station' === source) {
|
|
23166
|
+
sources.push({
|
|
23167
|
+
source,
|
|
23168
|
+
label: SIGNAL_SOURCE_LABEL[source],
|
|
23169
|
+
leafKeys: sourceDataLeafKeys,
|
|
23170
|
+
dataLeafKeys: sourceDataLeafKeys,
|
|
23171
|
+
hasData: true,
|
|
23172
|
+
types: []
|
|
23173
|
+
});
|
|
23174
|
+
continue;
|
|
23175
|
+
}
|
|
23176
|
+
const types = SIGNAL_TYPE_ORDER.flatMap((signalType)=>{
|
|
23177
|
+
const levels = SIGNAL_LEVEL_ORDER.map((level)=>{
|
|
23178
|
+
const leafKey = `${source}:${signalType}:${level}`;
|
|
23179
|
+
return {
|
|
23180
|
+
level,
|
|
23181
|
+
label: SIGNAL_LEVEL_MAP[level].name,
|
|
23182
|
+
leafKey,
|
|
23183
|
+
hasData: leafKeysWithData.has(leafKey)
|
|
23184
|
+
};
|
|
23185
|
+
});
|
|
23186
|
+
const leafKeys = levels.map((level)=>level.leafKey);
|
|
23187
|
+
const dataLeafKeys = leafKeys.filter((key)=>leafKeysWithData.has(key));
|
|
23188
|
+
if (0 === dataLeafKeys.length) return [];
|
|
23189
|
+
return {
|
|
23190
|
+
signalType,
|
|
23191
|
+
label: SIGNAL_TYPE_MAP[signalType].name,
|
|
23192
|
+
leafKeys,
|
|
23193
|
+
dataLeafKeys,
|
|
23194
|
+
hasData: dataLeafKeys.length > 0,
|
|
23195
|
+
levels: signalType === SignalType.LEGITIMATE ? levels.filter((level)=>level.hasData) : []
|
|
23196
|
+
};
|
|
23197
|
+
});
|
|
23198
|
+
if (0 === types.length) continue;
|
|
23199
|
+
const leafKeys = types.flatMap((type)=>type.leafKeys);
|
|
23200
|
+
const dataLeafKeys = leafKeys.filter((key)=>leafKeysWithData.has(key));
|
|
23201
|
+
sources.push({
|
|
23202
|
+
source,
|
|
23203
|
+
label: SIGNAL_SOURCE_LABEL[source],
|
|
23204
|
+
leafKeys,
|
|
23205
|
+
dataLeafKeys,
|
|
23206
|
+
hasData: true,
|
|
23207
|
+
types
|
|
23208
|
+
});
|
|
23209
|
+
}
|
|
23210
|
+
return {
|
|
23211
|
+
sources
|
|
23212
|
+
};
|
|
23213
|
+
};
|
|
23214
|
+
const resolveNodeCheckState = (leafKeysWithData, hiddenCategoryKeys, fixedLeafKeys)=>{
|
|
23215
|
+
const dataLeafKeys = fixedLeafKeys.filter((key)=>leafKeysWithData.has(key));
|
|
23216
|
+
if (0 === dataLeafKeys.length) return 'disabled';
|
|
23217
|
+
const hiddenCount = dataLeafKeys.filter((key)=>hiddenCategoryKeys.has(key)).length;
|
|
23218
|
+
if (0 === hiddenCount) return 'checked';
|
|
23219
|
+
if (hiddenCount === dataLeafKeys.length) return 'unchecked';
|
|
23220
|
+
return 'indeterminate';
|
|
23221
|
+
};
|
|
23222
|
+
const toggleNodeHiddenKeys = (hiddenCategoryKeys, fixedLeafKeys, leafKeysWithData)=>{
|
|
23223
|
+
const next = new Set(hiddenCategoryKeys);
|
|
23224
|
+
const dataLeafKeys = fixedLeafKeys.filter((key)=>leafKeysWithData.has(key));
|
|
23225
|
+
const hiddenDataCount = dataLeafKeys.filter((key)=>next.has(key)).length;
|
|
23226
|
+
const allDataVisible = dataLeafKeys.length > 0 && 0 === hiddenDataCount;
|
|
23227
|
+
if (allDataVisible) {
|
|
23228
|
+
for (const key of fixedLeafKeys)next.add(key);
|
|
23229
|
+
return [
|
|
23230
|
+
...next
|
|
23231
|
+
];
|
|
23232
|
+
}
|
|
23233
|
+
for (const key of fixedLeafKeys)next.delete(key);
|
|
23234
|
+
return [
|
|
23235
|
+
...next
|
|
23236
|
+
];
|
|
23237
|
+
};
|
|
23238
|
+
const filterSignalItemsByHiddenKeys = (signalItems, hiddenCategoryKeys)=>{
|
|
23239
|
+
if (!hiddenCategoryKeys.length) return signalItems;
|
|
23240
|
+
const hiddenKeys = new Set(hiddenCategoryKeys);
|
|
23241
|
+
return signalItems.filter((item)=>!hiddenKeys.has(getSignalLeafKey(item)));
|
|
23242
|
+
};
|
|
22871
23243
|
const SIGNAL_INDEX_MATCH_TOLERANCE = 1;
|
|
22872
23244
|
const getRangeCenter = (range)=>(range.startFreq + range.stopFreq) / 2;
|
|
22873
23245
|
const getRangeWidth = (range)=>Math.abs(range.stopFreq - range.startFreq);
|
|
@@ -22885,7 +23257,7 @@ const compareFrequencyMatchedCandidates = (currentFrequency, a, b)=>{
|
|
|
22885
23257
|
if (0 !== widthDiff) return widthDiff;
|
|
22886
23258
|
const centerDistanceDiff = Math.abs(getRangeCenter(a.range) - currentFrequency) - Math.abs(getRangeCenter(b.range) - currentFrequency);
|
|
22887
23259
|
if (0 !== centerDistanceDiff) return centerDistanceDiff;
|
|
22888
|
-
const stationPriorityDiff = Number(
|
|
23260
|
+
const stationPriorityDiff = Number(tree_isStationInfo(b.item)) - Number(tree_isStationInfo(a.item));
|
|
22889
23261
|
if (0 !== stationPriorityDiff) return stationPriorityDiff;
|
|
22890
23262
|
return getUnifiedSignalKey(a.item).localeCompare(getUnifiedSignalKey(b.item));
|
|
22891
23263
|
};
|
|
@@ -22896,18 +23268,10 @@ const compareIndexMatchedCandidates = (currentFrequency, currentPointIndex, a, b
|
|
|
22896
23268
|
if (0 !== widthDiff) return widthDiff;
|
|
22897
23269
|
const frequencyDistanceDiff = getFrequencyDistanceToRange(currentFrequency, a.range) - getFrequencyDistanceToRange(currentFrequency, b.range);
|
|
22898
23270
|
if (0 !== frequencyDistanceDiff) return frequencyDistanceDiff;
|
|
22899
|
-
const stationPriorityDiff = Number(
|
|
23271
|
+
const stationPriorityDiff = Number(tree_isStationInfo(b.item)) - Number(tree_isStationInfo(a.item));
|
|
22900
23272
|
if (0 !== stationPriorityDiff) return stationPriorityDiff;
|
|
22901
23273
|
return getUnifiedSignalKey(a.item).localeCompare(getUnifiedSignalKey(b.item));
|
|
22902
23274
|
};
|
|
22903
|
-
function utils_isStationInfo(item) {
|
|
22904
|
-
return 'signalName' in item && 'orgName' in item;
|
|
22905
|
-
}
|
|
22906
|
-
function getUnifiedSignalKey(item) {
|
|
22907
|
-
if (utils_isStationInfo(item)) return `${item.signalName}-${item.frequency}`;
|
|
22908
|
-
if (null != item.startFrequency && null != item.stopFrequency) return `${item.startFrequency}-${item.stopFrequency}`;
|
|
22909
|
-
return `${item.frequency}-${item.bandwidth}`;
|
|
22910
|
-
}
|
|
22911
23275
|
function toFrequencyRangeInput(item) {
|
|
22912
23276
|
return {
|
|
22913
23277
|
frequency: null != item.frequency ? Number(item.frequency) : void 0,
|
|
@@ -22916,7 +23280,7 @@ function toFrequencyRangeInput(item) {
|
|
|
22916
23280
|
stopFrequency: null != item.stopFrequency ? Number(item.stopFrequency) : void 0
|
|
22917
23281
|
};
|
|
22918
23282
|
}
|
|
22919
|
-
function
|
|
23283
|
+
function match_resolveBestSignalMatch(candidates, options) {
|
|
22920
23284
|
const { currentFrequency, currentPointIndex } = options;
|
|
22921
23285
|
const indexTolerance = options.indexTolerance ?? SIGNAL_INDEX_MATCH_TOLERANCE;
|
|
22922
23286
|
if (!Number.isFinite(currentFrequency) || !Number.isFinite(currentPointIndex) || !candidates.length) return;
|
|
@@ -22928,24 +23292,39 @@ function utils_resolveBestSignalMatch(candidates, options) {
|
|
|
22928
23292
|
}, indexTolerance)).sort((a, b)=>compareIndexMatchedCandidates(currentFrequency, currentPointIndex, a, b));
|
|
22929
23293
|
return indexMatched[0];
|
|
22930
23294
|
}
|
|
23295
|
+
const resolveFrequencyPresentation = (item)=>{
|
|
23296
|
+
if (null != item.frequency) return `${item.frequency}MHz`;
|
|
23297
|
+
if (null != item.startFrequency && null != item.stopFrequency) return `${item.startFrequency}-${item.stopFrequency}MHz`;
|
|
23298
|
+
};
|
|
22931
23299
|
const resolveSignalPresentation = (item)=>{
|
|
22932
|
-
|
|
22933
|
-
|
|
22934
|
-
|
|
22935
|
-
|
|
22936
|
-
|
|
22937
|
-
|
|
22938
|
-
|
|
22939
|
-
|
|
22940
|
-
|
|
22941
|
-
|
|
22942
|
-
|
|
22943
|
-
|
|
22944
|
-
|
|
22945
|
-
|
|
23300
|
+
const source = resolveSignalSource(item);
|
|
23301
|
+
const signalType = normalizeSignalType(item.signalType);
|
|
23302
|
+
const signalTypeName = SIGNAL_TYPE_MAP[signalType].name;
|
|
23303
|
+
const levelName = SIGNAL_LEVEL_MAP[normalizeSignalLevel(item.level)].name;
|
|
23304
|
+
const color = resolveSignalColor({
|
|
23305
|
+
...item,
|
|
23306
|
+
source
|
|
23307
|
+
});
|
|
23308
|
+
const frequencyText = resolveFrequencyPresentation(item);
|
|
23309
|
+
const bandwidthText = null != item.bandwidth ? `\u{5E26}\u{5BBD}: ${item.bandwidth}kHz` : void 0;
|
|
23310
|
+
if (tree_isStationInfo(item)) return {
|
|
23311
|
+
color,
|
|
23312
|
+
tooltip: [
|
|
23313
|
+
item.signalName,
|
|
23314
|
+
frequencyText,
|
|
23315
|
+
item.orgName && `\u{5355}\u{4F4D}: ${item.orgName}`,
|
|
23316
|
+
signalTypeName && `\u{7C7B}\u{578B}: ${signalTypeName}`
|
|
23317
|
+
].filter(Boolean).join(' | ')
|
|
23318
|
+
};
|
|
22946
23319
|
return {
|
|
22947
|
-
color
|
|
22948
|
-
tooltip:
|
|
23320
|
+
color,
|
|
23321
|
+
tooltip: [
|
|
23322
|
+
SIGNAL_SOURCE_LABEL[source],
|
|
23323
|
+
frequencyText,
|
|
23324
|
+
bandwidthText,
|
|
23325
|
+
signalTypeName && `\u{7C7B}\u{578B}: ${signalTypeName}`,
|
|
23326
|
+
signalType === SignalType.LEGITIMATE && levelName && `\u{7B49}\u{7EA7}: ${levelName}`
|
|
23327
|
+
].filter(Boolean).join(' | ')
|
|
22949
23328
|
};
|
|
22950
23329
|
};
|
|
22951
23330
|
const resolveSignalMatchCandidates = (signalItems, segment)=>signalItems.flatMap((item)=>{
|
|
@@ -23001,26 +23380,23 @@ const resolveActiveSignalKey = ({ segmentData, isCursorActive, currentFrequency,
|
|
|
23001
23380
|
if (!isCursorActive || !Number.isFinite(currentFrequency) || currentPosition.segmentIndex < 0) return;
|
|
23002
23381
|
const currentSegmentData = segmentData[currentPosition.segmentIndex];
|
|
23003
23382
|
if (!currentSegmentData) return;
|
|
23004
|
-
return
|
|
23383
|
+
return match_resolveBestSignalMatch(currentSegmentData.signalPositions, {
|
|
23005
23384
|
currentFrequency,
|
|
23006
23385
|
currentPointIndex: currentPosition.pointIndex
|
|
23007
23386
|
})?.key;
|
|
23008
23387
|
};
|
|
23009
|
-
const
|
|
23388
|
+
const createSignalRangeIndex = ({ signalItems, segments })=>{
|
|
23010
23389
|
if (!signalItems.length || !segments.length) return [];
|
|
23011
|
-
|
|
23012
|
-
if (!stationItems.length) return [];
|
|
23013
|
-
return segments.map((segment)=>resolveSignalMatchCandidates(stationItems, segment));
|
|
23390
|
+
return segments.map((segment)=>resolveSignalMatchCandidates(signalItems, segment));
|
|
23014
23391
|
};
|
|
23015
|
-
const
|
|
23392
|
+
const findSignalInRangeIndex = ({ frequency, signalRangeIndex, currentPosition })=>{
|
|
23016
23393
|
if (!Number.isFinite(frequency)) return;
|
|
23017
|
-
const candidates =
|
|
23394
|
+
const candidates = signalRangeIndex[currentPosition.segmentIndex];
|
|
23018
23395
|
if (!candidates?.length) return;
|
|
23019
|
-
|
|
23396
|
+
return match_resolveBestSignalMatch(candidates, {
|
|
23020
23397
|
currentFrequency: frequency,
|
|
23021
23398
|
currentPointIndex: currentPosition.pointIndex
|
|
23022
|
-
});
|
|
23023
|
-
return matchedSignal && utils_isStationInfo(matchedSignal.item) ? matchedSignal.item : void 0;
|
|
23399
|
+
})?.item;
|
|
23024
23400
|
};
|
|
23025
23401
|
const withStationDataUpdate = (globalID, name, func)=>{
|
|
23026
23402
|
const subscriptionId = `stationData-update-${globalID}`;
|
|
@@ -23035,11 +23411,12 @@ const STATION_DATA = (globalID, data)=>{
|
|
|
23035
23411
|
}
|
|
23036
23412
|
return result;
|
|
23037
23413
|
};
|
|
23038
|
-
function useUnifiedSignals({ respectVisibility = false } = {}) {
|
|
23414
|
+
function useUnifiedSignals({ respectVisibility = false, filterHidden = true } = {}) {
|
|
23039
23415
|
const globalID = useStore_useSelector((state)=>state.globalID);
|
|
23040
23416
|
const signalData = useStore_useSelector((state)=>state.signal.data);
|
|
23041
23417
|
const signalDisplay = useStore_useSelector((state)=>state.signal.display);
|
|
23042
23418
|
const signalShow = useStore_useSelector((state)=>state.signal.show);
|
|
23419
|
+
const hiddenCategoryKeys = useStore_useSelector((state)=>state.signal.hiddenCategoryKeys);
|
|
23043
23420
|
const [updateTrigger, setUpdateTrigger] = (0, __WEBPACK_EXTERNAL_MODULE_react__.useState)(0);
|
|
23044
23421
|
(0, __WEBPACK_EXTERNAL_MODULE_react__.useEffect)(()=>{
|
|
23045
23422
|
const subscriberName = `useUnifiedSignals-${globalID}-${Date.now()}`;
|
|
@@ -23058,32 +23435,44 @@ function useUnifiedSignals({ respectVisibility = false } = {}) {
|
|
|
23058
23435
|
if (respectVisibility && (!signalShow || !signalDisplay)) return [];
|
|
23059
23436
|
const stationData = STATION_DATA(globalID);
|
|
23060
23437
|
const nextSignalData = signalData || [];
|
|
23061
|
-
|
|
23438
|
+
const combined = [
|
|
23062
23439
|
...stationData,
|
|
23063
23440
|
...nextSignalData
|
|
23064
23441
|
];
|
|
23442
|
+
if (!filterHidden || !hiddenCategoryKeys?.length) return combined;
|
|
23443
|
+
return filterSignalItemsByHiddenKeys(combined, hiddenCategoryKeys);
|
|
23065
23444
|
}, [
|
|
23066
23445
|
globalID,
|
|
23067
23446
|
signalData,
|
|
23068
23447
|
signalDisplay,
|
|
23069
23448
|
signalShow,
|
|
23070
23449
|
respectVisibility,
|
|
23450
|
+
filterHidden,
|
|
23451
|
+
hiddenCategoryKeys,
|
|
23071
23452
|
updateTrigger
|
|
23072
23453
|
]);
|
|
23073
23454
|
}
|
|
23074
|
-
|
|
23455
|
+
const useSignalMatchAtCursor = ({ frequency, enabled = true, cursorSample }, source)=>{
|
|
23075
23456
|
const cursor = useStore_useSelector((state)=>state.cursor);
|
|
23076
23457
|
const segments = useStore_useSelector((state)=>state.segments);
|
|
23077
23458
|
const left = cursorSample?.coord.left ?? cursor.coord.left;
|
|
23078
23459
|
const signalItems = useUnifiedSignals({
|
|
23079
23460
|
respectVisibility: enabled
|
|
23080
23461
|
});
|
|
23081
|
-
const
|
|
23082
|
-
|
|
23462
|
+
const matchingSignalItems = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>{
|
|
23463
|
+
if (!enabled) return [];
|
|
23464
|
+
return 'station' === source ? signalItems.filter(tree_isStationInfo) : signalItems;
|
|
23465
|
+
}, [
|
|
23466
|
+
enabled,
|
|
23467
|
+
signalItems,
|
|
23468
|
+
source
|
|
23469
|
+
]);
|
|
23470
|
+
const signalRangeIndex = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>createSignalRangeIndex({
|
|
23471
|
+
signalItems: matchingSignalItems,
|
|
23083
23472
|
segments
|
|
23084
23473
|
}), [
|
|
23085
|
-
|
|
23086
|
-
|
|
23474
|
+
matchingSignalItems,
|
|
23475
|
+
segments
|
|
23087
23476
|
]);
|
|
23088
23477
|
const isCursorActive = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>enabled && (cursorSample ? true : cursor_hasActiveSpectrumCursor(cursor)), [
|
|
23089
23478
|
cursor,
|
|
@@ -23099,100 +23488,142 @@ function useStationInfoAtCursor({ frequency, enabled = true, cursorSample }) {
|
|
|
23099
23488
|
segments
|
|
23100
23489
|
]);
|
|
23101
23490
|
return (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>{
|
|
23102
|
-
if (!enabled || 'number' != typeof left || !Number.isFinite(left) || left < 0 || !
|
|
23491
|
+
if (!enabled || 'number' != typeof left || !Number.isFinite(left) || left < 0 || !signalRangeIndex.length || !segments?.length) return;
|
|
23103
23492
|
if (!isCursorActive) return;
|
|
23104
23493
|
const currentFrequency = frequencyCalculation_getCursorFrequencyAtPosition(segments, currentPosition);
|
|
23105
23494
|
if (!Number.isFinite(currentFrequency)) {
|
|
23106
23495
|
const fallbackFrequency = Number(frequency);
|
|
23107
23496
|
if (!Number.isFinite(fallbackFrequency)) return;
|
|
23108
|
-
return
|
|
23497
|
+
return findSignalInRangeIndex({
|
|
23109
23498
|
frequency: fallbackFrequency,
|
|
23110
|
-
|
|
23499
|
+
signalRangeIndex,
|
|
23111
23500
|
currentPosition
|
|
23112
23501
|
});
|
|
23113
23502
|
}
|
|
23114
|
-
return
|
|
23503
|
+
return findSignalInRangeIndex({
|
|
23115
23504
|
frequency: currentFrequency,
|
|
23116
|
-
|
|
23505
|
+
signalRangeIndex,
|
|
23117
23506
|
currentPosition
|
|
23118
23507
|
});
|
|
23119
23508
|
}, [
|
|
23120
23509
|
enabled,
|
|
23121
23510
|
frequency,
|
|
23122
|
-
|
|
23511
|
+
signalRangeIndex,
|
|
23123
23512
|
segments,
|
|
23124
23513
|
currentPosition,
|
|
23125
23514
|
left,
|
|
23126
23515
|
isCursorActive
|
|
23127
23516
|
]);
|
|
23517
|
+
};
|
|
23518
|
+
function useSignalInfoAtCursor(props) {
|
|
23519
|
+
return useSignalMatchAtCursor(props, 'all');
|
|
23128
23520
|
}
|
|
23129
|
-
const
|
|
23130
|
-
|
|
23131
|
-
if (!stationInfo?.signalType) return null;
|
|
23132
|
-
return SIGNAL_TYPE_MAP[stationInfo.signalType];
|
|
23133
|
-
}, [
|
|
23134
|
-
stationInfo?.signalType
|
|
23135
|
-
]);
|
|
23136
|
-
const signalColor = signalTypeInfo?.color;
|
|
23137
|
-
const signalTypeName = signalTypeInfo?.name || stationInfo?.signalType;
|
|
23138
|
-
if (!stationInfo) return null;
|
|
23139
|
-
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
23140
|
-
className: "mt-1 border-t border-dashed border-border/70 pt-1 text-xs leading-5 text-foreground",
|
|
23521
|
+
const SignalInfoRow = ({ label, value: value1, tabular = false })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
23522
|
+
className: `flex gap-2${tabular ? ' tabular-nums' : ''}`,
|
|
23141
23523
|
children: [
|
|
23142
|
-
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.
|
|
23143
|
-
|
|
23144
|
-
|
|
23145
|
-
stationInfo.signalName
|
|
23146
|
-
]
|
|
23524
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
23525
|
+
className: "w-10 shrink-0 text-muted-foreground",
|
|
23526
|
+
children: label
|
|
23147
23527
|
}),
|
|
23148
|
-
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.
|
|
23149
|
-
|
|
23150
|
-
|
|
23151
|
-
|
|
23152
|
-
|
|
23153
|
-
|
|
23154
|
-
|
|
23155
|
-
|
|
23156
|
-
|
|
23157
|
-
|
|
23158
|
-
|
|
23159
|
-
|
|
23160
|
-
|
|
23161
|
-
|
|
23162
|
-
|
|
23163
|
-
|
|
23164
|
-
stationInfo.bandwidth,
|
|
23165
|
-
"kHz"
|
|
23166
|
-
]
|
|
23167
|
-
}),
|
|
23168
|
-
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
23169
|
-
children: [
|
|
23170
|
-
"\u8C03\u5236\uFF1A",
|
|
23171
|
-
stationInfo.modulation
|
|
23172
|
-
]
|
|
23528
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
23529
|
+
className: "min-w-0 break-words",
|
|
23530
|
+
children: value1
|
|
23531
|
+
})
|
|
23532
|
+
]
|
|
23533
|
+
});
|
|
23534
|
+
const SignalMetaValue = ({ color, label, testId })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("span", {
|
|
23535
|
+
className: "inline-flex items-center gap-1.5 font-medium text-foreground",
|
|
23536
|
+
children: [
|
|
23537
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
23538
|
+
"aria-hidden": "true",
|
|
23539
|
+
className: "size-2 shrink-0 rounded-full ring-1 ring-inset ring-border",
|
|
23540
|
+
"data-testid": testId,
|
|
23541
|
+
style: {
|
|
23542
|
+
backgroundColor: color
|
|
23543
|
+
}
|
|
23173
23544
|
}),
|
|
23174
|
-
|
|
23175
|
-
children:
|
|
23176
|
-
|
|
23177
|
-
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
23178
|
-
style: {
|
|
23179
|
-
color: signalColor
|
|
23180
|
-
},
|
|
23181
|
-
children: signalTypeName
|
|
23182
|
-
})
|
|
23183
|
-
]
|
|
23184
|
-
}) : null,
|
|
23185
|
-
stationInfo.remark ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
23186
|
-
children: [
|
|
23187
|
-
"\u5907\u6CE8\uFF1A",
|
|
23188
|
-
stationInfo.remark
|
|
23189
|
-
]
|
|
23190
|
-
}) : null
|
|
23545
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
23546
|
+
children: label
|
|
23547
|
+
})
|
|
23191
23548
|
]
|
|
23192
23549
|
});
|
|
23550
|
+
const SignalInfoPanel = ({ signalInfo })=>{
|
|
23551
|
+
if (!signalInfo) return null;
|
|
23552
|
+
const source = resolveSignalSource(signalInfo);
|
|
23553
|
+
const stationInfo = tree_isStationInfo(signalInfo) ? signalInfo : void 0;
|
|
23554
|
+
const signalType = normalizeSignalType(signalInfo.signalType);
|
|
23555
|
+
const signalTypeInfo = SIGNAL_TYPE_MAP[signalType];
|
|
23556
|
+
const levelInfo = SIGNAL_LEVEL_MAP[normalizeSignalLevel(signalInfo.level)];
|
|
23557
|
+
const showLevel = 'simple' === source && signalType === SignalType.LEGITIMATE;
|
|
23558
|
+
const resolvedColor = resolveSignalColor({
|
|
23559
|
+
...signalInfo,
|
|
23560
|
+
source
|
|
23561
|
+
});
|
|
23562
|
+
const typeColor = showLevel ? signalTypeInfo.color : resolvedColor;
|
|
23563
|
+
const hasFrequencyRange = null != signalInfo.startFrequency && null != signalInfo.stopFrequency;
|
|
23564
|
+
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
23565
|
+
className: "mt-2 border-t border-border/60 pt-2 text-xs leading-5 text-foreground",
|
|
23566
|
+
"data-signal-source": source,
|
|
23567
|
+
"data-testid": "signal-info-panel",
|
|
23568
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
23569
|
+
className: "space-y-0.5",
|
|
23570
|
+
children: [
|
|
23571
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23572
|
+
label: "\u6765\u6E90",
|
|
23573
|
+
value: SIGNAL_SOURCE_LABEL[source]
|
|
23574
|
+
}),
|
|
23575
|
+
stationInfo?.signalName ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23576
|
+
label: "\u540D\u79F0",
|
|
23577
|
+
value: stationInfo.signalName
|
|
23578
|
+
}) : null,
|
|
23579
|
+
stationInfo?.orgName ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23580
|
+
label: "\u5355\u4F4D",
|
|
23581
|
+
value: stationInfo.orgName
|
|
23582
|
+
}) : null,
|
|
23583
|
+
null != signalInfo.frequency ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23584
|
+
label: "\u9891\u7387",
|
|
23585
|
+
value: `${signalInfo.frequency}MHz`,
|
|
23586
|
+
tabular: true
|
|
23587
|
+
}) : hasFrequencyRange ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23588
|
+
label: "\u8303\u56F4",
|
|
23589
|
+
value: `${signalInfo.startFrequency}-${signalInfo.stopFrequency}MHz`,
|
|
23590
|
+
tabular: true
|
|
23591
|
+
}) : null,
|
|
23592
|
+
null != signalInfo.bandwidth ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23593
|
+
label: "\u5E26\u5BBD",
|
|
23594
|
+
value: `${signalInfo.bandwidth}kHz`,
|
|
23595
|
+
tabular: true
|
|
23596
|
+
}) : null,
|
|
23597
|
+
stationInfo?.modulation ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23598
|
+
label: "\u8C03\u5236",
|
|
23599
|
+
value: stationInfo.modulation
|
|
23600
|
+
}) : null,
|
|
23601
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23602
|
+
label: "\u7C7B\u578B",
|
|
23603
|
+
value: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalMetaValue, {
|
|
23604
|
+
color: typeColor,
|
|
23605
|
+
label: signalTypeInfo.name,
|
|
23606
|
+
testId: "signal-info-type-swatch"
|
|
23607
|
+
})
|
|
23608
|
+
}),
|
|
23609
|
+
showLevel ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23610
|
+
label: "\u7B49\u7EA7",
|
|
23611
|
+
value: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalMetaValue, {
|
|
23612
|
+
color: resolvedColor,
|
|
23613
|
+
label: levelInfo.name,
|
|
23614
|
+
testId: "signal-info-level-swatch"
|
|
23615
|
+
})
|
|
23616
|
+
}) : null,
|
|
23617
|
+
stationInfo?.remark ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23618
|
+
label: "\u5907\u6CE8",
|
|
23619
|
+
value: stationInfo.remark
|
|
23620
|
+
}) : null
|
|
23621
|
+
]
|
|
23622
|
+
})
|
|
23623
|
+
});
|
|
23193
23624
|
};
|
|
23194
|
-
const
|
|
23195
|
-
const FrequencyDataBoard = ({ left, updateKey, onChange,
|
|
23625
|
+
const StationInfoPanel = /*#__PURE__*/ __WEBPACK_EXTERNAL_MODULE_react__["default"].memo(SignalInfoPanel);
|
|
23626
|
+
const FrequencyDataBoard = ({ left, updateKey, onChange, showSignalInfo = true, cursorSample })=>{
|
|
23196
23627
|
const axisYUnit = useStore_useSelector((state)=>state.axisY.unit);
|
|
23197
23628
|
const frequencyFormat = useStore_useSelector((state)=>state.axisX.frequencyFormat);
|
|
23198
23629
|
const unit = useStore_useSelector((state)=>state.axisX.unit);
|
|
@@ -23328,17 +23759,17 @@ const FrequencyDataBoard = ({ left, updateKey, onChange, showStationInfo = true,
|
|
|
23328
23759
|
frequency,
|
|
23329
23760
|
onChange
|
|
23330
23761
|
]);
|
|
23331
|
-
const
|
|
23762
|
+
const matchedSignal = useSignalInfoAtCursor({
|
|
23332
23763
|
frequency,
|
|
23333
|
-
enabled:
|
|
23764
|
+
enabled: showSignalInfo,
|
|
23334
23765
|
cursorSample
|
|
23335
23766
|
});
|
|
23336
|
-
const
|
|
23767
|
+
const hasSignalInfo = showSignalInfo && !!matchedSignal;
|
|
23337
23768
|
const hasValue = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>value1 && (Array.isArray(value1) ? value1.length > 0 : true), [
|
|
23338
23769
|
value1
|
|
23339
23770
|
]);
|
|
23340
23771
|
if (left < 0) return null;
|
|
23341
|
-
if (!hasValue && !
|
|
23772
|
+
if (!hasValue && !hasSignalInfo) return null;
|
|
23342
23773
|
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(components_Mask, {
|
|
23343
23774
|
children: [
|
|
23344
23775
|
frequency && /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
@@ -23352,8 +23783,8 @@ const FrequencyDataBoard = ({ left, updateKey, onChange, showStationInfo = true,
|
|
|
23352
23783
|
className: "mt-2 space-y-1",
|
|
23353
23784
|
children: value1
|
|
23354
23785
|
}) : null,
|
|
23355
|
-
|
|
23356
|
-
|
|
23786
|
+
showSignalInfo ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(StationInfoPanel, {
|
|
23787
|
+
signalInfo: matchedSignal
|
|
23357
23788
|
}) : null
|
|
23358
23789
|
]
|
|
23359
23790
|
});
|
|
@@ -23368,7 +23799,7 @@ const SpectrumCursorPopover = ({ id })=>{
|
|
|
23368
23799
|
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Spectrum_FrequencyDataBoard, {
|
|
23369
23800
|
left: 'number' == typeof left ? left : -1,
|
|
23370
23801
|
updateKey: updateKey,
|
|
23371
|
-
|
|
23802
|
+
showSignalInfo: signalShow && signalDisplay,
|
|
23372
23803
|
cursorSample: sample
|
|
23373
23804
|
});
|
|
23374
23805
|
};
|
|
@@ -27590,7 +28021,7 @@ const FluorescenceSwitch = ()=>{
|
|
|
27590
28021
|
})
|
|
27591
28022
|
});
|
|
27592
28023
|
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ToolbarDropdownGroup, {
|
|
27593
|
-
leading: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(
|
|
28024
|
+
leading: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ToolbarGroupIconBox, {
|
|
27594
28025
|
active: display,
|
|
27595
28026
|
tone: "primary",
|
|
27596
28027
|
onClick: toggleDisplay,
|
|
@@ -28208,10 +28639,497 @@ const Markers_Switch_Switch = ()=>{
|
|
|
28208
28639
|
});
|
|
28209
28640
|
};
|
|
28210
28641
|
const Markers_Switch = Markers_Switch_Switch;
|
|
28642
|
+
/**
|
|
28643
|
+
* @license lucide-react v0.577.0 - ISC
|
|
28644
|
+
*
|
|
28645
|
+
* This source code is licensed under the ISC license.
|
|
28646
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
28647
|
+
*/ const chevron_down_iconNode = [
|
|
28648
|
+
[
|
|
28649
|
+
"path",
|
|
28650
|
+
{
|
|
28651
|
+
d: "m6 9 6 6 6-6",
|
|
28652
|
+
key: "qrunsl"
|
|
28653
|
+
}
|
|
28654
|
+
]
|
|
28655
|
+
];
|
|
28656
|
+
const ChevronDown = createLucideIcon("chevron-down", chevron_down_iconNode);
|
|
28657
|
+
/**
|
|
28658
|
+
* @license lucide-react v0.577.0 - ISC
|
|
28659
|
+
*
|
|
28660
|
+
* This source code is licensed under the ISC license.
|
|
28661
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
28662
|
+
*/ const chevron_right_iconNode = [
|
|
28663
|
+
[
|
|
28664
|
+
"path",
|
|
28665
|
+
{
|
|
28666
|
+
d: "m9 18 6-6-6-6",
|
|
28667
|
+
key: "mthhwq"
|
|
28668
|
+
}
|
|
28669
|
+
]
|
|
28670
|
+
];
|
|
28671
|
+
const ChevronRight = createLucideIcon("chevron-right", chevron_right_iconNode);
|
|
28672
|
+
"use client";
|
|
28673
|
+
var react_checkbox_dist_defProp = Object.defineProperty;
|
|
28674
|
+
var react_checkbox_dist_name = (target, value1)=>react_checkbox_dist_defProp(target, "name", {
|
|
28675
|
+
value: value1,
|
|
28676
|
+
configurable: true
|
|
28677
|
+
});
|
|
28678
|
+
var CHECKBOX_NAME = "Checkbox";
|
|
28679
|
+
var [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);
|
|
28680
|
+
var [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);
|
|
28681
|
+
function CheckboxProvider(props) {
|
|
28682
|
+
const { __scopeCheckbox, checked: checkedProp, children, defaultChecked, disabled, form, name, onCheckedChange, required, value: value1 = "on", internal_do_not_use_render } = props;
|
|
28683
|
+
const [checked, setChecked] = dist_useControllableState({
|
|
28684
|
+
prop: checkedProp,
|
|
28685
|
+
defaultProp: defaultChecked ?? false,
|
|
28686
|
+
onChange: onCheckedChange,
|
|
28687
|
+
caller: CHECKBOX_NAME
|
|
28688
|
+
});
|
|
28689
|
+
const [control, setControl] = __WEBPACK_EXTERNAL_MODULE_react__.useState(null);
|
|
28690
|
+
const [bubbleInput, setBubbleInput] = __WEBPACK_EXTERNAL_MODULE_react__.useState(null);
|
|
28691
|
+
const hasConsumerStoppedPropagationRef = __WEBPACK_EXTERNAL_MODULE_react__.useRef(false);
|
|
28692
|
+
const [userInteractionCount, onUserInteraction] = __WEBPACK_EXTERNAL_MODULE_react__.useReducer((count)=>count + 1, 0);
|
|
28693
|
+
const isFormControl = control ? !!form || !!control.closest("form") : true;
|
|
28694
|
+
const context = {
|
|
28695
|
+
checked,
|
|
28696
|
+
disabled,
|
|
28697
|
+
setChecked,
|
|
28698
|
+
control,
|
|
28699
|
+
setControl,
|
|
28700
|
+
name,
|
|
28701
|
+
form,
|
|
28702
|
+
value: value1,
|
|
28703
|
+
hasConsumerStoppedPropagationRef,
|
|
28704
|
+
userInteractionCount,
|
|
28705
|
+
onUserInteraction,
|
|
28706
|
+
required,
|
|
28707
|
+
defaultChecked: dist_isIndeterminate(defaultChecked) ? false : defaultChecked,
|
|
28708
|
+
isFormControl,
|
|
28709
|
+
bubbleInput,
|
|
28710
|
+
setBubbleInput
|
|
28711
|
+
};
|
|
28712
|
+
return /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(CheckboxProviderImpl, {
|
|
28713
|
+
scope: __scopeCheckbox,
|
|
28714
|
+
...context,
|
|
28715
|
+
children: dist_isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children
|
|
28716
|
+
});
|
|
28717
|
+
}
|
|
28718
|
+
react_checkbox_dist_name(CheckboxProvider, "CheckboxProvider");
|
|
28719
|
+
var react_checkbox_dist_TRIGGER_NAME = "CheckboxTrigger";
|
|
28720
|
+
var CheckboxTrigger = /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(/* @__PURE__ */ react_checkbox_dist_name(function({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) {
|
|
28721
|
+
const { control, value: value1, disabled, checked, required, setControl, setChecked, hasConsumerStoppedPropagationRef, onUserInteraction, isFormControl, bubbleInput } = useCheckboxContext(react_checkbox_dist_TRIGGER_NAME, __scopeCheckbox);
|
|
28722
|
+
const composedRefs = dist_useComposedRefs(forwardedRef, setControl);
|
|
28723
|
+
const initialCheckedStateRef = __WEBPACK_EXTERNAL_MODULE_react__.useRef(checked);
|
|
28724
|
+
__WEBPACK_EXTERNAL_MODULE_react__.useEffect(()=>{
|
|
28725
|
+
const form = control?.form;
|
|
28726
|
+
if (form) {
|
|
28727
|
+
const reset = /* @__PURE__ */ react_checkbox_dist_name(()=>setChecked(initialCheckedStateRef.current), "reset");
|
|
28728
|
+
form.addEventListener("reset", reset);
|
|
28729
|
+
return ()=>form.removeEventListener("reset", reset);
|
|
28730
|
+
}
|
|
28731
|
+
}, [
|
|
28732
|
+
control,
|
|
28733
|
+
setChecked
|
|
28734
|
+
]);
|
|
28735
|
+
return /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(dist_Primitive.button, {
|
|
28736
|
+
type: "button",
|
|
28737
|
+
role: "checkbox",
|
|
28738
|
+
"aria-checked": dist_isIndeterminate(checked) ? "mixed" : checked,
|
|
28739
|
+
"aria-required": required,
|
|
28740
|
+
"data-state": getState(checked),
|
|
28741
|
+
"data-disabled": disabled ? "" : void 0,
|
|
28742
|
+
disabled,
|
|
28743
|
+
value: value1,
|
|
28744
|
+
...checkboxProps,
|
|
28745
|
+
ref: composedRefs,
|
|
28746
|
+
onKeyDown: dist_composeEventHandlers(onKeyDown, (event)=>{
|
|
28747
|
+
if ("Enter" === event.key) event.preventDefault();
|
|
28748
|
+
}),
|
|
28749
|
+
onClick: dist_composeEventHandlers(onClick, (event)=>{
|
|
28750
|
+
onUserInteraction();
|
|
28751
|
+
setChecked((prevChecked)=>dist_isIndeterminate(prevChecked) ? true : !prevChecked);
|
|
28752
|
+
if (bubbleInput && isFormControl) {
|
|
28753
|
+
hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();
|
|
28754
|
+
if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();
|
|
28755
|
+
}
|
|
28756
|
+
})
|
|
28757
|
+
});
|
|
28758
|
+
}, "CheckboxTrigger"));
|
|
28759
|
+
var Checkbox = /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(/* @__PURE__ */ react_checkbox_dist_name(function(props, forwardedRef) {
|
|
28760
|
+
const { __scopeCheckbox, name, checked, defaultChecked, required, disabled, value: value1, onCheckedChange, form, ...checkboxProps } = props;
|
|
28761
|
+
return /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(CheckboxProvider, {
|
|
28762
|
+
__scopeCheckbox,
|
|
28763
|
+
checked,
|
|
28764
|
+
defaultChecked,
|
|
28765
|
+
disabled,
|
|
28766
|
+
required,
|
|
28767
|
+
onCheckedChange,
|
|
28768
|
+
name,
|
|
28769
|
+
form,
|
|
28770
|
+
value: value1,
|
|
28771
|
+
internal_do_not_use_render: ({ isFormControl })=>/* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.Fragment, {
|
|
28772
|
+
children: [
|
|
28773
|
+
/* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(CheckboxTrigger, {
|
|
28774
|
+
...checkboxProps,
|
|
28775
|
+
ref: forwardedRef,
|
|
28776
|
+
__scopeCheckbox
|
|
28777
|
+
}),
|
|
28778
|
+
isFormControl && /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(CheckboxBubbleInput, {
|
|
28779
|
+
__scopeCheckbox
|
|
28780
|
+
})
|
|
28781
|
+
]
|
|
28782
|
+
})
|
|
28783
|
+
});
|
|
28784
|
+
}, "Checkbox"));
|
|
28785
|
+
var INDICATOR_NAME = "CheckboxIndicator";
|
|
28786
|
+
var CheckboxIndicator = /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(/* @__PURE__ */ react_checkbox_dist_name(function(props, forwardedRef) {
|
|
28787
|
+
const { __scopeCheckbox, forceMount, ...indicatorProps } = props;
|
|
28788
|
+
const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);
|
|
28789
|
+
return /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(dist_Presence, {
|
|
28790
|
+
present: forceMount || dist_isIndeterminate(context.checked) || true === context.checked,
|
|
28791
|
+
children: /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(dist_Primitive.span, {
|
|
28792
|
+
"data-state": getState(context.checked),
|
|
28793
|
+
"data-disabled": context.disabled ? "" : void 0,
|
|
28794
|
+
...indicatorProps,
|
|
28795
|
+
ref: forwardedRef,
|
|
28796
|
+
style: {
|
|
28797
|
+
pointerEvents: "none",
|
|
28798
|
+
...props.style
|
|
28799
|
+
}
|
|
28800
|
+
})
|
|
28801
|
+
});
|
|
28802
|
+
}, "CheckboxIndicator"));
|
|
28803
|
+
var BUBBLE_INPUT_NAME = "CheckboxBubbleInput";
|
|
28804
|
+
var CheckboxBubbleInput = /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(/* @__PURE__ */ react_checkbox_dist_name(function({ __scopeCheckbox, onClick, ...props }, forwardedRef) {
|
|
28805
|
+
const { control, hasConsumerStoppedPropagationRef, userInteractionCount, checked, defaultChecked, required, disabled, name, value: value1, form, bubbleInput, setBubbleInput } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);
|
|
28806
|
+
const composedRefs = dist_useComposedRefs(forwardedRef, setBubbleInput);
|
|
28807
|
+
const controlSize = useSize(control);
|
|
28808
|
+
const shouldStopClickPropagationRef = __WEBPACK_EXTERNAL_MODULE_react__.useRef(false);
|
|
28809
|
+
const prevCheckedRef = __WEBPACK_EXTERNAL_MODULE_react__.useRef(checked);
|
|
28810
|
+
const prevUserInteractionCountRef = __WEBPACK_EXTERNAL_MODULE_react__.useRef(userInteractionCount);
|
|
28811
|
+
__WEBPACK_EXTERNAL_MODULE_react__.useEffect(()=>{
|
|
28812
|
+
const input = bubbleInput;
|
|
28813
|
+
if (!input) return;
|
|
28814
|
+
const inputProto = window.HTMLInputElement.prototype;
|
|
28815
|
+
const descriptor = Object.getOwnPropertyDescriptor(inputProto, "checked");
|
|
28816
|
+
const setChecked = descriptor.set;
|
|
28817
|
+
const isUserInteraction = userInteractionCount !== prevUserInteractionCountRef.current;
|
|
28818
|
+
prevUserInteractionCountRef.current = userInteractionCount;
|
|
28819
|
+
const checkedChanged = prevCheckedRef.current !== checked;
|
|
28820
|
+
prevCheckedRef.current = checked;
|
|
28821
|
+
const bubbles = !(isUserInteraction && hasConsumerStoppedPropagationRef.current);
|
|
28822
|
+
if (checkedChanged && setChecked) {
|
|
28823
|
+
shouldStopClickPropagationRef.current = !isUserInteraction;
|
|
28824
|
+
const event = new Event("click", {
|
|
28825
|
+
bubbles
|
|
28826
|
+
});
|
|
28827
|
+
input.indeterminate = dist_isIndeterminate(checked);
|
|
28828
|
+
setChecked.call(input, dist_isIndeterminate(checked) ? false : checked);
|
|
28829
|
+
input.dispatchEvent(event);
|
|
28830
|
+
shouldStopClickPropagationRef.current = false;
|
|
28831
|
+
}
|
|
28832
|
+
}, [
|
|
28833
|
+
bubbleInput,
|
|
28834
|
+
checked,
|
|
28835
|
+
hasConsumerStoppedPropagationRef,
|
|
28836
|
+
userInteractionCount
|
|
28837
|
+
]);
|
|
28838
|
+
const defaultCheckedRef = __WEBPACK_EXTERNAL_MODULE_react__.useRef(dist_isIndeterminate(checked) ? false : checked);
|
|
28839
|
+
return /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(dist_Primitive.input, {
|
|
28840
|
+
type: "checkbox",
|
|
28841
|
+
"aria-hidden": true,
|
|
28842
|
+
defaultChecked: defaultChecked ?? defaultCheckedRef.current,
|
|
28843
|
+
required,
|
|
28844
|
+
disabled,
|
|
28845
|
+
name,
|
|
28846
|
+
value: value1,
|
|
28847
|
+
form,
|
|
28848
|
+
...props,
|
|
28849
|
+
tabIndex: -1,
|
|
28850
|
+
ref: composedRefs,
|
|
28851
|
+
onClick: dist_composeEventHandlers(onClick, (event)=>{
|
|
28852
|
+
if (shouldStopClickPropagationRef.current) event.stopPropagation();
|
|
28853
|
+
}),
|
|
28854
|
+
style: {
|
|
28855
|
+
...props.style,
|
|
28856
|
+
...controlSize,
|
|
28857
|
+
position: "absolute",
|
|
28858
|
+
pointerEvents: "none",
|
|
28859
|
+
opacity: 0,
|
|
28860
|
+
margin: 0,
|
|
28861
|
+
transform: "translateX(-100%)"
|
|
28862
|
+
}
|
|
28863
|
+
});
|
|
28864
|
+
}, "CheckboxBubbleInput"));
|
|
28865
|
+
function dist_isFunction(value1) {
|
|
28866
|
+
return "function" == typeof value1;
|
|
28867
|
+
}
|
|
28868
|
+
react_checkbox_dist_name(dist_isFunction, "isFunction");
|
|
28869
|
+
function dist_isIndeterminate(checked) {
|
|
28870
|
+
return "indeterminate" === checked;
|
|
28871
|
+
}
|
|
28872
|
+
react_checkbox_dist_name(dist_isIndeterminate, "isIndeterminate");
|
|
28873
|
+
function getState(checked) {
|
|
28874
|
+
return dist_isIndeterminate(checked) ? "indeterminate" : checked ? "checked" : "unchecked";
|
|
28875
|
+
}
|
|
28876
|
+
react_checkbox_dist_name(getState, "getState");
|
|
28877
|
+
/**
|
|
28878
|
+
* @license lucide-react v0.577.0 - ISC
|
|
28879
|
+
*
|
|
28880
|
+
* This source code is licensed under the ISC license.
|
|
28881
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
28882
|
+
*/ const minus_iconNode = [
|
|
28883
|
+
[
|
|
28884
|
+
"path",
|
|
28885
|
+
{
|
|
28886
|
+
d: "M5 12h14",
|
|
28887
|
+
key: "1ays0h"
|
|
28888
|
+
}
|
|
28889
|
+
]
|
|
28890
|
+
];
|
|
28891
|
+
const Minus = createLucideIcon("minus", minus_iconNode);
|
|
28892
|
+
/**
|
|
28893
|
+
* @license lucide-react v0.577.0 - ISC
|
|
28894
|
+
*
|
|
28895
|
+
* This source code is licensed under the ISC license.
|
|
28896
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
28897
|
+
*/ const check_iconNode = [
|
|
28898
|
+
[
|
|
28899
|
+
"path",
|
|
28900
|
+
{
|
|
28901
|
+
d: "M20 6 9 17l-5-5",
|
|
28902
|
+
key: "1gmf2c"
|
|
28903
|
+
}
|
|
28904
|
+
]
|
|
28905
|
+
];
|
|
28906
|
+
const Check = createLucideIcon("check", check_iconNode);
|
|
28907
|
+
const checkbox_Checkbox = /*#__PURE__*/ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Checkbox, {
|
|
28908
|
+
ref: ref,
|
|
28909
|
+
"data-slot": "checkbox",
|
|
28910
|
+
className: cn_cn('peer inline-flex size-4 shrink-0 items-center justify-center rounded-[var(--radius-micro)] border border-border bg-background text-primary shadow-xs transition-colors outline-none', 'focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50', 'data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground', 'data-[state=indeterminate]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground', className),
|
|
28911
|
+
...props,
|
|
28912
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(CheckboxIndicator, {
|
|
28913
|
+
"data-slot": "checkbox-indicator",
|
|
28914
|
+
className: "flex items-center justify-center text-current",
|
|
28915
|
+
children: 'indeterminate' === props.checked ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Minus, {
|
|
28916
|
+
className: "size-3.5"
|
|
28917
|
+
}) : /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Check, {
|
|
28918
|
+
className: "size-3.5"
|
|
28919
|
+
})
|
|
28920
|
+
})
|
|
28921
|
+
}));
|
|
28922
|
+
checkbox_Checkbox.displayName = Checkbox.displayName;
|
|
28923
|
+
const toCheckboxValue = (state)=>{
|
|
28924
|
+
if ('checked' === state) return true;
|
|
28925
|
+
if ('indeterminate' === state) return 'indeterminate';
|
|
28926
|
+
return false;
|
|
28927
|
+
};
|
|
28928
|
+
const SignalTypeRow = ({ source, type, leafKeysWithData, hiddenKeys, expanded, onToggleExpanded, onToggleNode })=>{
|
|
28929
|
+
const state = resolveNodeCheckState(leafKeysWithData, hiddenKeys, type.leafKeys);
|
|
28930
|
+
const checkboxId = `signal-tree-type-checkbox-${source.source}-${type.signalType}`;
|
|
28931
|
+
const hasLevels = type.levels.length > 0;
|
|
28932
|
+
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
28933
|
+
children: [
|
|
28934
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
28935
|
+
className: "group flex items-center gap-1.5 rounded-[var(--radius-control)] px-[var(--size-gap-base)] py-[calc(var(--size-gap-base)/2)] transition-colors hover:bg-accent/80",
|
|
28936
|
+
"data-testid": `signal-tree-type-${source.source}-${type.signalType}`,
|
|
28937
|
+
children: [
|
|
28938
|
+
hasLevels ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("button", {
|
|
28939
|
+
type: "button",
|
|
28940
|
+
"aria-label": expanded ? "\u6298\u53E0\u4FE1\u53F7\u7C7B\u578B" : "\u5C55\u5F00\u4FE1\u53F7\u7C7B\u578B",
|
|
28941
|
+
className: "flex size-4 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
28942
|
+
onClick: onToggleExpanded,
|
|
28943
|
+
children: expanded ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ChevronDown, {
|
|
28944
|
+
className: "size-3.5"
|
|
28945
|
+
}) : /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ChevronRight, {
|
|
28946
|
+
className: "size-3.5"
|
|
28947
|
+
})
|
|
28948
|
+
}) : /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
28949
|
+
"aria-hidden": "true",
|
|
28950
|
+
className: "size-4 shrink-0"
|
|
28951
|
+
}),
|
|
28952
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("label", {
|
|
28953
|
+
htmlFor: checkboxId,
|
|
28954
|
+
className: cn_cn('flex min-w-0 flex-1 items-center gap-1.5', 'disabled' === state ? 'cursor-not-allowed' : 'cursor-pointer'),
|
|
28955
|
+
children: [
|
|
28956
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(checkbox_Checkbox, {
|
|
28957
|
+
id: checkboxId,
|
|
28958
|
+
"aria-label": `${source.label} ${type.label}`,
|
|
28959
|
+
checked: toCheckboxValue(state),
|
|
28960
|
+
disabled: 'disabled' === state,
|
|
28961
|
+
onCheckedChange: ()=>onToggleNode(type.leafKeys)
|
|
28962
|
+
}),
|
|
28963
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
28964
|
+
"aria-hidden": "true",
|
|
28965
|
+
className: cn_cn('size-2 shrink-0 rounded-full ring-1 ring-inset ring-background/30', 'disabled' === state && 'opacity-35'),
|
|
28966
|
+
"data-testid": `signal-tree-type-color-${source.source}-${type.signalType}`,
|
|
28967
|
+
style: {
|
|
28968
|
+
backgroundColor: SIGNAL_TYPE_MAP[type.signalType].color
|
|
28969
|
+
}
|
|
28970
|
+
}),
|
|
28971
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
28972
|
+
className: cn_cn('min-w-0 truncate text-xs font-medium', 'disabled' === state ? 'text-muted-foreground' : 'text-foreground/90'),
|
|
28973
|
+
children: type.label
|
|
28974
|
+
})
|
|
28975
|
+
]
|
|
28976
|
+
})
|
|
28977
|
+
]
|
|
28978
|
+
}),
|
|
28979
|
+
expanded && hasLevels ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
28980
|
+
className: "relative ml-6 border-l border-border/60 pl-1",
|
|
28981
|
+
children: type.levels.map((level)=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalLevelRow, {
|
|
28982
|
+
source: source.source,
|
|
28983
|
+
signalType: type.signalType,
|
|
28984
|
+
level: level,
|
|
28985
|
+
leafKeysWithData: leafKeysWithData,
|
|
28986
|
+
hiddenKeys: hiddenKeys,
|
|
28987
|
+
onToggleNode: onToggleNode
|
|
28988
|
+
}, level.leafKey))
|
|
28989
|
+
}) : null
|
|
28990
|
+
]
|
|
28991
|
+
}, type.signalType);
|
|
28992
|
+
};
|
|
28993
|
+
const SignalLevelRow = ({ source, signalType, level, leafKeysWithData, hiddenKeys, onToggleNode })=>{
|
|
28994
|
+
const state = resolveNodeCheckState(leafKeysWithData, hiddenKeys, [
|
|
28995
|
+
level.leafKey
|
|
28996
|
+
]);
|
|
28997
|
+
const checkboxId = `signal-tree-level-checkbox-${source}-${signalType}-${level.level}`;
|
|
28998
|
+
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
28999
|
+
className: "group flex items-center gap-1.5 rounded-[var(--radius-control)] px-[var(--size-gap-base)] py-[calc(var(--size-gap-base)/2)] transition-colors hover:bg-accent/80",
|
|
29000
|
+
"data-testid": `signal-tree-level-${source}-${signalType}-${level.level}`,
|
|
29001
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("label", {
|
|
29002
|
+
htmlFor: checkboxId,
|
|
29003
|
+
className: cn_cn('flex min-w-0 flex-1 items-center gap-1.5', 'disabled' === state ? 'cursor-not-allowed' : 'cursor-pointer'),
|
|
29004
|
+
children: [
|
|
29005
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(checkbox_Checkbox, {
|
|
29006
|
+
id: checkboxId,
|
|
29007
|
+
"aria-label": `${signalType} ${level.label}`,
|
|
29008
|
+
checked: toCheckboxValue(state),
|
|
29009
|
+
disabled: 'disabled' === state,
|
|
29010
|
+
onCheckedChange: ()=>onToggleNode([
|
|
29011
|
+
level.leafKey
|
|
29012
|
+
])
|
|
29013
|
+
}),
|
|
29014
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
29015
|
+
"aria-hidden": "true",
|
|
29016
|
+
className: cn_cn('size-2 shrink-0 rounded-full ring-1 ring-inset ring-background/30', 'disabled' === state && 'opacity-35'),
|
|
29017
|
+
"data-testid": `signal-tree-level-color-${source}-${signalType}-${level.level}`,
|
|
29018
|
+
style: {
|
|
29019
|
+
backgroundColor: SIGNAL_LEVEL_MAP[level.level].color
|
|
29020
|
+
}
|
|
29021
|
+
}),
|
|
29022
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
29023
|
+
className: cn_cn('text-xs', 'disabled' === state ? 'text-muted-foreground' : 'text-foreground/80'),
|
|
29024
|
+
children: level.label
|
|
29025
|
+
})
|
|
29026
|
+
]
|
|
29027
|
+
})
|
|
29028
|
+
});
|
|
29029
|
+
};
|
|
29030
|
+
const SignalAnnotationTree = ({ tree, leafKeysWithData, hiddenKeys, onToggleNode })=>{
|
|
29031
|
+
const [collapsedKeys, setCollapsedKeys] = (0, __WEBPACK_EXTERNAL_MODULE_react__.useState)(()=>new Set());
|
|
29032
|
+
const [collapsedSourceKeys, setCollapsedSourceKeys] = (0, __WEBPACK_EXTERNAL_MODULE_react__.useState)(()=>new Set());
|
|
29033
|
+
const toggleExpanded = (0, __WEBPACK_EXTERNAL_MODULE_react__.useCallback)((key)=>{
|
|
29034
|
+
setCollapsedKeys((prev)=>{
|
|
29035
|
+
const next = new Set(prev);
|
|
29036
|
+
if (next.has(key)) next.delete(key);
|
|
29037
|
+
else next.add(key);
|
|
29038
|
+
return next;
|
|
29039
|
+
});
|
|
29040
|
+
}, []);
|
|
29041
|
+
const toggleSourceExpanded = (0, __WEBPACK_EXTERNAL_MODULE_react__.useCallback)((source)=>{
|
|
29042
|
+
setCollapsedSourceKeys((prev)=>{
|
|
29043
|
+
const next = new Set(prev);
|
|
29044
|
+
if (next.has(source)) next.delete(source);
|
|
29045
|
+
else next.add(source);
|
|
29046
|
+
return next;
|
|
29047
|
+
});
|
|
29048
|
+
}, []);
|
|
29049
|
+
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(scroll_area_ScrollArea, {
|
|
29050
|
+
viewportClassName: "h-auto max-h-[var(--radix-dropdown-menu-content-available-height)]",
|
|
29051
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
29052
|
+
className: "p-[calc(var(--size-gap-base)/2)]",
|
|
29053
|
+
children: tree.sources.map((source, sourceIndex)=>{
|
|
29054
|
+
const sourceState = resolveNodeCheckState(leafKeysWithData, hiddenKeys, source.leafKeys);
|
|
29055
|
+
const checkboxId = `signal-tree-source-checkbox-${source.source}`;
|
|
29056
|
+
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
29057
|
+
className: cn_cn(sourceIndex > 0 && 'mt-[calc(var(--size-gap-base)/2)] border-t border-border/60 pt-[calc(var(--size-gap-base)/2)]'),
|
|
29058
|
+
"data-testid": `signal-tree-source-${source.source}`,
|
|
29059
|
+
children: [
|
|
29060
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
29061
|
+
className: "flex items-center gap-1.5 rounded-[var(--radius-control)] px-[var(--size-gap-base)] py-[calc(var(--size-gap-base)/2)] transition-colors hover:bg-accent/80",
|
|
29062
|
+
"data-testid": `signal-tree-source-row-${source.source}`,
|
|
29063
|
+
children: [
|
|
29064
|
+
source.types.length > 0 ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("button", {
|
|
29065
|
+
type: "button",
|
|
29066
|
+
"aria-label": collapsedSourceKeys.has(source.source) ? "\u5C55\u5F00\u6570\u636E\u6765\u6E90" : "\u6298\u53E0\u6570\u636E\u6765\u6E90",
|
|
29067
|
+
className: "flex size-4 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
29068
|
+
onClick: ()=>toggleSourceExpanded(source.source),
|
|
29069
|
+
children: collapsedSourceKeys.has(source.source) ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ChevronRight, {
|
|
29070
|
+
className: "size-3.5"
|
|
29071
|
+
}) : /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ChevronDown, {
|
|
29072
|
+
className: "size-3.5"
|
|
29073
|
+
})
|
|
29074
|
+
}) : /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
29075
|
+
"aria-hidden": "true",
|
|
29076
|
+
className: "size-4 shrink-0"
|
|
29077
|
+
}),
|
|
29078
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("label", {
|
|
29079
|
+
htmlFor: checkboxId,
|
|
29080
|
+
className: cn_cn('flex min-w-0 flex-1 items-center gap-1.5', 'disabled' === sourceState ? 'cursor-not-allowed' : 'cursor-pointer'),
|
|
29081
|
+
children: [
|
|
29082
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(checkbox_Checkbox, {
|
|
29083
|
+
id: checkboxId,
|
|
29084
|
+
"aria-label": `${source.label}\u{7B5B}\u{9009}`,
|
|
29085
|
+
checked: toCheckboxValue(sourceState),
|
|
29086
|
+
disabled: 'disabled' === sourceState,
|
|
29087
|
+
onCheckedChange: ()=>onToggleNode(source.leafKeys)
|
|
29088
|
+
}),
|
|
29089
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
29090
|
+
className: "text-xs font-medium text-foreground",
|
|
29091
|
+
children: source.label
|
|
29092
|
+
})
|
|
29093
|
+
]
|
|
29094
|
+
})
|
|
29095
|
+
]
|
|
29096
|
+
}),
|
|
29097
|
+
collapsedSourceKeys.has(source.source) ? null : /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
29098
|
+
className: "ml-4 divide-y divide-border/40 border-l border-border/60 pl-1",
|
|
29099
|
+
children: source.types.map((type)=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalTypeRow, {
|
|
29100
|
+
source: source,
|
|
29101
|
+
type: type,
|
|
29102
|
+
leafKeysWithData: leafKeysWithData,
|
|
29103
|
+
hiddenKeys: hiddenKeys,
|
|
29104
|
+
expanded: !collapsedKeys.has(`${source.source}:${type.signalType}`),
|
|
29105
|
+
onToggleExpanded: ()=>toggleExpanded(`${source.source}:${type.signalType}`),
|
|
29106
|
+
onToggleNode: onToggleNode
|
|
29107
|
+
}, type.signalType))
|
|
29108
|
+
})
|
|
29109
|
+
]
|
|
29110
|
+
}, source.source);
|
|
29111
|
+
})
|
|
29112
|
+
})
|
|
29113
|
+
});
|
|
29114
|
+
};
|
|
28211
29115
|
const Signal_Switch_Switch = ()=>{
|
|
28212
29116
|
const { state: { signal }, dispatch } = useStore_useStore();
|
|
28213
29117
|
const isActive = signal.display;
|
|
28214
29118
|
const shouldShow = signal.show;
|
|
29119
|
+
const signalItems = useUnifiedSignals({
|
|
29120
|
+
respectVisibility: false,
|
|
29121
|
+
filterHidden: false
|
|
29122
|
+
});
|
|
29123
|
+
const tree = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>buildSignalTree(signalItems), [
|
|
29124
|
+
signalItems
|
|
29125
|
+
]);
|
|
29126
|
+
const leafKeysWithData = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>new Set(tree.sources.flatMap((source)=>source.dataLeafKeys)), [
|
|
29127
|
+
tree
|
|
29128
|
+
]);
|
|
29129
|
+
const hiddenKeys = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>new Set(signal.hiddenCategoryKeys ?? []), [
|
|
29130
|
+
signal.hiddenCategoryKeys
|
|
29131
|
+
]);
|
|
29132
|
+
const hasCategoryFilter = (signal.hiddenCategoryKeys?.length ?? 0) > 0;
|
|
28215
29133
|
const setActive = (0, __WEBPACK_EXTERNAL_MODULE_react__.useCallback)((active)=>{
|
|
28216
29134
|
dispatch({
|
|
28217
29135
|
payload: {
|
|
@@ -28225,22 +29143,58 @@ const Signal_Switch_Switch = ()=>{
|
|
|
28225
29143
|
signal,
|
|
28226
29144
|
dispatch
|
|
28227
29145
|
]);
|
|
29146
|
+
const toggleNode = (0, __WEBPACK_EXTERNAL_MODULE_react__.useCallback)((fixedLeafKeys)=>{
|
|
29147
|
+
const next = toggleNodeHiddenKeys(signal.hiddenCategoryKeys ?? [], fixedLeafKeys, leafKeysWithData);
|
|
29148
|
+
dispatch({
|
|
29149
|
+
payload: {
|
|
29150
|
+
signal: {
|
|
29151
|
+
...signal,
|
|
29152
|
+
hiddenCategoryKeys: next
|
|
29153
|
+
}
|
|
29154
|
+
}
|
|
29155
|
+
});
|
|
29156
|
+
}, [
|
|
29157
|
+
signal,
|
|
29158
|
+
leafKeysWithData,
|
|
29159
|
+
dispatch
|
|
29160
|
+
]);
|
|
28228
29161
|
if (!shouldShow) return null;
|
|
28229
|
-
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(
|
|
28230
|
-
|
|
28231
|
-
|
|
28232
|
-
|
|
28233
|
-
|
|
28234
|
-
|
|
28235
|
-
|
|
28236
|
-
|
|
28237
|
-
|
|
28238
|
-
|
|
28239
|
-
|
|
28240
|
-
|
|
28241
|
-
|
|
29162
|
+
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ToolbarDropdownGroup, {
|
|
29163
|
+
leading: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ToolbarGroupIconBox, {
|
|
29164
|
+
active: isActive,
|
|
29165
|
+
tone: "primary",
|
|
29166
|
+
onClick: ()=>{
|
|
29167
|
+
setActive(!isActive);
|
|
29168
|
+
},
|
|
29169
|
+
title: `\u{5168}\u{90E8}\u{4FE1}\u{53F7}\u{6807}\u{6CE8}\u{FF1A}${isActive ? "\u663E\u793A" : "\u9690\u85CF"}`,
|
|
29170
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("svg", {
|
|
29171
|
+
viewBox: "0 0 1024 1024",
|
|
29172
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
29173
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("path", {
|
|
29174
|
+
fill: "currentColor",
|
|
29175
|
+
d: "M563.072 376.48a79.456 79.456 0 0 0 28.928-61.12 80 80 0 1 0-160 0c0 24.672 11.392 46.432 28.928 61.12l-202.88 540.256a32 32 0 1 0 59.904 22.496l49.28-131.264h289.504l49.28 131.264a32.064 32.064 0 0 0 41.248 18.752c16.544-6.208 24.896-24.672 18.72-41.216l-202.912-540.288z m-1.312 178.624h-99.552L512 422.56l49.76 132.544z m-170.464 188.896l46.912-124.896h147.616l46.912 124.896h-241.44zM662.464 417.408a32 32 0 1 0 53.12 35.648 254.72 254.72 0 0 0 43.136-142.304 255.04 255.04 0 0 0-43.136-142.304 32 32 0 1 0-53.12 35.68 190.944 190.944 0 0 1 32.288 106.624 190.816 190.816 0 0 1-32.288 106.656zM289.888 453.024a32 32 0 1 0 53.184-35.616 191.36 191.36 0 0 1-32.32-106.656 191.328 191.328 0 0 1 32.32-106.656 32.064 32.064 0 0 0-8.768-44.416 32.096 32.096 0 0 0-44.416 8.768 254.976 254.976 0 0 0-43.136 142.304 254.976 254.976 0 0 0 43.136 142.272zM210.656 117.12A32 32 0 1 0 157.44 81.536a420.032 420.032 0 0 0-70.848 233.824 419.744 419.744 0 0 0 70.88 233.856 31.936 31.936 0 0 0 44.416 8.768 32 32 0 0 0 8.768-44.416 355.168 355.168 0 0 1-60.032-198.24A355.36 355.36 0 0 1 210.656 117.12zM896.224 154.304a416.96 416.96 0 0 0-38.912-72.768 32 32 0 1 0-53.184 35.584 354.912 354.912 0 0 1 60.064 198.24 355.2 355.2 0 0 1-60.064 198.208 32.032 32.032 0 0 0 53.184 35.648 418.816 418.816 0 0 0 70.88-233.856c0-55.68-10.752-109.856-31.968-161.056z"
|
|
29176
|
+
})
|
|
28242
29177
|
})
|
|
28243
|
-
})
|
|
29178
|
+
}),
|
|
29179
|
+
value: null,
|
|
29180
|
+
options: [],
|
|
29181
|
+
triggerTitle: `\u{7B5B}\u{9009}\u{4FE1}\u{53F7}\u{6807}\u{6CE8}\u{7C7B}\u{522B}${hasCategoryFilter ? "\uFF08\u5DF2\u5E94\u7528\u7B5B\u9009\uFF09" : ''}`,
|
|
29182
|
+
triggerTestId: "signal-tree-trigger",
|
|
29183
|
+
triggerContent: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
29184
|
+
className: "sr-only",
|
|
29185
|
+
children: hasCategoryFilter ? "\u4FE1\u53F7\u6807\u6CE8\u7C7B\u522B\u7B5B\u9009\uFF08\u5DF2\u5E94\u7528\uFF09" : "\u4FE1\u53F7\u6807\u6CE8\u7C7B\u522B\u7B5B\u9009"
|
|
29186
|
+
}),
|
|
29187
|
+
customContent: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
29188
|
+
"data-testid": "signal-tree-popover",
|
|
29189
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalAnnotationTree, {
|
|
29190
|
+
tree: tree,
|
|
29191
|
+
leafKeysWithData: leafKeysWithData,
|
|
29192
|
+
hiddenKeys: hiddenKeys,
|
|
29193
|
+
onToggleNode: toggleNode
|
|
29194
|
+
})
|
|
29195
|
+
}),
|
|
29196
|
+
contentClassName: "w-max max-w-[calc(100vw-1rem)] p-0",
|
|
29197
|
+
triggerClassName: cn_cn('justify-center [&>span:last-child]:ml-0', hasCategoryFilter && 'bg-accent/72 shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--primary)_28%,transparent)] [&>span:last-child]:text-primary')
|
|
28244
29198
|
});
|
|
28245
29199
|
};
|
|
28246
29200
|
const Signal_Switch = Signal_Switch_Switch;
|
|
@@ -30408,7 +31362,7 @@ const Board = ({ id })=>{
|
|
|
30408
31362
|
left: left,
|
|
30409
31363
|
updateKey: updateKey,
|
|
30410
31364
|
onChange: handleChange,
|
|
30411
|
-
|
|
31365
|
+
showSignalInfo: false
|
|
30412
31366
|
})
|
|
30413
31367
|
});
|
|
30414
31368
|
};
|
|
@@ -32176,27 +33130,47 @@ const Scope = ()=>{
|
|
|
32176
33130
|
});
|
|
32177
33131
|
};
|
|
32178
33132
|
const Spectrum_Scope = Scope;
|
|
32179
|
-
const
|
|
33133
|
+
const SignalSegments = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react__.memo)(({ style, signalPositions, activeSignalKey, segmentIndex })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
32180
33134
|
className: "absolute h-full box-border",
|
|
32181
33135
|
style: style,
|
|
32182
|
-
children: signalPositions.map(({ key, position, color, tooltip })=>{
|
|
33136
|
+
children: signalPositions.map(({ item, key, position, color, tooltip })=>{
|
|
32183
33137
|
const isActive = activeSignalKey === key;
|
|
32184
|
-
const
|
|
33138
|
+
const positionStyle = {
|
|
32185
33139
|
left: position.left,
|
|
32186
33140
|
width: position.width,
|
|
32187
|
-
minWidth: '1px'
|
|
32188
|
-
backgroundColor: color,
|
|
32189
|
-
opacity: isActive ? 0.5 : 1,
|
|
32190
|
-
height: isActive ? '100%' : '8px'
|
|
33141
|
+
minWidth: '1px'
|
|
32191
33142
|
};
|
|
32192
|
-
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.
|
|
32193
|
-
|
|
32194
|
-
|
|
32195
|
-
|
|
33143
|
+
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(__WEBPACK_EXTERNAL_MODULE_react__.Fragment, {
|
|
33144
|
+
children: [
|
|
33145
|
+
isActive ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
33146
|
+
"aria-hidden": "true",
|
|
33147
|
+
className: "pointer-events-none absolute inset-y-0 z-0 box-border",
|
|
33148
|
+
"data-testid": "signal-annotation-highlight",
|
|
33149
|
+
style: {
|
|
33150
|
+
...positionStyle,
|
|
33151
|
+
backgroundColor: `color-mix(in srgb, ${color} 14%, transparent)`,
|
|
33152
|
+
borderLeft: `1px solid ${color}`,
|
|
33153
|
+
borderRight: `1px solid ${color}`
|
|
33154
|
+
}
|
|
33155
|
+
}) : null,
|
|
33156
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
33157
|
+
className: "pointer-events-none absolute top-0 flex h-2 min-w-px items-center justify-center overflow-hidden text-ellipsis whitespace-nowrap text-center text-xs text-foreground",
|
|
33158
|
+
"data-signal-active": isActive ? 'true' : 'false',
|
|
33159
|
+
"data-signal-key": key,
|
|
33160
|
+
"data-signal-source": resolveSignalSource(item),
|
|
33161
|
+
"data-testid": "signal-annotation",
|
|
33162
|
+
style: {
|
|
33163
|
+
...positionStyle,
|
|
33164
|
+
backgroundColor: color,
|
|
33165
|
+
zIndex: isActive ? 2 : 1
|
|
33166
|
+
},
|
|
33167
|
+
title: tooltip
|
|
33168
|
+
})
|
|
33169
|
+
]
|
|
32196
33170
|
}, `segment-${segmentIndex}-signal-${key}`);
|
|
32197
33171
|
})
|
|
32198
33172
|
}));
|
|
32199
|
-
const
|
|
33173
|
+
const presenters_SignalSegments = SignalSegments;
|
|
32200
33174
|
function useSignalDataManager() {
|
|
32201
33175
|
const { state, dispatch } = useStore_useStore();
|
|
32202
33176
|
const globalIDRef = (0, __WEBPACK_EXTERNAL_MODULE_react__.useRef)(state.globalID);
|
|
@@ -32213,11 +33187,11 @@ function useSignalDataManager() {
|
|
|
32213
33187
|
if (!state.globalID) return;
|
|
32214
33188
|
const pendingStationData = pendingDataRef.current.station;
|
|
32215
33189
|
const pendingSimpleSignalData = pendingDataRef.current.simple;
|
|
32216
|
-
if (pendingStationData
|
|
33190
|
+
if (void 0 !== pendingStationData) {
|
|
32217
33191
|
STATION_DATA(state.globalID, pendingStationData);
|
|
32218
33192
|
pendingDataRef.current.station = void 0;
|
|
32219
33193
|
}
|
|
32220
|
-
if (pendingSimpleSignalData
|
|
33194
|
+
if (void 0 !== pendingSimpleSignalData) {
|
|
32221
33195
|
dispatch({
|
|
32222
33196
|
payload: {
|
|
32223
33197
|
signal: {
|
|
@@ -32234,7 +33208,7 @@ function useSignalDataManager() {
|
|
|
32234
33208
|
]);
|
|
32235
33209
|
const updateSignalData = (0, __WEBPACK_EXTERNAL_MODULE_react__.useCallback)((params)=>{
|
|
32236
33210
|
const { type, data } = params;
|
|
32237
|
-
if (!
|
|
33211
|
+
if (!Array.isArray(data)) return;
|
|
32238
33212
|
if ('station' === type) {
|
|
32239
33213
|
if (!globalIDRef.current) {
|
|
32240
33214
|
pendingDataRef.current.station = data;
|
|
@@ -32310,7 +33284,7 @@ const Signal = ({ id, show = true, display = true })=>{
|
|
|
32310
33284
|
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
32311
33285
|
className: "absolute right-0 top-0 flex h-full w-full",
|
|
32312
33286
|
style: zoomOffStyle ?? void 0,
|
|
32313
|
-
children: segmentData.map(({ segmentIndex, signalPositions, style })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(
|
|
33287
|
+
children: segmentData.map(({ segmentIndex, signalPositions, style })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(presenters_SignalSegments, {
|
|
32314
33288
|
style: style,
|
|
32315
33289
|
signalPositions: signalPositions,
|
|
32316
33290
|
activeSignalKey: currentPosition.segmentIndex === segmentIndex ? activeSignalKey : void 0,
|