@rfkit/charts 1.10.1 → 1.10.3
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 +1113 -167
- 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%;
|
|
@@ -759,6 +771,14 @@ var __webpack_modules__ = {
|
|
|
759
771
|
margin-bottom: calc(var(--spacing) * 2);
|
|
760
772
|
}
|
|
761
773
|
|
|
774
|
+
[data-rfkit-charts-root] .ml-4 {
|
|
775
|
+
margin-left: calc(var(--spacing) * 4);
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
[data-rfkit-charts-root] .ml-6 {
|
|
779
|
+
margin-left: calc(var(--spacing) * 6);
|
|
780
|
+
}
|
|
781
|
+
|
|
762
782
|
[data-rfkit-charts-root] .ml-\\[-0\\.5px\\] {
|
|
763
783
|
margin-left: -.5px;
|
|
764
784
|
}
|
|
@@ -811,6 +831,11 @@ var __webpack_modules__ = {
|
|
|
811
831
|
display: inline-flex;
|
|
812
832
|
}
|
|
813
833
|
|
|
834
|
+
[data-rfkit-charts-root] .size-2 {
|
|
835
|
+
width: calc(var(--spacing) * 2);
|
|
836
|
+
height: calc(var(--spacing) * 2);
|
|
837
|
+
}
|
|
838
|
+
|
|
814
839
|
[data-rfkit-charts-root] .size-3 {
|
|
815
840
|
width: calc(var(--spacing) * 3);
|
|
816
841
|
height: calc(var(--spacing) * 3);
|
|
@@ -939,6 +964,10 @@ var __webpack_modules__ = {
|
|
|
939
964
|
max-height: calc(var(--spacing) * 96);
|
|
940
965
|
}
|
|
941
966
|
|
|
967
|
+
[data-rfkit-charts-root] .max-h-\\[var\\(--radix-dropdown-menu-content-available-height\\)\\] {
|
|
968
|
+
max-height: var(--radix-dropdown-menu-content-available-height);
|
|
969
|
+
}
|
|
970
|
+
|
|
942
971
|
[data-rfkit-charts-root] .min-h-0 {
|
|
943
972
|
min-height: 0;
|
|
944
973
|
}
|
|
@@ -987,6 +1016,10 @@ var __webpack_modules__ = {
|
|
|
987
1016
|
width: calc(var(--spacing) * 9);
|
|
988
1017
|
}
|
|
989
1018
|
|
|
1019
|
+
[data-rfkit-charts-root] .w-10 {
|
|
1020
|
+
width: calc(var(--spacing) * 10);
|
|
1021
|
+
}
|
|
1022
|
+
|
|
990
1023
|
[data-rfkit-charts-root] .w-14 {
|
|
991
1024
|
width: calc(var(--spacing) * 14);
|
|
992
1025
|
}
|
|
@@ -1044,6 +1077,10 @@ var __webpack_modules__ = {
|
|
|
1044
1077
|
width: 100%;
|
|
1045
1078
|
}
|
|
1046
1079
|
|
|
1080
|
+
[data-rfkit-charts-root] .w-max {
|
|
1081
|
+
width: max-content;
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1047
1084
|
[data-rfkit-charts-root] .w-px {
|
|
1048
1085
|
width: 1px;
|
|
1049
1086
|
}
|
|
@@ -1072,6 +1109,10 @@ var __webpack_modules__ = {
|
|
|
1072
1109
|
max-width: 520px;
|
|
1073
1110
|
}
|
|
1074
1111
|
|
|
1112
|
+
[data-rfkit-charts-root] .max-w-\\[calc\\(100vw-1rem\\)\\] {
|
|
1113
|
+
max-width: calc(100vw - 1rem);
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1075
1116
|
[data-rfkit-charts-root] .max-w-full {
|
|
1076
1117
|
max-width: 100%;
|
|
1077
1118
|
}
|
|
@@ -1351,6 +1392,12 @@ var __webpack_modules__ = {
|
|
|
1351
1392
|
gap: var(--size-gap-base);
|
|
1352
1393
|
}
|
|
1353
1394
|
|
|
1395
|
+
[data-rfkit-charts-root] :where(.space-y-0\\.5 > :not(:last-child)) {
|
|
1396
|
+
--tw-space-y-reverse: 0;
|
|
1397
|
+
margin-block-start: calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));
|
|
1398
|
+
margin-block-end: calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)));
|
|
1399
|
+
}
|
|
1400
|
+
|
|
1354
1401
|
[data-rfkit-charts-root] :where(.space-y-1 > :not(:last-child)) {
|
|
1355
1402
|
--tw-space-y-reverse: 0;
|
|
1356
1403
|
margin-block-start: calc(var(--spacing) * var(--tw-space-y-reverse));
|
|
@@ -1385,6 +1432,24 @@ var __webpack_modules__ = {
|
|
|
1385
1432
|
row-gap: calc(var(--spacing) * 2);
|
|
1386
1433
|
}
|
|
1387
1434
|
|
|
1435
|
+
[data-rfkit-charts-root] :where(.divide-y > :not(:last-child)) {
|
|
1436
|
+
--tw-divide-y-reverse: 0;
|
|
1437
|
+
border-bottom-style: var(--tw-border-style);
|
|
1438
|
+
border-top-style: var(--tw-border-style);
|
|
1439
|
+
border-top-width: calc(1px * var(--tw-divide-y-reverse));
|
|
1440
|
+
border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
[data-rfkit-charts-root] :where(.divide-border\\/40 > :not(:last-child)) {
|
|
1444
|
+
border-color: var(--border);
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1448
|
+
[data-rfkit-charts-root] :where(.divide-border\\/40 > :not(:last-child)) {
|
|
1449
|
+
border-color: color-mix(in oklab, var(--border) 40%, transparent);
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1452
|
+
|
|
1388
1453
|
[data-rfkit-charts-root] .self-center {
|
|
1389
1454
|
align-self: center;
|
|
1390
1455
|
}
|
|
@@ -1576,7 +1641,17 @@ var __webpack_modules__ = {
|
|
|
1576
1641
|
border-left-color: #0000;
|
|
1577
1642
|
}
|
|
1578
1643
|
|
|
1579
|
-
[data-rfkit-charts-root] .bg-accent, [data-rfkit-charts-root] .bg-accent\\/
|
|
1644
|
+
[data-rfkit-charts-root] .bg-accent, [data-rfkit-charts-root] .bg-accent\\/72 {
|
|
1645
|
+
background-color: var(--accent);
|
|
1646
|
+
}
|
|
1647
|
+
|
|
1648
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1649
|
+
[data-rfkit-charts-root] .bg-accent\\/72 {
|
|
1650
|
+
background-color: color-mix(in oklab, var(--accent) 72%, transparent);
|
|
1651
|
+
}
|
|
1652
|
+
}
|
|
1653
|
+
|
|
1654
|
+
[data-rfkit-charts-root] .bg-accent\\/80 {
|
|
1580
1655
|
background-color: var(--accent);
|
|
1581
1656
|
}
|
|
1582
1657
|
|
|
@@ -1886,8 +1961,8 @@ var __webpack_modules__ = {
|
|
|
1886
1961
|
padding-top: 0;
|
|
1887
1962
|
}
|
|
1888
1963
|
|
|
1889
|
-
[data-rfkit-charts-root] .pt-
|
|
1890
|
-
padding-top: var(--spacing);
|
|
1964
|
+
[data-rfkit-charts-root] .pt-2 {
|
|
1965
|
+
padding-top: calc(var(--spacing) * 2);
|
|
1891
1966
|
}
|
|
1892
1967
|
|
|
1893
1968
|
[data-rfkit-charts-root] .pt-\\[calc\\(var\\(--size-gap-base\\)\\/2\\)\\] {
|
|
@@ -1922,6 +1997,10 @@ var __webpack_modules__ = {
|
|
|
1922
1997
|
padding-left: calc(var(--spacing) * .5);
|
|
1923
1998
|
}
|
|
1924
1999
|
|
|
2000
|
+
[data-rfkit-charts-root] .pl-1 {
|
|
2001
|
+
padding-left: var(--spacing);
|
|
2002
|
+
}
|
|
2003
|
+
|
|
1925
2004
|
[data-rfkit-charts-root] .pl-8 {
|
|
1926
2005
|
padding-left: calc(var(--spacing) * 8);
|
|
1927
2006
|
}
|
|
@@ -2021,6 +2100,10 @@ var __webpack_modules__ = {
|
|
|
2021
2100
|
font-weight: var(--font-weight-semibold);
|
|
2022
2101
|
}
|
|
2023
2102
|
|
|
2103
|
+
[data-rfkit-charts-root] .break-words {
|
|
2104
|
+
overflow-wrap: break-word;
|
|
2105
|
+
}
|
|
2106
|
+
|
|
2024
2107
|
[data-rfkit-charts-root] .text-ellipsis {
|
|
2025
2108
|
text-overflow: ellipsis;
|
|
2026
2109
|
}
|
|
@@ -2105,6 +2188,11 @@ var __webpack_modules__ = {
|
|
|
2105
2188
|
color: var(--color-white);
|
|
2106
2189
|
}
|
|
2107
2190
|
|
|
2191
|
+
[data-rfkit-charts-root] .tabular-nums {
|
|
2192
|
+
--tw-numeric-spacing: tabular-nums;
|
|
2193
|
+
font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
|
|
2194
|
+
}
|
|
2195
|
+
|
|
2108
2196
|
[data-rfkit-charts-root] .\\[font-variant-numeric\\:tabular-nums\\] {
|
|
2109
2197
|
font-variant-numeric: tabular-nums;
|
|
2110
2198
|
}
|
|
@@ -2125,6 +2213,10 @@ var __webpack_modules__ = {
|
|
|
2125
2213
|
opacity: .3;
|
|
2126
2214
|
}
|
|
2127
2215
|
|
|
2216
|
+
[data-rfkit-charts-root] .opacity-35 {
|
|
2217
|
+
opacity: .35;
|
|
2218
|
+
}
|
|
2219
|
+
|
|
2128
2220
|
[data-rfkit-charts-root] .opacity-40 {
|
|
2129
2221
|
opacity: .4;
|
|
2130
2222
|
}
|
|
@@ -2180,6 +2272,20 @@ var __webpack_modules__ = {
|
|
|
2180
2272
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2181
2273
|
}
|
|
2182
2274
|
|
|
2275
|
+
[data-rfkit-charts-root] .shadow-\\[inset_0_0_0_1px_color-mix\\(in_srgb\\,var\\(--primary\\)_28\\%\\,transparent\\)\\] {
|
|
2276
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, var(--primary));
|
|
2277
|
+
}
|
|
2278
|
+
|
|
2279
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2280
|
+
[data-rfkit-charts-root] .shadow-\\[inset_0_0_0_1px_color-mix\\(in_srgb\\,var\\(--primary\\)_28\\%\\,transparent\\)\\] {
|
|
2281
|
+
--tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, color-mix(in srgb, var(--primary) 28%, transparent));
|
|
2282
|
+
}
|
|
2283
|
+
}
|
|
2284
|
+
|
|
2285
|
+
[data-rfkit-charts-root] .shadow-\\[inset_0_0_0_1px_color-mix\\(in_srgb\\,var\\(--primary\\)_28\\%\\,transparent\\)\\] {
|
|
2286
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2287
|
+
}
|
|
2288
|
+
|
|
2183
2289
|
[data-rfkit-charts-root] .shadow-lg {
|
|
2184
2290
|
--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a), 0 4px 6px -4px var(--tw-shadow-color, #0000001a);
|
|
2185
2291
|
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 +2321,11 @@ var __webpack_modules__ = {
|
|
|
2215
2321
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2216
2322
|
}
|
|
2217
2323
|
|
|
2324
|
+
[data-rfkit-charts-root] .ring-1 {
|
|
2325
|
+
--tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
2326
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2327
|
+
}
|
|
2328
|
+
|
|
2218
2329
|
[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
2330
|
box-shadow: 0 0 0 1px var(--background), 0 1px 4px var(--foreground);
|
|
2220
2331
|
}
|
|
@@ -2235,6 +2346,20 @@ var __webpack_modules__ = {
|
|
|
2235
2346
|
}
|
|
2236
2347
|
}
|
|
2237
2348
|
|
|
2349
|
+
[data-rfkit-charts-root] .ring-background\\/30 {
|
|
2350
|
+
--tw-ring-color: var(--background);
|
|
2351
|
+
}
|
|
2352
|
+
|
|
2353
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2354
|
+
[data-rfkit-charts-root] .ring-background\\/30 {
|
|
2355
|
+
--tw-ring-color: color-mix(in oklab, var(--background) 30%, transparent);
|
|
2356
|
+
}
|
|
2357
|
+
}
|
|
2358
|
+
|
|
2359
|
+
[data-rfkit-charts-root] .ring-border {
|
|
2360
|
+
--tw-ring-color: var(--border);
|
|
2361
|
+
}
|
|
2362
|
+
|
|
2238
2363
|
[data-rfkit-charts-root] .ring-offset-background {
|
|
2239
2364
|
--tw-ring-offset-color: var(--background);
|
|
2240
2365
|
}
|
|
@@ -2404,6 +2529,10 @@ var __webpack_modules__ = {
|
|
|
2404
2529
|
animation-play-state: paused;
|
|
2405
2530
|
}
|
|
2406
2531
|
|
|
2532
|
+
[data-rfkit-charts-root] .ring-inset {
|
|
2533
|
+
--tw-ring-inset: inset;
|
|
2534
|
+
}
|
|
2535
|
+
|
|
2407
2536
|
[data-rfkit-charts-root] .group-focus-within\\:opacity-90:is(:where(.group):focus-within *) {
|
|
2408
2537
|
opacity: .9;
|
|
2409
2538
|
}
|
|
@@ -2539,6 +2668,16 @@ var __webpack_modules__ = {
|
|
|
2539
2668
|
}
|
|
2540
2669
|
}
|
|
2541
2670
|
|
|
2671
|
+
[data-rfkit-charts-root] .hover\\:bg-accent\\/80:hover {
|
|
2672
|
+
background-color: var(--accent);
|
|
2673
|
+
}
|
|
2674
|
+
|
|
2675
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2676
|
+
[data-rfkit-charts-root] .hover\\:bg-accent\\/80:hover {
|
|
2677
|
+
background-color: color-mix(in oklab, var(--accent) 80%, transparent);
|
|
2678
|
+
}
|
|
2679
|
+
}
|
|
2680
|
+
|
|
2542
2681
|
[data-rfkit-charts-root] .hover\\:bg-background\\/70:hover {
|
|
2543
2682
|
background-color: var(--background);
|
|
2544
2683
|
}
|
|
@@ -2924,16 +3063,12 @@ var __webpack_modules__ = {
|
|
|
2924
3063
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
2925
3064
|
}
|
|
2926
3065
|
|
|
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;
|
|
3066
|
+
[data-rfkit-charts-root] .data-\\[state\\=checked\\]\\:border-primary[data-state="checked"] {
|
|
3067
|
+
border-color: var(--primary);
|
|
2933
3068
|
}
|
|
2934
3069
|
|
|
2935
|
-
[data-rfkit-charts-root] .data-\\[state\\=checked\\]\\:text-
|
|
2936
|
-
color: var(--
|
|
3070
|
+
[data-rfkit-charts-root] .data-\\[state\\=checked\\]\\:text-primary-foreground[data-state="checked"] {
|
|
3071
|
+
color: var(--primary-foreground, #fff);
|
|
2937
3072
|
}
|
|
2938
3073
|
|
|
2939
3074
|
[data-rfkit-charts-root] .data-\\[state\\=closed\\]\\:animate-out[data-state="closed"] {
|
|
@@ -2948,6 +3083,18 @@ var __webpack_modules__ = {
|
|
|
2948
3083
|
--tw-exit-scale: .95;
|
|
2949
3084
|
}
|
|
2950
3085
|
|
|
3086
|
+
[data-rfkit-charts-root] .data-\\[state\\=indeterminate\\]\\:border-primary[data-state="indeterminate"] {
|
|
3087
|
+
border-color: var(--primary);
|
|
3088
|
+
}
|
|
3089
|
+
|
|
3090
|
+
[data-rfkit-charts-root] .data-\\[state\\=indeterminate\\]\\:bg-primary[data-state="indeterminate"] {
|
|
3091
|
+
background-color: var(--primary);
|
|
3092
|
+
}
|
|
3093
|
+
|
|
3094
|
+
[data-rfkit-charts-root] .data-\\[state\\=indeterminate\\]\\:text-primary-foreground[data-state="indeterminate"] {
|
|
3095
|
+
color: var(--primary-foreground, #fff);
|
|
3096
|
+
}
|
|
3097
|
+
|
|
2951
3098
|
[data-rfkit-charts-root] .data-\\[state\\=open\\]\\:animate-in[data-state="open"] {
|
|
2952
3099
|
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
3100
|
}
|
|
@@ -3126,6 +3273,14 @@ var __webpack_modules__ = {
|
|
|
3126
3273
|
justify-content: center;
|
|
3127
3274
|
}
|
|
3128
3275
|
|
|
3276
|
+
[data-rfkit-charts-root] .\\[\\&\\>span\\:last-child\\]\\:ml-0 > span:last-child {
|
|
3277
|
+
margin-left: 0;
|
|
3278
|
+
}
|
|
3279
|
+
|
|
3280
|
+
[data-rfkit-charts-root] .\\[\\&\\>span\\:last-child\\]\\:text-primary > span:last-child {
|
|
3281
|
+
color: var(--primary);
|
|
3282
|
+
}
|
|
3283
|
+
|
|
3129
3284
|
[data-rfkit-charts-root] .\\[\\&\\>svg\\]\\:h-full > svg {
|
|
3130
3285
|
height: 100%;
|
|
3131
3286
|
}
|
|
@@ -3471,6 +3626,12 @@ var __webpack_modules__ = {
|
|
|
3471
3626
|
initial-value: 0;
|
|
3472
3627
|
}
|
|
3473
3628
|
|
|
3629
|
+
@property --tw-divide-y-reverse {
|
|
3630
|
+
syntax: "*";
|
|
3631
|
+
inherits: false;
|
|
3632
|
+
initial-value: 0;
|
|
3633
|
+
}
|
|
3634
|
+
|
|
3474
3635
|
@property --tw-border-style {
|
|
3475
3636
|
syntax: "*";
|
|
3476
3637
|
inherits: false;
|
|
@@ -3487,6 +3648,31 @@ var __webpack_modules__ = {
|
|
|
3487
3648
|
inherits: false
|
|
3488
3649
|
}
|
|
3489
3650
|
|
|
3651
|
+
@property --tw-ordinal {
|
|
3652
|
+
syntax: "*";
|
|
3653
|
+
inherits: false
|
|
3654
|
+
}
|
|
3655
|
+
|
|
3656
|
+
@property --tw-slashed-zero {
|
|
3657
|
+
syntax: "*";
|
|
3658
|
+
inherits: false
|
|
3659
|
+
}
|
|
3660
|
+
|
|
3661
|
+
@property --tw-numeric-figure {
|
|
3662
|
+
syntax: "*";
|
|
3663
|
+
inherits: false
|
|
3664
|
+
}
|
|
3665
|
+
|
|
3666
|
+
@property --tw-numeric-spacing {
|
|
3667
|
+
syntax: "*";
|
|
3668
|
+
inherits: false
|
|
3669
|
+
}
|
|
3670
|
+
|
|
3671
|
+
@property --tw-numeric-fraction {
|
|
3672
|
+
syntax: "*";
|
|
3673
|
+
inherits: false
|
|
3674
|
+
}
|
|
3675
|
+
|
|
3490
3676
|
@property --tw-shadow {
|
|
3491
3677
|
syntax: "*";
|
|
3492
3678
|
inherits: false;
|
|
@@ -5789,6 +5975,7 @@ function createParams() {
|
|
|
5789
5975
|
show: true,
|
|
5790
5976
|
display: false,
|
|
5791
5977
|
data: [],
|
|
5978
|
+
hiddenCategoryKeys: [],
|
|
5792
5979
|
onChange: ()=>{}
|
|
5793
5980
|
},
|
|
5794
5981
|
signalAnalysis: {
|
|
@@ -17401,14 +17588,15 @@ const ScrollBar = /*#__PURE__*/ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(({
|
|
|
17401
17588
|
})
|
|
17402
17589
|
}));
|
|
17403
17590
|
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, {
|
|
17591
|
+
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
17592
|
ref: ref,
|
|
17406
17593
|
"data-slot": "scroll-area",
|
|
17407
17594
|
className: cn_cn('relative overflow-hidden', className),
|
|
17408
17595
|
...props,
|
|
17409
17596
|
children: [
|
|
17410
17597
|
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Viewport, {
|
|
17411
|
-
|
|
17598
|
+
"data-slot": "scroll-area-viewport",
|
|
17599
|
+
className: cn_cn('h-full w-full rounded-[inherit]', viewportClassName),
|
|
17412
17600
|
children: children
|
|
17413
17601
|
}),
|
|
17414
17602
|
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ScrollBar, {}),
|
|
@@ -18114,7 +18302,7 @@ const Tooltip_Tooltip = ({ children, content, delay = 200, duration = 3000, offs
|
|
|
18114
18302
|
});
|
|
18115
18303
|
};
|
|
18116
18304
|
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 })=>{
|
|
18305
|
+
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
18306
|
const [open, setOpen] = (0, __WEBPACK_EXTERNAL_MODULE_react__.useState)(false);
|
|
18119
18307
|
const handleSelect = (0, __WEBPACK_EXTERNAL_MODULE_react__.useCallback)((option)=>{
|
|
18120
18308
|
const nextValue = option.value ?? null;
|
|
@@ -18144,6 +18332,7 @@ const Dropdown_Dropdown = ({ value: value1, options, onChange, placeholder = "\u
|
|
|
18144
18332
|
asChild: true,
|
|
18145
18333
|
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("button", {
|
|
18146
18334
|
type: "button",
|
|
18335
|
+
"data-testid": triggerTestId,
|
|
18147
18336
|
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
18337
|
children: [
|
|
18149
18338
|
resolvedTriggerContent,
|
|
@@ -18166,10 +18355,11 @@ const Dropdown_Dropdown = ({ value: value1, options, onChange, placeholder = "\u
|
|
|
18166
18355
|
}) : triggerNode,
|
|
18167
18356
|
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(dropdown_menu_DropdownMenuContent, {
|
|
18168
18357
|
align: "start",
|
|
18358
|
+
alignOffset: contentAlignOffset,
|
|
18169
18359
|
collisionPadding: 8,
|
|
18170
18360
|
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
|
-
|
|
18361
|
+
children: customContent ?? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(scroll_area_ScrollArea, {
|
|
18362
|
+
viewportClassName: "h-auto max-h-64",
|
|
18173
18363
|
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
18174
18364
|
children: options.map((option, index)=>'separator' === option.type ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(dropdown_menu_DropdownMenuSeparator, {
|
|
18175
18365
|
style: option.style
|
|
@@ -18697,6 +18887,7 @@ const ToolbarGroupSeparator = ({ className })=>/*#__PURE__*/ (0, __WEBPACK_EXTER
|
|
|
18697
18887
|
className: cn_cn(TOOLBAR_GROUP_SEPARATOR_CLASS_NAME, className),
|
|
18698
18888
|
orientation: "vertical"
|
|
18699
18889
|
});
|
|
18890
|
+
const TOOLBAR_DROPDOWN_GROUP_ALIGN_OFFSET = -27;
|
|
18700
18891
|
const ToolbarDropdown = (props)=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Dropdown, {
|
|
18701
18892
|
...props,
|
|
18702
18893
|
triggerVariant: "default",
|
|
@@ -18718,13 +18909,14 @@ const ToolbarIconDropdown = ({ icon, title, triggerClassName, ...props })=>{
|
|
|
18718
18909
|
triggerContent: iconNode
|
|
18719
18910
|
});
|
|
18720
18911
|
};
|
|
18721
|
-
const ToolbarDropdownGroup = ({ leading, triggerClassName, ...props })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(ToolbarGroup, {
|
|
18912
|
+
const ToolbarDropdownGroup = ({ leading, triggerClassName, contentAlignOffset = TOOLBAR_DROPDOWN_GROUP_ALIGN_OFFSET, ...props })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(ToolbarGroup, {
|
|
18722
18913
|
children: [
|
|
18723
18914
|
leading,
|
|
18724
18915
|
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Dropdown, {
|
|
18725
18916
|
...props,
|
|
18726
18917
|
triggerVariant: "plain",
|
|
18727
18918
|
contentClassName: cn_cn(TOOLBAR_DROPDOWN_CONTENT_CLASS_NAME, props.contentClassName),
|
|
18919
|
+
contentAlignOffset: contentAlignOffset,
|
|
18728
18920
|
triggerClassName: cn_cn(TOOLBAR_INLINE_INSET_CLASS_NAME, triggerClassName)
|
|
18729
18921
|
})
|
|
18730
18922
|
]
|
|
@@ -22846,28 +23038,196 @@ const OccupancyCursorPopover = ({ id })=>{
|
|
|
22846
23038
|
});
|
|
22847
23039
|
};
|
|
22848
23040
|
const Occupancy_CursorPopover = OccupancyCursorPopover;
|
|
23041
|
+
const SignalType = {
|
|
23042
|
+
LEGITIMATE: 'Legitimate',
|
|
23043
|
+
UNKNOWN: 'UnKnown',
|
|
23044
|
+
KNOWN: 'Know',
|
|
23045
|
+
VIOLATION: 'Violation',
|
|
23046
|
+
ILLEGAL: 'Illegal'
|
|
23047
|
+
};
|
|
22849
23048
|
const SIGNAL_TYPE_MAP = {
|
|
22850
23049
|
Legitimate: {
|
|
22851
23050
|
name: "\u5408\u6CD5",
|
|
22852
|
-
color: '
|
|
23051
|
+
color: 'var(--success)',
|
|
22853
23052
|
isLegitimate: true
|
|
22854
23053
|
},
|
|
23054
|
+
UnKnown: {
|
|
23055
|
+
name: "\u672A\u77E5",
|
|
23056
|
+
color: 'var(--muted-foreground)',
|
|
23057
|
+
isLegitimate: false
|
|
23058
|
+
},
|
|
22855
23059
|
Know: {
|
|
22856
23060
|
name: "\u5DF2\u77E5",
|
|
22857
|
-
color: '
|
|
23061
|
+
color: 'var(--primary)',
|
|
22858
23062
|
isLegitimate: true
|
|
22859
23063
|
},
|
|
22860
|
-
|
|
22861
|
-
name: "\
|
|
22862
|
-
color: '
|
|
23064
|
+
Violation: {
|
|
23065
|
+
name: "\u8FDD\u89C4",
|
|
23066
|
+
color: 'var(--warning)',
|
|
22863
23067
|
isLegitimate: false
|
|
22864
23068
|
},
|
|
22865
23069
|
Illegal: {
|
|
22866
|
-
name: "\
|
|
22867
|
-
color: '
|
|
23070
|
+
name: "\u975E\u6CD5",
|
|
23071
|
+
color: 'var(--destructive)',
|
|
22868
23072
|
isLegitimate: false
|
|
22869
23073
|
}
|
|
22870
23074
|
};
|
|
23075
|
+
const SIGNAL_TYPE_ORDER = [
|
|
23076
|
+
SignalType.LEGITIMATE,
|
|
23077
|
+
SignalType.UNKNOWN,
|
|
23078
|
+
SignalType.KNOWN,
|
|
23079
|
+
SignalType.VIOLATION,
|
|
23080
|
+
SignalType.ILLEGAL
|
|
23081
|
+
];
|
|
23082
|
+
const normalizeSignalType = (value1)=>{
|
|
23083
|
+
if ('string' == typeof value1 && SIGNAL_TYPE_ORDER.includes(value1)) return value1;
|
|
23084
|
+
return SignalType.UNKNOWN;
|
|
23085
|
+
};
|
|
23086
|
+
const SIGNAL_LEVEL_UNASSIGNED = -1;
|
|
23087
|
+
const SIGNAL_LEVEL_FIRST = 0;
|
|
23088
|
+
const SIGNAL_LEVEL_SECOND = 1;
|
|
23089
|
+
const SIGNAL_LEVEL_THIRD = 2;
|
|
23090
|
+
const SIGNAL_LEVEL_ORDER = [
|
|
23091
|
+
SIGNAL_LEVEL_UNASSIGNED,
|
|
23092
|
+
SIGNAL_LEVEL_FIRST,
|
|
23093
|
+
SIGNAL_LEVEL_SECOND,
|
|
23094
|
+
SIGNAL_LEVEL_THIRD
|
|
23095
|
+
];
|
|
23096
|
+
const SIGNAL_LEVEL_MAP = {
|
|
23097
|
+
[SIGNAL_LEVEL_UNASSIGNED]: {
|
|
23098
|
+
name: "\u672A\u5206\u914D",
|
|
23099
|
+
color: 'color-mix(in oklab, var(--success) 35%, var(--background))'
|
|
23100
|
+
},
|
|
23101
|
+
[SIGNAL_LEVEL_FIRST]: {
|
|
23102
|
+
name: "\u4E00\u7EA7",
|
|
23103
|
+
color: 'color-mix(in oklab, var(--success) 55%, var(--background))'
|
|
23104
|
+
},
|
|
23105
|
+
[SIGNAL_LEVEL_SECOND]: {
|
|
23106
|
+
name: "\u4E8C\u7EA7",
|
|
23107
|
+
color: 'color-mix(in oklab, var(--success) 75%, var(--background))'
|
|
23108
|
+
},
|
|
23109
|
+
[SIGNAL_LEVEL_THIRD]: {
|
|
23110
|
+
name: "\u4E09\u7EA7",
|
|
23111
|
+
color: 'var(--success)'
|
|
23112
|
+
}
|
|
23113
|
+
};
|
|
23114
|
+
const normalizeSignalLevel = (value1)=>{
|
|
23115
|
+
if ('number' != typeof value1 || !Number.isInteger(value1)) return SIGNAL_LEVEL_UNASSIGNED;
|
|
23116
|
+
if (value1 === SIGNAL_LEVEL_UNASSIGNED || value1 === SIGNAL_LEVEL_FIRST || value1 === SIGNAL_LEVEL_SECOND || value1 === SIGNAL_LEVEL_THIRD) return value1;
|
|
23117
|
+
return SIGNAL_LEVEL_UNASSIGNED;
|
|
23118
|
+
};
|
|
23119
|
+
const resolveSignalColor = (item)=>{
|
|
23120
|
+
if (item.color) return item.color;
|
|
23121
|
+
const signalType = normalizeSignalType(item.signalType);
|
|
23122
|
+
if ('simple' === item.source && signalType === SignalType.LEGITIMATE) return SIGNAL_LEVEL_MAP[normalizeSignalLevel(item.level)].color;
|
|
23123
|
+
return SIGNAL_TYPE_MAP[signalType].color;
|
|
23124
|
+
};
|
|
23125
|
+
const SIGNAL_SOURCE_ORDER = [
|
|
23126
|
+
'station',
|
|
23127
|
+
'simple'
|
|
23128
|
+
];
|
|
23129
|
+
const SIGNAL_SOURCE_LABEL = {
|
|
23130
|
+
station: "\u53F0\u7AD9\u5E93",
|
|
23131
|
+
simple: "\u4FE1\u53F7\u5E93"
|
|
23132
|
+
};
|
|
23133
|
+
function tree_isStationInfo(item) {
|
|
23134
|
+
return 'signalName' in item && 'orgName' in item;
|
|
23135
|
+
}
|
|
23136
|
+
const resolveSignalSource = (item)=>tree_isStationInfo(item) ? 'station' : 'simple';
|
|
23137
|
+
const getSignalLeafKey = (item)=>`${resolveSignalSource(item)}:${normalizeSignalType(item.signalType)}:${normalizeSignalLevel(item.level)}`;
|
|
23138
|
+
function getUnifiedSignalKey(item) {
|
|
23139
|
+
const source = resolveSignalSource(item);
|
|
23140
|
+
if (item.id) return `${source}:${item.id}`;
|
|
23141
|
+
if (tree_isStationInfo(item)) return `${source}:${item.signalName}-${item.frequency}`;
|
|
23142
|
+
if (null != item.startFrequency && null != item.stopFrequency) return `${source}:${item.startFrequency}-${item.stopFrequency}`;
|
|
23143
|
+
return `${source}:${item.frequency}-${item.bandwidth}`;
|
|
23144
|
+
}
|
|
23145
|
+
const buildSignalTree = (signalItems)=>{
|
|
23146
|
+
const leafKeysWithData = new Set(signalItems.map(getSignalLeafKey));
|
|
23147
|
+
const sources = [];
|
|
23148
|
+
for (const source of SIGNAL_SOURCE_ORDER){
|
|
23149
|
+
const sourceDataLeafKeys = [
|
|
23150
|
+
...leafKeysWithData
|
|
23151
|
+
].filter((key)=>key.startsWith(`${source}:`));
|
|
23152
|
+
if (0 === sourceDataLeafKeys.length) continue;
|
|
23153
|
+
if ('station' === source) {
|
|
23154
|
+
sources.push({
|
|
23155
|
+
source,
|
|
23156
|
+
label: SIGNAL_SOURCE_LABEL[source],
|
|
23157
|
+
leafKeys: sourceDataLeafKeys,
|
|
23158
|
+
dataLeafKeys: sourceDataLeafKeys,
|
|
23159
|
+
hasData: true,
|
|
23160
|
+
types: []
|
|
23161
|
+
});
|
|
23162
|
+
continue;
|
|
23163
|
+
}
|
|
23164
|
+
const types = SIGNAL_TYPE_ORDER.flatMap((signalType)=>{
|
|
23165
|
+
const levels = SIGNAL_LEVEL_ORDER.map((level)=>{
|
|
23166
|
+
const leafKey = `${source}:${signalType}:${level}`;
|
|
23167
|
+
return {
|
|
23168
|
+
level,
|
|
23169
|
+
label: SIGNAL_LEVEL_MAP[level].name,
|
|
23170
|
+
leafKey,
|
|
23171
|
+
hasData: leafKeysWithData.has(leafKey)
|
|
23172
|
+
};
|
|
23173
|
+
});
|
|
23174
|
+
const leafKeys = levels.map((level)=>level.leafKey);
|
|
23175
|
+
const dataLeafKeys = leafKeys.filter((key)=>leafKeysWithData.has(key));
|
|
23176
|
+
if (0 === dataLeafKeys.length) return [];
|
|
23177
|
+
return {
|
|
23178
|
+
signalType,
|
|
23179
|
+
label: SIGNAL_TYPE_MAP[signalType].name,
|
|
23180
|
+
leafKeys,
|
|
23181
|
+
dataLeafKeys,
|
|
23182
|
+
hasData: dataLeafKeys.length > 0,
|
|
23183
|
+
levels: signalType === SignalType.LEGITIMATE ? levels.filter((level)=>level.hasData) : []
|
|
23184
|
+
};
|
|
23185
|
+
});
|
|
23186
|
+
if (0 === types.length) continue;
|
|
23187
|
+
const leafKeys = types.flatMap((type)=>type.leafKeys);
|
|
23188
|
+
const dataLeafKeys = leafKeys.filter((key)=>leafKeysWithData.has(key));
|
|
23189
|
+
sources.push({
|
|
23190
|
+
source,
|
|
23191
|
+
label: SIGNAL_SOURCE_LABEL[source],
|
|
23192
|
+
leafKeys,
|
|
23193
|
+
dataLeafKeys,
|
|
23194
|
+
hasData: true,
|
|
23195
|
+
types
|
|
23196
|
+
});
|
|
23197
|
+
}
|
|
23198
|
+
return {
|
|
23199
|
+
sources
|
|
23200
|
+
};
|
|
23201
|
+
};
|
|
23202
|
+
const resolveNodeCheckState = (leafKeysWithData, hiddenCategoryKeys, fixedLeafKeys)=>{
|
|
23203
|
+
const dataLeafKeys = fixedLeafKeys.filter((key)=>leafKeysWithData.has(key));
|
|
23204
|
+
if (0 === dataLeafKeys.length) return 'disabled';
|
|
23205
|
+
const hiddenCount = dataLeafKeys.filter((key)=>hiddenCategoryKeys.has(key)).length;
|
|
23206
|
+
if (0 === hiddenCount) return 'checked';
|
|
23207
|
+
if (hiddenCount === dataLeafKeys.length) return 'unchecked';
|
|
23208
|
+
return 'indeterminate';
|
|
23209
|
+
};
|
|
23210
|
+
const toggleNodeHiddenKeys = (hiddenCategoryKeys, fixedLeafKeys, leafKeysWithData)=>{
|
|
23211
|
+
const next = new Set(hiddenCategoryKeys);
|
|
23212
|
+
const dataLeafKeys = fixedLeafKeys.filter((key)=>leafKeysWithData.has(key));
|
|
23213
|
+
const hiddenDataCount = dataLeafKeys.filter((key)=>next.has(key)).length;
|
|
23214
|
+
const allDataVisible = dataLeafKeys.length > 0 && 0 === hiddenDataCount;
|
|
23215
|
+
if (allDataVisible) {
|
|
23216
|
+
for (const key of fixedLeafKeys)next.add(key);
|
|
23217
|
+
return [
|
|
23218
|
+
...next
|
|
23219
|
+
];
|
|
23220
|
+
}
|
|
23221
|
+
for (const key of fixedLeafKeys)next.delete(key);
|
|
23222
|
+
return [
|
|
23223
|
+
...next
|
|
23224
|
+
];
|
|
23225
|
+
};
|
|
23226
|
+
const filterSignalItemsByHiddenKeys = (signalItems, hiddenCategoryKeys)=>{
|
|
23227
|
+
if (!hiddenCategoryKeys.length) return signalItems;
|
|
23228
|
+
const hiddenKeys = new Set(hiddenCategoryKeys);
|
|
23229
|
+
return signalItems.filter((item)=>!hiddenKeys.has(getSignalLeafKey(item)));
|
|
23230
|
+
};
|
|
22871
23231
|
const SIGNAL_INDEX_MATCH_TOLERANCE = 1;
|
|
22872
23232
|
const getRangeCenter = (range)=>(range.startFreq + range.stopFreq) / 2;
|
|
22873
23233
|
const getRangeWidth = (range)=>Math.abs(range.stopFreq - range.startFreq);
|
|
@@ -22885,7 +23245,7 @@ const compareFrequencyMatchedCandidates = (currentFrequency, a, b)=>{
|
|
|
22885
23245
|
if (0 !== widthDiff) return widthDiff;
|
|
22886
23246
|
const centerDistanceDiff = Math.abs(getRangeCenter(a.range) - currentFrequency) - Math.abs(getRangeCenter(b.range) - currentFrequency);
|
|
22887
23247
|
if (0 !== centerDistanceDiff) return centerDistanceDiff;
|
|
22888
|
-
const stationPriorityDiff = Number(
|
|
23248
|
+
const stationPriorityDiff = Number(tree_isStationInfo(b.item)) - Number(tree_isStationInfo(a.item));
|
|
22889
23249
|
if (0 !== stationPriorityDiff) return stationPriorityDiff;
|
|
22890
23250
|
return getUnifiedSignalKey(a.item).localeCompare(getUnifiedSignalKey(b.item));
|
|
22891
23251
|
};
|
|
@@ -22896,18 +23256,10 @@ const compareIndexMatchedCandidates = (currentFrequency, currentPointIndex, a, b
|
|
|
22896
23256
|
if (0 !== widthDiff) return widthDiff;
|
|
22897
23257
|
const frequencyDistanceDiff = getFrequencyDistanceToRange(currentFrequency, a.range) - getFrequencyDistanceToRange(currentFrequency, b.range);
|
|
22898
23258
|
if (0 !== frequencyDistanceDiff) return frequencyDistanceDiff;
|
|
22899
|
-
const stationPriorityDiff = Number(
|
|
23259
|
+
const stationPriorityDiff = Number(tree_isStationInfo(b.item)) - Number(tree_isStationInfo(a.item));
|
|
22900
23260
|
if (0 !== stationPriorityDiff) return stationPriorityDiff;
|
|
22901
23261
|
return getUnifiedSignalKey(a.item).localeCompare(getUnifiedSignalKey(b.item));
|
|
22902
23262
|
};
|
|
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
23263
|
function toFrequencyRangeInput(item) {
|
|
22912
23264
|
return {
|
|
22913
23265
|
frequency: null != item.frequency ? Number(item.frequency) : void 0,
|
|
@@ -22916,7 +23268,7 @@ function toFrequencyRangeInput(item) {
|
|
|
22916
23268
|
stopFrequency: null != item.stopFrequency ? Number(item.stopFrequency) : void 0
|
|
22917
23269
|
};
|
|
22918
23270
|
}
|
|
22919
|
-
function
|
|
23271
|
+
function match_resolveBestSignalMatch(candidates, options) {
|
|
22920
23272
|
const { currentFrequency, currentPointIndex } = options;
|
|
22921
23273
|
const indexTolerance = options.indexTolerance ?? SIGNAL_INDEX_MATCH_TOLERANCE;
|
|
22922
23274
|
if (!Number.isFinite(currentFrequency) || !Number.isFinite(currentPointIndex) || !candidates.length) return;
|
|
@@ -22928,24 +23280,39 @@ function utils_resolveBestSignalMatch(candidates, options) {
|
|
|
22928
23280
|
}, indexTolerance)).sort((a, b)=>compareIndexMatchedCandidates(currentFrequency, currentPointIndex, a, b));
|
|
22929
23281
|
return indexMatched[0];
|
|
22930
23282
|
}
|
|
23283
|
+
const resolveFrequencyPresentation = (item)=>{
|
|
23284
|
+
if (null != item.frequency) return `${item.frequency}MHz`;
|
|
23285
|
+
if (null != item.startFrequency && null != item.stopFrequency) return `${item.startFrequency}-${item.stopFrequency}MHz`;
|
|
23286
|
+
};
|
|
22931
23287
|
const resolveSignalPresentation = (item)=>{
|
|
22932
|
-
|
|
22933
|
-
|
|
22934
|
-
|
|
22935
|
-
|
|
22936
|
-
|
|
22937
|
-
|
|
22938
|
-
|
|
22939
|
-
|
|
22940
|
-
|
|
22941
|
-
|
|
22942
|
-
|
|
22943
|
-
|
|
22944
|
-
|
|
22945
|
-
|
|
23288
|
+
const source = resolveSignalSource(item);
|
|
23289
|
+
const signalType = normalizeSignalType(item.signalType);
|
|
23290
|
+
const signalTypeName = SIGNAL_TYPE_MAP[signalType].name;
|
|
23291
|
+
const levelName = SIGNAL_LEVEL_MAP[normalizeSignalLevel(item.level)].name;
|
|
23292
|
+
const color = resolveSignalColor({
|
|
23293
|
+
...item,
|
|
23294
|
+
source
|
|
23295
|
+
});
|
|
23296
|
+
const frequencyText = resolveFrequencyPresentation(item);
|
|
23297
|
+
const bandwidthText = null != item.bandwidth ? `\u{5E26}\u{5BBD}: ${item.bandwidth}kHz` : void 0;
|
|
23298
|
+
if (tree_isStationInfo(item)) return {
|
|
23299
|
+
color,
|
|
23300
|
+
tooltip: [
|
|
23301
|
+
item.signalName,
|
|
23302
|
+
frequencyText,
|
|
23303
|
+
item.orgName && `\u{5355}\u{4F4D}: ${item.orgName}`,
|
|
23304
|
+
signalTypeName && `\u{7C7B}\u{578B}: ${signalTypeName}`
|
|
23305
|
+
].filter(Boolean).join(' | ')
|
|
23306
|
+
};
|
|
22946
23307
|
return {
|
|
22947
|
-
color
|
|
22948
|
-
tooltip:
|
|
23308
|
+
color,
|
|
23309
|
+
tooltip: [
|
|
23310
|
+
SIGNAL_SOURCE_LABEL[source],
|
|
23311
|
+
frequencyText,
|
|
23312
|
+
bandwidthText,
|
|
23313
|
+
signalTypeName && `\u{7C7B}\u{578B}: ${signalTypeName}`,
|
|
23314
|
+
signalType === SignalType.LEGITIMATE && levelName && `\u{7B49}\u{7EA7}: ${levelName}`
|
|
23315
|
+
].filter(Boolean).join(' | ')
|
|
22949
23316
|
};
|
|
22950
23317
|
};
|
|
22951
23318
|
const resolveSignalMatchCandidates = (signalItems, segment)=>signalItems.flatMap((item)=>{
|
|
@@ -23001,26 +23368,23 @@ const resolveActiveSignalKey = ({ segmentData, isCursorActive, currentFrequency,
|
|
|
23001
23368
|
if (!isCursorActive || !Number.isFinite(currentFrequency) || currentPosition.segmentIndex < 0) return;
|
|
23002
23369
|
const currentSegmentData = segmentData[currentPosition.segmentIndex];
|
|
23003
23370
|
if (!currentSegmentData) return;
|
|
23004
|
-
return
|
|
23371
|
+
return match_resolveBestSignalMatch(currentSegmentData.signalPositions, {
|
|
23005
23372
|
currentFrequency,
|
|
23006
23373
|
currentPointIndex: currentPosition.pointIndex
|
|
23007
23374
|
})?.key;
|
|
23008
23375
|
};
|
|
23009
|
-
const
|
|
23376
|
+
const createSignalRangeIndex = ({ signalItems, segments })=>{
|
|
23010
23377
|
if (!signalItems.length || !segments.length) return [];
|
|
23011
|
-
|
|
23012
|
-
if (!stationItems.length) return [];
|
|
23013
|
-
return segments.map((segment)=>resolveSignalMatchCandidates(stationItems, segment));
|
|
23378
|
+
return segments.map((segment)=>resolveSignalMatchCandidates(signalItems, segment));
|
|
23014
23379
|
};
|
|
23015
|
-
const
|
|
23380
|
+
const findSignalInRangeIndex = ({ frequency, signalRangeIndex, currentPosition })=>{
|
|
23016
23381
|
if (!Number.isFinite(frequency)) return;
|
|
23017
|
-
const candidates =
|
|
23382
|
+
const candidates = signalRangeIndex[currentPosition.segmentIndex];
|
|
23018
23383
|
if (!candidates?.length) return;
|
|
23019
|
-
|
|
23384
|
+
return match_resolveBestSignalMatch(candidates, {
|
|
23020
23385
|
currentFrequency: frequency,
|
|
23021
23386
|
currentPointIndex: currentPosition.pointIndex
|
|
23022
|
-
});
|
|
23023
|
-
return matchedSignal && utils_isStationInfo(matchedSignal.item) ? matchedSignal.item : void 0;
|
|
23387
|
+
})?.item;
|
|
23024
23388
|
};
|
|
23025
23389
|
const withStationDataUpdate = (globalID, name, func)=>{
|
|
23026
23390
|
const subscriptionId = `stationData-update-${globalID}`;
|
|
@@ -23035,11 +23399,12 @@ const STATION_DATA = (globalID, data)=>{
|
|
|
23035
23399
|
}
|
|
23036
23400
|
return result;
|
|
23037
23401
|
};
|
|
23038
|
-
function useUnifiedSignals({ respectVisibility = false } = {}) {
|
|
23402
|
+
function useUnifiedSignals({ respectVisibility = false, filterHidden = true } = {}) {
|
|
23039
23403
|
const globalID = useStore_useSelector((state)=>state.globalID);
|
|
23040
23404
|
const signalData = useStore_useSelector((state)=>state.signal.data);
|
|
23041
23405
|
const signalDisplay = useStore_useSelector((state)=>state.signal.display);
|
|
23042
23406
|
const signalShow = useStore_useSelector((state)=>state.signal.show);
|
|
23407
|
+
const hiddenCategoryKeys = useStore_useSelector((state)=>state.signal.hiddenCategoryKeys);
|
|
23043
23408
|
const [updateTrigger, setUpdateTrigger] = (0, __WEBPACK_EXTERNAL_MODULE_react__.useState)(0);
|
|
23044
23409
|
(0, __WEBPACK_EXTERNAL_MODULE_react__.useEffect)(()=>{
|
|
23045
23410
|
const subscriberName = `useUnifiedSignals-${globalID}-${Date.now()}`;
|
|
@@ -23058,32 +23423,44 @@ function useUnifiedSignals({ respectVisibility = false } = {}) {
|
|
|
23058
23423
|
if (respectVisibility && (!signalShow || !signalDisplay)) return [];
|
|
23059
23424
|
const stationData = STATION_DATA(globalID);
|
|
23060
23425
|
const nextSignalData = signalData || [];
|
|
23061
|
-
|
|
23426
|
+
const combined = [
|
|
23062
23427
|
...stationData,
|
|
23063
23428
|
...nextSignalData
|
|
23064
23429
|
];
|
|
23430
|
+
if (!filterHidden || !hiddenCategoryKeys?.length) return combined;
|
|
23431
|
+
return filterSignalItemsByHiddenKeys(combined, hiddenCategoryKeys);
|
|
23065
23432
|
}, [
|
|
23066
23433
|
globalID,
|
|
23067
23434
|
signalData,
|
|
23068
23435
|
signalDisplay,
|
|
23069
23436
|
signalShow,
|
|
23070
23437
|
respectVisibility,
|
|
23438
|
+
filterHidden,
|
|
23439
|
+
hiddenCategoryKeys,
|
|
23071
23440
|
updateTrigger
|
|
23072
23441
|
]);
|
|
23073
23442
|
}
|
|
23074
|
-
|
|
23443
|
+
const useSignalMatchAtCursor = ({ frequency, enabled = true, cursorSample }, source)=>{
|
|
23075
23444
|
const cursor = useStore_useSelector((state)=>state.cursor);
|
|
23076
23445
|
const segments = useStore_useSelector((state)=>state.segments);
|
|
23077
23446
|
const left = cursorSample?.coord.left ?? cursor.coord.left;
|
|
23078
23447
|
const signalItems = useUnifiedSignals({
|
|
23079
23448
|
respectVisibility: enabled
|
|
23080
23449
|
});
|
|
23081
|
-
const
|
|
23082
|
-
|
|
23450
|
+
const matchingSignalItems = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>{
|
|
23451
|
+
if (!enabled) return [];
|
|
23452
|
+
return 'station' === source ? signalItems.filter(tree_isStationInfo) : signalItems;
|
|
23453
|
+
}, [
|
|
23454
|
+
enabled,
|
|
23455
|
+
signalItems,
|
|
23456
|
+
source
|
|
23457
|
+
]);
|
|
23458
|
+
const signalRangeIndex = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>createSignalRangeIndex({
|
|
23459
|
+
signalItems: matchingSignalItems,
|
|
23083
23460
|
segments
|
|
23084
23461
|
}), [
|
|
23085
|
-
|
|
23086
|
-
|
|
23462
|
+
matchingSignalItems,
|
|
23463
|
+
segments
|
|
23087
23464
|
]);
|
|
23088
23465
|
const isCursorActive = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>enabled && (cursorSample ? true : cursor_hasActiveSpectrumCursor(cursor)), [
|
|
23089
23466
|
cursor,
|
|
@@ -23099,100 +23476,142 @@ function useStationInfoAtCursor({ frequency, enabled = true, cursorSample }) {
|
|
|
23099
23476
|
segments
|
|
23100
23477
|
]);
|
|
23101
23478
|
return (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>{
|
|
23102
|
-
if (!enabled || 'number' != typeof left || !Number.isFinite(left) || left < 0 || !
|
|
23479
|
+
if (!enabled || 'number' != typeof left || !Number.isFinite(left) || left < 0 || !signalRangeIndex.length || !segments?.length) return;
|
|
23103
23480
|
if (!isCursorActive) return;
|
|
23104
23481
|
const currentFrequency = frequencyCalculation_getCursorFrequencyAtPosition(segments, currentPosition);
|
|
23105
23482
|
if (!Number.isFinite(currentFrequency)) {
|
|
23106
23483
|
const fallbackFrequency = Number(frequency);
|
|
23107
23484
|
if (!Number.isFinite(fallbackFrequency)) return;
|
|
23108
|
-
return
|
|
23485
|
+
return findSignalInRangeIndex({
|
|
23109
23486
|
frequency: fallbackFrequency,
|
|
23110
|
-
|
|
23487
|
+
signalRangeIndex,
|
|
23111
23488
|
currentPosition
|
|
23112
23489
|
});
|
|
23113
23490
|
}
|
|
23114
|
-
return
|
|
23491
|
+
return findSignalInRangeIndex({
|
|
23115
23492
|
frequency: currentFrequency,
|
|
23116
|
-
|
|
23493
|
+
signalRangeIndex,
|
|
23117
23494
|
currentPosition
|
|
23118
23495
|
});
|
|
23119
23496
|
}, [
|
|
23120
23497
|
enabled,
|
|
23121
23498
|
frequency,
|
|
23122
|
-
|
|
23499
|
+
signalRangeIndex,
|
|
23123
23500
|
segments,
|
|
23124
23501
|
currentPosition,
|
|
23125
23502
|
left,
|
|
23126
23503
|
isCursorActive
|
|
23127
23504
|
]);
|
|
23505
|
+
};
|
|
23506
|
+
function useSignalInfoAtCursor(props) {
|
|
23507
|
+
return useSignalMatchAtCursor(props, 'all');
|
|
23128
23508
|
}
|
|
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",
|
|
23509
|
+
const SignalInfoRow = ({ label, value: value1, tabular = false })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
23510
|
+
className: `flex gap-2${tabular ? ' tabular-nums' : ''}`,
|
|
23141
23511
|
children: [
|
|
23142
|
-
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.
|
|
23143
|
-
|
|
23144
|
-
|
|
23145
|
-
stationInfo.signalName
|
|
23146
|
-
]
|
|
23512
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
23513
|
+
className: "w-10 shrink-0 text-muted-foreground",
|
|
23514
|
+
children: label
|
|
23147
23515
|
}),
|
|
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
|
-
]
|
|
23516
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
23517
|
+
className: "min-w-0 break-words",
|
|
23518
|
+
children: value1
|
|
23519
|
+
})
|
|
23520
|
+
]
|
|
23521
|
+
});
|
|
23522
|
+
const SignalMetaValue = ({ color, label, testId })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("span", {
|
|
23523
|
+
className: "inline-flex items-center gap-1.5 font-medium text-foreground",
|
|
23524
|
+
children: [
|
|
23525
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
23526
|
+
"aria-hidden": "true",
|
|
23527
|
+
className: "size-2 shrink-0 rounded-full ring-1 ring-inset ring-border",
|
|
23528
|
+
"data-testid": testId,
|
|
23529
|
+
style: {
|
|
23530
|
+
backgroundColor: color
|
|
23531
|
+
}
|
|
23173
23532
|
}),
|
|
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
|
|
23533
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
23534
|
+
children: label
|
|
23535
|
+
})
|
|
23191
23536
|
]
|
|
23192
23537
|
});
|
|
23538
|
+
const SignalInfoPanel = ({ signalInfo })=>{
|
|
23539
|
+
if (!signalInfo) return null;
|
|
23540
|
+
const source = resolveSignalSource(signalInfo);
|
|
23541
|
+
const stationInfo = tree_isStationInfo(signalInfo) ? signalInfo : void 0;
|
|
23542
|
+
const signalType = normalizeSignalType(signalInfo.signalType);
|
|
23543
|
+
const signalTypeInfo = SIGNAL_TYPE_MAP[signalType];
|
|
23544
|
+
const levelInfo = SIGNAL_LEVEL_MAP[normalizeSignalLevel(signalInfo.level)];
|
|
23545
|
+
const showLevel = 'simple' === source && signalType === SignalType.LEGITIMATE;
|
|
23546
|
+
const resolvedColor = resolveSignalColor({
|
|
23547
|
+
...signalInfo,
|
|
23548
|
+
source
|
|
23549
|
+
});
|
|
23550
|
+
const typeColor = showLevel ? signalTypeInfo.color : resolvedColor;
|
|
23551
|
+
const hasFrequencyRange = null != signalInfo.startFrequency && null != signalInfo.stopFrequency;
|
|
23552
|
+
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
23553
|
+
className: "mt-2 border-t border-border/60 pt-2 text-xs leading-5 text-foreground",
|
|
23554
|
+
"data-signal-source": source,
|
|
23555
|
+
"data-testid": "signal-info-panel",
|
|
23556
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
23557
|
+
className: "space-y-0.5",
|
|
23558
|
+
children: [
|
|
23559
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23560
|
+
label: "\u6765\u6E90",
|
|
23561
|
+
value: SIGNAL_SOURCE_LABEL[source]
|
|
23562
|
+
}),
|
|
23563
|
+
stationInfo?.signalName ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23564
|
+
label: "\u540D\u79F0",
|
|
23565
|
+
value: stationInfo.signalName
|
|
23566
|
+
}) : null,
|
|
23567
|
+
stationInfo?.orgName ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23568
|
+
label: "\u5355\u4F4D",
|
|
23569
|
+
value: stationInfo.orgName
|
|
23570
|
+
}) : null,
|
|
23571
|
+
null != signalInfo.frequency ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23572
|
+
label: "\u9891\u7387",
|
|
23573
|
+
value: `${signalInfo.frequency}MHz`,
|
|
23574
|
+
tabular: true
|
|
23575
|
+
}) : hasFrequencyRange ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23576
|
+
label: "\u8303\u56F4",
|
|
23577
|
+
value: `${signalInfo.startFrequency}-${signalInfo.stopFrequency}MHz`,
|
|
23578
|
+
tabular: true
|
|
23579
|
+
}) : null,
|
|
23580
|
+
null != signalInfo.bandwidth ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23581
|
+
label: "\u5E26\u5BBD",
|
|
23582
|
+
value: `${signalInfo.bandwidth}kHz`,
|
|
23583
|
+
tabular: true
|
|
23584
|
+
}) : null,
|
|
23585
|
+
stationInfo?.modulation ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23586
|
+
label: "\u8C03\u5236",
|
|
23587
|
+
value: stationInfo.modulation
|
|
23588
|
+
}) : null,
|
|
23589
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23590
|
+
label: "\u7C7B\u578B",
|
|
23591
|
+
value: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalMetaValue, {
|
|
23592
|
+
color: typeColor,
|
|
23593
|
+
label: signalTypeInfo.name,
|
|
23594
|
+
testId: "signal-info-type-swatch"
|
|
23595
|
+
})
|
|
23596
|
+
}),
|
|
23597
|
+
showLevel ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23598
|
+
label: "\u7B49\u7EA7",
|
|
23599
|
+
value: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalMetaValue, {
|
|
23600
|
+
color: resolvedColor,
|
|
23601
|
+
label: levelInfo.name,
|
|
23602
|
+
testId: "signal-info-level-swatch"
|
|
23603
|
+
})
|
|
23604
|
+
}) : null,
|
|
23605
|
+
stationInfo?.remark ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalInfoRow, {
|
|
23606
|
+
label: "\u5907\u6CE8",
|
|
23607
|
+
value: stationInfo.remark
|
|
23608
|
+
}) : null
|
|
23609
|
+
]
|
|
23610
|
+
})
|
|
23611
|
+
});
|
|
23193
23612
|
};
|
|
23194
|
-
const
|
|
23195
|
-
const FrequencyDataBoard = ({ left, updateKey, onChange,
|
|
23613
|
+
const StationInfoPanel = /*#__PURE__*/ __WEBPACK_EXTERNAL_MODULE_react__["default"].memo(SignalInfoPanel);
|
|
23614
|
+
const FrequencyDataBoard = ({ left, updateKey, onChange, showSignalInfo = true, cursorSample })=>{
|
|
23196
23615
|
const axisYUnit = useStore_useSelector((state)=>state.axisY.unit);
|
|
23197
23616
|
const frequencyFormat = useStore_useSelector((state)=>state.axisX.frequencyFormat);
|
|
23198
23617
|
const unit = useStore_useSelector((state)=>state.axisX.unit);
|
|
@@ -23328,17 +23747,17 @@ const FrequencyDataBoard = ({ left, updateKey, onChange, showStationInfo = true,
|
|
|
23328
23747
|
frequency,
|
|
23329
23748
|
onChange
|
|
23330
23749
|
]);
|
|
23331
|
-
const
|
|
23750
|
+
const matchedSignal = useSignalInfoAtCursor({
|
|
23332
23751
|
frequency,
|
|
23333
|
-
enabled:
|
|
23752
|
+
enabled: showSignalInfo,
|
|
23334
23753
|
cursorSample
|
|
23335
23754
|
});
|
|
23336
|
-
const
|
|
23755
|
+
const hasSignalInfo = showSignalInfo && !!matchedSignal;
|
|
23337
23756
|
const hasValue = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>value1 && (Array.isArray(value1) ? value1.length > 0 : true), [
|
|
23338
23757
|
value1
|
|
23339
23758
|
]);
|
|
23340
23759
|
if (left < 0) return null;
|
|
23341
|
-
if (!hasValue && !
|
|
23760
|
+
if (!hasValue && !hasSignalInfo) return null;
|
|
23342
23761
|
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(components_Mask, {
|
|
23343
23762
|
children: [
|
|
23344
23763
|
frequency && /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
@@ -23352,8 +23771,8 @@ const FrequencyDataBoard = ({ left, updateKey, onChange, showStationInfo = true,
|
|
|
23352
23771
|
className: "mt-2 space-y-1",
|
|
23353
23772
|
children: value1
|
|
23354
23773
|
}) : null,
|
|
23355
|
-
|
|
23356
|
-
|
|
23774
|
+
showSignalInfo ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(StationInfoPanel, {
|
|
23775
|
+
signalInfo: matchedSignal
|
|
23357
23776
|
}) : null
|
|
23358
23777
|
]
|
|
23359
23778
|
});
|
|
@@ -23368,7 +23787,7 @@ const SpectrumCursorPopover = ({ id })=>{
|
|
|
23368
23787
|
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Spectrum_FrequencyDataBoard, {
|
|
23369
23788
|
left: 'number' == typeof left ? left : -1,
|
|
23370
23789
|
updateKey: updateKey,
|
|
23371
|
-
|
|
23790
|
+
showSignalInfo: signalShow && signalDisplay,
|
|
23372
23791
|
cursorSample: sample
|
|
23373
23792
|
});
|
|
23374
23793
|
};
|
|
@@ -27590,7 +28009,7 @@ const FluorescenceSwitch = ()=>{
|
|
|
27590
28009
|
})
|
|
27591
28010
|
});
|
|
27592
28011
|
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ToolbarDropdownGroup, {
|
|
27593
|
-
leading: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(
|
|
28012
|
+
leading: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ToolbarGroupIconBox, {
|
|
27594
28013
|
active: display,
|
|
27595
28014
|
tone: "primary",
|
|
27596
28015
|
onClick: toggleDisplay,
|
|
@@ -28208,10 +28627,497 @@ const Markers_Switch_Switch = ()=>{
|
|
|
28208
28627
|
});
|
|
28209
28628
|
};
|
|
28210
28629
|
const Markers_Switch = Markers_Switch_Switch;
|
|
28630
|
+
/**
|
|
28631
|
+
* @license lucide-react v0.577.0 - ISC
|
|
28632
|
+
*
|
|
28633
|
+
* This source code is licensed under the ISC license.
|
|
28634
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
28635
|
+
*/ const chevron_down_iconNode = [
|
|
28636
|
+
[
|
|
28637
|
+
"path",
|
|
28638
|
+
{
|
|
28639
|
+
d: "m6 9 6 6 6-6",
|
|
28640
|
+
key: "qrunsl"
|
|
28641
|
+
}
|
|
28642
|
+
]
|
|
28643
|
+
];
|
|
28644
|
+
const ChevronDown = createLucideIcon("chevron-down", chevron_down_iconNode);
|
|
28645
|
+
/**
|
|
28646
|
+
* @license lucide-react v0.577.0 - ISC
|
|
28647
|
+
*
|
|
28648
|
+
* This source code is licensed under the ISC license.
|
|
28649
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
28650
|
+
*/ const chevron_right_iconNode = [
|
|
28651
|
+
[
|
|
28652
|
+
"path",
|
|
28653
|
+
{
|
|
28654
|
+
d: "m9 18 6-6-6-6",
|
|
28655
|
+
key: "mthhwq"
|
|
28656
|
+
}
|
|
28657
|
+
]
|
|
28658
|
+
];
|
|
28659
|
+
const ChevronRight = createLucideIcon("chevron-right", chevron_right_iconNode);
|
|
28660
|
+
"use client";
|
|
28661
|
+
var react_checkbox_dist_defProp = Object.defineProperty;
|
|
28662
|
+
var react_checkbox_dist_name = (target, value1)=>react_checkbox_dist_defProp(target, "name", {
|
|
28663
|
+
value: value1,
|
|
28664
|
+
configurable: true
|
|
28665
|
+
});
|
|
28666
|
+
var CHECKBOX_NAME = "Checkbox";
|
|
28667
|
+
var [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);
|
|
28668
|
+
var [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);
|
|
28669
|
+
function CheckboxProvider(props) {
|
|
28670
|
+
const { __scopeCheckbox, checked: checkedProp, children, defaultChecked, disabled, form, name, onCheckedChange, required, value: value1 = "on", internal_do_not_use_render } = props;
|
|
28671
|
+
const [checked, setChecked] = dist_useControllableState({
|
|
28672
|
+
prop: checkedProp,
|
|
28673
|
+
defaultProp: defaultChecked ?? false,
|
|
28674
|
+
onChange: onCheckedChange,
|
|
28675
|
+
caller: CHECKBOX_NAME
|
|
28676
|
+
});
|
|
28677
|
+
const [control, setControl] = __WEBPACK_EXTERNAL_MODULE_react__.useState(null);
|
|
28678
|
+
const [bubbleInput, setBubbleInput] = __WEBPACK_EXTERNAL_MODULE_react__.useState(null);
|
|
28679
|
+
const hasConsumerStoppedPropagationRef = __WEBPACK_EXTERNAL_MODULE_react__.useRef(false);
|
|
28680
|
+
const [userInteractionCount, onUserInteraction] = __WEBPACK_EXTERNAL_MODULE_react__.useReducer((count)=>count + 1, 0);
|
|
28681
|
+
const isFormControl = control ? !!form || !!control.closest("form") : true;
|
|
28682
|
+
const context = {
|
|
28683
|
+
checked,
|
|
28684
|
+
disabled,
|
|
28685
|
+
setChecked,
|
|
28686
|
+
control,
|
|
28687
|
+
setControl,
|
|
28688
|
+
name,
|
|
28689
|
+
form,
|
|
28690
|
+
value: value1,
|
|
28691
|
+
hasConsumerStoppedPropagationRef,
|
|
28692
|
+
userInteractionCount,
|
|
28693
|
+
onUserInteraction,
|
|
28694
|
+
required,
|
|
28695
|
+
defaultChecked: dist_isIndeterminate(defaultChecked) ? false : defaultChecked,
|
|
28696
|
+
isFormControl,
|
|
28697
|
+
bubbleInput,
|
|
28698
|
+
setBubbleInput
|
|
28699
|
+
};
|
|
28700
|
+
return /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(CheckboxProviderImpl, {
|
|
28701
|
+
scope: __scopeCheckbox,
|
|
28702
|
+
...context,
|
|
28703
|
+
children: dist_isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children
|
|
28704
|
+
});
|
|
28705
|
+
}
|
|
28706
|
+
react_checkbox_dist_name(CheckboxProvider, "CheckboxProvider");
|
|
28707
|
+
var react_checkbox_dist_TRIGGER_NAME = "CheckboxTrigger";
|
|
28708
|
+
var CheckboxTrigger = /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(/* @__PURE__ */ react_checkbox_dist_name(function({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) {
|
|
28709
|
+
const { control, value: value1, disabled, checked, required, setControl, setChecked, hasConsumerStoppedPropagationRef, onUserInteraction, isFormControl, bubbleInput } = useCheckboxContext(react_checkbox_dist_TRIGGER_NAME, __scopeCheckbox);
|
|
28710
|
+
const composedRefs = dist_useComposedRefs(forwardedRef, setControl);
|
|
28711
|
+
const initialCheckedStateRef = __WEBPACK_EXTERNAL_MODULE_react__.useRef(checked);
|
|
28712
|
+
__WEBPACK_EXTERNAL_MODULE_react__.useEffect(()=>{
|
|
28713
|
+
const form = control?.form;
|
|
28714
|
+
if (form) {
|
|
28715
|
+
const reset = /* @__PURE__ */ react_checkbox_dist_name(()=>setChecked(initialCheckedStateRef.current), "reset");
|
|
28716
|
+
form.addEventListener("reset", reset);
|
|
28717
|
+
return ()=>form.removeEventListener("reset", reset);
|
|
28718
|
+
}
|
|
28719
|
+
}, [
|
|
28720
|
+
control,
|
|
28721
|
+
setChecked
|
|
28722
|
+
]);
|
|
28723
|
+
return /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(dist_Primitive.button, {
|
|
28724
|
+
type: "button",
|
|
28725
|
+
role: "checkbox",
|
|
28726
|
+
"aria-checked": dist_isIndeterminate(checked) ? "mixed" : checked,
|
|
28727
|
+
"aria-required": required,
|
|
28728
|
+
"data-state": getState(checked),
|
|
28729
|
+
"data-disabled": disabled ? "" : void 0,
|
|
28730
|
+
disabled,
|
|
28731
|
+
value: value1,
|
|
28732
|
+
...checkboxProps,
|
|
28733
|
+
ref: composedRefs,
|
|
28734
|
+
onKeyDown: dist_composeEventHandlers(onKeyDown, (event)=>{
|
|
28735
|
+
if ("Enter" === event.key) event.preventDefault();
|
|
28736
|
+
}),
|
|
28737
|
+
onClick: dist_composeEventHandlers(onClick, (event)=>{
|
|
28738
|
+
onUserInteraction();
|
|
28739
|
+
setChecked((prevChecked)=>dist_isIndeterminate(prevChecked) ? true : !prevChecked);
|
|
28740
|
+
if (bubbleInput && isFormControl) {
|
|
28741
|
+
hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();
|
|
28742
|
+
if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();
|
|
28743
|
+
}
|
|
28744
|
+
})
|
|
28745
|
+
});
|
|
28746
|
+
}, "CheckboxTrigger"));
|
|
28747
|
+
var Checkbox = /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(/* @__PURE__ */ react_checkbox_dist_name(function(props, forwardedRef) {
|
|
28748
|
+
const { __scopeCheckbox, name, checked, defaultChecked, required, disabled, value: value1, onCheckedChange, form, ...checkboxProps } = props;
|
|
28749
|
+
return /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(CheckboxProvider, {
|
|
28750
|
+
__scopeCheckbox,
|
|
28751
|
+
checked,
|
|
28752
|
+
defaultChecked,
|
|
28753
|
+
disabled,
|
|
28754
|
+
required,
|
|
28755
|
+
onCheckedChange,
|
|
28756
|
+
name,
|
|
28757
|
+
form,
|
|
28758
|
+
value: value1,
|
|
28759
|
+
internal_do_not_use_render: ({ isFormControl })=>/* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.Fragment, {
|
|
28760
|
+
children: [
|
|
28761
|
+
/* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(CheckboxTrigger, {
|
|
28762
|
+
...checkboxProps,
|
|
28763
|
+
ref: forwardedRef,
|
|
28764
|
+
__scopeCheckbox
|
|
28765
|
+
}),
|
|
28766
|
+
isFormControl && /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(CheckboxBubbleInput, {
|
|
28767
|
+
__scopeCheckbox
|
|
28768
|
+
})
|
|
28769
|
+
]
|
|
28770
|
+
})
|
|
28771
|
+
});
|
|
28772
|
+
}, "Checkbox"));
|
|
28773
|
+
var INDICATOR_NAME = "CheckboxIndicator";
|
|
28774
|
+
var CheckboxIndicator = /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(/* @__PURE__ */ react_checkbox_dist_name(function(props, forwardedRef) {
|
|
28775
|
+
const { __scopeCheckbox, forceMount, ...indicatorProps } = props;
|
|
28776
|
+
const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);
|
|
28777
|
+
return /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(dist_Presence, {
|
|
28778
|
+
present: forceMount || dist_isIndeterminate(context.checked) || true === context.checked,
|
|
28779
|
+
children: /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(dist_Primitive.span, {
|
|
28780
|
+
"data-state": getState(context.checked),
|
|
28781
|
+
"data-disabled": context.disabled ? "" : void 0,
|
|
28782
|
+
...indicatorProps,
|
|
28783
|
+
ref: forwardedRef,
|
|
28784
|
+
style: {
|
|
28785
|
+
pointerEvents: "none",
|
|
28786
|
+
...props.style
|
|
28787
|
+
}
|
|
28788
|
+
})
|
|
28789
|
+
});
|
|
28790
|
+
}, "CheckboxIndicator"));
|
|
28791
|
+
var BUBBLE_INPUT_NAME = "CheckboxBubbleInput";
|
|
28792
|
+
var CheckboxBubbleInput = /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(/* @__PURE__ */ react_checkbox_dist_name(function({ __scopeCheckbox, onClick, ...props }, forwardedRef) {
|
|
28793
|
+
const { control, hasConsumerStoppedPropagationRef, userInteractionCount, checked, defaultChecked, required, disabled, name, value: value1, form, bubbleInput, setBubbleInput } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);
|
|
28794
|
+
const composedRefs = dist_useComposedRefs(forwardedRef, setBubbleInput);
|
|
28795
|
+
const controlSize = useSize(control);
|
|
28796
|
+
const shouldStopClickPropagationRef = __WEBPACK_EXTERNAL_MODULE_react__.useRef(false);
|
|
28797
|
+
const prevCheckedRef = __WEBPACK_EXTERNAL_MODULE_react__.useRef(checked);
|
|
28798
|
+
const prevUserInteractionCountRef = __WEBPACK_EXTERNAL_MODULE_react__.useRef(userInteractionCount);
|
|
28799
|
+
__WEBPACK_EXTERNAL_MODULE_react__.useEffect(()=>{
|
|
28800
|
+
const input = bubbleInput;
|
|
28801
|
+
if (!input) return;
|
|
28802
|
+
const inputProto = window.HTMLInputElement.prototype;
|
|
28803
|
+
const descriptor = Object.getOwnPropertyDescriptor(inputProto, "checked");
|
|
28804
|
+
const setChecked = descriptor.set;
|
|
28805
|
+
const isUserInteraction = userInteractionCount !== prevUserInteractionCountRef.current;
|
|
28806
|
+
prevUserInteractionCountRef.current = userInteractionCount;
|
|
28807
|
+
const checkedChanged = prevCheckedRef.current !== checked;
|
|
28808
|
+
prevCheckedRef.current = checked;
|
|
28809
|
+
const bubbles = !(isUserInteraction && hasConsumerStoppedPropagationRef.current);
|
|
28810
|
+
if (checkedChanged && setChecked) {
|
|
28811
|
+
shouldStopClickPropagationRef.current = !isUserInteraction;
|
|
28812
|
+
const event = new Event("click", {
|
|
28813
|
+
bubbles
|
|
28814
|
+
});
|
|
28815
|
+
input.indeterminate = dist_isIndeterminate(checked);
|
|
28816
|
+
setChecked.call(input, dist_isIndeterminate(checked) ? false : checked);
|
|
28817
|
+
input.dispatchEvent(event);
|
|
28818
|
+
shouldStopClickPropagationRef.current = false;
|
|
28819
|
+
}
|
|
28820
|
+
}, [
|
|
28821
|
+
bubbleInput,
|
|
28822
|
+
checked,
|
|
28823
|
+
hasConsumerStoppedPropagationRef,
|
|
28824
|
+
userInteractionCount
|
|
28825
|
+
]);
|
|
28826
|
+
const defaultCheckedRef = __WEBPACK_EXTERNAL_MODULE_react__.useRef(dist_isIndeterminate(checked) ? false : checked);
|
|
28827
|
+
return /* @__PURE__ */ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(dist_Primitive.input, {
|
|
28828
|
+
type: "checkbox",
|
|
28829
|
+
"aria-hidden": true,
|
|
28830
|
+
defaultChecked: defaultChecked ?? defaultCheckedRef.current,
|
|
28831
|
+
required,
|
|
28832
|
+
disabled,
|
|
28833
|
+
name,
|
|
28834
|
+
value: value1,
|
|
28835
|
+
form,
|
|
28836
|
+
...props,
|
|
28837
|
+
tabIndex: -1,
|
|
28838
|
+
ref: composedRefs,
|
|
28839
|
+
onClick: dist_composeEventHandlers(onClick, (event)=>{
|
|
28840
|
+
if (shouldStopClickPropagationRef.current) event.stopPropagation();
|
|
28841
|
+
}),
|
|
28842
|
+
style: {
|
|
28843
|
+
...props.style,
|
|
28844
|
+
...controlSize,
|
|
28845
|
+
position: "absolute",
|
|
28846
|
+
pointerEvents: "none",
|
|
28847
|
+
opacity: 0,
|
|
28848
|
+
margin: 0,
|
|
28849
|
+
transform: "translateX(-100%)"
|
|
28850
|
+
}
|
|
28851
|
+
});
|
|
28852
|
+
}, "CheckboxBubbleInput"));
|
|
28853
|
+
function dist_isFunction(value1) {
|
|
28854
|
+
return "function" == typeof value1;
|
|
28855
|
+
}
|
|
28856
|
+
react_checkbox_dist_name(dist_isFunction, "isFunction");
|
|
28857
|
+
function dist_isIndeterminate(checked) {
|
|
28858
|
+
return "indeterminate" === checked;
|
|
28859
|
+
}
|
|
28860
|
+
react_checkbox_dist_name(dist_isIndeterminate, "isIndeterminate");
|
|
28861
|
+
function getState(checked) {
|
|
28862
|
+
return dist_isIndeterminate(checked) ? "indeterminate" : checked ? "checked" : "unchecked";
|
|
28863
|
+
}
|
|
28864
|
+
react_checkbox_dist_name(getState, "getState");
|
|
28865
|
+
/**
|
|
28866
|
+
* @license lucide-react v0.577.0 - ISC
|
|
28867
|
+
*
|
|
28868
|
+
* This source code is licensed under the ISC license.
|
|
28869
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
28870
|
+
*/ const minus_iconNode = [
|
|
28871
|
+
[
|
|
28872
|
+
"path",
|
|
28873
|
+
{
|
|
28874
|
+
d: "M5 12h14",
|
|
28875
|
+
key: "1ays0h"
|
|
28876
|
+
}
|
|
28877
|
+
]
|
|
28878
|
+
];
|
|
28879
|
+
const Minus = createLucideIcon("minus", minus_iconNode);
|
|
28880
|
+
/**
|
|
28881
|
+
* @license lucide-react v0.577.0 - ISC
|
|
28882
|
+
*
|
|
28883
|
+
* This source code is licensed under the ISC license.
|
|
28884
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
28885
|
+
*/ const check_iconNode = [
|
|
28886
|
+
[
|
|
28887
|
+
"path",
|
|
28888
|
+
{
|
|
28889
|
+
d: "M20 6 9 17l-5-5",
|
|
28890
|
+
key: "1gmf2c"
|
|
28891
|
+
}
|
|
28892
|
+
]
|
|
28893
|
+
];
|
|
28894
|
+
const Check = createLucideIcon("check", check_iconNode);
|
|
28895
|
+
const checkbox_Checkbox = /*#__PURE__*/ __WEBPACK_EXTERNAL_MODULE_react__.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Checkbox, {
|
|
28896
|
+
ref: ref,
|
|
28897
|
+
"data-slot": "checkbox",
|
|
28898
|
+
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),
|
|
28899
|
+
...props,
|
|
28900
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(CheckboxIndicator, {
|
|
28901
|
+
"data-slot": "checkbox-indicator",
|
|
28902
|
+
className: "flex items-center justify-center text-current",
|
|
28903
|
+
children: 'indeterminate' === props.checked ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Minus, {
|
|
28904
|
+
className: "size-3.5"
|
|
28905
|
+
}) : /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Check, {
|
|
28906
|
+
className: "size-3.5"
|
|
28907
|
+
})
|
|
28908
|
+
})
|
|
28909
|
+
}));
|
|
28910
|
+
checkbox_Checkbox.displayName = Checkbox.displayName;
|
|
28911
|
+
const toCheckboxValue = (state)=>{
|
|
28912
|
+
if ('checked' === state) return true;
|
|
28913
|
+
if ('indeterminate' === state) return 'indeterminate';
|
|
28914
|
+
return false;
|
|
28915
|
+
};
|
|
28916
|
+
const SignalTypeRow = ({ source, type, leafKeysWithData, hiddenKeys, expanded, onToggleExpanded, onToggleNode })=>{
|
|
28917
|
+
const state = resolveNodeCheckState(leafKeysWithData, hiddenKeys, type.leafKeys);
|
|
28918
|
+
const checkboxId = `signal-tree-type-checkbox-${source.source}-${type.signalType}`;
|
|
28919
|
+
const hasLevels = type.levels.length > 0;
|
|
28920
|
+
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
28921
|
+
children: [
|
|
28922
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
28923
|
+
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",
|
|
28924
|
+
"data-testid": `signal-tree-type-${source.source}-${type.signalType}`,
|
|
28925
|
+
children: [
|
|
28926
|
+
hasLevels ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("button", {
|
|
28927
|
+
type: "button",
|
|
28928
|
+
"aria-label": expanded ? "\u6298\u53E0\u4FE1\u53F7\u7C7B\u578B" : "\u5C55\u5F00\u4FE1\u53F7\u7C7B\u578B",
|
|
28929
|
+
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",
|
|
28930
|
+
onClick: onToggleExpanded,
|
|
28931
|
+
children: expanded ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ChevronDown, {
|
|
28932
|
+
className: "size-3.5"
|
|
28933
|
+
}) : /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ChevronRight, {
|
|
28934
|
+
className: "size-3.5"
|
|
28935
|
+
})
|
|
28936
|
+
}) : /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
28937
|
+
"aria-hidden": "true",
|
|
28938
|
+
className: "size-4 shrink-0"
|
|
28939
|
+
}),
|
|
28940
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("label", {
|
|
28941
|
+
htmlFor: checkboxId,
|
|
28942
|
+
className: cn_cn('flex min-w-0 flex-1 items-center gap-1.5', 'disabled' === state ? 'cursor-not-allowed' : 'cursor-pointer'),
|
|
28943
|
+
children: [
|
|
28944
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(checkbox_Checkbox, {
|
|
28945
|
+
id: checkboxId,
|
|
28946
|
+
"aria-label": `${source.label} ${type.label}`,
|
|
28947
|
+
checked: toCheckboxValue(state),
|
|
28948
|
+
disabled: 'disabled' === state,
|
|
28949
|
+
onCheckedChange: ()=>onToggleNode(type.leafKeys)
|
|
28950
|
+
}),
|
|
28951
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
28952
|
+
"aria-hidden": "true",
|
|
28953
|
+
className: cn_cn('size-2 shrink-0 rounded-full ring-1 ring-inset ring-background/30', 'disabled' === state && 'opacity-35'),
|
|
28954
|
+
"data-testid": `signal-tree-type-color-${source.source}-${type.signalType}`,
|
|
28955
|
+
style: {
|
|
28956
|
+
backgroundColor: SIGNAL_TYPE_MAP[type.signalType].color
|
|
28957
|
+
}
|
|
28958
|
+
}),
|
|
28959
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
28960
|
+
className: cn_cn('min-w-0 truncate text-xs font-medium', 'disabled' === state ? 'text-muted-foreground' : 'text-foreground/90'),
|
|
28961
|
+
children: type.label
|
|
28962
|
+
})
|
|
28963
|
+
]
|
|
28964
|
+
})
|
|
28965
|
+
]
|
|
28966
|
+
}),
|
|
28967
|
+
expanded && hasLevels ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
28968
|
+
className: "relative ml-6 border-l border-border/60 pl-1",
|
|
28969
|
+
children: type.levels.map((level)=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalLevelRow, {
|
|
28970
|
+
source: source.source,
|
|
28971
|
+
signalType: type.signalType,
|
|
28972
|
+
level: level,
|
|
28973
|
+
leafKeysWithData: leafKeysWithData,
|
|
28974
|
+
hiddenKeys: hiddenKeys,
|
|
28975
|
+
onToggleNode: onToggleNode
|
|
28976
|
+
}, level.leafKey))
|
|
28977
|
+
}) : null
|
|
28978
|
+
]
|
|
28979
|
+
}, type.signalType);
|
|
28980
|
+
};
|
|
28981
|
+
const SignalLevelRow = ({ source, signalType, level, leafKeysWithData, hiddenKeys, onToggleNode })=>{
|
|
28982
|
+
const state = resolveNodeCheckState(leafKeysWithData, hiddenKeys, [
|
|
28983
|
+
level.leafKey
|
|
28984
|
+
]);
|
|
28985
|
+
const checkboxId = `signal-tree-level-checkbox-${source}-${signalType}-${level.level}`;
|
|
28986
|
+
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
28987
|
+
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",
|
|
28988
|
+
"data-testid": `signal-tree-level-${source}-${signalType}-${level.level}`,
|
|
28989
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("label", {
|
|
28990
|
+
htmlFor: checkboxId,
|
|
28991
|
+
className: cn_cn('flex min-w-0 flex-1 items-center gap-1.5', 'disabled' === state ? 'cursor-not-allowed' : 'cursor-pointer'),
|
|
28992
|
+
children: [
|
|
28993
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(checkbox_Checkbox, {
|
|
28994
|
+
id: checkboxId,
|
|
28995
|
+
"aria-label": `${signalType} ${level.label}`,
|
|
28996
|
+
checked: toCheckboxValue(state),
|
|
28997
|
+
disabled: 'disabled' === state,
|
|
28998
|
+
onCheckedChange: ()=>onToggleNode([
|
|
28999
|
+
level.leafKey
|
|
29000
|
+
])
|
|
29001
|
+
}),
|
|
29002
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
29003
|
+
"aria-hidden": "true",
|
|
29004
|
+
className: cn_cn('size-2 shrink-0 rounded-full ring-1 ring-inset ring-background/30', 'disabled' === state && 'opacity-35'),
|
|
29005
|
+
"data-testid": `signal-tree-level-color-${source}-${signalType}-${level.level}`,
|
|
29006
|
+
style: {
|
|
29007
|
+
backgroundColor: SIGNAL_LEVEL_MAP[level.level].color
|
|
29008
|
+
}
|
|
29009
|
+
}),
|
|
29010
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
29011
|
+
className: cn_cn('text-xs', 'disabled' === state ? 'text-muted-foreground' : 'text-foreground/80'),
|
|
29012
|
+
children: level.label
|
|
29013
|
+
})
|
|
29014
|
+
]
|
|
29015
|
+
})
|
|
29016
|
+
});
|
|
29017
|
+
};
|
|
29018
|
+
const SignalAnnotationTree = ({ tree, leafKeysWithData, hiddenKeys, onToggleNode })=>{
|
|
29019
|
+
const [collapsedKeys, setCollapsedKeys] = (0, __WEBPACK_EXTERNAL_MODULE_react__.useState)(()=>new Set());
|
|
29020
|
+
const [collapsedSourceKeys, setCollapsedSourceKeys] = (0, __WEBPACK_EXTERNAL_MODULE_react__.useState)(()=>new Set());
|
|
29021
|
+
const toggleExpanded = (0, __WEBPACK_EXTERNAL_MODULE_react__.useCallback)((key)=>{
|
|
29022
|
+
setCollapsedKeys((prev)=>{
|
|
29023
|
+
const next = new Set(prev);
|
|
29024
|
+
if (next.has(key)) next.delete(key);
|
|
29025
|
+
else next.add(key);
|
|
29026
|
+
return next;
|
|
29027
|
+
});
|
|
29028
|
+
}, []);
|
|
29029
|
+
const toggleSourceExpanded = (0, __WEBPACK_EXTERNAL_MODULE_react__.useCallback)((source)=>{
|
|
29030
|
+
setCollapsedSourceKeys((prev)=>{
|
|
29031
|
+
const next = new Set(prev);
|
|
29032
|
+
if (next.has(source)) next.delete(source);
|
|
29033
|
+
else next.add(source);
|
|
29034
|
+
return next;
|
|
29035
|
+
});
|
|
29036
|
+
}, []);
|
|
29037
|
+
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(scroll_area_ScrollArea, {
|
|
29038
|
+
viewportClassName: "h-auto max-h-[var(--radix-dropdown-menu-content-available-height)]",
|
|
29039
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
29040
|
+
className: "p-[calc(var(--size-gap-base)/2)]",
|
|
29041
|
+
children: tree.sources.map((source, sourceIndex)=>{
|
|
29042
|
+
const sourceState = resolveNodeCheckState(leafKeysWithData, hiddenKeys, source.leafKeys);
|
|
29043
|
+
const checkboxId = `signal-tree-source-checkbox-${source.source}`;
|
|
29044
|
+
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
29045
|
+
className: cn_cn(sourceIndex > 0 && 'mt-[calc(var(--size-gap-base)/2)] border-t border-border/60 pt-[calc(var(--size-gap-base)/2)]'),
|
|
29046
|
+
"data-testid": `signal-tree-source-${source.source}`,
|
|
29047
|
+
children: [
|
|
29048
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
|
|
29049
|
+
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",
|
|
29050
|
+
"data-testid": `signal-tree-source-row-${source.source}`,
|
|
29051
|
+
children: [
|
|
29052
|
+
source.types.length > 0 ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("button", {
|
|
29053
|
+
type: "button",
|
|
29054
|
+
"aria-label": collapsedSourceKeys.has(source.source) ? "\u5C55\u5F00\u6570\u636E\u6765\u6E90" : "\u6298\u53E0\u6570\u636E\u6765\u6E90",
|
|
29055
|
+
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",
|
|
29056
|
+
onClick: ()=>toggleSourceExpanded(source.source),
|
|
29057
|
+
children: collapsedSourceKeys.has(source.source) ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ChevronRight, {
|
|
29058
|
+
className: "size-3.5"
|
|
29059
|
+
}) : /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ChevronDown, {
|
|
29060
|
+
className: "size-3.5"
|
|
29061
|
+
})
|
|
29062
|
+
}) : /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
29063
|
+
"aria-hidden": "true",
|
|
29064
|
+
className: "size-4 shrink-0"
|
|
29065
|
+
}),
|
|
29066
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("label", {
|
|
29067
|
+
htmlFor: checkboxId,
|
|
29068
|
+
className: cn_cn('flex min-w-0 flex-1 items-center gap-1.5', 'disabled' === sourceState ? 'cursor-not-allowed' : 'cursor-pointer'),
|
|
29069
|
+
children: [
|
|
29070
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(checkbox_Checkbox, {
|
|
29071
|
+
id: checkboxId,
|
|
29072
|
+
"aria-label": `${source.label}\u{7B5B}\u{9009}`,
|
|
29073
|
+
checked: toCheckboxValue(sourceState),
|
|
29074
|
+
disabled: 'disabled' === sourceState,
|
|
29075
|
+
onCheckedChange: ()=>onToggleNode(source.leafKeys)
|
|
29076
|
+
}),
|
|
29077
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
29078
|
+
className: "text-xs font-medium text-foreground",
|
|
29079
|
+
children: source.label
|
|
29080
|
+
})
|
|
29081
|
+
]
|
|
29082
|
+
})
|
|
29083
|
+
]
|
|
29084
|
+
}),
|
|
29085
|
+
collapsedSourceKeys.has(source.source) ? null : /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
29086
|
+
className: "ml-4 divide-y divide-border/40 border-l border-border/60 pl-1",
|
|
29087
|
+
children: source.types.map((type)=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalTypeRow, {
|
|
29088
|
+
source: source,
|
|
29089
|
+
type: type,
|
|
29090
|
+
leafKeysWithData: leafKeysWithData,
|
|
29091
|
+
hiddenKeys: hiddenKeys,
|
|
29092
|
+
expanded: !collapsedKeys.has(`${source.source}:${type.signalType}`),
|
|
29093
|
+
onToggleExpanded: ()=>toggleExpanded(`${source.source}:${type.signalType}`),
|
|
29094
|
+
onToggleNode: onToggleNode
|
|
29095
|
+
}, type.signalType))
|
|
29096
|
+
})
|
|
29097
|
+
]
|
|
29098
|
+
}, source.source);
|
|
29099
|
+
})
|
|
29100
|
+
})
|
|
29101
|
+
});
|
|
29102
|
+
};
|
|
28211
29103
|
const Signal_Switch_Switch = ()=>{
|
|
28212
29104
|
const { state: { signal }, dispatch } = useStore_useStore();
|
|
28213
29105
|
const isActive = signal.display;
|
|
28214
29106
|
const shouldShow = signal.show;
|
|
29107
|
+
const signalItems = useUnifiedSignals({
|
|
29108
|
+
respectVisibility: false,
|
|
29109
|
+
filterHidden: false
|
|
29110
|
+
});
|
|
29111
|
+
const tree = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>buildSignalTree(signalItems), [
|
|
29112
|
+
signalItems
|
|
29113
|
+
]);
|
|
29114
|
+
const leafKeysWithData = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>new Set(tree.sources.flatMap((source)=>source.dataLeafKeys)), [
|
|
29115
|
+
tree
|
|
29116
|
+
]);
|
|
29117
|
+
const hiddenKeys = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(()=>new Set(signal.hiddenCategoryKeys ?? []), [
|
|
29118
|
+
signal.hiddenCategoryKeys
|
|
29119
|
+
]);
|
|
29120
|
+
const hasCategoryFilter = (signal.hiddenCategoryKeys?.length ?? 0) > 0;
|
|
28215
29121
|
const setActive = (0, __WEBPACK_EXTERNAL_MODULE_react__.useCallback)((active)=>{
|
|
28216
29122
|
dispatch({
|
|
28217
29123
|
payload: {
|
|
@@ -28225,22 +29131,58 @@ const Signal_Switch_Switch = ()=>{
|
|
|
28225
29131
|
signal,
|
|
28226
29132
|
dispatch
|
|
28227
29133
|
]);
|
|
29134
|
+
const toggleNode = (0, __WEBPACK_EXTERNAL_MODULE_react__.useCallback)((fixedLeafKeys)=>{
|
|
29135
|
+
const next = toggleNodeHiddenKeys(signal.hiddenCategoryKeys ?? [], fixedLeafKeys, leafKeysWithData);
|
|
29136
|
+
dispatch({
|
|
29137
|
+
payload: {
|
|
29138
|
+
signal: {
|
|
29139
|
+
...signal,
|
|
29140
|
+
hiddenCategoryKeys: next
|
|
29141
|
+
}
|
|
29142
|
+
}
|
|
29143
|
+
});
|
|
29144
|
+
}, [
|
|
29145
|
+
signal,
|
|
29146
|
+
leafKeysWithData,
|
|
29147
|
+
dispatch
|
|
29148
|
+
]);
|
|
28228
29149
|
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
|
-
|
|
29150
|
+
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ToolbarDropdownGroup, {
|
|
29151
|
+
leading: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ToolbarGroupIconBox, {
|
|
29152
|
+
active: isActive,
|
|
29153
|
+
tone: "primary",
|
|
29154
|
+
onClick: ()=>{
|
|
29155
|
+
setActive(!isActive);
|
|
29156
|
+
},
|
|
29157
|
+
title: `\u{5168}\u{90E8}\u{4FE1}\u{53F7}\u{6807}\u{6CE8}\u{FF1A}${isActive ? "\u663E\u793A" : "\u9690\u85CF"}`,
|
|
29158
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("svg", {
|
|
29159
|
+
viewBox: "0 0 1024 1024",
|
|
29160
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
29161
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("path", {
|
|
29162
|
+
fill: "currentColor",
|
|
29163
|
+
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"
|
|
29164
|
+
})
|
|
28242
29165
|
})
|
|
28243
|
-
})
|
|
29166
|
+
}),
|
|
29167
|
+
value: null,
|
|
29168
|
+
options: [],
|
|
29169
|
+
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" : ''}`,
|
|
29170
|
+
triggerTestId: "signal-tree-trigger",
|
|
29171
|
+
triggerContent: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("span", {
|
|
29172
|
+
className: "sr-only",
|
|
29173
|
+
children: hasCategoryFilter ? "\u4FE1\u53F7\u6807\u6CE8\u7C7B\u522B\u7B5B\u9009\uFF08\u5DF2\u5E94\u7528\uFF09" : "\u4FE1\u53F7\u6807\u6CE8\u7C7B\u522B\u7B5B\u9009"
|
|
29174
|
+
}),
|
|
29175
|
+
customContent: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
29176
|
+
"data-testid": "signal-tree-popover",
|
|
29177
|
+
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(SignalAnnotationTree, {
|
|
29178
|
+
tree: tree,
|
|
29179
|
+
leafKeysWithData: leafKeysWithData,
|
|
29180
|
+
hiddenKeys: hiddenKeys,
|
|
29181
|
+
onToggleNode: toggleNode
|
|
29182
|
+
})
|
|
29183
|
+
}),
|
|
29184
|
+
contentClassName: "w-max max-w-[calc(100vw-1rem)] p-0",
|
|
29185
|
+
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
29186
|
});
|
|
28245
29187
|
};
|
|
28246
29188
|
const Signal_Switch = Signal_Switch_Switch;
|
|
@@ -30408,7 +31350,7 @@ const Board = ({ id })=>{
|
|
|
30408
31350
|
left: left,
|
|
30409
31351
|
updateKey: updateKey,
|
|
30410
31352
|
onChange: handleChange,
|
|
30411
|
-
|
|
31353
|
+
showSignalInfo: false
|
|
30412
31354
|
})
|
|
30413
31355
|
});
|
|
30414
31356
|
};
|
|
@@ -32176,27 +33118,31 @@ const Scope = ()=>{
|
|
|
32176
33118
|
});
|
|
32177
33119
|
};
|
|
32178
33120
|
const Spectrum_Scope = Scope;
|
|
32179
|
-
const
|
|
33121
|
+
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
33122
|
className: "absolute h-full box-border",
|
|
32181
33123
|
style: style,
|
|
32182
|
-
children: signalPositions.map(({ key, position, color, tooltip })=>{
|
|
33124
|
+
children: signalPositions.map(({ item, key, position, color, tooltip })=>{
|
|
32183
33125
|
const isActive = activeSignalKey === key;
|
|
32184
33126
|
const itemStyle = {
|
|
32185
33127
|
left: position.left,
|
|
32186
33128
|
width: position.width,
|
|
32187
33129
|
minWidth: '1px',
|
|
32188
33130
|
backgroundColor: color,
|
|
32189
|
-
|
|
32190
|
-
|
|
33131
|
+
height: isActive ? '100%' : '8px',
|
|
33132
|
+
opacity: isActive ? 0.5 : 1
|
|
32191
33133
|
};
|
|
32192
33134
|
return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
32193
33135
|
className: "pointer-events-none absolute top-0 flex min-w-px items-center justify-center overflow-hidden text-ellipsis whitespace-nowrap text-center text-xs text-foreground",
|
|
33136
|
+
"data-signal-active": isActive ? 'true' : 'false',
|
|
33137
|
+
"data-signal-key": key,
|
|
33138
|
+
"data-signal-source": resolveSignalSource(item),
|
|
33139
|
+
"data-testid": "signal-annotation",
|
|
32194
33140
|
style: itemStyle,
|
|
32195
33141
|
title: tooltip
|
|
32196
33142
|
}, `segment-${segmentIndex}-signal-${key}`);
|
|
32197
33143
|
})
|
|
32198
33144
|
}));
|
|
32199
|
-
const
|
|
33145
|
+
const presenters_SignalSegments = SignalSegments;
|
|
32200
33146
|
function useSignalDataManager() {
|
|
32201
33147
|
const { state, dispatch } = useStore_useStore();
|
|
32202
33148
|
const globalIDRef = (0, __WEBPACK_EXTERNAL_MODULE_react__.useRef)(state.globalID);
|
|
@@ -32213,11 +33159,11 @@ function useSignalDataManager() {
|
|
|
32213
33159
|
if (!state.globalID) return;
|
|
32214
33160
|
const pendingStationData = pendingDataRef.current.station;
|
|
32215
33161
|
const pendingSimpleSignalData = pendingDataRef.current.simple;
|
|
32216
|
-
if (pendingStationData
|
|
33162
|
+
if (void 0 !== pendingStationData) {
|
|
32217
33163
|
STATION_DATA(state.globalID, pendingStationData);
|
|
32218
33164
|
pendingDataRef.current.station = void 0;
|
|
32219
33165
|
}
|
|
32220
|
-
if (pendingSimpleSignalData
|
|
33166
|
+
if (void 0 !== pendingSimpleSignalData) {
|
|
32221
33167
|
dispatch({
|
|
32222
33168
|
payload: {
|
|
32223
33169
|
signal: {
|
|
@@ -32234,7 +33180,7 @@ function useSignalDataManager() {
|
|
|
32234
33180
|
]);
|
|
32235
33181
|
const updateSignalData = (0, __WEBPACK_EXTERNAL_MODULE_react__.useCallback)((params)=>{
|
|
32236
33182
|
const { type, data } = params;
|
|
32237
|
-
if (!
|
|
33183
|
+
if (!Array.isArray(data)) return;
|
|
32238
33184
|
if ('station' === type) {
|
|
32239
33185
|
if (!globalIDRef.current) {
|
|
32240
33186
|
pendingDataRef.current.station = data;
|
|
@@ -32310,7 +33256,7 @@ const Signal = ({ id, show = true, display = true })=>{
|
|
|
32310
33256
|
children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
|
|
32311
33257
|
className: "absolute right-0 top-0 flex h-full w-full",
|
|
32312
33258
|
style: zoomOffStyle ?? void 0,
|
|
32313
|
-
children: segmentData.map(({ segmentIndex, signalPositions, style })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(
|
|
33259
|
+
children: segmentData.map(({ segmentIndex, signalPositions, style })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(presenters_SignalSegments, {
|
|
32314
33260
|
style: style,
|
|
32315
33261
|
signalPositions: signalPositions,
|
|
32316
33262
|
activeSignalKey: currentPosition.segmentIndex === segmentIndex ? activeSignalKey : void 0,
|