@designfever/web-review-kit 0.8.0 → 0.8.1
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 +2 -1
- package/dist/react-shell.cjs +724 -436
- package/dist/react-shell.cjs.map +1 -1
- package/dist/react-shell.d.cts +1 -0
- package/dist/react-shell.d.ts +1 -0
- package/dist/react-shell.js +590 -298
- package/dist/react-shell.js.map +1 -1
- package/docs/README.md +1 -0
- package/docs/installation.md +23 -0
- package/docs/release-notes-0.8.1.md +23 -0
- package/package.json +1 -1
package/dist/react-shell.js
CHANGED
|
@@ -2444,7 +2444,9 @@ var reviewShellQaPanelStyle = `
|
|
|
2444
2444
|
.df-review-status-toggle-row {
|
|
2445
2445
|
display: flex;
|
|
2446
2446
|
align-items: center;
|
|
2447
|
+
justify-content: space-between;
|
|
2447
2448
|
gap: 6px;
|
|
2449
|
+
width: 100%;
|
|
2448
2450
|
min-width: 0;
|
|
2449
2451
|
overflow-x: auto;
|
|
2450
2452
|
overflow-y: hidden;
|
|
@@ -2488,10 +2490,31 @@ var reviewShellQaPanelStyle = `
|
|
|
2488
2490
|
opacity: 0.72;
|
|
2489
2491
|
}
|
|
2490
2492
|
|
|
2493
|
+
.df-review-status-preset-toggle {
|
|
2494
|
+
width: 34px;
|
|
2495
|
+
min-width: 34px;
|
|
2496
|
+
padding: 0;
|
|
2497
|
+
}
|
|
2498
|
+
|
|
2499
|
+
.df-review-status-preset-toggle svg {
|
|
2500
|
+
width: 14px;
|
|
2501
|
+
height: 14px;
|
|
2502
|
+
}
|
|
2503
|
+
|
|
2491
2504
|
.df-review-status-toggle.is-active {
|
|
2492
2505
|
color: var(--df-review-text);
|
|
2493
2506
|
}
|
|
2494
2507
|
|
|
2508
|
+
.df-review-status-preset-toggle.is-active {
|
|
2509
|
+
border-color: var(--df-review-line);
|
|
2510
|
+
color: var(--df-review-muted);
|
|
2511
|
+
background: var(--df-review-line-soft);
|
|
2512
|
+
}
|
|
2513
|
+
|
|
2514
|
+
.df-review-status-toggle.is-status-todo {
|
|
2515
|
+
flex: 1 1 auto;
|
|
2516
|
+
}
|
|
2517
|
+
|
|
2495
2518
|
.df-review-status-toggle.is-status-todo.is-active {
|
|
2496
2519
|
border-color: var(--df-review-line);
|
|
2497
2520
|
color: var(--df-review-muted);
|
|
@@ -2516,10 +2539,15 @@ var reviewShellQaPanelStyle = `
|
|
|
2516
2539
|
background: var(--df-review-purple-soft);
|
|
2517
2540
|
}
|
|
2518
2541
|
|
|
2542
|
+
.df-review-status-toggle.is-status-done {
|
|
2543
|
+
margin-right: var(--df-review-space-2);
|
|
2544
|
+
color: var(--df-review-muted);
|
|
2545
|
+
}
|
|
2546
|
+
|
|
2519
2547
|
.df-review-status-toggle.is-status-done.is-active {
|
|
2520
|
-
border-color:
|
|
2521
|
-
color: var(--df-review-
|
|
2522
|
-
background: var(--df-review-
|
|
2548
|
+
border-color: var(--df-review-line);
|
|
2549
|
+
color: var(--df-review-muted);
|
|
2550
|
+
background: var(--df-review-line-soft);
|
|
2523
2551
|
}
|
|
2524
2552
|
|
|
2525
2553
|
.df-review-filter-tabs {
|
|
@@ -2673,7 +2701,8 @@ var reviewShellQaPanelStyle = `
|
|
|
2673
2701
|
box-shadow: inset 0 0 0 1px var(--df-review-accent-hover), 0 0 0 3px rgba(124, 199, 255, 0.12);
|
|
2674
2702
|
}
|
|
2675
2703
|
|
|
2676
|
-
.df-review-item-card.is-overlay-hidden .df-review-item-main
|
|
2704
|
+
.df-review-item-card.is-overlay-hidden .df-review-item-main,
|
|
2705
|
+
.df-review-item-card.is-overlay-hidden .df-review-item-body {
|
|
2677
2706
|
opacity: 0.68;
|
|
2678
2707
|
}
|
|
2679
2708
|
|
|
@@ -2685,7 +2714,8 @@ var reviewShellQaPanelStyle = `
|
|
|
2685
2714
|
min-width: 0;
|
|
2686
2715
|
}
|
|
2687
2716
|
|
|
2688
|
-
.df-review-item-main
|
|
2717
|
+
.df-review-item-main,
|
|
2718
|
+
.df-review-item-body {
|
|
2689
2719
|
display: grid;
|
|
2690
2720
|
gap: 4px;
|
|
2691
2721
|
min-width: 0;
|
|
@@ -2697,7 +2727,7 @@ var reviewShellQaPanelStyle = `
|
|
|
2697
2727
|
}
|
|
2698
2728
|
|
|
2699
2729
|
.df-review-item-main strong,
|
|
2700
|
-
.df-review-item-
|
|
2730
|
+
.df-review-item-body p {
|
|
2701
2731
|
margin: 0;
|
|
2702
2732
|
}
|
|
2703
2733
|
|
|
@@ -2721,6 +2751,73 @@ var reviewShellQaPanelStyle = `
|
|
|
2721
2751
|
white-space: pre-wrap;
|
|
2722
2752
|
}
|
|
2723
2753
|
|
|
2754
|
+
.df-review-item-comment-shell {
|
|
2755
|
+
display: grid;
|
|
2756
|
+
gap: 2px;
|
|
2757
|
+
min-width: 0;
|
|
2758
|
+
}
|
|
2759
|
+
|
|
2760
|
+
.df-review-item-comment-more {
|
|
2761
|
+
display: flex;
|
|
2762
|
+
align-items: center;
|
|
2763
|
+
justify-content: center;
|
|
2764
|
+
gap: 5px;
|
|
2765
|
+
width: 100%;
|
|
2766
|
+
min-width: 0;
|
|
2767
|
+
min-height: 37px;
|
|
2768
|
+
border: 0;
|
|
2769
|
+
padding: 10px 0 7px;
|
|
2770
|
+
color: var(--df-review-muted);
|
|
2771
|
+
background: transparent;
|
|
2772
|
+
cursor: pointer;
|
|
2773
|
+
font-size: var(--df-review-font-size-xs);
|
|
2774
|
+
font-weight: var(--df-review-font-weight-normal);
|
|
2775
|
+
line-height: 1;
|
|
2776
|
+
transition: color 140ms ease;
|
|
2777
|
+
}
|
|
2778
|
+
|
|
2779
|
+
.df-review-item-comment-more::before,
|
|
2780
|
+
.df-review-item-comment-more::after {
|
|
2781
|
+
content: '';
|
|
2782
|
+
flex: 1 1 auto;
|
|
2783
|
+
height: 1px;
|
|
2784
|
+
border-radius: var(--df-review-radius-pill);
|
|
2785
|
+
background: var(--df-review-line-soft);
|
|
2786
|
+
}
|
|
2787
|
+
|
|
2788
|
+
.df-review-item-comment-more span {
|
|
2789
|
+
flex: 0 0 auto;
|
|
2790
|
+
}
|
|
2791
|
+
|
|
2792
|
+
.df-review-item-comment-more:hover,
|
|
2793
|
+
.df-review-item-comment-more:focus-visible {
|
|
2794
|
+
color: var(--df-review-accent);
|
|
2795
|
+
outline: none;
|
|
2796
|
+
}
|
|
2797
|
+
|
|
2798
|
+
.df-review-item-comment-more svg {
|
|
2799
|
+
flex: 0 0 auto;
|
|
2800
|
+
width: 14px;
|
|
2801
|
+
height: 14px;
|
|
2802
|
+
fill: none;
|
|
2803
|
+
stroke: currentColor;
|
|
2804
|
+
stroke-linecap: round;
|
|
2805
|
+
stroke-linejoin: round;
|
|
2806
|
+
stroke-width: 2;
|
|
2807
|
+
}
|
|
2808
|
+
|
|
2809
|
+
.df-review-item-comment.is-collapsed {
|
|
2810
|
+
max-height: 140px;
|
|
2811
|
+
overflow-x: hidden;
|
|
2812
|
+
overflow-y: auto;
|
|
2813
|
+
scrollbar-width: thin;
|
|
2814
|
+
}
|
|
2815
|
+
|
|
2816
|
+
.df-review-item-comment.is-expanded {
|
|
2817
|
+
max-height: none;
|
|
2818
|
+
overflow: visible;
|
|
2819
|
+
}
|
|
2820
|
+
|
|
2724
2821
|
.df-review-item-comment.is-primary {
|
|
2725
2822
|
padding: 5px 0;
|
|
2726
2823
|
color: var(--df-review-text);
|
|
@@ -2782,7 +2879,7 @@ var reviewShellQaPanelStyle = `
|
|
|
2782
2879
|
white-space: nowrap;
|
|
2783
2880
|
}
|
|
2784
2881
|
|
|
2785
|
-
.df-review-item-
|
|
2882
|
+
.df-review-item-body small {
|
|
2786
2883
|
color: var(--df-review-subtle);
|
|
2787
2884
|
font-size: var(--df-review-font-size-xs);
|
|
2788
2885
|
}
|
|
@@ -4133,11 +4230,17 @@ var reviewShellStageStyle = `
|
|
|
4133
4230
|
|
|
4134
4231
|
.df-review-outside-marker {
|
|
4135
4232
|
--df-review-outside-marker-color: #7cc7ff;
|
|
4233
|
+
--df-review-outside-marker-connector-top: 10px;
|
|
4234
|
+
--df-review-outside-marker-connector-stem-top: 10px;
|
|
4235
|
+
--df-review-outside-marker-connector-stem-height: 0px;
|
|
4236
|
+
--df-review-outside-marker-z-index: 1;
|
|
4136
4237
|
position: absolute;
|
|
4137
4238
|
right: 10px;
|
|
4239
|
+
z-index: var(--df-review-outside-marker-z-index);
|
|
4138
4240
|
display: inline-flex;
|
|
4139
4241
|
align-items: center;
|
|
4140
4242
|
justify-content: center;
|
|
4243
|
+
width: max-content;
|
|
4141
4244
|
min-width: 28px;
|
|
4142
4245
|
height: 22px;
|
|
4143
4246
|
padding: 0 6px;
|
|
@@ -4149,21 +4252,33 @@ var reviewShellStageStyle = `
|
|
|
4149
4252
|
font-size: var(--df-review-font-size-2xs);
|
|
4150
4253
|
font-weight: var(--df-review-font-weight-emphasis);
|
|
4151
4254
|
line-height: 1;
|
|
4255
|
+
white-space: nowrap;
|
|
4152
4256
|
pointer-events: auto;
|
|
4153
4257
|
}
|
|
4154
4258
|
|
|
4259
|
+
.df-review-outside-marker::before,
|
|
4155
4260
|
.df-review-outside-marker::after {
|
|
4156
4261
|
content: "";
|
|
4157
4262
|
position: absolute;
|
|
4158
|
-
left: 100%;
|
|
4159
|
-
top: 10px;
|
|
4160
|
-
width: 10px;
|
|
4161
|
-
height: 1px;
|
|
4162
4263
|
background: var(--df-review-outside-marker-color);
|
|
4163
4264
|
opacity: 0.72;
|
|
4164
4265
|
pointer-events: none;
|
|
4165
4266
|
}
|
|
4166
4267
|
|
|
4268
|
+
.df-review-outside-marker::before {
|
|
4269
|
+
left: 100%;
|
|
4270
|
+
top: var(--df-review-outside-marker-connector-stem-top);
|
|
4271
|
+
width: 1px;
|
|
4272
|
+
height: var(--df-review-outside-marker-connector-stem-height);
|
|
4273
|
+
}
|
|
4274
|
+
|
|
4275
|
+
.df-review-outside-marker::after {
|
|
4276
|
+
left: 100%;
|
|
4277
|
+
top: var(--df-review-outside-marker-connector-top);
|
|
4278
|
+
width: 10px;
|
|
4279
|
+
height: 1px;
|
|
4280
|
+
}
|
|
4281
|
+
|
|
4167
4282
|
.df-review-outside-marker.is-scope-tablet {
|
|
4168
4283
|
--df-review-outside-marker-color: #63d7c7;
|
|
4169
4284
|
}
|
|
@@ -5202,7 +5317,7 @@ function ensureReviewShellStyle() {
|
|
|
5202
5317
|
// src/react-shell/review/shell.tsx
|
|
5203
5318
|
import {
|
|
5204
5319
|
useMemo as useMemo18,
|
|
5205
|
-
useState as
|
|
5320
|
+
useState as useState18
|
|
5206
5321
|
} from "react";
|
|
5207
5322
|
|
|
5208
5323
|
// src/react-shell/store/store.context.tsx
|
|
@@ -5362,69 +5477,80 @@ var __iconNode = [
|
|
|
5362
5477
|
];
|
|
5363
5478
|
var Bot = createLucideIcon("bot", __iconNode);
|
|
5364
5479
|
|
|
5480
|
+
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/check-check.mjs
|
|
5481
|
+
var __iconNode2 = [
|
|
5482
|
+
["path", { d: "M18 6 7 17l-5-5", key: "116fxf" }],
|
|
5483
|
+
["path", { d: "m22 10-7.5 7.5L13 16", key: "ke71qq" }]
|
|
5484
|
+
];
|
|
5485
|
+
var CheckCheck = createLucideIcon("check-check", __iconNode2);
|
|
5486
|
+
|
|
5365
5487
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/chevron-down.mjs
|
|
5366
|
-
var
|
|
5367
|
-
var ChevronDown = createLucideIcon("chevron-down",
|
|
5488
|
+
var __iconNode3 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
5489
|
+
var ChevronDown = createLucideIcon("chevron-down", __iconNode3);
|
|
5368
5490
|
|
|
5369
5491
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/chevron-right.mjs
|
|
5370
|
-
var
|
|
5371
|
-
var ChevronRight = createLucideIcon("chevron-right",
|
|
5492
|
+
var __iconNode4 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
5493
|
+
var ChevronRight = createLucideIcon("chevron-right", __iconNode4);
|
|
5494
|
+
|
|
5495
|
+
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/chevron-up.mjs
|
|
5496
|
+
var __iconNode5 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
5497
|
+
var ChevronUp = createLucideIcon("chevron-up", __iconNode5);
|
|
5372
5498
|
|
|
5373
5499
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/circle-question-mark.mjs
|
|
5374
|
-
var
|
|
5500
|
+
var __iconNode6 = [
|
|
5375
5501
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
5376
5502
|
["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
|
|
5377
5503
|
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
5378
5504
|
];
|
|
5379
|
-
var CircleQuestionMark = createLucideIcon("circle-question-mark",
|
|
5505
|
+
var CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode6);
|
|
5380
5506
|
|
|
5381
5507
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/code-xml.mjs
|
|
5382
|
-
var
|
|
5508
|
+
var __iconNode7 = [
|
|
5383
5509
|
["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
|
|
5384
5510
|
["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
|
|
5385
5511
|
["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
|
|
5386
5512
|
];
|
|
5387
|
-
var CodeXml = createLucideIcon("code-xml",
|
|
5513
|
+
var CodeXml = createLucideIcon("code-xml", __iconNode7);
|
|
5388
5514
|
|
|
5389
5515
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/contrast.mjs
|
|
5390
|
-
var
|
|
5516
|
+
var __iconNode8 = [
|
|
5391
5517
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
5392
5518
|
["path", { d: "M12 18a6 6 0 0 0 0-12v12z", key: "j4l70d" }]
|
|
5393
5519
|
];
|
|
5394
|
-
var Contrast = createLucideIcon("contrast",
|
|
5520
|
+
var Contrast = createLucideIcon("contrast", __iconNode8);
|
|
5395
5521
|
|
|
5396
5522
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/copy.mjs
|
|
5397
|
-
var
|
|
5523
|
+
var __iconNode9 = [
|
|
5398
5524
|
["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
|
|
5399
5525
|
["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
|
|
5400
5526
|
];
|
|
5401
|
-
var Copy = createLucideIcon("copy",
|
|
5527
|
+
var Copy = createLucideIcon("copy", __iconNode9);
|
|
5402
5528
|
|
|
5403
5529
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/corner-up-right.mjs
|
|
5404
|
-
var
|
|
5530
|
+
var __iconNode10 = [
|
|
5405
5531
|
["path", { d: "m15 14 5-5-5-5", key: "12vg1m" }],
|
|
5406
5532
|
["path", { d: "M4 20v-7a4 4 0 0 1 4-4h12", key: "1lu4f8" }]
|
|
5407
5533
|
];
|
|
5408
|
-
var CornerUpRight = createLucideIcon("corner-up-right",
|
|
5534
|
+
var CornerUpRight = createLucideIcon("corner-up-right", __iconNode10);
|
|
5409
5535
|
|
|
5410
5536
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/database.mjs
|
|
5411
|
-
var
|
|
5537
|
+
var __iconNode11 = [
|
|
5412
5538
|
["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
|
|
5413
5539
|
["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
|
|
5414
5540
|
["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
|
|
5415
5541
|
];
|
|
5416
|
-
var Database = createLucideIcon("database",
|
|
5542
|
+
var Database = createLucideIcon("database", __iconNode11);
|
|
5417
5543
|
|
|
5418
5544
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/external-link.mjs
|
|
5419
|
-
var
|
|
5545
|
+
var __iconNode12 = [
|
|
5420
5546
|
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
5421
5547
|
["path", { d: "M10 14 21 3", key: "gplh6r" }],
|
|
5422
5548
|
["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
|
|
5423
5549
|
];
|
|
5424
|
-
var ExternalLink = createLucideIcon("external-link",
|
|
5550
|
+
var ExternalLink = createLucideIcon("external-link", __iconNode12);
|
|
5425
5551
|
|
|
5426
5552
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/eye-off.mjs
|
|
5427
|
-
var
|
|
5553
|
+
var __iconNode13 = [
|
|
5428
5554
|
[
|
|
5429
5555
|
"path",
|
|
5430
5556
|
{
|
|
@@ -5442,10 +5568,10 @@ var __iconNode11 = [
|
|
|
5442
5568
|
],
|
|
5443
5569
|
["path", { d: "m2 2 20 20", key: "1ooewy" }]
|
|
5444
5570
|
];
|
|
5445
|
-
var EyeOff = createLucideIcon("eye-off",
|
|
5571
|
+
var EyeOff = createLucideIcon("eye-off", __iconNode13);
|
|
5446
5572
|
|
|
5447
5573
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/eye.mjs
|
|
5448
|
-
var
|
|
5574
|
+
var __iconNode14 = [
|
|
5449
5575
|
[
|
|
5450
5576
|
"path",
|
|
5451
5577
|
{
|
|
@@ -5455,59 +5581,59 @@ var __iconNode12 = [
|
|
|
5455
5581
|
],
|
|
5456
5582
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
5457
5583
|
];
|
|
5458
|
-
var Eye = createLucideIcon("eye",
|
|
5584
|
+
var Eye = createLucideIcon("eye", __iconNode14);
|
|
5459
5585
|
|
|
5460
5586
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/image.mjs
|
|
5461
|
-
var
|
|
5587
|
+
var __iconNode15 = [
|
|
5462
5588
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
|
|
5463
5589
|
["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
|
|
5464
5590
|
["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
|
|
5465
5591
|
];
|
|
5466
|
-
var Image2 = createLucideIcon("image",
|
|
5592
|
+
var Image2 = createLucideIcon("image", __iconNode15);
|
|
5467
5593
|
|
|
5468
5594
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/layout-grid.mjs
|
|
5469
|
-
var
|
|
5595
|
+
var __iconNode16 = [
|
|
5470
5596
|
["rect", { width: "7", height: "7", x: "3", y: "3", rx: "1", key: "1g98yp" }],
|
|
5471
5597
|
["rect", { width: "7", height: "7", x: "14", y: "3", rx: "1", key: "6d4xhi" }],
|
|
5472
5598
|
["rect", { width: "7", height: "7", x: "14", y: "14", rx: "1", key: "nxv5o0" }],
|
|
5473
5599
|
["rect", { width: "7", height: "7", x: "3", y: "14", rx: "1", key: "1bb6yr" }]
|
|
5474
5600
|
];
|
|
5475
|
-
var LayoutGrid = createLucideIcon("layout-grid",
|
|
5601
|
+
var LayoutGrid = createLucideIcon("layout-grid", __iconNode16);
|
|
5476
5602
|
|
|
5477
5603
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/link-2.mjs
|
|
5478
|
-
var
|
|
5604
|
+
var __iconNode17 = [
|
|
5479
5605
|
["path", { d: "M9 17H7A5 5 0 0 1 7 7h2", key: "8i5ue5" }],
|
|
5480
5606
|
["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2", key: "1b9ql8" }],
|
|
5481
5607
|
["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }]
|
|
5482
5608
|
];
|
|
5483
|
-
var Link2 = createLucideIcon("link-2",
|
|
5609
|
+
var Link2 = createLucideIcon("link-2", __iconNode17);
|
|
5484
5610
|
|
|
5485
5611
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/list-checks.mjs
|
|
5486
|
-
var
|
|
5612
|
+
var __iconNode18 = [
|
|
5487
5613
|
["path", { d: "M13 5h8", key: "a7qcls" }],
|
|
5488
5614
|
["path", { d: "M13 12h8", key: "h98zly" }],
|
|
5489
5615
|
["path", { d: "M13 19h8", key: "c3s6r1" }],
|
|
5490
5616
|
["path", { d: "m3 17 2 2 4-4", key: "1jhpwq" }],
|
|
5491
5617
|
["path", { d: "m3 7 2 2 4-4", key: "1obspn" }]
|
|
5492
5618
|
];
|
|
5493
|
-
var ListChecks = createLucideIcon("list-checks",
|
|
5619
|
+
var ListChecks = createLucideIcon("list-checks", __iconNode18);
|
|
5494
5620
|
|
|
5495
5621
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/lock-open.mjs
|
|
5496
|
-
var
|
|
5622
|
+
var __iconNode19 = [
|
|
5497
5623
|
["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
|
|
5498
5624
|
["path", { d: "M7 11V7a5 5 0 0 1 9.9-1", key: "1mm8w8" }]
|
|
5499
5625
|
];
|
|
5500
|
-
var LockOpen = createLucideIcon("lock-open",
|
|
5626
|
+
var LockOpen = createLucideIcon("lock-open", __iconNode19);
|
|
5501
5627
|
|
|
5502
5628
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/lock.mjs
|
|
5503
|
-
var
|
|
5629
|
+
var __iconNode20 = [
|
|
5504
5630
|
["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
|
|
5505
5631
|
["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }]
|
|
5506
5632
|
];
|
|
5507
|
-
var Lock = createLucideIcon("lock",
|
|
5633
|
+
var Lock = createLucideIcon("lock", __iconNode20);
|
|
5508
5634
|
|
|
5509
5635
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/map.mjs
|
|
5510
|
-
var
|
|
5636
|
+
var __iconNode21 = [
|
|
5511
5637
|
[
|
|
5512
5638
|
"path",
|
|
5513
5639
|
{
|
|
@@ -5518,27 +5644,27 @@ var __iconNode19 = [
|
|
|
5518
5644
|
["path", { d: "M15 5.764v15", key: "1pn4in" }],
|
|
5519
5645
|
["path", { d: "M9 3.236v15", key: "1uimfh" }]
|
|
5520
5646
|
];
|
|
5521
|
-
var Map2 = createLucideIcon("map",
|
|
5647
|
+
var Map2 = createLucideIcon("map", __iconNode21);
|
|
5522
5648
|
|
|
5523
5649
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/maximize-2.mjs
|
|
5524
|
-
var
|
|
5650
|
+
var __iconNode22 = [
|
|
5525
5651
|
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
5526
5652
|
["path", { d: "m21 3-7 7", key: "1l2asr" }],
|
|
5527
5653
|
["path", { d: "m3 21 7-7", key: "tjx5ai" }],
|
|
5528
5654
|
["path", { d: "M9 21H3v-6", key: "wtvkvv" }]
|
|
5529
5655
|
];
|
|
5530
|
-
var Maximize2 = createLucideIcon("maximize-2",
|
|
5656
|
+
var Maximize2 = createLucideIcon("maximize-2", __iconNode22);
|
|
5531
5657
|
|
|
5532
5658
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/monitor.mjs
|
|
5533
|
-
var
|
|
5659
|
+
var __iconNode23 = [
|
|
5534
5660
|
["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }],
|
|
5535
5661
|
["line", { x1: "8", x2: "16", y1: "21", y2: "21", key: "1svkeh" }],
|
|
5536
5662
|
["line", { x1: "12", x2: "12", y1: "17", y2: "21", key: "vw1qmm" }]
|
|
5537
5663
|
];
|
|
5538
|
-
var Monitor = createLucideIcon("monitor",
|
|
5664
|
+
var Monitor = createLucideIcon("monitor", __iconNode23);
|
|
5539
5665
|
|
|
5540
5666
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/moon.mjs
|
|
5541
|
-
var
|
|
5667
|
+
var __iconNode24 = [
|
|
5542
5668
|
[
|
|
5543
5669
|
"path",
|
|
5544
5670
|
{
|
|
@@ -5547,28 +5673,28 @@ var __iconNode22 = [
|
|
|
5547
5673
|
}
|
|
5548
5674
|
]
|
|
5549
5675
|
];
|
|
5550
|
-
var Moon = createLucideIcon("moon",
|
|
5676
|
+
var Moon = createLucideIcon("moon", __iconNode24);
|
|
5551
5677
|
|
|
5552
5678
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/move-vertical.mjs
|
|
5553
|
-
var
|
|
5679
|
+
var __iconNode25 = [
|
|
5554
5680
|
["path", { d: "M12 2v20", key: "t6zp3m" }],
|
|
5555
5681
|
["path", { d: "m8 18 4 4 4-4", key: "bh5tu3" }],
|
|
5556
5682
|
["path", { d: "m8 6 4-4 4 4", key: "ybng9g" }]
|
|
5557
5683
|
];
|
|
5558
|
-
var MoveVertical = createLucideIcon("move-vertical",
|
|
5684
|
+
var MoveVertical = createLucideIcon("move-vertical", __iconNode25);
|
|
5559
5685
|
|
|
5560
5686
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/network.mjs
|
|
5561
|
-
var
|
|
5687
|
+
var __iconNode26 = [
|
|
5562
5688
|
["rect", { x: "16", y: "16", width: "6", height: "6", rx: "1", key: "4q2zg0" }],
|
|
5563
5689
|
["rect", { x: "2", y: "16", width: "6", height: "6", rx: "1", key: "8cvhb9" }],
|
|
5564
5690
|
["rect", { x: "9", y: "2", width: "6", height: "6", rx: "1", key: "1egb70" }],
|
|
5565
5691
|
["path", { d: "M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3", key: "1jsf9p" }],
|
|
5566
5692
|
["path", { d: "M12 12V8", key: "2874zd" }]
|
|
5567
5693
|
];
|
|
5568
|
-
var Network = createLucideIcon("network",
|
|
5694
|
+
var Network = createLucideIcon("network", __iconNode26);
|
|
5569
5695
|
|
|
5570
5696
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/pencil.mjs
|
|
5571
|
-
var
|
|
5697
|
+
var __iconNode27 = [
|
|
5572
5698
|
[
|
|
5573
5699
|
"path",
|
|
5574
5700
|
{
|
|
@@ -5578,32 +5704,32 @@ var __iconNode25 = [
|
|
|
5578
5704
|
],
|
|
5579
5705
|
["path", { d: "m15 5 4 4", key: "1mk7zo" }]
|
|
5580
5706
|
];
|
|
5581
|
-
var Pencil = createLucideIcon("pencil",
|
|
5707
|
+
var Pencil = createLucideIcon("pencil", __iconNode27);
|
|
5582
5708
|
|
|
5583
5709
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/plus.mjs
|
|
5584
|
-
var
|
|
5710
|
+
var __iconNode28 = [
|
|
5585
5711
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
5586
5712
|
["path", { d: "M12 5v14", key: "s699le" }]
|
|
5587
5713
|
];
|
|
5588
|
-
var Plus = createLucideIcon("plus",
|
|
5714
|
+
var Plus = createLucideIcon("plus", __iconNode28);
|
|
5589
5715
|
|
|
5590
5716
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/rectangle-horizontal.mjs
|
|
5591
|
-
var
|
|
5717
|
+
var __iconNode29 = [
|
|
5592
5718
|
["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }]
|
|
5593
5719
|
];
|
|
5594
|
-
var RectangleHorizontal = createLucideIcon("rectangle-horizontal",
|
|
5720
|
+
var RectangleHorizontal = createLucideIcon("rectangle-horizontal", __iconNode29);
|
|
5595
5721
|
|
|
5596
5722
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/refresh-cw.mjs
|
|
5597
|
-
var
|
|
5723
|
+
var __iconNode30 = [
|
|
5598
5724
|
["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
|
|
5599
5725
|
["path", { d: "M21 3v5h-5", key: "1q7to0" }],
|
|
5600
5726
|
["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
|
|
5601
5727
|
["path", { d: "M8 16H3v5", key: "1cv678" }]
|
|
5602
5728
|
];
|
|
5603
|
-
var RefreshCw = createLucideIcon("refresh-cw",
|
|
5729
|
+
var RefreshCw = createLucideIcon("refresh-cw", __iconNode30);
|
|
5604
5730
|
|
|
5605
5731
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/ruler.mjs
|
|
5606
|
-
var
|
|
5732
|
+
var __iconNode31 = [
|
|
5607
5733
|
[
|
|
5608
5734
|
"path",
|
|
5609
5735
|
{
|
|
@@ -5616,26 +5742,26 @@ var __iconNode29 = [
|
|
|
5616
5742
|
["path", { d: "m8.5 6.5 2-2", key: "vc6u1g" }],
|
|
5617
5743
|
["path", { d: "m17.5 15.5 2-2", key: "wo5hmg" }]
|
|
5618
5744
|
];
|
|
5619
|
-
var Ruler = createLucideIcon("ruler",
|
|
5745
|
+
var Ruler = createLucideIcon("ruler", __iconNode31);
|
|
5620
5746
|
|
|
5621
5747
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/scan.mjs
|
|
5622
|
-
var
|
|
5748
|
+
var __iconNode32 = [
|
|
5623
5749
|
["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }],
|
|
5624
5750
|
["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }],
|
|
5625
5751
|
["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }],
|
|
5626
5752
|
["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }]
|
|
5627
5753
|
];
|
|
5628
|
-
var Scan = createLucideIcon("scan",
|
|
5754
|
+
var Scan = createLucideIcon("scan", __iconNode32);
|
|
5629
5755
|
|
|
5630
5756
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/search.mjs
|
|
5631
|
-
var
|
|
5757
|
+
var __iconNode33 = [
|
|
5632
5758
|
["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
|
|
5633
5759
|
["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
|
|
5634
5760
|
];
|
|
5635
|
-
var Search = createLucideIcon("search",
|
|
5761
|
+
var Search = createLucideIcon("search", __iconNode33);
|
|
5636
5762
|
|
|
5637
5763
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/settings.mjs
|
|
5638
|
-
var
|
|
5764
|
+
var __iconNode34 = [
|
|
5639
5765
|
[
|
|
5640
5766
|
"path",
|
|
5641
5767
|
{
|
|
@@ -5645,17 +5771,17 @@ var __iconNode32 = [
|
|
|
5645
5771
|
],
|
|
5646
5772
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
5647
5773
|
];
|
|
5648
|
-
var Settings = createLucideIcon("settings",
|
|
5774
|
+
var Settings = createLucideIcon("settings", __iconNode34);
|
|
5649
5775
|
|
|
5650
5776
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/smartphone.mjs
|
|
5651
|
-
var
|
|
5777
|
+
var __iconNode35 = [
|
|
5652
5778
|
["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", ry: "2", key: "1yt0o3" }],
|
|
5653
5779
|
["path", { d: "M12 18h.01", key: "mhygvu" }]
|
|
5654
5780
|
];
|
|
5655
|
-
var Smartphone = createLucideIcon("smartphone",
|
|
5781
|
+
var Smartphone = createLucideIcon("smartphone", __iconNode35);
|
|
5656
5782
|
|
|
5657
5783
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/square-mouse-pointer.mjs
|
|
5658
|
-
var
|
|
5784
|
+
var __iconNode36 = [
|
|
5659
5785
|
[
|
|
5660
5786
|
"path",
|
|
5661
5787
|
{
|
|
@@ -5665,10 +5791,10 @@ var __iconNode34 = [
|
|
|
5665
5791
|
],
|
|
5666
5792
|
["path", { d: "M21 11V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6", key: "14rsvq" }]
|
|
5667
5793
|
];
|
|
5668
|
-
var SquareMousePointer = createLucideIcon("square-mouse-pointer",
|
|
5794
|
+
var SquareMousePointer = createLucideIcon("square-mouse-pointer", __iconNode36);
|
|
5669
5795
|
|
|
5670
5796
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/sun.mjs
|
|
5671
|
-
var
|
|
5797
|
+
var __iconNode37 = [
|
|
5672
5798
|
["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }],
|
|
5673
5799
|
["path", { d: "M12 2v2", key: "tus03m" }],
|
|
5674
5800
|
["path", { d: "M12 20v2", key: "1lh1kg" }],
|
|
@@ -5679,40 +5805,40 @@ var __iconNode35 = [
|
|
|
5679
5805
|
["path", { d: "m6.34 17.66-1.41 1.41", key: "1m8zz5" }],
|
|
5680
5806
|
["path", { d: "m19.07 4.93-1.41 1.41", key: "1shlcs" }]
|
|
5681
5807
|
];
|
|
5682
|
-
var Sun = createLucideIcon("sun",
|
|
5808
|
+
var Sun = createLucideIcon("sun", __iconNode37);
|
|
5683
5809
|
|
|
5684
5810
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/trash-2.mjs
|
|
5685
|
-
var
|
|
5811
|
+
var __iconNode38 = [
|
|
5686
5812
|
["path", { d: "M10 11v6", key: "nco0om" }],
|
|
5687
5813
|
["path", { d: "M14 11v6", key: "outv1u" }],
|
|
5688
5814
|
["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
|
|
5689
5815
|
["path", { d: "M3 6h18", key: "d0wm0j" }],
|
|
5690
5816
|
["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
|
|
5691
5817
|
];
|
|
5692
|
-
var Trash2 = createLucideIcon("trash-2",
|
|
5818
|
+
var Trash2 = createLucideIcon("trash-2", __iconNode38);
|
|
5693
5819
|
|
|
5694
5820
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/type.mjs
|
|
5695
|
-
var
|
|
5821
|
+
var __iconNode39 = [
|
|
5696
5822
|
["path", { d: "M12 4v16", key: "1654pz" }],
|
|
5697
5823
|
["path", { d: "M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2", key: "e0r10z" }],
|
|
5698
5824
|
["path", { d: "M9 20h6", key: "s66wpe" }]
|
|
5699
5825
|
];
|
|
5700
|
-
var Type = createLucideIcon("type",
|
|
5826
|
+
var Type = createLucideIcon("type", __iconNode39);
|
|
5701
5827
|
|
|
5702
5828
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/upload.mjs
|
|
5703
|
-
var
|
|
5829
|
+
var __iconNode40 = [
|
|
5704
5830
|
["path", { d: "M12 3v12", key: "1x0j5s" }],
|
|
5705
5831
|
["path", { d: "m17 8-5-5-5 5", key: "7q97r8" }],
|
|
5706
5832
|
["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }]
|
|
5707
5833
|
];
|
|
5708
|
-
var Upload = createLucideIcon("upload",
|
|
5834
|
+
var Upload = createLucideIcon("upload", __iconNode40);
|
|
5709
5835
|
|
|
5710
5836
|
// node_modules/.pnpm/lucide-react@1.20.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/x.mjs
|
|
5711
|
-
var
|
|
5837
|
+
var __iconNode41 = [
|
|
5712
5838
|
["path", { d: "M18 6 6 18", key: "1bl5f8" }],
|
|
5713
5839
|
["path", { d: "m6 6 12 12", key: "d8bk6v" }]
|
|
5714
5840
|
];
|
|
5715
|
-
var X = createLucideIcon("x",
|
|
5841
|
+
var X = createLucideIcon("x", __iconNode41);
|
|
5716
5842
|
|
|
5717
5843
|
// src/react-shell/figma/image.overlay.controller.ts
|
|
5718
5844
|
import {
|
|
@@ -6636,6 +6762,7 @@ var FigmaImageLayerStateButtons = ({
|
|
|
6636
6762
|
"aria-pressed": overlayState.isVisible,
|
|
6637
6763
|
className: `df-review-figma-image-state-button${overlayState.isVisible ? " is-active" : ""}`,
|
|
6638
6764
|
"data-review-tooltip": overlayState.isVisible ? "Hide overlay" : "Show overlay",
|
|
6765
|
+
"data-review-tooltip-placement": "left",
|
|
6639
6766
|
title: overlayState.isVisible ? "Hide overlay" : "Show overlay",
|
|
6640
6767
|
type: "button",
|
|
6641
6768
|
onClick: (event) => {
|
|
@@ -6652,6 +6779,7 @@ var FigmaImageLayerStateButtons = ({
|
|
|
6652
6779
|
"aria-pressed": overlayState.isLocked,
|
|
6653
6780
|
className: `df-review-figma-image-state-button${overlayState.isLocked ? " is-active" : ""}`,
|
|
6654
6781
|
"data-review-tooltip": overlayState.isLocked ? "Unlock" : "Lock",
|
|
6782
|
+
"data-review-tooltip-placement": "left",
|
|
6655
6783
|
title: overlayState.isLocked ? "Unlock" : "Lock",
|
|
6656
6784
|
type: "button",
|
|
6657
6785
|
onClick: (event) => {
|
|
@@ -6668,6 +6796,7 @@ var FigmaImageLayerStateButtons = ({
|
|
|
6668
6796
|
"aria-pressed": overlayState.mode === "invert",
|
|
6669
6797
|
className: `df-review-figma-image-state-button${overlayState.mode === "invert" ? " is-active" : ""}`,
|
|
6670
6798
|
"data-review-tooltip": "Invert",
|
|
6799
|
+
"data-review-tooltip-placement": "left",
|
|
6671
6800
|
title: "Invert",
|
|
6672
6801
|
type: "button",
|
|
6673
6802
|
onClick: (event) => {
|
|
@@ -7537,9 +7666,10 @@ var formatPromptSourceHint = (item) => {
|
|
|
7537
7666
|
`Section id: ${source.sectionId ?? "(none)"}`
|
|
7538
7667
|
].join("\n");
|
|
7539
7668
|
};
|
|
7540
|
-
var buildReviewItemPrompt = (numberedItem, reviewPathPrefix) => {
|
|
7669
|
+
var buildReviewItemPrompt = (numberedItem, reviewPathPrefix, qaPrompt = "") => {
|
|
7541
7670
|
const { item } = numberedItem;
|
|
7542
7671
|
const anchor = item.anchor;
|
|
7672
|
+
const qaPromptText = qaPrompt.trim();
|
|
7543
7673
|
const candidates = getPromptAnchorCandidates(item);
|
|
7544
7674
|
const candidateLines = candidates.length > 0 ? candidates.map((candidate, index) => {
|
|
7545
7675
|
const confidence = typeof candidate.confidence === "number" ? `, confidence=${Math.round(candidate.confidence * 100)}%` : "";
|
|
@@ -7547,6 +7677,7 @@ var buildReviewItemPrompt = (numberedItem, reviewPathPrefix) => {
|
|
|
7547
7677
|
return `${index + 1}. ${candidate.selector} (${candidate.strategy}${confidence}${fingerprint})`;
|
|
7548
7678
|
}).join("\n") : "(none)";
|
|
7549
7679
|
return [
|
|
7680
|
+
...qaPromptText ? [qaPromptText, ""] : [],
|
|
7550
7681
|
"Fix this df-web-review-kit QA issue.",
|
|
7551
7682
|
"",
|
|
7552
7683
|
`Page: ${getItemTarget(item, reviewPathPrefix)}`,
|
|
@@ -7844,6 +7975,7 @@ var createReviewShellConfig = ({
|
|
|
7844
7975
|
pages,
|
|
7845
7976
|
adapters,
|
|
7846
7977
|
initialPrompt = DEFAULT_INITIAL_REVIEW_PROMPT,
|
|
7978
|
+
qaPrompt = "",
|
|
7847
7979
|
presets = DEFAULT_REVIEW_VIEWPORT_PRESETS,
|
|
7848
7980
|
reviewPathPrefix = DEFAULT_REVIEW_PATH_PREFIX,
|
|
7849
7981
|
sourceInspector,
|
|
@@ -7860,6 +7992,7 @@ var createReviewShellConfig = ({
|
|
|
7860
7992
|
const isSourceInspectorEnabled = resolvedSourceInspector?.enabled !== false && Boolean(resolvedSourceRoot?.trim());
|
|
7861
7993
|
return {
|
|
7862
7994
|
initialPrompt,
|
|
7995
|
+
qaPrompt,
|
|
7863
7996
|
projectId,
|
|
7864
7997
|
pages,
|
|
7865
7998
|
reviewPathPrefix,
|
|
@@ -8224,7 +8357,7 @@ function useReviewItemActions({
|
|
|
8224
8357
|
onClearSelectedItem,
|
|
8225
8358
|
onRefreshReviewData
|
|
8226
8359
|
}) {
|
|
8227
|
-
const { reviewPathPrefix, viewportPresets } = useReviewShellConfig();
|
|
8360
|
+
const { qaPrompt, reviewPathPrefix, viewportPresets } = useReviewShellConfig();
|
|
8228
8361
|
const {
|
|
8229
8362
|
activeAdapterEntry,
|
|
8230
8363
|
isRemoteSource,
|
|
@@ -8353,7 +8486,7 @@ function useReviewItemActions({
|
|
|
8353
8486
|
onToast: showToast
|
|
8354
8487
|
});
|
|
8355
8488
|
const copyItemPrompt = (numberedItem) => copyPrompt(
|
|
8356
|
-
buildReviewItemPrompt(numberedItem, reviewPathPrefix),
|
|
8489
|
+
buildReviewItemPrompt(numberedItem, reviewPathPrefix, qaPrompt),
|
|
8357
8490
|
`qa:${numberedItem.item.id}`,
|
|
8358
8491
|
"QA prompt copied"
|
|
8359
8492
|
);
|
|
@@ -8579,9 +8712,16 @@ var QaItemEditModal = ({
|
|
|
8579
8712
|
};
|
|
8580
8713
|
|
|
8581
8714
|
// src/react-shell/qa/panel.tsx
|
|
8715
|
+
import {
|
|
8716
|
+
useEffect as useEffect5,
|
|
8717
|
+
useRef as useRef4
|
|
8718
|
+
} from "react";
|
|
8719
|
+
|
|
8720
|
+
// src/react-shell/qa/item.card.tsx
|
|
8582
8721
|
import {
|
|
8583
8722
|
useEffect as useEffect4,
|
|
8584
|
-
useRef as useRef3
|
|
8723
|
+
useRef as useRef3,
|
|
8724
|
+
useState as useState5
|
|
8585
8725
|
} from "react";
|
|
8586
8726
|
|
|
8587
8727
|
// src/react-shell/qa/item.assignee.actions.tsx
|
|
@@ -9032,6 +9172,30 @@ var QaItemCard = ({
|
|
|
9032
9172
|
const canEditItem = activeAdapterEntry.canUpdate && !isSubmitting && !isMutating;
|
|
9033
9173
|
const itemTitle = fields.title ? item.title?.trim() : "";
|
|
9034
9174
|
const itemMeta = [formatItemCardDate(item.createdAt), itemAuthor].filter(Boolean).join(" | ");
|
|
9175
|
+
const commentRef = useRef3(null);
|
|
9176
|
+
const [isCommentExpanded, setIsCommentExpanded] = useState5(false);
|
|
9177
|
+
const [isCommentOverflowing, setIsCommentOverflowing] = useState5(false);
|
|
9178
|
+
const showCommentToggle = isCommentExpanded || isCommentOverflowing;
|
|
9179
|
+
useEffect4(() => {
|
|
9180
|
+
setIsCommentExpanded(false);
|
|
9181
|
+
setIsCommentOverflowing(false);
|
|
9182
|
+
}, [item.id, itemComment]);
|
|
9183
|
+
useEffect4(() => {
|
|
9184
|
+
if (isCommentExpanded) return void 0;
|
|
9185
|
+
const element = commentRef.current;
|
|
9186
|
+
if (!element) return void 0;
|
|
9187
|
+
const updateCommentOverflow = () => {
|
|
9188
|
+
setIsCommentOverflowing(
|
|
9189
|
+
element.scrollHeight > element.clientHeight + 1
|
|
9190
|
+
);
|
|
9191
|
+
};
|
|
9192
|
+
updateCommentOverflow();
|
|
9193
|
+
const ResizeObserverClass = element.ownerDocument.defaultView?.ResizeObserver;
|
|
9194
|
+
if (!ResizeObserverClass) return void 0;
|
|
9195
|
+
const observer = new ResizeObserverClass(updateCommentOverflow);
|
|
9196
|
+
observer.observe(element);
|
|
9197
|
+
return () => observer.disconnect();
|
|
9198
|
+
}, [isCommentExpanded, itemComment]);
|
|
9035
9199
|
return /* @__PURE__ */ jsxs7(
|
|
9036
9200
|
"article",
|
|
9037
9201
|
{
|
|
@@ -9080,22 +9244,7 @@ var QaItemCard = ({
|
|
|
9080
9244
|
itemMode
|
|
9081
9245
|
] })
|
|
9082
9246
|
] }),
|
|
9083
|
-
itemTitle && /* @__PURE__ */ jsx11("strong", { className: "df-review-item-title", children: itemTitle })
|
|
9084
|
-
/* @__PURE__ */ jsx11(
|
|
9085
|
-
"p",
|
|
9086
|
-
{
|
|
9087
|
-
className: `df-review-item-comment${itemTitle ? "" : " is-primary"}`,
|
|
9088
|
-
children: itemComment
|
|
9089
|
-
}
|
|
9090
|
-
),
|
|
9091
|
-
item.attachments && /* @__PURE__ */ jsx11(QaItemAttachments, { attachments: item.attachments }),
|
|
9092
|
-
!isRemoteSource && /* @__PURE__ */ jsx11(QaItemExternalLinks, { item }),
|
|
9093
|
-
/* @__PURE__ */ jsx11("small", { className: "df-review-item-meta", children: itemMeta }),
|
|
9094
|
-
isMutating && /* @__PURE__ */ jsxs7("small", { className: "df-review-item-saving", "aria-live": "polite", children: [
|
|
9095
|
-
/* @__PURE__ */ jsx11("span", { className: "df-review-spinner", "aria-hidden": "true" }),
|
|
9096
|
-
"Saving QA..."
|
|
9097
|
-
] }),
|
|
9098
|
-
item.submitError && /* @__PURE__ */ jsx11("small", { className: "df-review-item-error", children: item.submitError })
|
|
9247
|
+
itemTitle && /* @__PURE__ */ jsx11("strong", { className: "df-review-item-title", children: itemTitle })
|
|
9099
9248
|
] }),
|
|
9100
9249
|
/* @__PURE__ */ jsxs7(
|
|
9101
9250
|
"div",
|
|
@@ -9153,6 +9302,50 @@ var QaItemCard = ({
|
|
|
9153
9302
|
}
|
|
9154
9303
|
)
|
|
9155
9304
|
] }),
|
|
9305
|
+
/* @__PURE__ */ jsxs7("div", { className: "df-review-item-body", children: [
|
|
9306
|
+
/* @__PURE__ */ jsxs7(
|
|
9307
|
+
"div",
|
|
9308
|
+
{
|
|
9309
|
+
className: `df-review-item-comment-shell${showCommentToggle ? " has-toggle" : ""}${isCommentExpanded ? " is-expanded" : " is-collapsed"}`,
|
|
9310
|
+
children: [
|
|
9311
|
+
/* @__PURE__ */ jsx11(
|
|
9312
|
+
"p",
|
|
9313
|
+
{
|
|
9314
|
+
className: `df-review-item-comment${itemTitle ? "" : " is-primary"}${isCommentExpanded ? " is-expanded" : " is-collapsed"}`,
|
|
9315
|
+
ref: commentRef,
|
|
9316
|
+
children: itemComment
|
|
9317
|
+
}
|
|
9318
|
+
),
|
|
9319
|
+
showCommentToggle && /* @__PURE__ */ jsxs7(
|
|
9320
|
+
"button",
|
|
9321
|
+
{
|
|
9322
|
+
"aria-expanded": isCommentExpanded,
|
|
9323
|
+
"aria-label": isCommentExpanded ? "Collapse QA content" : "Expand QA content",
|
|
9324
|
+
className: "df-review-item-comment-more",
|
|
9325
|
+
title: isCommentExpanded ? "Collapse QA content" : "Expand QA content",
|
|
9326
|
+
type: "button",
|
|
9327
|
+
onClick: (event) => {
|
|
9328
|
+
event.stopPropagation();
|
|
9329
|
+
setIsCommentExpanded((current) => !current);
|
|
9330
|
+
},
|
|
9331
|
+
children: [
|
|
9332
|
+
/* @__PURE__ */ jsx11("span", { children: isCommentExpanded ? "Less" : "More" }),
|
|
9333
|
+
isCommentExpanded ? /* @__PURE__ */ jsx11(ChevronUp, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx11(ChevronDown, { "aria-hidden": "true" })
|
|
9334
|
+
]
|
|
9335
|
+
}
|
|
9336
|
+
)
|
|
9337
|
+
]
|
|
9338
|
+
}
|
|
9339
|
+
),
|
|
9340
|
+
item.attachments && /* @__PURE__ */ jsx11(QaItemAttachments, { attachments: item.attachments }),
|
|
9341
|
+
!isRemoteSource && /* @__PURE__ */ jsx11(QaItemExternalLinks, { item }),
|
|
9342
|
+
/* @__PURE__ */ jsx11("small", { className: "df-review-item-meta", children: itemMeta }),
|
|
9343
|
+
isMutating && /* @__PURE__ */ jsxs7("small", { className: "df-review-item-saving", "aria-live": "polite", children: [
|
|
9344
|
+
/* @__PURE__ */ jsx11("span", { className: "df-review-spinner", "aria-hidden": "true" }),
|
|
9345
|
+
"Saving QA..."
|
|
9346
|
+
] }),
|
|
9347
|
+
item.submitError && /* @__PURE__ */ jsx11("small", { className: "df-review-item-error", children: item.submitError })
|
|
9348
|
+
] }),
|
|
9156
9349
|
/* @__PURE__ */ jsxs7("div", { className: "df-review-item-actions", children: [
|
|
9157
9350
|
/* @__PURE__ */ jsxs7("div", { className: "df-review-item-workflow-actions", children: [
|
|
9158
9351
|
/* @__PURE__ */ jsx11(
|
|
@@ -9259,6 +9452,7 @@ var QaPanelHeader = ({
|
|
|
9259
9452
|
sourceEntries,
|
|
9260
9453
|
statusOptions,
|
|
9261
9454
|
onChangeReviewSource,
|
|
9455
|
+
onEnableActiveQaStatusFilters,
|
|
9262
9456
|
onQaStatusFilterToggle,
|
|
9263
9457
|
onRefreshReviewData
|
|
9264
9458
|
}) => {
|
|
@@ -9302,30 +9496,45 @@ var QaPanelHeader = ({
|
|
|
9302
9496
|
)
|
|
9303
9497
|
] })
|
|
9304
9498
|
] }),
|
|
9305
|
-
/* @__PURE__ */
|
|
9499
|
+
/* @__PURE__ */ jsxs8(
|
|
9306
9500
|
"div",
|
|
9307
9501
|
{
|
|
9308
9502
|
className: "df-review-status-toggle-row",
|
|
9309
9503
|
"aria-label": "QA status filters",
|
|
9310
|
-
children:
|
|
9311
|
-
|
|
9312
|
-
const count = qaStatusFilterCounts.get(statusOption.value) ?? 0;
|
|
9313
|
-
return /* @__PURE__ */ jsxs8(
|
|
9504
|
+
children: [
|
|
9505
|
+
/* @__PURE__ */ jsx12(
|
|
9314
9506
|
"button",
|
|
9315
9507
|
{
|
|
9316
|
-
"aria-label":
|
|
9317
|
-
"aria-pressed":
|
|
9318
|
-
className: `df-review-status-toggle
|
|
9508
|
+
"aria-label": "Show all non-done QA",
|
|
9509
|
+
"aria-pressed": !hasActiveFilter,
|
|
9510
|
+
className: `df-review-status-toggle df-review-status-preset-toggle${!hasActiveFilter ? " is-active" : ""}`,
|
|
9511
|
+
"data-review-tooltip": "Show all non-done QA",
|
|
9512
|
+
title: "Show all non-done QA",
|
|
9319
9513
|
type: "button",
|
|
9320
|
-
onClick:
|
|
9321
|
-
children:
|
|
9322
|
-
|
|
9323
|
-
|
|
9324
|
-
|
|
9325
|
-
|
|
9326
|
-
statusOption.value
|
|
9327
|
-
|
|
9328
|
-
|
|
9514
|
+
onClick: onEnableActiveQaStatusFilters,
|
|
9515
|
+
children: /* @__PURE__ */ jsx12(CheckCheck, { "aria-hidden": "true" })
|
|
9516
|
+
}
|
|
9517
|
+
),
|
|
9518
|
+
statusFilterOptions.map((statusOption) => {
|
|
9519
|
+
const isActive = qaStatusFilters.includes(statusOption.value);
|
|
9520
|
+
const count = qaStatusFilterCounts.get(statusOption.value) ?? 0;
|
|
9521
|
+
return /* @__PURE__ */ jsxs8(
|
|
9522
|
+
"button",
|
|
9523
|
+
{
|
|
9524
|
+
"aria-label": `${statusOption.label} QA (${count})`,
|
|
9525
|
+
"aria-pressed": isActive,
|
|
9526
|
+
className: `df-review-status-toggle is-status-${statusOption.value}${isActive ? " is-active" : ""}`,
|
|
9527
|
+
type: "button",
|
|
9528
|
+
onClick: () => onQaStatusFilterToggle(statusOption.value),
|
|
9529
|
+
children: [
|
|
9530
|
+
/* @__PURE__ */ jsx12("span", { children: statusOption.label }),
|
|
9531
|
+
/* @__PURE__ */ jsx12("strong", { children: count })
|
|
9532
|
+
]
|
|
9533
|
+
},
|
|
9534
|
+
statusOption.value
|
|
9535
|
+
);
|
|
9536
|
+
})
|
|
9537
|
+
]
|
|
9329
9538
|
}
|
|
9330
9539
|
)
|
|
9331
9540
|
] });
|
|
@@ -9383,6 +9592,7 @@ var ReviewQaPanel = ({
|
|
|
9383
9592
|
onCopyItemPrompt,
|
|
9384
9593
|
onCopyRemoteIssuePath,
|
|
9385
9594
|
onEditItem,
|
|
9595
|
+
onEnableActiveQaStatusFilters,
|
|
9386
9596
|
onQaStatusFilterToggle,
|
|
9387
9597
|
onRefreshReviewData,
|
|
9388
9598
|
onRemoveItem,
|
|
@@ -9390,9 +9600,9 @@ var ReviewQaPanel = ({
|
|
|
9390
9600
|
onSubmitItem,
|
|
9391
9601
|
onToggleItemOverlayVisibility
|
|
9392
9602
|
}) => {
|
|
9393
|
-
const listRef =
|
|
9603
|
+
const listRef = useRef4(null);
|
|
9394
9604
|
const emptyMessage = isAllQaVisible ? `No ${activeAdapterEntry.label} QA.` : isRemoteSource ? `No ${activeAdapterEntry.label} QA on this page.` : "No QA on this page.";
|
|
9395
|
-
|
|
9605
|
+
useEffect5(() => {
|
|
9396
9606
|
if (!isListVisible || !selectedItemId) return;
|
|
9397
9607
|
const selectedCard = Array.from(
|
|
9398
9608
|
listRef.current?.querySelectorAll(
|
|
@@ -9422,6 +9632,7 @@ var ReviewQaPanel = ({
|
|
|
9422
9632
|
sourceEntries,
|
|
9423
9633
|
statusOptions: activeAdapterEntry.statusOptions,
|
|
9424
9634
|
onChangeReviewSource,
|
|
9635
|
+
onEnableActiveQaStatusFilters,
|
|
9425
9636
|
onQaStatusFilterToggle,
|
|
9426
9637
|
onRefreshReviewData
|
|
9427
9638
|
}
|
|
@@ -9852,6 +10063,11 @@ var useReviewQaPanelData = () => {
|
|
|
9852
10063
|
},
|
|
9853
10064
|
[qaStatusFilters, setQaStatusFiltersState]
|
|
9854
10065
|
);
|
|
10066
|
+
const showActiveQaStatusFilters = useCallback5(() => {
|
|
10067
|
+
const defaultFilters = getDefaultReviewQaStatusFilters();
|
|
10068
|
+
setQaStatusFiltersState(defaultFilters);
|
|
10069
|
+
writeStoredReviewQaStatusFilters(defaultFilters);
|
|
10070
|
+
}, [setQaStatusFiltersState]);
|
|
9855
10071
|
const currentPresetScope = getViewportPresetKind(size);
|
|
9856
10072
|
return {
|
|
9857
10073
|
activeItems,
|
|
@@ -9860,6 +10076,7 @@ var useReviewQaPanelData = () => {
|
|
|
9860
10076
|
filteredNumberedActiveItems,
|
|
9861
10077
|
getItemPresetScope,
|
|
9862
10078
|
qaStatusFilterCounts,
|
|
10079
|
+
showActiveQaStatusFilters,
|
|
9863
10080
|
toggleQaStatusFilter
|
|
9864
10081
|
};
|
|
9865
10082
|
};
|
|
@@ -9904,6 +10121,7 @@ var QaPanelContainer = () => {
|
|
|
9904
10121
|
filteredNumberedActiveItems,
|
|
9905
10122
|
getItemPresetScope,
|
|
9906
10123
|
qaStatusFilterCounts,
|
|
10124
|
+
showActiveQaStatusFilters,
|
|
9907
10125
|
toggleQaStatusFilter
|
|
9908
10126
|
} = useReviewQaPanelData();
|
|
9909
10127
|
const {
|
|
@@ -9968,6 +10186,7 @@ var QaPanelContainer = () => {
|
|
|
9968
10186
|
onCopyItemPrompt: (numberedItem) => void copyItemPrompt(numberedItem),
|
|
9969
10187
|
onCopyRemoteIssuePath: copyRemoteIssuePath,
|
|
9970
10188
|
onEditItem: setEditingItem,
|
|
10189
|
+
onEnableActiveQaStatusFilters: showActiveQaStatusFilters,
|
|
9971
10190
|
onQaStatusFilterToggle: toggleQaStatusFilter,
|
|
9972
10191
|
onRefreshReviewData: refreshReviewData2,
|
|
9973
10192
|
onRemoveItem: removeItem,
|
|
@@ -9982,10 +10201,10 @@ var QaPanelContainer = () => {
|
|
|
9982
10201
|
// src/react-shell/hooks/use.review.section.outline.ts
|
|
9983
10202
|
import {
|
|
9984
10203
|
useCallback as useCallback6,
|
|
9985
|
-
useEffect as
|
|
10204
|
+
useEffect as useEffect6,
|
|
9986
10205
|
useMemo as useMemo5,
|
|
9987
|
-
useRef as
|
|
9988
|
-
useState as
|
|
10206
|
+
useRef as useRef5,
|
|
10207
|
+
useState as useState6
|
|
9989
10208
|
} from "react";
|
|
9990
10209
|
|
|
9991
10210
|
// src/react-shell/review/shell.helpers.ts
|
|
@@ -10821,13 +11040,13 @@ function useReviewSectionOutline({
|
|
|
10821
11040
|
const showToast = useReviewToast();
|
|
10822
11041
|
const isPanelVisible = isListVisible && sidePanel === "source";
|
|
10823
11042
|
const targetSrc = useMemo5(() => buildTargetSrc(target), [target]);
|
|
10824
|
-
const sectionOutlineCountRef =
|
|
10825
|
-
const [sectionOutline, setSectionOutline] =
|
|
10826
|
-
const [sectionOutlineFilter, setSectionOutlineFilter] =
|
|
11043
|
+
const sectionOutlineCountRef = useRef5(0);
|
|
11044
|
+
const [sectionOutline, setSectionOutline] = useState6(null);
|
|
11045
|
+
const [sectionOutlineFilter, setSectionOutlineFilter] = useState6(
|
|
10827
11046
|
() => getStoredSourceTreeFilter()
|
|
10828
11047
|
);
|
|
10829
|
-
const [sectionOutlineMetaVisibility, setSectionOutlineMetaVisibility] =
|
|
10830
|
-
const [collapsedSectionOutlineIds, setCollapsedSectionOutlineIds] =
|
|
11048
|
+
const [sectionOutlineMetaVisibility, setSectionOutlineMetaVisibility] = useState6(() => getStoredSourceTreeMetaVisibility());
|
|
11049
|
+
const [collapsedSectionOutlineIds, setCollapsedSectionOutlineIds] = useState6(() => /* @__PURE__ */ new Set());
|
|
10831
11050
|
const updateSectionOutlineFilter = useCallback6((nextFilter) => {
|
|
10832
11051
|
setSectionOutlineFilter(nextFilter);
|
|
10833
11052
|
writeStoredSourceTreeFilter(nextFilter);
|
|
@@ -10859,10 +11078,10 @@ function useReviewSectionOutline({
|
|
|
10859
11078
|
[filteredSectionOutline]
|
|
10860
11079
|
);
|
|
10861
11080
|
const isSectionOutlineFiltering = sectionOutlineFilterTerms.length > 0;
|
|
10862
|
-
|
|
11081
|
+
useEffect6(() => {
|
|
10863
11082
|
sectionOutlineCountRef.current = sectionOutlineTotalCount;
|
|
10864
11083
|
}, [sectionOutlineTotalCount]);
|
|
10865
|
-
|
|
11084
|
+
useEffect6(() => {
|
|
10866
11085
|
onClearSourceInspector();
|
|
10867
11086
|
setCollapsedSectionOutlineIds(/* @__PURE__ */ new Set());
|
|
10868
11087
|
setSectionOutline(null);
|
|
@@ -10899,7 +11118,7 @@ function useReviewSectionOutline({
|
|
|
10899
11118
|
},
|
|
10900
11119
|
[getCurrentSectionOutline]
|
|
10901
11120
|
);
|
|
10902
|
-
|
|
11121
|
+
useEffect6(() => {
|
|
10903
11122
|
if (!isPanelVisible) return void 0;
|
|
10904
11123
|
const refreshSectionOutline = () => {
|
|
10905
11124
|
refreshCurrentSectionOutline(true);
|
|
@@ -10920,7 +11139,7 @@ function useReviewSectionOutline({
|
|
|
10920
11139
|
targetFrameLoadVersion,
|
|
10921
11140
|
targetSrc
|
|
10922
11141
|
]);
|
|
10923
|
-
|
|
11142
|
+
useEffect6(() => {
|
|
10924
11143
|
if (!isPanelVisible) return void 0;
|
|
10925
11144
|
const frameDocument = iframeRef.current?.contentDocument;
|
|
10926
11145
|
const body = frameDocument?.body;
|
|
@@ -11561,7 +11780,7 @@ function FigmaRailIcon() {
|
|
|
11561
11780
|
}
|
|
11562
11781
|
|
|
11563
11782
|
// src/react-shell/presence/overlay.tsx
|
|
11564
|
-
import { useState as
|
|
11783
|
+
import { useState as useState7 } from "react";
|
|
11565
11784
|
import { jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
11566
11785
|
var getPresenceName = (user) => user.displayName || user.userId;
|
|
11567
11786
|
var PresenceUserIcon = () => /* @__PURE__ */ jsxs13("svg", { "aria-hidden": "true", viewBox: "0 0 30 30", children: [
|
|
@@ -11590,7 +11809,7 @@ var PresenceOverlay = ({
|
|
|
11590
11809
|
presenceSessionId,
|
|
11591
11810
|
users
|
|
11592
11811
|
}) => {
|
|
11593
|
-
const [isExpanded, setIsExpanded] =
|
|
11812
|
+
const [isExpanded, setIsExpanded] = useState7(false);
|
|
11594
11813
|
if (users.length === 0) return null;
|
|
11595
11814
|
return /* @__PURE__ */ jsxs13(
|
|
11596
11815
|
"div",
|
|
@@ -11823,8 +12042,8 @@ var ReviewSideRailContainer = () => {
|
|
|
11823
12042
|
|
|
11824
12043
|
// src/react-shell/review/shell.frame.tsx
|
|
11825
12044
|
import {
|
|
11826
|
-
useEffect as
|
|
11827
|
-
useRef as
|
|
12045
|
+
useEffect as useEffect7,
|
|
12046
|
+
useRef as useRef6
|
|
11828
12047
|
} from "react";
|
|
11829
12048
|
import { jsxs as jsxs16 } from "react/jsx-runtime";
|
|
11830
12049
|
var getTooltipElements = (root) => Array.from(root.querySelectorAll("[data-review-tooltip]"));
|
|
@@ -11859,8 +12078,8 @@ var ReviewShellFrame = ({
|
|
|
11859
12078
|
isListVisible,
|
|
11860
12079
|
slots
|
|
11861
12080
|
}) => {
|
|
11862
|
-
const rootRef =
|
|
11863
|
-
|
|
12081
|
+
const rootRef = useRef6(null);
|
|
12082
|
+
useEffect7(() => {
|
|
11864
12083
|
const root = rootRef.current;
|
|
11865
12084
|
if (!root) return void 0;
|
|
11866
12085
|
syncNativeTooltipTitles(root, areTooltipsEnabled);
|
|
@@ -12339,7 +12558,7 @@ var ReviewSettingsModal = ({
|
|
|
12339
12558
|
// src/react-shell/sitemap/modal.tsx
|
|
12340
12559
|
import {
|
|
12341
12560
|
useMemo as useMemo6,
|
|
12342
|
-
useState as
|
|
12561
|
+
useState as useState8
|
|
12343
12562
|
} from "react";
|
|
12344
12563
|
|
|
12345
12564
|
// src/react-shell/sitemap/tree.ts
|
|
@@ -12628,14 +12847,14 @@ var SitemapModal = ({
|
|
|
12628
12847
|
onSelectAllQa,
|
|
12629
12848
|
onSelectPage
|
|
12630
12849
|
}) => {
|
|
12631
|
-
const [sort, setSort] =
|
|
12850
|
+
const [sort, setSort] = useState8({
|
|
12632
12851
|
key: "page",
|
|
12633
12852
|
direction: "asc"
|
|
12634
12853
|
});
|
|
12635
|
-
const [collapsedFolderHrefs, setCollapsedFolderHrefs] =
|
|
12854
|
+
const [collapsedFolderHrefs, setCollapsedFolderHrefs] = useState8(
|
|
12636
12855
|
() => /* @__PURE__ */ new Set()
|
|
12637
12856
|
);
|
|
12638
|
-
const [searchQuery, setSearchQuery] =
|
|
12857
|
+
const [searchQuery, setSearchQuery] = useState8("");
|
|
12639
12858
|
const trimmedSearchQuery = searchQuery.trim();
|
|
12640
12859
|
const allQaUsers = useMemo6(
|
|
12641
12860
|
() => mergePresenceUsers(Array.from(pagePresenceUsers.values()).flat()),
|
|
@@ -12971,6 +13190,7 @@ var useReviewShellData = () => {
|
|
|
12971
13190
|
const presetScopeCounts = useMemo7(() => {
|
|
12972
13191
|
const counts = /* @__PURE__ */ new Map();
|
|
12973
13192
|
activeItems.forEach((item) => {
|
|
13193
|
+
if (normalizeReviewItemStatus(item.status) === SITEMAP_STATUS_DONE2) return;
|
|
12974
13194
|
const scope = getItemPresetScope(item);
|
|
12975
13195
|
counts.set(scope, (counts.get(scope) ?? 0) + 1);
|
|
12976
13196
|
});
|
|
@@ -13504,7 +13724,7 @@ var RulerOverlay = () => {
|
|
|
13504
13724
|
};
|
|
13505
13725
|
|
|
13506
13726
|
// src/react-shell/target/figma.image.overlay.ts
|
|
13507
|
-
import { useCallback as useCallback9, useEffect as
|
|
13727
|
+
import { useCallback as useCallback9, useEffect as useEffect8, useRef as useRef7 } from "react";
|
|
13508
13728
|
|
|
13509
13729
|
// src/react-shell/target/target.ts
|
|
13510
13730
|
var HIDE_SCROLLBAR_STYLE_ID = "df-review-hide-scrollbar";
|
|
@@ -13694,7 +13914,7 @@ var useTargetFigmaImageOverlays = ({
|
|
|
13694
13914
|
size,
|
|
13695
13915
|
targetSrc
|
|
13696
13916
|
}) => {
|
|
13697
|
-
const targetDocumentRef =
|
|
13917
|
+
const targetDocumentRef = useRef7(null);
|
|
13698
13918
|
const overlaySignature = createTargetFigmaImageOverlaySignature(
|
|
13699
13919
|
figmaImageOverlays
|
|
13700
13920
|
);
|
|
@@ -13723,10 +13943,10 @@ var useTargetFigmaImageOverlays = ({
|
|
|
13723
13943
|
size,
|
|
13724
13944
|
targetSrc
|
|
13725
13945
|
]);
|
|
13726
|
-
|
|
13946
|
+
useEffect8(() => {
|
|
13727
13947
|
syncTargetFigmaImageOverlays();
|
|
13728
13948
|
}, [syncTargetFigmaImageOverlays]);
|
|
13729
|
-
|
|
13949
|
+
useEffect8(() => {
|
|
13730
13950
|
return () => {
|
|
13731
13951
|
if (!targetDocumentRef.current) return;
|
|
13732
13952
|
removeTargetFigmaImageOverlays(targetDocumentRef.current);
|
|
@@ -13937,13 +14157,73 @@ function normalizeTargetFigmaImageOffsetY(value) {
|
|
|
13937
14157
|
|
|
13938
14158
|
// src/react-shell/target/outside.markers.tsx
|
|
13939
14159
|
import {
|
|
13940
|
-
useEffect as
|
|
14160
|
+
useEffect as useEffect9,
|
|
13941
14161
|
useMemo as useMemo8,
|
|
13942
|
-
useRef as
|
|
13943
|
-
useState as
|
|
14162
|
+
useRef as useRef8,
|
|
14163
|
+
useState as useState9
|
|
13944
14164
|
} from "react";
|
|
13945
14165
|
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
13946
14166
|
var OUTSIDE_MARKER_HEIGHT = 22;
|
|
14167
|
+
var OUTSIDE_MARKER_CONNECTOR_TOP = 10;
|
|
14168
|
+
var OUTSIDE_MARKER_GAP = 6;
|
|
14169
|
+
var OUTSIDE_MARKER_SPACING = OUTSIDE_MARKER_HEIGHT + OUTSIDE_MARKER_GAP;
|
|
14170
|
+
var clampMarkerTop = (top, maxTop) => Math.max(0, Math.min(maxTop, top));
|
|
14171
|
+
var toMarkerPixel = (value) => Math.round(value * 100) / 100;
|
|
14172
|
+
var arrangeOutsideMarkerLayout = (markers, viewportHeight) => {
|
|
14173
|
+
if (markers.length === 0) return [];
|
|
14174
|
+
const maxTop = Math.max(0, viewportHeight - OUTSIDE_MARKER_HEIGHT);
|
|
14175
|
+
const sorted = markers.map((marker, index) => ({
|
|
14176
|
+
marker,
|
|
14177
|
+
index,
|
|
14178
|
+
anchorTop: clampMarkerTop(marker.anchorTop, maxTop),
|
|
14179
|
+
top: clampMarkerTop(marker.anchorTop, maxTop)
|
|
14180
|
+
})).sort(
|
|
14181
|
+
(a, b) => a.anchorTop - b.anchorTop || a.index - b.index
|
|
14182
|
+
);
|
|
14183
|
+
for (let index = 1; index < sorted.length; index += 1) {
|
|
14184
|
+
sorted[index].top = Math.max(
|
|
14185
|
+
sorted[index].top,
|
|
14186
|
+
sorted[index - 1].top + OUTSIDE_MARKER_SPACING
|
|
14187
|
+
);
|
|
14188
|
+
}
|
|
14189
|
+
if (sorted[sorted.length - 1].top > maxTop) {
|
|
14190
|
+
sorted[sorted.length - 1].top = maxTop;
|
|
14191
|
+
for (let index = sorted.length - 2; index >= 0; index -= 1) {
|
|
14192
|
+
sorted[index].top = Math.min(
|
|
14193
|
+
sorted[index].top,
|
|
14194
|
+
sorted[index + 1].top - OUTSIDE_MARKER_SPACING
|
|
14195
|
+
);
|
|
14196
|
+
}
|
|
14197
|
+
}
|
|
14198
|
+
if (sorted[0].top < 0) {
|
|
14199
|
+
const spacing = sorted.length > 1 ? maxTop / (sorted.length - 1) : 0;
|
|
14200
|
+
sorted.forEach((marker, index) => {
|
|
14201
|
+
marker.top = index * spacing;
|
|
14202
|
+
});
|
|
14203
|
+
}
|
|
14204
|
+
return sorted.map(({ marker, index, anchorTop, top }) => {
|
|
14205
|
+
const safeTop = clampMarkerTop(top, maxTop);
|
|
14206
|
+
const connectorTop = anchorTop - safeTop + OUTSIDE_MARKER_CONNECTOR_TOP;
|
|
14207
|
+
const connectorStemTop = Math.min(
|
|
14208
|
+
OUTSIDE_MARKER_CONNECTOR_TOP,
|
|
14209
|
+
connectorTop
|
|
14210
|
+
);
|
|
14211
|
+
const connectorStemHeight = Math.abs(
|
|
14212
|
+
connectorTop - OUTSIDE_MARKER_CONNECTOR_TOP
|
|
14213
|
+
);
|
|
14214
|
+
return {
|
|
14215
|
+
index,
|
|
14216
|
+
marker: {
|
|
14217
|
+
...marker,
|
|
14218
|
+
anchorTop: toMarkerPixel(anchorTop),
|
|
14219
|
+
top: toMarkerPixel(safeTop),
|
|
14220
|
+
connectorTop: toMarkerPixel(connectorTop),
|
|
14221
|
+
connectorStemTop: toMarkerPixel(connectorStemTop),
|
|
14222
|
+
connectorStemHeight: toMarkerPixel(connectorStemHeight)
|
|
14223
|
+
}
|
|
14224
|
+
};
|
|
14225
|
+
}).sort((a, b) => a.index - b.index).map(({ marker }) => marker);
|
|
14226
|
+
};
|
|
13947
14227
|
var createTargetEnvironment = (iframe) => {
|
|
13948
14228
|
const targetWindow = iframe?.contentWindow;
|
|
13949
14229
|
const targetDocument = iframe?.contentDocument;
|
|
@@ -13996,9 +14276,9 @@ var ReviewOutsideMarkers = () => {
|
|
|
13996
14276
|
(state) => state.setIsListVisible
|
|
13997
14277
|
);
|
|
13998
14278
|
const setSidePanel = useReviewShellStore((state) => state.setSidePanel);
|
|
13999
|
-
const [layoutVersion, setLayoutVersion] =
|
|
14000
|
-
const frameUpdateRef =
|
|
14001
|
-
|
|
14279
|
+
const [layoutVersion, setLayoutVersion] = useState9(0);
|
|
14280
|
+
const frameUpdateRef = useRef8(null);
|
|
14281
|
+
useEffect9(() => {
|
|
14002
14282
|
const targetWindow = iframeRef.current?.contentWindow;
|
|
14003
14283
|
const frameScroll = frameScrollRef.current;
|
|
14004
14284
|
if (!targetWindow) return void 0;
|
|
@@ -14030,27 +14310,26 @@ var ReviewOutsideMarkers = () => {
|
|
|
14030
14310
|
if (!environment) return [];
|
|
14031
14311
|
const hiddenItemIds = new Set(hiddenOverlayItemIdList);
|
|
14032
14312
|
const currentScope = getReviewViewportScope(size, reviewViewportPresets);
|
|
14033
|
-
|
|
14034
|
-
|
|
14035
|
-
|
|
14036
|
-
|
|
14037
|
-
|
|
14038
|
-
|
|
14039
|
-
|
|
14040
|
-
|
|
14041
|
-
|
|
14042
|
-
|
|
14043
|
-
|
|
14044
|
-
|
|
14045
|
-
|
|
14046
|
-
|
|
14047
|
-
|
|
14048
|
-
|
|
14049
|
-
|
|
14050
|
-
|
|
14051
|
-
|
|
14052
|
-
|
|
14053
|
-
}
|
|
14313
|
+
const rawMarkers = getNumberedReviewItems(
|
|
14314
|
+
activeItems,
|
|
14315
|
+
reviewViewportPresets
|
|
14316
|
+
).flatMap((numberedItem) => {
|
|
14317
|
+
const { item, scope, displayLabel } = numberedItem;
|
|
14318
|
+
if (hiddenItemIds.has(item.id)) return [];
|
|
14319
|
+
if (!shouldShowMarkerForScope(scope, currentScope)) return [];
|
|
14320
|
+
const top = getOutsideMarkerTop(item, environment);
|
|
14321
|
+
if (typeof top !== "number") return [];
|
|
14322
|
+
const hostTop = toHostPoint({ x: 0, y: top }, environment).y;
|
|
14323
|
+
return {
|
|
14324
|
+
item,
|
|
14325
|
+
label: displayLabel,
|
|
14326
|
+
scope,
|
|
14327
|
+
anchorTop: hostTop
|
|
14328
|
+
};
|
|
14329
|
+
});
|
|
14330
|
+
return arrangeOutsideMarkerLayout(
|
|
14331
|
+
rawMarkers,
|
|
14332
|
+
environment.viewportRect.height
|
|
14054
14333
|
);
|
|
14055
14334
|
}, [
|
|
14056
14335
|
activeItems,
|
|
@@ -14061,24 +14340,34 @@ var ReviewOutsideMarkers = () => {
|
|
|
14061
14340
|
size
|
|
14062
14341
|
]);
|
|
14063
14342
|
if (markers.length === 0) return null;
|
|
14064
|
-
return /* @__PURE__ */ jsx35("div", { className: "df-review-outside-marker-layer", "aria-label": "QA markers", children: markers.map((marker) =>
|
|
14065
|
-
|
|
14066
|
-
{
|
|
14067
|
-
|
|
14068
|
-
|
|
14069
|
-
|
|
14070
|
-
|
|
14071
|
-
|
|
14072
|
-
|
|
14073
|
-
|
|
14074
|
-
|
|
14075
|
-
|
|
14076
|
-
|
|
14343
|
+
return /* @__PURE__ */ jsx35("div", { className: "df-review-outside-marker-layer", "aria-label": "QA markers", children: markers.map((marker) => {
|
|
14344
|
+
const isActive = marker.item.id === selectedItemId;
|
|
14345
|
+
const style = {
|
|
14346
|
+
top: `${marker.top}px`,
|
|
14347
|
+
"--df-review-outside-marker-connector-top": `${marker.connectorTop}px`,
|
|
14348
|
+
"--df-review-outside-marker-connector-stem-top": `${marker.connectorStemTop}px`,
|
|
14349
|
+
"--df-review-outside-marker-connector-stem-height": `${marker.connectorStemHeight}px`,
|
|
14350
|
+
"--df-review-outside-marker-z-index": isActive ? 2 : 1
|
|
14351
|
+
};
|
|
14352
|
+
return /* @__PURE__ */ jsx35(
|
|
14353
|
+
"button",
|
|
14354
|
+
{
|
|
14355
|
+
"aria-label": `Focus ${marker.label}`,
|
|
14356
|
+
className: `df-review-outside-marker is-scope-${marker.scope}${isActive ? " is-active" : ""}`,
|
|
14357
|
+
style,
|
|
14358
|
+
type: "button",
|
|
14359
|
+
onClick: (event) => {
|
|
14360
|
+
event.preventDefault();
|
|
14361
|
+
event.stopPropagation();
|
|
14362
|
+
setSidePanel("qa");
|
|
14363
|
+
setIsListVisible(true);
|
|
14364
|
+
restoreReviewItem(marker.item);
|
|
14365
|
+
},
|
|
14366
|
+
children: marker.label
|
|
14077
14367
|
},
|
|
14078
|
-
|
|
14079
|
-
|
|
14080
|
-
|
|
14081
|
-
)) });
|
|
14368
|
+
marker.item.id
|
|
14369
|
+
);
|
|
14370
|
+
}) });
|
|
14082
14371
|
};
|
|
14083
14372
|
|
|
14084
14373
|
// src/react-shell/target/frame.tsx
|
|
@@ -14160,7 +14449,7 @@ var ReviewTargetFrame = () => {
|
|
|
14160
14449
|
};
|
|
14161
14450
|
|
|
14162
14451
|
// src/react-shell/topbar.container.tsx
|
|
14163
|
-
import { useState as
|
|
14452
|
+
import { useState as useState10 } from "react";
|
|
14164
14453
|
|
|
14165
14454
|
// src/react-shell/topbar.tsx
|
|
14166
14455
|
import { jsx as jsx37, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
@@ -14403,7 +14692,7 @@ var TopbarContainer = () => {
|
|
|
14403
14692
|
(state) => state.setIsSitemapOpen
|
|
14404
14693
|
);
|
|
14405
14694
|
const setSize = useReviewShellStore((state) => state.setSize);
|
|
14406
|
-
const [copyLabel, setCopyLabel] =
|
|
14695
|
+
const [copyLabel, setCopyLabel] = useState10("Copy URL");
|
|
14407
14696
|
const copyCurrentUrl = () => copyCurrentReviewUrl({
|
|
14408
14697
|
onCopyLabelChange: setCopyLabel
|
|
14409
14698
|
});
|
|
@@ -14448,7 +14737,7 @@ import {
|
|
|
14448
14737
|
} from "react";
|
|
14449
14738
|
|
|
14450
14739
|
// src/react-shell/hooks/use.review.command.key.ts
|
|
14451
|
-
import { useEffect as
|
|
14740
|
+
import { useEffect as useEffect10, useState as useState11 } from "react";
|
|
14452
14741
|
var isCommandModifierKeyEvent = (event) => event.key === "Meta" || event.code === "MetaLeft" || event.code === "MetaRight";
|
|
14453
14742
|
var isCommandKeyDownEvent = (event) => isCommandModifierKeyEvent(event) || event.metaKey;
|
|
14454
14743
|
function useReviewCommandKey({
|
|
@@ -14456,8 +14745,8 @@ function useReviewCommandKey({
|
|
|
14456
14745
|
targetFrameLoadVersion,
|
|
14457
14746
|
targetSrc
|
|
14458
14747
|
}) {
|
|
14459
|
-
const [isCommandKeyPressed, setIsCommandKeyPressed] =
|
|
14460
|
-
|
|
14748
|
+
const [isCommandKeyPressed, setIsCommandKeyPressed] = useState11(false);
|
|
14749
|
+
useEffect10(() => {
|
|
14461
14750
|
const targetDocument = iframeRef.current?.contentDocument;
|
|
14462
14751
|
const targetWindow = iframeRef.current?.contentWindow;
|
|
14463
14752
|
const setCommandKeyPressed = (pressed) => {
|
|
@@ -14720,8 +15009,8 @@ function highlightControllerItem(item, controller, isCurrent) {
|
|
|
14720
15009
|
// src/react-shell/hooks/use.review.kit.lifecycle.ts
|
|
14721
15010
|
import {
|
|
14722
15011
|
useCallback as useCallback11,
|
|
14723
|
-
useEffect as
|
|
14724
|
-
useRef as
|
|
15012
|
+
useEffect as useEffect11,
|
|
15013
|
+
useRef as useRef9
|
|
14725
15014
|
} from "react";
|
|
14726
15015
|
|
|
14727
15016
|
// src/react-shell/hooks/review.frame.navigation.ts
|
|
@@ -15383,7 +15672,7 @@ var useReviewKitLifecycle = ({
|
|
|
15383
15672
|
onSyncTargetViewport
|
|
15384
15673
|
}) => {
|
|
15385
15674
|
const storeApi = useReviewShellStoreApi();
|
|
15386
|
-
const hiddenOverlayItemIdListRef =
|
|
15675
|
+
const hiddenOverlayItemIdListRef = useRef9(hiddenOverlayItemIdList);
|
|
15387
15676
|
const destroyReviewKit = useCallback11(() => {
|
|
15388
15677
|
cleanupTargetRef.current?.();
|
|
15389
15678
|
cleanupTargetRef.current = null;
|
|
@@ -15493,13 +15782,13 @@ var useReviewKitLifecycle = ({
|
|
|
15493
15782
|
},
|
|
15494
15783
|
[controllerRef, onModeChange]
|
|
15495
15784
|
);
|
|
15496
|
-
|
|
15497
|
-
|
|
15785
|
+
useEffect11(() => destroyReviewKit, [destroyReviewKit]);
|
|
15786
|
+
useEffect11(() => {
|
|
15498
15787
|
const frameDocument = iframeRef.current?.contentDocument;
|
|
15499
15788
|
if (!frameDocument || frameDocument.readyState !== "complete") return;
|
|
15500
15789
|
initReviewKit();
|
|
15501
15790
|
}, [iframeRef, initReviewKit]);
|
|
15502
|
-
|
|
15791
|
+
useEffect11(() => {
|
|
15503
15792
|
hiddenOverlayItemIdListRef.current = hiddenOverlayItemIdList;
|
|
15504
15793
|
controllerRef.current?.setHiddenItemIds(hiddenOverlayItemIdList);
|
|
15505
15794
|
}, [controllerRef, hiddenOverlayItemIdList]);
|
|
@@ -15512,7 +15801,7 @@ var useReviewKitLifecycle = ({
|
|
|
15512
15801
|
};
|
|
15513
15802
|
|
|
15514
15803
|
// src/react-shell/hooks/use.review.target.overlay.ts
|
|
15515
|
-
import { useCallback as useCallback12, useEffect as
|
|
15804
|
+
import { useCallback as useCallback12, useEffect as useEffect12, useRef as useRef10 } from "react";
|
|
15516
15805
|
var TARGET_OVERLAY_REFRESH_DELAYS = [80, 240, 600];
|
|
15517
15806
|
var useReviewTargetOverlay = ({
|
|
15518
15807
|
iframeRef,
|
|
@@ -15520,7 +15809,7 @@ var useReviewTargetOverlay = ({
|
|
|
15520
15809
|
targetOverlayState,
|
|
15521
15810
|
onTargetOverlayStateChange
|
|
15522
15811
|
}) => {
|
|
15523
|
-
const refreshTimersRef =
|
|
15812
|
+
const refreshTimersRef = useRef10([]);
|
|
15524
15813
|
const clearRefreshTimers = useCallback12(() => {
|
|
15525
15814
|
refreshTimersRef.current.forEach((timer) => window.clearTimeout(timer));
|
|
15526
15815
|
refreshTimersRef.current = [];
|
|
@@ -15583,11 +15872,11 @@ var useReviewTargetOverlay = ({
|
|
|
15583
15872
|
},
|
|
15584
15873
|
[dispatchTargetOverlayHotkey, updateTargetOverlayState]
|
|
15585
15874
|
);
|
|
15586
|
-
|
|
15875
|
+
useEffect12(() => {
|
|
15587
15876
|
if (isFigmaOverlayAvailable || !targetOverlayState.figma) return;
|
|
15588
15877
|
closeTargetOverlay("figma");
|
|
15589
15878
|
}, [closeTargetOverlay, isFigmaOverlayAvailable, targetOverlayState.figma]);
|
|
15590
|
-
|
|
15879
|
+
useEffect12(() => clearRefreshTimers, [clearRefreshTimers]);
|
|
15591
15880
|
return {
|
|
15592
15881
|
closeTargetOverlay,
|
|
15593
15882
|
refreshTargetOverlayState,
|
|
@@ -15598,7 +15887,7 @@ var useReviewTargetOverlay = ({
|
|
|
15598
15887
|
// src/react-shell/hooks/use.review.target.sync.ts
|
|
15599
15888
|
import {
|
|
15600
15889
|
useCallback as useCallback13,
|
|
15601
|
-
useEffect as
|
|
15890
|
+
useEffect as useEffect13
|
|
15602
15891
|
} from "react";
|
|
15603
15892
|
var useReviewTargetSync = ({
|
|
15604
15893
|
iframeRef,
|
|
@@ -15648,10 +15937,10 @@ var useReviewTargetSync = ({
|
|
|
15648
15937
|
storeApi
|
|
15649
15938
|
]
|
|
15650
15939
|
);
|
|
15651
|
-
|
|
15940
|
+
useEffect13(() => {
|
|
15652
15941
|
onActiveRouteChange(getTargetRouteKey(target, reviewPathPrefix));
|
|
15653
15942
|
}, [onActiveRouteChange, reviewPathPrefix, target]);
|
|
15654
|
-
|
|
15943
|
+
useEffect13(() => {
|
|
15655
15944
|
const { target: currentTarget, selectedItemId } = storeApi.getState();
|
|
15656
15945
|
if (selectedItemId) {
|
|
15657
15946
|
updateShellUrlForItem(currentTarget, size, selectedItemId, source);
|
|
@@ -15822,17 +16111,17 @@ var useReviewController = ({
|
|
|
15822
16111
|
// src/react-shell/hooks/use.review.ruler.ts
|
|
15823
16112
|
import {
|
|
15824
16113
|
useCallback as useCallback16,
|
|
15825
|
-
useEffect as
|
|
15826
|
-
useState as
|
|
16114
|
+
useEffect as useEffect15,
|
|
16115
|
+
useState as useState13
|
|
15827
16116
|
} from "react";
|
|
15828
16117
|
|
|
15829
16118
|
// src/react-shell/hooks/use.review.ruler.drag.ts
|
|
15830
16119
|
import {
|
|
15831
16120
|
useCallback as useCallback15,
|
|
15832
|
-
useEffect as
|
|
16121
|
+
useEffect as useEffect14,
|
|
15833
16122
|
useMemo as useMemo11,
|
|
15834
|
-
useRef as
|
|
15835
|
-
useState as
|
|
16123
|
+
useRef as useRef11,
|
|
16124
|
+
useState as useState12
|
|
15836
16125
|
} from "react";
|
|
15837
16126
|
|
|
15838
16127
|
// src/react-shell/ruler/ruler.ts
|
|
@@ -15862,14 +16151,14 @@ var useReviewRulerDrag = ({
|
|
|
15862
16151
|
size,
|
|
15863
16152
|
targetSrc
|
|
15864
16153
|
}) => {
|
|
15865
|
-
const rulerOverlayRef =
|
|
15866
|
-
const rulerDragRectRef =
|
|
15867
|
-
const isRulerDraggingRef =
|
|
15868
|
-
const sizeRef =
|
|
15869
|
-
const [rulerStart, setRulerStart] =
|
|
15870
|
-
const [rulerPoint, setRulerPoint] =
|
|
15871
|
-
const [rulerHover, setRulerHover] =
|
|
15872
|
-
const [isRulerDragging, setIsRulerDragging] =
|
|
16154
|
+
const rulerOverlayRef = useRef11(null);
|
|
16155
|
+
const rulerDragRectRef = useRef11(null);
|
|
16156
|
+
const isRulerDraggingRef = useRef11(false);
|
|
16157
|
+
const sizeRef = useRef11(size);
|
|
16158
|
+
const [rulerStart, setRulerStart] = useState12(null);
|
|
16159
|
+
const [rulerPoint, setRulerPoint] = useState12(null);
|
|
16160
|
+
const [rulerHover, setRulerHover] = useState12(null);
|
|
16161
|
+
const [isRulerDragging, setIsRulerDragging] = useState12(false);
|
|
15873
16162
|
const rulerMeasure = useMemo11(
|
|
15874
16163
|
() => getRulerMeasure(rulerStart, rulerPoint),
|
|
15875
16164
|
[rulerPoint, rulerStart]
|
|
@@ -15901,10 +16190,10 @@ var useReviewRulerDrag = ({
|
|
|
15901
16190
|
},
|
|
15902
16191
|
[]
|
|
15903
16192
|
);
|
|
15904
|
-
|
|
16193
|
+
useEffect14(() => {
|
|
15905
16194
|
sizeRef.current = size;
|
|
15906
16195
|
}, [size]);
|
|
15907
|
-
|
|
16196
|
+
useEffect14(() => {
|
|
15908
16197
|
if (!isRulerVisible || !isRulerAvailable) return void 0;
|
|
15909
16198
|
const getRulerEventClientPoint = (event) => {
|
|
15910
16199
|
const frame2 = iframeRef.current;
|
|
@@ -16018,7 +16307,7 @@ var useReviewRulerDrag = ({
|
|
|
16018
16307
|
isRulerVisible,
|
|
16019
16308
|
startRulerDrag
|
|
16020
16309
|
]);
|
|
16021
|
-
|
|
16310
|
+
useEffect14(() => {
|
|
16022
16311
|
clearRulerMeasure();
|
|
16023
16312
|
}, [clearRulerMeasure, size.height, size.width, targetSrc]);
|
|
16024
16313
|
return {
|
|
@@ -16039,7 +16328,7 @@ var useReviewRuler = ({
|
|
|
16039
16328
|
onCancelReviewMode,
|
|
16040
16329
|
onCloseTransientPanels
|
|
16041
16330
|
}) => {
|
|
16042
|
-
const [isRulerVisible, setIsRulerVisible] =
|
|
16331
|
+
const [isRulerVisible, setIsRulerVisible] = useState13(false);
|
|
16043
16332
|
const isRulerAvailable = ruler?.enabled !== false && typeof size.designWidth === "number" && size.designWidth > 0;
|
|
16044
16333
|
const rulerUnit = ruler?.unit ?? "px";
|
|
16045
16334
|
const rulerScaleX = isRulerAvailable && size.designWidth ? size.width / size.designWidth : 1;
|
|
@@ -16078,7 +16367,7 @@ var useReviewRuler = ({
|
|
|
16078
16367
|
onCancelReviewMode,
|
|
16079
16368
|
onCloseTransientPanels
|
|
16080
16369
|
]);
|
|
16081
|
-
|
|
16370
|
+
useEffect15(() => {
|
|
16082
16371
|
if (!isRulerVisible || isRulerAvailable) return;
|
|
16083
16372
|
closeRuler();
|
|
16084
16373
|
}, [closeRuler, isRulerAvailable, isRulerVisible]);
|
|
@@ -16175,7 +16464,7 @@ var useReviewShellActionsValue = ({
|
|
|
16175
16464
|
|
|
16176
16465
|
// src/react-shell/hooks/use.review.shell.effects.ts
|
|
16177
16466
|
import {
|
|
16178
|
-
useEffect as
|
|
16467
|
+
useEffect as useEffect16
|
|
16179
16468
|
} from "react";
|
|
16180
16469
|
var useReviewShellEffects = ({
|
|
16181
16470
|
frameScrollRef,
|
|
@@ -16189,7 +16478,7 @@ var useReviewShellEffects = ({
|
|
|
16189
16478
|
syncTargetViewport,
|
|
16190
16479
|
targetSrc
|
|
16191
16480
|
}) => {
|
|
16192
|
-
|
|
16481
|
+
useEffect16(() => {
|
|
16193
16482
|
const itemId = pendingInitialItemIdRef.current;
|
|
16194
16483
|
if (!itemId) return;
|
|
16195
16484
|
const item = items.find(
|
|
@@ -16198,7 +16487,7 @@ var useReviewShellEffects = ({
|
|
|
16198
16487
|
if (!item) return;
|
|
16199
16488
|
restoreReviewItem(item);
|
|
16200
16489
|
}, [items, pendingInitialItemIdRef, restoreReviewItem]);
|
|
16201
|
-
|
|
16490
|
+
useEffect16(() => {
|
|
16202
16491
|
const frameScroll = frameScrollRef.current;
|
|
16203
16492
|
if (!frameScroll) return void 0;
|
|
16204
16493
|
const centerFrameScroll = () => {
|
|
@@ -16223,7 +16512,7 @@ var useReviewShellEffects = ({
|
|
|
16223
16512
|
syncTargetViewport,
|
|
16224
16513
|
targetSrc
|
|
16225
16514
|
]);
|
|
16226
|
-
|
|
16515
|
+
useEffect16(() => {
|
|
16227
16516
|
const targetDocument = iframeRef.current?.contentDocument;
|
|
16228
16517
|
setTargetFigmaOverlayLocked(targetDocument, mode === "element");
|
|
16229
16518
|
return () => {
|
|
@@ -16440,10 +16729,10 @@ import { useMemo as useMemo16 } from "react";
|
|
|
16440
16729
|
// src/react-shell/hooks/use.review.presence.ts
|
|
16441
16730
|
import {
|
|
16442
16731
|
useCallback as useCallback18,
|
|
16443
|
-
useEffect as
|
|
16732
|
+
useEffect as useEffect17,
|
|
16444
16733
|
useMemo as useMemo15,
|
|
16445
|
-
useRef as
|
|
16446
|
-
useState as
|
|
16734
|
+
useRef as useRef12,
|
|
16735
|
+
useState as useState14
|
|
16447
16736
|
} from "react";
|
|
16448
16737
|
|
|
16449
16738
|
// src/react-shell/presence/presence.ts
|
|
@@ -16659,9 +16948,9 @@ var useReviewPresence = ({
|
|
|
16659
16948
|
size,
|
|
16660
16949
|
source
|
|
16661
16950
|
}) => {
|
|
16662
|
-
const presenceSessionRef =
|
|
16663
|
-
const [presenceUsers, setPresenceUsers] =
|
|
16664
|
-
const [presenceSessionVersion, setPresenceSessionVersion] =
|
|
16951
|
+
const presenceSessionRef = useRef12(null);
|
|
16952
|
+
const [presenceUsers, setPresenceUsers] = useState14([]);
|
|
16953
|
+
const [presenceSessionVersion, setPresenceSessionVersion] = useState14(0);
|
|
16665
16954
|
const presenceSessionId = useMemo15(getReviewPresenceSessionId, []);
|
|
16666
16955
|
const normalizedReviewUserId = reviewUserId.trim();
|
|
16667
16956
|
const presenceDisplayName = getReviewPresenceDisplayName(
|
|
@@ -16740,9 +17029,9 @@ var useReviewPresence = ({
|
|
|
16740
17029
|
source
|
|
16741
17030
|
]
|
|
16742
17031
|
);
|
|
16743
|
-
const getCurrentPresenceStateRef =
|
|
17032
|
+
const getCurrentPresenceStateRef = useRef12(getCurrentPresenceState);
|
|
16744
17033
|
getCurrentPresenceStateRef.current = getCurrentPresenceState;
|
|
16745
|
-
|
|
17034
|
+
useEffect17(() => {
|
|
16746
17035
|
if (!presence || !normalizedReviewUserId) {
|
|
16747
17036
|
const session = presenceSessionRef.current;
|
|
16748
17037
|
presenceSessionRef.current = null;
|
|
@@ -16792,7 +17081,7 @@ var useReviewPresence = ({
|
|
|
16792
17081
|
presenceSessionId,
|
|
16793
17082
|
projectId
|
|
16794
17083
|
]);
|
|
16795
|
-
|
|
17084
|
+
useEffect17(() => {
|
|
16796
17085
|
const session = presenceSessionRef.current;
|
|
16797
17086
|
if (!session || !normalizedReviewUserId) return;
|
|
16798
17087
|
void session.update(getCurrentPresenceState());
|
|
@@ -16850,7 +17139,7 @@ var useReviewShellPresenceState = ({
|
|
|
16850
17139
|
};
|
|
16851
17140
|
|
|
16852
17141
|
// src/react-shell/hooks/use.review.settings.ts
|
|
16853
|
-
import { useCallback as useCallback19, useEffect as
|
|
17142
|
+
import { useCallback as useCallback19, useEffect as useEffect18, useState as useState15 } from "react";
|
|
16854
17143
|
var useReviewSettings = ({
|
|
16855
17144
|
defaultReviewUserId = "",
|
|
16856
17145
|
onCancelReviewMode,
|
|
@@ -16858,26 +17147,26 @@ var useReviewSettings = ({
|
|
|
16858
17147
|
onCloseSitemap,
|
|
16859
17148
|
onReloadTargetFrame
|
|
16860
17149
|
}) => {
|
|
16861
|
-
const [figmaTokenDraft, setFigmaTokenDraft] =
|
|
16862
|
-
const [reviewUserId, setReviewUserId] =
|
|
17150
|
+
const [figmaTokenDraft, setFigmaTokenDraft] = useState15(getStoredFigmaToken);
|
|
17151
|
+
const [reviewUserId, setReviewUserId] = useState15(
|
|
16863
17152
|
() => getStoredReviewUserId(defaultReviewUserId)
|
|
16864
17153
|
);
|
|
16865
|
-
const [reviewUserIdDraft, setReviewUserIdDraft] =
|
|
17154
|
+
const [reviewUserIdDraft, setReviewUserIdDraft] = useState15(
|
|
16866
17155
|
() => getStoredReviewUserId(defaultReviewUserId)
|
|
16867
17156
|
);
|
|
16868
|
-
const [reviewTheme, setReviewTheme] =
|
|
16869
|
-
const [reviewThemeDraft, setReviewThemeDraft] =
|
|
16870
|
-
const [areTooltipsEnabled, setAreTooltipsEnabled] =
|
|
17157
|
+
const [reviewTheme, setReviewTheme] = useState15(getStoredReviewTheme);
|
|
17158
|
+
const [reviewThemeDraft, setReviewThemeDraft] = useState15(getStoredReviewTheme);
|
|
17159
|
+
const [areTooltipsEnabled, setAreTooltipsEnabled] = useState15(
|
|
16871
17160
|
getStoredReviewTooltipsEnabled
|
|
16872
17161
|
);
|
|
16873
|
-
const [areTooltipsEnabledDraft, setAreTooltipsEnabledDraft] =
|
|
17162
|
+
const [areTooltipsEnabledDraft, setAreTooltipsEnabledDraft] = useState15(
|
|
16874
17163
|
getStoredReviewTooltipsEnabled
|
|
16875
17164
|
);
|
|
16876
|
-
const [systemReviewTheme, setSystemReviewTheme] =
|
|
16877
|
-
const [figmaSettingsStatus, setFigmaSettingsStatus] =
|
|
16878
|
-
const [isFigmaSettingsOpen, setIsFigmaSettingsOpen] =
|
|
16879
|
-
const [isFigmaTokenVisible, setIsFigmaTokenVisible] =
|
|
16880
|
-
const [isFigmaTokenGuideOpen, setIsFigmaTokenGuideOpen] =
|
|
17165
|
+
const [systemReviewTheme, setSystemReviewTheme] = useState15(getSystemReviewTheme);
|
|
17166
|
+
const [figmaSettingsStatus, setFigmaSettingsStatus] = useState15("");
|
|
17167
|
+
const [isFigmaSettingsOpen, setIsFigmaSettingsOpen] = useState15(false);
|
|
17168
|
+
const [isFigmaTokenVisible, setIsFigmaTokenVisible] = useState15(false);
|
|
17169
|
+
const [isFigmaTokenGuideOpen, setIsFigmaTokenGuideOpen] = useState15(false);
|
|
16881
17170
|
const effectiveReviewTheme = reviewTheme === "system" ? systemReviewTheme : reviewTheme;
|
|
16882
17171
|
const closeFigmaSettings = useCallback19(() => {
|
|
16883
17172
|
setIsFigmaSettingsOpen(false);
|
|
@@ -16932,13 +17221,13 @@ var useReviewSettings = ({
|
|
|
16932
17221
|
},
|
|
16933
17222
|
[closeFigmaSettings, onReloadTargetFrame]
|
|
16934
17223
|
);
|
|
16935
|
-
|
|
17224
|
+
useEffect18(() => {
|
|
16936
17225
|
if (getStoredReviewUserId()) return;
|
|
16937
17226
|
const nextDefaultUserId = defaultReviewUserId.trim();
|
|
16938
17227
|
setReviewUserId(nextDefaultUserId);
|
|
16939
17228
|
setReviewUserIdDraft(nextDefaultUserId);
|
|
16940
17229
|
}, [defaultReviewUserId]);
|
|
16941
|
-
|
|
17230
|
+
useEffect18(() => {
|
|
16942
17231
|
if (typeof window === "undefined" || !window.matchMedia) return void 0;
|
|
16943
17232
|
const query = window.matchMedia("(prefers-color-scheme: light)");
|
|
16944
17233
|
const syncSystemTheme = () => {
|
|
@@ -16952,7 +17241,7 @@ var useReviewSettings = ({
|
|
|
16952
17241
|
query.addListener(syncSystemTheme);
|
|
16953
17242
|
return () => query.removeListener(syncSystemTheme);
|
|
16954
17243
|
}, []);
|
|
16955
|
-
|
|
17244
|
+
useEffect18(() => {
|
|
16956
17245
|
document.body.classList.toggle(
|
|
16957
17246
|
"df-review-theme-light",
|
|
16958
17247
|
effectiveReviewTheme === "light"
|
|
@@ -17106,7 +17395,7 @@ var useReviewShellLoadTargetFrame = ({
|
|
|
17106
17395
|
]);
|
|
17107
17396
|
|
|
17108
17397
|
// src/react-shell/hooks/use.review.shell.hotkeys.ts
|
|
17109
|
-
import { useEffect as
|
|
17398
|
+
import { useEffect as useEffect19 } from "react";
|
|
17110
17399
|
var useReviewShellHotkeys = ({
|
|
17111
17400
|
isRailHotkeyBlocked,
|
|
17112
17401
|
isFigmaSettingsOpen,
|
|
@@ -17135,7 +17424,7 @@ var useReviewShellHotkeys = ({
|
|
|
17135
17424
|
const setIsSitemapOpen = useReviewShellStore(
|
|
17136
17425
|
(state) => state.setIsSitemapOpen
|
|
17137
17426
|
);
|
|
17138
|
-
|
|
17427
|
+
useEffect19(() => {
|
|
17139
17428
|
if (mode === "idle" && !isRulerVisible && !isInitialPromptOpen && !isSitemapOpen && !isFigmaSettingsOpen) {
|
|
17140
17429
|
return;
|
|
17141
17430
|
}
|
|
@@ -17179,7 +17468,7 @@ var useReviewShellHotkeys = ({
|
|
|
17179
17468
|
setIsInitialPromptOpen,
|
|
17180
17469
|
setIsSitemapOpen
|
|
17181
17470
|
]);
|
|
17182
|
-
|
|
17471
|
+
useEffect19(() => {
|
|
17183
17472
|
const handleHotkey = (event) => {
|
|
17184
17473
|
if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) {
|
|
17185
17474
|
return;
|
|
@@ -17212,7 +17501,7 @@ var useReviewShellHotkeys = ({
|
|
|
17212
17501
|
onToggleRuler,
|
|
17213
17502
|
onToggleTargetOverlay
|
|
17214
17503
|
]);
|
|
17215
|
-
|
|
17504
|
+
useEffect19(() => {
|
|
17216
17505
|
const handleRailHotkey = (event) => {
|
|
17217
17506
|
if (isRailHotkeyBlocked || isEditableEventTarget(event)) return;
|
|
17218
17507
|
const actions = [
|
|
@@ -17239,8 +17528,8 @@ var useReviewShellHotkeys = ({
|
|
|
17239
17528
|
// src/react-shell/hooks/use.review.shell.refresh.ts
|
|
17240
17529
|
import {
|
|
17241
17530
|
useCallback as useCallback21,
|
|
17242
|
-
useEffect as
|
|
17243
|
-
useRef as
|
|
17531
|
+
useEffect as useEffect20,
|
|
17532
|
+
useRef as useRef13
|
|
17244
17533
|
} from "react";
|
|
17245
17534
|
var useReviewShellRefresh = ({
|
|
17246
17535
|
activeAdapterEntry,
|
|
@@ -17253,7 +17542,7 @@ var useReviewShellRefresh = ({
|
|
|
17253
17542
|
remoteAdapterEntry,
|
|
17254
17543
|
storeApi
|
|
17255
17544
|
}) => {
|
|
17256
|
-
const itemRefreshIdRef =
|
|
17545
|
+
const itemRefreshIdRef = useRef13(0);
|
|
17257
17546
|
const refreshItems = useCallback21(
|
|
17258
17547
|
async () => {
|
|
17259
17548
|
const requestId = ++itemRefreshIdRef.current;
|
|
@@ -17291,13 +17580,13 @@ var useReviewShellRefresh = ({
|
|
|
17291
17580
|
}),
|
|
17292
17581
|
[localAdapterEntry, projectId, remoteAdapterEntry, storeApi]
|
|
17293
17582
|
);
|
|
17294
|
-
|
|
17583
|
+
useEffect20(() => {
|
|
17295
17584
|
void refreshItems();
|
|
17296
17585
|
}, [refreshItems]);
|
|
17297
|
-
|
|
17586
|
+
useEffect20(() => {
|
|
17298
17587
|
void refreshSitemapItems();
|
|
17299
17588
|
}, [refreshSitemapItems]);
|
|
17300
|
-
|
|
17589
|
+
useEffect20(() => {
|
|
17301
17590
|
if (!isSitemapOpen) return;
|
|
17302
17591
|
void refreshSitemapItems();
|
|
17303
17592
|
}, [isSitemapOpen, refreshSitemapItems]);
|
|
@@ -17398,7 +17687,7 @@ var useReviewShellState = () => {
|
|
|
17398
17687
|
// src/react-shell/hooks/use.review.shell.target.figma.ts
|
|
17399
17688
|
import {
|
|
17400
17689
|
useCallback as useCallback22,
|
|
17401
|
-
useState as
|
|
17690
|
+
useState as useState16
|
|
17402
17691
|
} from "react";
|
|
17403
17692
|
var useReviewShellTargetFigma = ({
|
|
17404
17693
|
iframeRef,
|
|
@@ -17406,7 +17695,7 @@ var useReviewShellTargetFigma = ({
|
|
|
17406
17695
|
isViewportFigmaOverlayAvailable,
|
|
17407
17696
|
targetSrc
|
|
17408
17697
|
}) => {
|
|
17409
|
-
const [targetFigmaState, setTargetFigmaState] =
|
|
17698
|
+
const [targetFigmaState, setTargetFigmaState] = useState16(null);
|
|
17410
17699
|
const targetFigmaConfig = targetFigmaState?.targetSrc === targetSrc ? targetFigmaState.config : null;
|
|
17411
17700
|
const isFigmaOverlayAvailable = !isFigmaImageManagementEnabled && isViewportFigmaOverlayAvailable && Boolean(targetFigmaConfig);
|
|
17412
17701
|
const refreshTargetFigmaConfig = useCallback22(() => {
|
|
@@ -17424,7 +17713,7 @@ var useReviewShellTargetFigma = ({
|
|
|
17424
17713
|
// src/react-shell/hooks/use.review.side.panel.ts
|
|
17425
17714
|
import {
|
|
17426
17715
|
useCallback as useCallback23,
|
|
17427
|
-
useEffect as
|
|
17716
|
+
useEffect as useEffect21
|
|
17428
17717
|
} from "react";
|
|
17429
17718
|
var getAvailableSidePanel = (sidePanel, {
|
|
17430
17719
|
isFigmaImageManagementEnabled,
|
|
@@ -17450,7 +17739,7 @@ var useReviewSidePanel = ({
|
|
|
17450
17739
|
const isQaPanelVisible = isListVisible && sidePanel === "qa";
|
|
17451
17740
|
const isSourceTreePanelVisible = isSourceInspectorEnabled && isListVisible && sidePanel === "source";
|
|
17452
17741
|
const isFigmaImagesPanelVisible = isFigmaImageManagementEnabled && isListVisible && sidePanel === "figma-images";
|
|
17453
|
-
|
|
17742
|
+
useEffect21(() => {
|
|
17454
17743
|
const state = storeApi.getState();
|
|
17455
17744
|
const availableSidePanel = getAvailableSidePanel(state.sidePanel, {
|
|
17456
17745
|
isFigmaImageManagementEnabled,
|
|
@@ -17460,10 +17749,10 @@ var useReviewSidePanel = ({
|
|
|
17460
17749
|
state.setSidePanel(availableSidePanel);
|
|
17461
17750
|
}
|
|
17462
17751
|
}, [isFigmaImageManagementEnabled, isSourceInspectorEnabled, storeApi]);
|
|
17463
|
-
|
|
17752
|
+
useEffect21(() => {
|
|
17464
17753
|
writeStoredReviewSidePanel(sidePanel);
|
|
17465
17754
|
}, [sidePanel]);
|
|
17466
|
-
|
|
17755
|
+
useEffect21(() => {
|
|
17467
17756
|
writeStoredReviewSidePanelVisible(isListVisible);
|
|
17468
17757
|
}, [isListVisible]);
|
|
17469
17758
|
const openSidePanel = useCallback23(
|
|
@@ -17509,7 +17798,7 @@ var useReviewSidePanel = ({
|
|
|
17509
17798
|
};
|
|
17510
17799
|
|
|
17511
17800
|
// src/react-shell/hooks/use.review.source.inspector.ts
|
|
17512
|
-
import { useCallback as useCallback24, useEffect as
|
|
17801
|
+
import { useCallback as useCallback24, useEffect as useEffect22, useRef as useRef14, useState as useState17 } from "react";
|
|
17513
17802
|
|
|
17514
17803
|
// src/react-shell/review/source.shortcut.style.ts
|
|
17515
17804
|
function createSourceShortcutStyle(optionAttribute, fontOverlayAttribute) {
|
|
@@ -17595,9 +17884,9 @@ function useReviewSourceInspector({
|
|
|
17595
17884
|
onCancelReviewMode
|
|
17596
17885
|
}) {
|
|
17597
17886
|
const showToast = useReviewToast();
|
|
17598
|
-
const sourceShortcutCleanupRef =
|
|
17599
|
-
const sourceInspectorInteractionRef =
|
|
17600
|
-
const [sourceInspectorState, setSourceInspectorState] =
|
|
17887
|
+
const sourceShortcutCleanupRef = useRef14(null);
|
|
17888
|
+
const sourceInspectorInteractionRef = useRef14(false);
|
|
17889
|
+
const [sourceInspectorState, setSourceInspectorState] = useState17(null);
|
|
17601
17890
|
const clearSourceInspector = useCallback24(() => {
|
|
17602
17891
|
sourceInspectorInteractionRef.current = false;
|
|
17603
17892
|
setSourceInspectorState(null);
|
|
@@ -17946,10 +18235,10 @@ function useReviewSourceInspector({
|
|
|
17946
18235
|
showSourceOutlineForTarget,
|
|
17947
18236
|
showSourceInspectorForTarget
|
|
17948
18237
|
]);
|
|
17949
|
-
|
|
18238
|
+
useEffect22(() => {
|
|
17950
18239
|
return cleanupSourceOpenShortcut;
|
|
17951
18240
|
}, [cleanupSourceOpenShortcut]);
|
|
17952
|
-
|
|
18241
|
+
useEffect22(() => {
|
|
17953
18242
|
const frame = window.requestAnimationFrame(bindSourceOpenShortcut);
|
|
17954
18243
|
return () => window.cancelAnimationFrame(frame);
|
|
17955
18244
|
}, [bindSourceOpenShortcut, targetSrc]);
|
|
@@ -18530,6 +18819,7 @@ var ReviewShell = (props) => {
|
|
|
18530
18819
|
[
|
|
18531
18820
|
props.adapters,
|
|
18532
18821
|
props.initialPrompt,
|
|
18822
|
+
props.qaPrompt,
|
|
18533
18823
|
props.pages,
|
|
18534
18824
|
props.presets,
|
|
18535
18825
|
props.projectId,
|
|
@@ -18538,10 +18828,10 @@ var ReviewShell = (props) => {
|
|
|
18538
18828
|
props.sourceRoot
|
|
18539
18829
|
]
|
|
18540
18830
|
);
|
|
18541
|
-
const [store] =
|
|
18831
|
+
const [store] = useState18(
|
|
18542
18832
|
() => createReviewShellStore({ target: getInitialTargetSliceState(config) })
|
|
18543
18833
|
);
|
|
18544
|
-
const [refs] =
|
|
18834
|
+
const [refs] = useState18(createReviewShellRefs);
|
|
18545
18835
|
return /* @__PURE__ */ jsx40(ReviewShellConfigProvider, { value: config, children: /* @__PURE__ */ jsx40(ReviewShellStoreProvider, { value: store, children: /* @__PURE__ */ jsx40(ReviewShellRefsProvider, { value: refs, children: /* @__PURE__ */ jsx40(ReviewShellContent, { ...props }) }) }) });
|
|
18546
18836
|
};
|
|
18547
18837
|
var ReviewShellContent = (props) => {
|
|
@@ -18566,9 +18856,9 @@ var ReviewShellContent = (props) => {
|
|
|
18566
18856
|
|
|
18567
18857
|
// src/react-shell/figma/dev-overlay.tsx
|
|
18568
18858
|
import React, {
|
|
18569
|
-
useEffect as
|
|
18859
|
+
useEffect as useEffect23,
|
|
18570
18860
|
useMemo as useMemo19,
|
|
18571
|
-
useState as
|
|
18861
|
+
useState as useState19
|
|
18572
18862
|
} from "react";
|
|
18573
18863
|
import { createRoot } from "react-dom/client";
|
|
18574
18864
|
import { jsx as jsx41, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
@@ -18642,9 +18932,9 @@ var FigmaDevOverlayWidget = ({
|
|
|
18642
18932
|
store: matchedViewport ? figmaImageStore : null,
|
|
18643
18933
|
viewport: activeViewport
|
|
18644
18934
|
});
|
|
18645
|
-
const [isPanelOpen, setIsPanelOpen] =
|
|
18646
|
-
const [isWidgetVisible, setIsWidgetVisible] =
|
|
18647
|
-
const [offsetYDraftByImageId, setOffsetYDraftByImageId] =
|
|
18935
|
+
const [isPanelOpen, setIsPanelOpen] = useState19(false);
|
|
18936
|
+
const [isWidgetVisible, setIsWidgetVisible] = useState19(false);
|
|
18937
|
+
const [offsetYDraftByImageId, setOffsetYDraftByImageId] = useState19({});
|
|
18648
18938
|
const selectedImage = selectedImageId ? images.find((image) => image.id === selectedImageId) ?? null : null;
|
|
18649
18939
|
const selectedImageIndex = selectedImage ? images.indexOf(selectedImage) : -1;
|
|
18650
18940
|
const selectedImageLabel = selectedImage ? getFigmaImageLabel(selectedImage, selectedImageIndex) : "Figma layer";
|
|
@@ -18658,7 +18948,7 @@ var FigmaDevOverlayWidget = ({
|
|
|
18658
18948
|
}),
|
|
18659
18949
|
[imageOverlayStates, images]
|
|
18660
18950
|
);
|
|
18661
|
-
|
|
18951
|
+
useEffect23(() => {
|
|
18662
18952
|
if (!isWidgetVisible || !matchedViewport) {
|
|
18663
18953
|
removeTargetFigmaImageOverlays(document);
|
|
18664
18954
|
return;
|
|
@@ -18675,13 +18965,13 @@ var FigmaDevOverlayWidget = ({
|
|
|
18675
18965
|
matchedViewport,
|
|
18676
18966
|
setImageOverlayOffsetY
|
|
18677
18967
|
]);
|
|
18678
|
-
|
|
18968
|
+
useEffect23(
|
|
18679
18969
|
() => () => {
|
|
18680
18970
|
removeTargetFigmaImageOverlays(document);
|
|
18681
18971
|
},
|
|
18682
18972
|
[]
|
|
18683
18973
|
);
|
|
18684
|
-
|
|
18974
|
+
useEffect23(() => {
|
|
18685
18975
|
const handleKeyDown = (event) => {
|
|
18686
18976
|
if (!isHotkey(event, "Shift+F") || isEditableFigmaDevOverlayEventTarget(event)) {
|
|
18687
18977
|
return;
|
|
@@ -18828,10 +19118,10 @@ var FigmaDevOverlayWidget = ({
|
|
|
18828
19118
|
);
|
|
18829
19119
|
};
|
|
18830
19120
|
function useCurrentPageUrl(pageUrl, reviewPathPrefix) {
|
|
18831
|
-
const [currentPageUrl, setCurrentPageUrl] =
|
|
19121
|
+
const [currentPageUrl, setCurrentPageUrl] = useState19(
|
|
18832
19122
|
() => getFigmaDevOverlayPageUrl(pageUrl, reviewPathPrefix)
|
|
18833
19123
|
);
|
|
18834
|
-
|
|
19124
|
+
useEffect23(() => {
|
|
18835
19125
|
const updatePageUrl = () => {
|
|
18836
19126
|
setCurrentPageUrl(getFigmaDevOverlayPageUrl(pageUrl, reviewPathPrefix));
|
|
18837
19127
|
};
|
|
@@ -18852,8 +19142,8 @@ function isEditableFigmaDevOverlayEventTarget(event) {
|
|
|
18852
19142
|
return tagName === "INPUT" || tagName === "TEXTAREA" || tagName === "SELECT" || element.isContentEditable === true;
|
|
18853
19143
|
}
|
|
18854
19144
|
function useCurrentViewport() {
|
|
18855
|
-
const [viewport, setViewport] =
|
|
18856
|
-
|
|
19145
|
+
const [viewport, setViewport] = useState19(getCurrentViewportSize);
|
|
19146
|
+
useEffect23(() => {
|
|
18857
19147
|
const updateViewport = () => setViewport(getCurrentViewportSize());
|
|
18858
19148
|
window.addEventListener("resize", updateViewport);
|
|
18859
19149
|
window.addEventListener("orientationchange", updateViewport);
|
|
@@ -19446,8 +19736,10 @@ lucide-react/dist/esm/context.mjs:
|
|
|
19446
19736
|
lucide-react/dist/esm/Icon.mjs:
|
|
19447
19737
|
lucide-react/dist/esm/createLucideIcon.mjs:
|
|
19448
19738
|
lucide-react/dist/esm/icons/bot.mjs:
|
|
19739
|
+
lucide-react/dist/esm/icons/check-check.mjs:
|
|
19449
19740
|
lucide-react/dist/esm/icons/chevron-down.mjs:
|
|
19450
19741
|
lucide-react/dist/esm/icons/chevron-right.mjs:
|
|
19742
|
+
lucide-react/dist/esm/icons/chevron-up.mjs:
|
|
19451
19743
|
lucide-react/dist/esm/icons/circle-question-mark.mjs:
|
|
19452
19744
|
lucide-react/dist/esm/icons/code-xml.mjs:
|
|
19453
19745
|
lucide-react/dist/esm/icons/contrast.mjs:
|