agentation 2.2.1 → 2.3.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/dist/index.d.mts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +635 -142
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +515 -32
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
"use strict";
|
|
3
|
+
var __create = Object.create;
|
|
3
4
|
var __defProp = Object.defineProperty;
|
|
4
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
9
|
var __export = (target, all) => {
|
|
8
10
|
for (var name in all)
|
|
@@ -16,6 +18,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
18
|
}
|
|
17
19
|
return to;
|
|
18
20
|
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
19
29
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
30
|
|
|
21
31
|
// src/index.ts
|
|
@@ -74,7 +84,7 @@ __export(index_exports, {
|
|
|
74
84
|
module.exports = __toCommonJS(index_exports);
|
|
75
85
|
|
|
76
86
|
// src/components/page-toolbar-css/index.tsx
|
|
77
|
-
var
|
|
87
|
+
var import_react3 = require("react");
|
|
78
88
|
var import_react_dom = require("react-dom");
|
|
79
89
|
|
|
80
90
|
// src/components/annotation-popup-css/index.tsx
|
|
@@ -1292,6 +1302,7 @@ var AnnotationPopupCSS = (0, import_react.forwardRef)(
|
|
|
1292
1302
|
}, [text, onSubmit]);
|
|
1293
1303
|
const handleKeyDown = (0, import_react.useCallback)(
|
|
1294
1304
|
(e) => {
|
|
1305
|
+
e.stopPropagation();
|
|
1295
1306
|
if (e.nativeEvent.isComposing) return;
|
|
1296
1307
|
if (e.key === "Enter" && !e.shiftKey) {
|
|
1297
1308
|
e.preventDefault();
|
|
@@ -1930,6 +1941,26 @@ function clearSessionId(pathname) {
|
|
|
1930
1941
|
} catch {
|
|
1931
1942
|
}
|
|
1932
1943
|
}
|
|
1944
|
+
var TOOLBAR_HIDDEN_SESSION_KEY = `${SESSION_PREFIX}toolbar-hidden`;
|
|
1945
|
+
function loadToolbarHidden() {
|
|
1946
|
+
if (typeof window === "undefined") return false;
|
|
1947
|
+
try {
|
|
1948
|
+
return sessionStorage.getItem(TOOLBAR_HIDDEN_SESSION_KEY) === "1";
|
|
1949
|
+
} catch {
|
|
1950
|
+
return false;
|
|
1951
|
+
}
|
|
1952
|
+
}
|
|
1953
|
+
function saveToolbarHidden(hidden) {
|
|
1954
|
+
if (typeof window === "undefined") return;
|
|
1955
|
+
try {
|
|
1956
|
+
if (hidden) {
|
|
1957
|
+
sessionStorage.setItem(TOOLBAR_HIDDEN_SESSION_KEY, "1");
|
|
1958
|
+
} else {
|
|
1959
|
+
sessionStorage.removeItem(TOOLBAR_HIDDEN_SESSION_KEY);
|
|
1960
|
+
}
|
|
1961
|
+
} catch {
|
|
1962
|
+
}
|
|
1963
|
+
}
|
|
1933
1964
|
|
|
1934
1965
|
// src/utils/sync.ts
|
|
1935
1966
|
async function createSession(endpoint, url) {
|
|
@@ -2369,9 +2400,351 @@ function getReactComponentName(element, config) {
|
|
|
2369
2400
|
return result;
|
|
2370
2401
|
}
|
|
2371
2402
|
|
|
2403
|
+
// src/utils/source-location.ts
|
|
2404
|
+
var import_react2 = __toESM(require("react"));
|
|
2405
|
+
var FIBER_TAGS = {
|
|
2406
|
+
FunctionComponent: 0,
|
|
2407
|
+
ClassComponent: 1,
|
|
2408
|
+
IndeterminateComponent: 2,
|
|
2409
|
+
HostRoot: 3,
|
|
2410
|
+
HostPortal: 4,
|
|
2411
|
+
HostComponent: 5,
|
|
2412
|
+
HostText: 6,
|
|
2413
|
+
Fragment: 7,
|
|
2414
|
+
Mode: 8,
|
|
2415
|
+
ContextConsumer: 9,
|
|
2416
|
+
ContextProvider: 10,
|
|
2417
|
+
ForwardRef: 11,
|
|
2418
|
+
Profiler: 12,
|
|
2419
|
+
SuspenseComponent: 13,
|
|
2420
|
+
MemoComponent: 14,
|
|
2421
|
+
SimpleMemoComponent: 15,
|
|
2422
|
+
LazyComponent: 16
|
|
2423
|
+
};
|
|
2424
|
+
function getFiberFromElement2(element) {
|
|
2425
|
+
if (!element || typeof element !== "object") {
|
|
2426
|
+
return null;
|
|
2427
|
+
}
|
|
2428
|
+
const keys = Object.keys(element);
|
|
2429
|
+
const fiberKey = keys.find((key) => key.startsWith("__reactFiber$"));
|
|
2430
|
+
if (fiberKey) {
|
|
2431
|
+
return element[fiberKey] || null;
|
|
2432
|
+
}
|
|
2433
|
+
const instanceKey = keys.find((key) => key.startsWith("__reactInternalInstance$"));
|
|
2434
|
+
if (instanceKey) {
|
|
2435
|
+
return element[instanceKey] || null;
|
|
2436
|
+
}
|
|
2437
|
+
const possibleFiberKey = keys.find((key) => {
|
|
2438
|
+
if (!key.startsWith("__react")) return false;
|
|
2439
|
+
const value = element[key];
|
|
2440
|
+
return value && typeof value === "object" && "_debugSource" in value;
|
|
2441
|
+
});
|
|
2442
|
+
if (possibleFiberKey) {
|
|
2443
|
+
return element[possibleFiberKey] || null;
|
|
2444
|
+
}
|
|
2445
|
+
return null;
|
|
2446
|
+
}
|
|
2447
|
+
function getComponentName(fiber) {
|
|
2448
|
+
if (!fiber.type) {
|
|
2449
|
+
return null;
|
|
2450
|
+
}
|
|
2451
|
+
if (typeof fiber.type === "string") {
|
|
2452
|
+
return null;
|
|
2453
|
+
}
|
|
2454
|
+
if (typeof fiber.type === "object" || typeof fiber.type === "function") {
|
|
2455
|
+
const type = fiber.type;
|
|
2456
|
+
if (type.displayName) {
|
|
2457
|
+
return type.displayName;
|
|
2458
|
+
}
|
|
2459
|
+
if (type.name) {
|
|
2460
|
+
return type.name;
|
|
2461
|
+
}
|
|
2462
|
+
}
|
|
2463
|
+
return null;
|
|
2464
|
+
}
|
|
2465
|
+
function findDebugSource(fiber, maxDepth = 50) {
|
|
2466
|
+
let current = fiber;
|
|
2467
|
+
let depth = 0;
|
|
2468
|
+
while (current && depth < maxDepth) {
|
|
2469
|
+
if (current._debugSource) {
|
|
2470
|
+
return {
|
|
2471
|
+
source: current._debugSource,
|
|
2472
|
+
componentName: getComponentName(current)
|
|
2473
|
+
};
|
|
2474
|
+
}
|
|
2475
|
+
if (current._debugOwner?._debugSource) {
|
|
2476
|
+
return {
|
|
2477
|
+
source: current._debugOwner._debugSource,
|
|
2478
|
+
componentName: getComponentName(current._debugOwner)
|
|
2479
|
+
};
|
|
2480
|
+
}
|
|
2481
|
+
current = current.return;
|
|
2482
|
+
depth++;
|
|
2483
|
+
}
|
|
2484
|
+
return null;
|
|
2485
|
+
}
|
|
2486
|
+
function findDebugSourceReact19(fiber) {
|
|
2487
|
+
let current = fiber;
|
|
2488
|
+
let depth = 0;
|
|
2489
|
+
const maxDepth = 50;
|
|
2490
|
+
while (current && depth < maxDepth) {
|
|
2491
|
+
const anyFiber = current;
|
|
2492
|
+
const possibleSourceKeys = [
|
|
2493
|
+
"_debugSource",
|
|
2494
|
+
"__source",
|
|
2495
|
+
"_source",
|
|
2496
|
+
"debugSource"
|
|
2497
|
+
];
|
|
2498
|
+
for (const key of possibleSourceKeys) {
|
|
2499
|
+
const source = anyFiber[key];
|
|
2500
|
+
if (source && typeof source === "object" && "fileName" in source) {
|
|
2501
|
+
return {
|
|
2502
|
+
source,
|
|
2503
|
+
componentName: getComponentName(current)
|
|
2504
|
+
};
|
|
2505
|
+
}
|
|
2506
|
+
}
|
|
2507
|
+
if (current.memoizedProps) {
|
|
2508
|
+
const props = current.memoizedProps;
|
|
2509
|
+
if (props.__source && typeof props.__source === "object") {
|
|
2510
|
+
const source = props.__source;
|
|
2511
|
+
if (source.fileName && source.lineNumber) {
|
|
2512
|
+
return {
|
|
2513
|
+
source: {
|
|
2514
|
+
fileName: source.fileName,
|
|
2515
|
+
lineNumber: source.lineNumber,
|
|
2516
|
+
columnNumber: source.columnNumber
|
|
2517
|
+
},
|
|
2518
|
+
componentName: getComponentName(current)
|
|
2519
|
+
};
|
|
2520
|
+
}
|
|
2521
|
+
}
|
|
2522
|
+
}
|
|
2523
|
+
current = current.return;
|
|
2524
|
+
depth++;
|
|
2525
|
+
}
|
|
2526
|
+
return null;
|
|
2527
|
+
}
|
|
2528
|
+
var sourceProbeCache = /* @__PURE__ */ new Map();
|
|
2529
|
+
function unwrapComponentType(fiber) {
|
|
2530
|
+
const tag = fiber.tag;
|
|
2531
|
+
const type = fiber.type;
|
|
2532
|
+
const elementType = fiber.elementType;
|
|
2533
|
+
if (typeof type === "string" || type == null) return null;
|
|
2534
|
+
if (typeof type === "function" && type.prototype?.isReactComponent) {
|
|
2535
|
+
return null;
|
|
2536
|
+
}
|
|
2537
|
+
if ((tag === FIBER_TAGS.FunctionComponent || tag === FIBER_TAGS.IndeterminateComponent) && typeof type === "function") {
|
|
2538
|
+
return type;
|
|
2539
|
+
}
|
|
2540
|
+
if (tag === FIBER_TAGS.ForwardRef && elementType) {
|
|
2541
|
+
const render = elementType.render;
|
|
2542
|
+
if (typeof render === "function") return render;
|
|
2543
|
+
}
|
|
2544
|
+
if ((tag === FIBER_TAGS.MemoComponent || tag === FIBER_TAGS.SimpleMemoComponent) && elementType) {
|
|
2545
|
+
const inner = elementType.type;
|
|
2546
|
+
if (typeof inner === "function") return inner;
|
|
2547
|
+
}
|
|
2548
|
+
if (typeof type === "function") return type;
|
|
2549
|
+
return null;
|
|
2550
|
+
}
|
|
2551
|
+
function getReactDispatcher() {
|
|
2552
|
+
const reactModule = import_react2.default;
|
|
2553
|
+
const r19 = reactModule.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
|
|
2554
|
+
if (r19 && "H" in r19) {
|
|
2555
|
+
return {
|
|
2556
|
+
get: () => r19.H,
|
|
2557
|
+
set: (d) => {
|
|
2558
|
+
r19.H = d;
|
|
2559
|
+
}
|
|
2560
|
+
};
|
|
2561
|
+
}
|
|
2562
|
+
const r18 = reactModule.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
|
|
2563
|
+
if (r18) {
|
|
2564
|
+
const dispatcher = r18.ReactCurrentDispatcher;
|
|
2565
|
+
if (dispatcher && "current" in dispatcher) {
|
|
2566
|
+
return {
|
|
2567
|
+
get: () => dispatcher.current,
|
|
2568
|
+
set: (d) => {
|
|
2569
|
+
dispatcher.current = d;
|
|
2570
|
+
}
|
|
2571
|
+
};
|
|
2572
|
+
}
|
|
2573
|
+
}
|
|
2574
|
+
return null;
|
|
2575
|
+
}
|
|
2576
|
+
function parseComponentFrame(stack) {
|
|
2577
|
+
const lines = stack.split("\n");
|
|
2578
|
+
const skipPatterns = [
|
|
2579
|
+
/source-location/,
|
|
2580
|
+
/\/dist\/index\./,
|
|
2581
|
+
// Our bundled output (dist/index.mjs, dist/index.js)
|
|
2582
|
+
/node_modules\//,
|
|
2583
|
+
// Any package in node_modules
|
|
2584
|
+
/react-dom/,
|
|
2585
|
+
/react\.development/,
|
|
2586
|
+
/react\.production/,
|
|
2587
|
+
/chunk-[A-Z0-9]+/i,
|
|
2588
|
+
/react-stack-bottom-frame/,
|
|
2589
|
+
/react-reconciler/,
|
|
2590
|
+
/scheduler/,
|
|
2591
|
+
/<anonymous>/
|
|
2592
|
+
// Proxy handler frames
|
|
2593
|
+
];
|
|
2594
|
+
const v8Re = /^\s*at\s+(?:.*?\s+\()?(.+?):(\d+):(\d+)\)?$/;
|
|
2595
|
+
const webkitRe = /^[^@]*@(.+?):(\d+):(\d+)$/;
|
|
2596
|
+
for (const line of lines) {
|
|
2597
|
+
const trimmed = line.trim();
|
|
2598
|
+
if (!trimmed) continue;
|
|
2599
|
+
if (skipPatterns.some((p) => p.test(trimmed))) continue;
|
|
2600
|
+
const match = v8Re.exec(trimmed) || webkitRe.exec(trimmed);
|
|
2601
|
+
if (match) {
|
|
2602
|
+
return {
|
|
2603
|
+
fileName: match[1],
|
|
2604
|
+
line: parseInt(match[2], 10),
|
|
2605
|
+
column: parseInt(match[3], 10)
|
|
2606
|
+
};
|
|
2607
|
+
}
|
|
2608
|
+
}
|
|
2609
|
+
return null;
|
|
2610
|
+
}
|
|
2611
|
+
function cleanSourcePath(rawPath) {
|
|
2612
|
+
let path = rawPath;
|
|
2613
|
+
path = path.replace(/[?#].*$/, "");
|
|
2614
|
+
path = path.replace(/^turbopack:\/\/\/\[project\]\//, "");
|
|
2615
|
+
path = path.replace(/^webpack-internal:\/\/\/\.\//, "");
|
|
2616
|
+
path = path.replace(/^webpack-internal:\/\/\//, "");
|
|
2617
|
+
path = path.replace(/^webpack:\/\/\/\.\//, "");
|
|
2618
|
+
path = path.replace(/^webpack:\/\/\//, "");
|
|
2619
|
+
path = path.replace(/^turbopack:\/\/\//, "");
|
|
2620
|
+
path = path.replace(/^https?:\/\/[^/]+\//, "");
|
|
2621
|
+
path = path.replace(/^file:\/\/\//, "/");
|
|
2622
|
+
path = path.replace(/^\([^)]+\)\/\.\//, "");
|
|
2623
|
+
path = path.replace(/^\.\//, "");
|
|
2624
|
+
return path;
|
|
2625
|
+
}
|
|
2626
|
+
function probeComponentSource(fiber) {
|
|
2627
|
+
const fn = unwrapComponentType(fiber);
|
|
2628
|
+
if (!fn) return null;
|
|
2629
|
+
if (sourceProbeCache.has(fn)) {
|
|
2630
|
+
return sourceProbeCache.get(fn);
|
|
2631
|
+
}
|
|
2632
|
+
const dispatcher = getReactDispatcher();
|
|
2633
|
+
if (!dispatcher) {
|
|
2634
|
+
sourceProbeCache.set(fn, null);
|
|
2635
|
+
return null;
|
|
2636
|
+
}
|
|
2637
|
+
const original = dispatcher.get();
|
|
2638
|
+
let result = null;
|
|
2639
|
+
try {
|
|
2640
|
+
const stackCapturingDispatcher = new Proxy(
|
|
2641
|
+
{},
|
|
2642
|
+
{
|
|
2643
|
+
get() {
|
|
2644
|
+
throw new Error("probe");
|
|
2645
|
+
}
|
|
2646
|
+
}
|
|
2647
|
+
);
|
|
2648
|
+
dispatcher.set(stackCapturingDispatcher);
|
|
2649
|
+
try {
|
|
2650
|
+
fn({});
|
|
2651
|
+
} catch (e) {
|
|
2652
|
+
if (e instanceof Error && e.message === "probe" && e.stack) {
|
|
2653
|
+
const frame = parseComponentFrame(e.stack);
|
|
2654
|
+
if (frame) {
|
|
2655
|
+
const cleaned = cleanSourcePath(frame.fileName);
|
|
2656
|
+
result = {
|
|
2657
|
+
fileName: cleaned,
|
|
2658
|
+
lineNumber: frame.line,
|
|
2659
|
+
columnNumber: frame.column,
|
|
2660
|
+
componentName: getComponentName(fiber) || void 0
|
|
2661
|
+
};
|
|
2662
|
+
}
|
|
2663
|
+
}
|
|
2664
|
+
}
|
|
2665
|
+
} finally {
|
|
2666
|
+
dispatcher.set(original);
|
|
2667
|
+
}
|
|
2668
|
+
sourceProbeCache.set(fn, result);
|
|
2669
|
+
return result;
|
|
2670
|
+
}
|
|
2671
|
+
function probeSourceWalk(fiber, maxDepth = 15) {
|
|
2672
|
+
let current = fiber;
|
|
2673
|
+
let depth = 0;
|
|
2674
|
+
while (current && depth < maxDepth) {
|
|
2675
|
+
const source = probeComponentSource(current);
|
|
2676
|
+
if (source) return source;
|
|
2677
|
+
current = current.return;
|
|
2678
|
+
depth++;
|
|
2679
|
+
}
|
|
2680
|
+
return null;
|
|
2681
|
+
}
|
|
2682
|
+
function getSourceLocation(element) {
|
|
2683
|
+
const fiber = getFiberFromElement2(element);
|
|
2684
|
+
if (!fiber) {
|
|
2685
|
+
return {
|
|
2686
|
+
found: false,
|
|
2687
|
+
reason: "no-fiber",
|
|
2688
|
+
isReactApp: false,
|
|
2689
|
+
isProduction: false
|
|
2690
|
+
};
|
|
2691
|
+
}
|
|
2692
|
+
let debugInfo = findDebugSource(fiber);
|
|
2693
|
+
if (!debugInfo) {
|
|
2694
|
+
debugInfo = findDebugSourceReact19(fiber);
|
|
2695
|
+
}
|
|
2696
|
+
if (debugInfo?.source) {
|
|
2697
|
+
return {
|
|
2698
|
+
found: true,
|
|
2699
|
+
source: {
|
|
2700
|
+
fileName: debugInfo.source.fileName,
|
|
2701
|
+
lineNumber: debugInfo.source.lineNumber,
|
|
2702
|
+
columnNumber: debugInfo.source.columnNumber,
|
|
2703
|
+
componentName: debugInfo.componentName || void 0
|
|
2704
|
+
},
|
|
2705
|
+
isReactApp: true,
|
|
2706
|
+
isProduction: false
|
|
2707
|
+
};
|
|
2708
|
+
}
|
|
2709
|
+
const probed = probeSourceWalk(fiber);
|
|
2710
|
+
if (probed) {
|
|
2711
|
+
return { found: true, source: probed, isReactApp: true, isProduction: false };
|
|
2712
|
+
}
|
|
2713
|
+
return {
|
|
2714
|
+
found: false,
|
|
2715
|
+
reason: "no-debug-source",
|
|
2716
|
+
isReactApp: true,
|
|
2717
|
+
isProduction: false
|
|
2718
|
+
};
|
|
2719
|
+
}
|
|
2720
|
+
function formatSourceLocation(source, format = "path") {
|
|
2721
|
+
const { fileName, lineNumber, columnNumber } = source;
|
|
2722
|
+
let location = `${fileName}:${lineNumber}`;
|
|
2723
|
+
if (columnNumber !== void 0) {
|
|
2724
|
+
location += `:${columnNumber}`;
|
|
2725
|
+
}
|
|
2726
|
+
if (format === "vscode") {
|
|
2727
|
+
return `vscode://file${fileName.startsWith("/") ? "" : "/"}${location}`;
|
|
2728
|
+
}
|
|
2729
|
+
return location;
|
|
2730
|
+
}
|
|
2731
|
+
function findNearestComponentSource(element, maxAncestors = 10) {
|
|
2732
|
+
let current = element;
|
|
2733
|
+
let depth = 0;
|
|
2734
|
+
while (current && depth < maxAncestors) {
|
|
2735
|
+
const result = getSourceLocation(current);
|
|
2736
|
+
if (result.found) {
|
|
2737
|
+
return result;
|
|
2738
|
+
}
|
|
2739
|
+
current = current.parentElement;
|
|
2740
|
+
depth++;
|
|
2741
|
+
}
|
|
2742
|
+
return getSourceLocation(element);
|
|
2743
|
+
}
|
|
2744
|
+
|
|
2372
2745
|
// src/components/page-toolbar-css/styles.module.scss
|
|
2373
|
-
var css2 = 'svg[fill=none] {\n fill: none !important;\n}\n\n@keyframes styles-module__toolbarEnter___u8RRu {\n from {\n opacity: 0;\n transform: scale(0.5) rotate(90deg);\n }\n to {\n opacity: 1;\n transform: scale(1) rotate(0deg);\n }\n}\n@keyframes styles-module__badgeEnter___mVQLj {\n from {\n opacity: 0;\n transform: scale(0);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__scaleIn___c-r1K {\n from {\n opacity: 0;\n transform: scale(0.85);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__scaleOut___Wctwz {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.85);\n }\n}\n@keyframes styles-module__slideUp___kgD36 {\n from {\n opacity: 0;\n transform: scale(0.85) translateY(8px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n@keyframes styles-module__slideDown___zcdje {\n from {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n to {\n opacity: 0;\n transform: scale(0.85) translateY(8px);\n }\n}\n@keyframes styles-module__markerIn___5FaAP {\n 0% {\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.3);\n }\n 100% {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n@keyframes styles-module__markerOut___GU5jX {\n 0% {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n 100% {\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.3);\n }\n}\n@keyframes styles-module__fadeIn___b9qmf {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes styles-module__fadeOut___6Ut6- {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes styles-module__tooltipIn___0N31w {\n from {\n opacity: 0;\n transform: translateX(-50%) translateY(2px) scale(0.891);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) translateY(0) scale(0.909);\n }\n}\n@keyframes styles-module__hoverHighlightIn___6WYHY {\n from {\n opacity: 0;\n transform: scale(0.98);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__hoverTooltipIn___FYGQx {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(4px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n@keyframes styles-module__settingsPanelIn___MGfO8 {\n from {\n opacity: 0;\n transform: translateY(10px) scale(0.95);\n filter: blur(5px);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n filter: blur(0px);\n }\n}\n@keyframes styles-module__settingsPanelOut___Zfymi {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n filter: blur(0px);\n }\n to {\n opacity: 0;\n transform: translateY(20px) scale(0.95);\n filter: blur(5px);\n }\n}\n.styles-module__toolbar___wNsdK {\n position: fixed;\n bottom: 1.25rem;\n right: 1.25rem;\n width: 297px;\n z-index: 100000;\n font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;\n pointer-events: none;\n transition: left 0s, top 0s, right 0s, bottom 0s;\n}\n\n.styles-module__toolbarContainer___dIhma {\n user-select: none;\n margin-left: auto;\n align-self: flex-end;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #1a1a1a;\n color: #fff;\n border: none;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), 0 4px 16px rgba(0, 0, 0, 0.1);\n pointer-events: auto;\n cursor: grab;\n transition: width 0.4s cubic-bezier(0.19, 1, 0.22, 1), transform 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n}\n.styles-module__toolbarContainer___dIhma.styles-module__dragging___xrolZ {\n transition: width 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n cursor: grabbing;\n}\n.styles-module__toolbarContainer___dIhma.styles-module__entrance___sgHd8 {\n animation: styles-module__toolbarEnter___u8RRu 0.5s cubic-bezier(0.34, 1.2, 0.64, 1) forwards;\n}\n.styles-module__toolbarContainer___dIhma.styles-module__collapsed___Rydsn {\n width: 44px;\n height: 44px;\n border-radius: 22px;\n padding: 0;\n cursor: pointer;\n}\n.styles-module__toolbarContainer___dIhma.styles-module__collapsed___Rydsn svg {\n margin-top: -1px;\n}\n.styles-module__toolbarContainer___dIhma.styles-module__collapsed___Rydsn:hover {\n background: #2a2a2a;\n}\n.styles-module__toolbarContainer___dIhma.styles-module__collapsed___Rydsn:active {\n transform: scale(0.95);\n}\n.styles-module__toolbarContainer___dIhma.styles-module__expanded___ofKPx {\n height: 44px;\n border-radius: 1.5rem;\n padding: 0.375rem;\n width: 257px;\n}\n.styles-module__toolbarContainer___dIhma.styles-module__expanded___ofKPx.styles-module__serverConnected___Gfbou {\n width: 297px;\n}\n\n.styles-module__toggleContent___0yfyP {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.1s cubic-bezier(0.19, 1, 0.22, 1);\n}\n.styles-module__toggleContent___0yfyP.styles-module__visible___KHwEW {\n opacity: 1;\n visibility: visible;\n pointer-events: auto;\n}\n.styles-module__toggleContent___0yfyP.styles-module__hidden___Ae8H4 {\n opacity: 0;\n pointer-events: none;\n}\n\n.styles-module__controlsContent___9GJWU {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n transition: filter 0.8s cubic-bezier(0.19, 1, 0.22, 1), opacity 0.8s cubic-bezier(0.19, 1, 0.22, 1), transform 0.6s cubic-bezier(0.19, 1, 0.22, 1);\n}\n.styles-module__controlsContent___9GJWU.styles-module__visible___KHwEW {\n opacity: 1;\n filter: blur(0px);\n transform: scale(1);\n visibility: visible;\n pointer-events: auto;\n}\n.styles-module__controlsContent___9GJWU.styles-module__hidden___Ae8H4 {\n pointer-events: none;\n opacity: 0;\n filter: blur(10px);\n transform: scale(0.4);\n}\n\n.styles-module__badge___2XsgF {\n position: absolute;\n top: -13px;\n right: -13px;\n user-select: none;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: 9px;\n background: #3c82f7;\n color: white;\n font-size: 0.625rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15), inset 0 0 0 1px rgba(255, 255, 255, 0.04);\n opacity: 1;\n transition: transform 0.3s ease, opacity 0.2s ease;\n transform: scale(1);\n}\n.styles-module__badge___2XsgF.styles-module__fadeOut___6Ut6- {\n opacity: 0;\n transform: scale(0);\n pointer-events: none;\n}\n.styles-module__badge___2XsgF.styles-module__entrance___sgHd8 {\n animation: styles-module__badgeEnter___mVQLj 0.3s cubic-bezier(0.34, 1.2, 0.64, 1) 0.4s both;\n}\n\n.styles-module__controlButton___8Q0jc {\n position: relative;\n cursor: pointer !important;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n border: none;\n background: transparent;\n color: rgba(255, 255, 255, 0.85);\n transition: background-color 0.15s ease, color 0.15s ease, transform 0.1s ease, opacity 0.2s ease;\n}\n.styles-module__controlButton___8Q0jc:hover:not(:disabled):not([data-active=true]):not([data-failed=true]):not([data-auto-sync=true]):not([data-error=true]):not([data-no-hover=true]) {\n background: rgba(255, 255, 255, 0.12);\n color: #fff;\n}\n.styles-module__controlButton___8Q0jc:active:not(:disabled) {\n transform: scale(0.92);\n}\n.styles-module__controlButton___8Q0jc:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n}\n.styles-module__controlButton___8Q0jc[data-active=true] {\n color: #3c82f7;\n background: rgba(60, 130, 247, 0.25);\n}\n.styles-module__controlButton___8Q0jc[data-error=true] {\n color: #ff3b30;\n background: rgba(255, 59, 48, 0.25);\n}\n.styles-module__controlButton___8Q0jc[data-danger]:hover:not(:disabled):not([data-active=true]):not([data-failed=true]) {\n background: rgba(255, 59, 48, 0.25);\n color: #ff3b30;\n}\n.styles-module__controlButton___8Q0jc[data-no-hover=true], .styles-module__controlButton___8Q0jc.styles-module__statusShowing___te6iu {\n cursor: default !important;\n pointer-events: none;\n background: transparent !important;\n}\n.styles-module__controlButton___8Q0jc[data-auto-sync=true] {\n color: #34c759;\n background: transparent;\n cursor: default;\n}\n.styles-module__controlButton___8Q0jc[data-failed=true] {\n color: #ff3b30;\n background: rgba(255, 59, 48, 0.25);\n}\n\n.styles-module__buttonBadge___NeFWb {\n position: absolute;\n top: 0px;\n right: 0px;\n min-width: 16px;\n height: 16px;\n padding: 0 4px;\n border-radius: 8px;\n background: #3c82f7;\n color: white;\n font-size: 0.625rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 0 0 2px #1a1a1a, 0 1px 3px rgba(0, 0, 0, 0.2);\n pointer-events: none;\n}\n.styles-module__buttonBadge___NeFWb.styles-module__light___r6n4Y {\n box-shadow: 0 0 0 2px #fff, 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n@keyframes styles-module__mcpIndicatorPulseConnected___EDodZ {\n 0%, 100% {\n box-shadow: 0 0 0 0 rgba(52, 199, 89, 0.5);\n }\n 50% {\n box-shadow: 0 0 0 5px rgba(52, 199, 89, 0);\n }\n}\n@keyframes styles-module__mcpIndicatorPulseConnecting___cCYte {\n 0%, 100% {\n box-shadow: 0 0 0 0 rgba(245, 166, 35, 0.5);\n }\n 50% {\n box-shadow: 0 0 0 5px rgba(245, 166, 35, 0);\n }\n}\n.styles-module__mcpIndicator___zGJeL {\n position: absolute;\n top: 3px;\n right: 3px;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n pointer-events: none;\n transition: background 0.3s ease, opacity 0.15s ease, transform 0.15s ease;\n opacity: 1;\n transform: scale(1);\n}\n.styles-module__mcpIndicator___zGJeL.styles-module__connected___7c28g {\n background: #34c759;\n animation: styles-module__mcpIndicatorPulseConnected___EDodZ 2.5s ease-in-out infinite;\n}\n.styles-module__mcpIndicator___zGJeL.styles-module__connecting___uo-CW {\n background: #f5a623;\n animation: styles-module__mcpIndicatorPulseConnecting___cCYte 1.5s ease-in-out infinite;\n}\n.styles-module__mcpIndicator___zGJeL.styles-module__hidden___Ae8H4 {\n opacity: 0;\n transform: scale(0);\n animation: none;\n}\n\n@keyframes styles-module__connectionPulse___-Zycw {\n 0%, 100% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0.6;\n transform: scale(0.9);\n }\n}\n.styles-module__connectionIndicatorWrapper___L-e-3 {\n width: 8px;\n height: 34px;\n margin-left: 6px;\n margin-right: 6px;\n}\n\n.styles-module__connectionIndicator___afk9p {\n position: relative;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n opacity: 0;\n transition: opacity 0.3s ease, background 0.3s ease;\n cursor: default;\n}\n\n.styles-module__connectionIndicatorVisible___C-i5B {\n opacity: 1;\n}\n\n.styles-module__connectionIndicatorConnected___IY8pR {\n background: #34c759;\n animation: styles-module__connectionPulse___-Zycw 2.5s ease-in-out infinite;\n}\n\n.styles-module__connectionIndicatorDisconnected___kmpaZ {\n background: #ff3b30;\n animation: none;\n}\n\n.styles-module__connectionIndicatorConnecting___QmSLH {\n background: #f59e0b;\n animation: styles-module__connectionPulse___-Zycw 1s ease-in-out infinite;\n}\n\n.styles-module__buttonWrapper___rBcdv {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.styles-module__buttonWrapper___rBcdv:hover .styles-module__buttonTooltip___Burd9 {\n opacity: 1;\n visibility: visible;\n transform: translateX(-50%) scale(1);\n transition-delay: 0.85s;\n}\n.styles-module__buttonWrapper___rBcdv:has(.styles-module__controlButton___8Q0jc:disabled):hover .styles-module__buttonTooltip___Burd9 {\n opacity: 0;\n visibility: hidden;\n}\n\n.styles-module__sendButtonWrapper___UUxG6 {\n width: 0;\n opacity: 0;\n overflow: hidden;\n pointer-events: none;\n margin-left: -0.375rem;\n transition: width 0.4s cubic-bezier(0.19, 1, 0.22, 1), opacity 0.3s cubic-bezier(0.19, 1, 0.22, 1), margin 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n}\n.styles-module__sendButtonWrapper___UUxG6 .styles-module__controlButton___8Q0jc {\n transform: scale(0.8);\n transition: transform 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n}\n.styles-module__sendButtonWrapper___UUxG6.styles-module__sendButtonVisible___WPSQU {\n width: 34px;\n opacity: 1;\n overflow: visible;\n pointer-events: auto;\n margin-left: 0;\n}\n.styles-module__sendButtonWrapper___UUxG6.styles-module__sendButtonVisible___WPSQU .styles-module__controlButton___8Q0jc {\n transform: scale(1);\n}\n\n.styles-module__buttonTooltip___Burd9 {\n position: absolute;\n bottom: calc(100% + 14px);\n left: 50%;\n transform: translateX(-50%) scale(0.95);\n padding: 6px 10px;\n background: #1a1a1a;\n color: rgba(255, 255, 255, 0.9);\n font-size: 12px;\n font-weight: 500;\n border-radius: 8px;\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n z-index: 100001;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n transition: opacity 0.135s ease, transform 0.135s ease, visibility 0.135s ease;\n}\n.styles-module__buttonTooltip___Burd9::after {\n content: "";\n position: absolute;\n top: calc(100% - 4px);\n left: 50%;\n transform: translateX(-50%) rotate(45deg);\n width: 8px;\n height: 8px;\n background: #1a1a1a;\n border-radius: 0 0 2px 0;\n}\n\n.styles-module__shortcut___lEAQk {\n margin-left: 4px;\n opacity: 0.5;\n}\n\n.styles-module__tooltipBelow___m6ats .styles-module__buttonTooltip___Burd9 {\n bottom: auto;\n top: calc(100% + 14px);\n transform: translateX(-50%) scale(0.95);\n}\n.styles-module__tooltipBelow___m6ats .styles-module__buttonTooltip___Burd9::after {\n top: -4px;\n bottom: auto;\n border-radius: 2px 0 0 0;\n}\n\n.styles-module__tooltipBelow___m6ats .styles-module__buttonWrapper___rBcdv:hover .styles-module__buttonTooltip___Burd9 {\n transform: translateX(-50%) scale(1);\n}\n\n.styles-module__tooltipsHidden___VtLJG .styles-module__buttonTooltip___Burd9 {\n opacity: 0 !important;\n visibility: hidden !important;\n transition: none !important;\n}\n\n.styles-module__tooltipVisible___0jcCv,\n.styles-module__tooltipsHidden___VtLJG .styles-module__tooltipVisible___0jcCv {\n opacity: 1 !important;\n visibility: visible !important;\n transform: translateX(-50%) scale(1) !important;\n transition-delay: 0s !important;\n}\n\n.styles-module__buttonWrapperAlignLeft___myzIp .styles-module__buttonTooltip___Burd9 {\n left: 50%;\n transform: translateX(-12px) scale(0.95);\n}\n.styles-module__buttonWrapperAlignLeft___myzIp .styles-module__buttonTooltip___Burd9::after {\n left: 16px;\n}\n.styles-module__buttonWrapperAlignLeft___myzIp:hover .styles-module__buttonTooltip___Burd9 {\n transform: translateX(-12px) scale(1);\n}\n\n.styles-module__tooltipBelow___m6ats .styles-module__buttonWrapperAlignLeft___myzIp .styles-module__buttonTooltip___Burd9 {\n transform: translateX(-12px) scale(0.95);\n}\n.styles-module__tooltipBelow___m6ats .styles-module__buttonWrapperAlignLeft___myzIp:hover .styles-module__buttonTooltip___Burd9 {\n transform: translateX(-12px) scale(1);\n}\n\n.styles-module__buttonWrapperAlignRight___HCQFR .styles-module__buttonTooltip___Burd9 {\n left: 50%;\n transform: translateX(calc(-100% + 12px)) scale(0.95);\n}\n.styles-module__buttonWrapperAlignRight___HCQFR .styles-module__buttonTooltip___Burd9::after {\n left: auto;\n right: 8px;\n}\n.styles-module__buttonWrapperAlignRight___HCQFR:hover .styles-module__buttonTooltip___Burd9 {\n transform: translateX(calc(-100% + 12px)) scale(1);\n}\n\n.styles-module__tooltipBelow___m6ats .styles-module__buttonWrapperAlignRight___HCQFR .styles-module__buttonTooltip___Burd9 {\n transform: translateX(calc(-100% + 12px)) scale(0.95);\n}\n.styles-module__tooltipBelow___m6ats .styles-module__buttonWrapperAlignRight___HCQFR:hover .styles-module__buttonTooltip___Burd9 {\n transform: translateX(calc(-100% + 12px)) scale(1);\n}\n\n.styles-module__divider___c--s1 {\n width: 1px;\n height: 12px;\n background: rgba(255, 255, 255, 0.15);\n margin: 0 0.125rem;\n}\n\n.styles-module__overlay___Q1O9y {\n position: fixed;\n inset: 0;\n z-index: 99997;\n pointer-events: none;\n}\n.styles-module__overlay___Q1O9y > * {\n pointer-events: auto;\n}\n\n.styles-module__hoverHighlight___ogakW {\n position: fixed;\n border: 2px solid rgba(60, 130, 247, 0.5);\n border-radius: 4px;\n pointer-events: none !important;\n background: rgba(60, 130, 247, 0.04);\n box-sizing: border-box;\n will-change: opacity;\n contain: layout style;\n}\n.styles-module__hoverHighlight___ogakW.styles-module__enter___WFIki {\n animation: styles-module__hoverHighlightIn___6WYHY 0.12s ease-out forwards;\n}\n\n.styles-module__multiSelectOutline___cSJ-m {\n position: fixed;\n border: 2px dashed rgba(52, 199, 89, 0.6);\n border-radius: 4px;\n pointer-events: none !important;\n background: rgba(52, 199, 89, 0.05);\n box-sizing: border-box;\n will-change: opacity;\n}\n.styles-module__multiSelectOutline___cSJ-m.styles-module__enter___WFIki {\n animation: styles-module__fadeIn___b9qmf 0.15s ease-out forwards;\n}\n.styles-module__multiSelectOutline___cSJ-m.styles-module__exit___fyOJ0 {\n animation: styles-module__fadeOut___6Ut6- 0.15s ease-out forwards;\n}\n\n.styles-module__singleSelectOutline___QhX-O {\n position: fixed;\n border: 2px solid rgba(60, 130, 247, 0.6);\n border-radius: 4px;\n pointer-events: none !important;\n background: rgba(60, 130, 247, 0.05);\n box-sizing: border-box;\n will-change: opacity;\n}\n.styles-module__singleSelectOutline___QhX-O.styles-module__enter___WFIki {\n animation: styles-module__fadeIn___b9qmf 0.15s ease-out forwards;\n}\n.styles-module__singleSelectOutline___QhX-O.styles-module__exit___fyOJ0 {\n animation: styles-module__fadeOut___6Ut6- 0.15s ease-out forwards;\n}\n\n.styles-module__hoverTooltip___bvLk7 {\n position: fixed;\n font-size: 0.6875rem;\n font-weight: 500;\n color: #fff;\n background: rgba(0, 0, 0, 0.85);\n padding: 0.35rem 0.6rem;\n border-radius: 0.375rem;\n pointer-events: none !important;\n white-space: nowrap;\n max-width: 280px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.styles-module__hoverTooltip___bvLk7.styles-module__enter___WFIki {\n animation: styles-module__hoverTooltipIn___FYGQx 0.1s ease-out forwards;\n}\n\n.styles-module__hoverReactPath___gx1IJ {\n font-size: 0.625rem;\n color: rgba(255, 255, 255, 0.6);\n margin-bottom: 0.15rem;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__hoverElementName___QMLMl {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__markersLayer___-25j1 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 0;\n z-index: 99998;\n pointer-events: none;\n}\n.styles-module__markersLayer___-25j1 > * {\n pointer-events: auto;\n}\n\n.styles-module__fixedMarkersLayer___ffyX6 {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 99998;\n pointer-events: none;\n}\n.styles-module__fixedMarkersLayer___ffyX6 > * {\n pointer-events: auto;\n}\n\n.styles-module__marker___6sQrs {\n position: absolute;\n width: 22px;\n height: 22px;\n background: #3c82f7;\n color: white;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.6875rem;\n font-weight: 600;\n transform: translate(-50%, -50%) scale(1);\n opacity: 1;\n cursor: pointer;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), inset 0 0 0 1px rgba(0, 0, 0, 0.04);\n user-select: none;\n will-change: transform, opacity;\n contain: layout style;\n z-index: 1;\n}\n.styles-module__marker___6sQrs:hover {\n z-index: 2;\n}\n.styles-module__marker___6sQrs:not(.styles-module__enter___WFIki):not(.styles-module__exit___fyOJ0):not(.styles-module__clearing___FQ--7) {\n transition: background-color 0.15s ease, transform 0.1s ease;\n}\n.styles-module__marker___6sQrs.styles-module__enter___WFIki {\n animation: styles-module__markerIn___5FaAP 0.25s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n.styles-module__marker___6sQrs.styles-module__exit___fyOJ0 {\n animation: styles-module__markerOut___GU5jX 0.2s ease-out both;\n pointer-events: none;\n}\n.styles-module__marker___6sQrs.styles-module__clearing___FQ--7 {\n animation: styles-module__markerOut___GU5jX 0.15s ease-out both;\n pointer-events: none;\n}\n.styles-module__marker___6sQrs:not(.styles-module__enter___WFIki):not(.styles-module__exit___fyOJ0):not(.styles-module__clearing___FQ--7):hover {\n transform: translate(-50%, -50%) scale(1.1);\n}\n.styles-module__marker___6sQrs.styles-module__pending___2IHLC {\n position: fixed;\n background: #3c82f7;\n}\n.styles-module__marker___6sQrs.styles-module__fixed___dBMHC {\n position: fixed;\n}\n.styles-module__marker___6sQrs.styles-module__multiSelect___YWiuz {\n background: #34c759;\n width: 26px;\n height: 26px;\n border-radius: 6px;\n font-size: 0.75rem;\n}\n.styles-module__marker___6sQrs.styles-module__multiSelect___YWiuz.styles-module__pending___2IHLC {\n background: #34c759;\n}\n.styles-module__marker___6sQrs.styles-module__hovered___ZgXIy {\n background: #ff3b30;\n}\n\n.styles-module__renumber___nCTxD {\n display: block;\n animation: styles-module__renumberRoll___Wgbq3 0.2s ease-out;\n}\n\n@keyframes styles-module__renumberRoll___Wgbq3 {\n 0% {\n transform: translateX(-40%);\n opacity: 0;\n }\n 100% {\n transform: translateX(0);\n opacity: 1;\n }\n}\n.styles-module__markerTooltip___aLJID {\n position: absolute;\n top: calc(100% + 10px);\n left: 50%;\n transform: translateX(-50%) scale(0.909);\n z-index: 100002;\n background: #1a1a1a;\n padding: 8px 0.75rem;\n border-radius: 0.75rem;\n font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;\n font-weight: 400;\n color: #fff;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.08);\n min-width: 120px;\n max-width: 200px;\n pointer-events: none;\n cursor: default;\n}\n.styles-module__markerTooltip___aLJID.styles-module__enter___WFIki {\n animation: styles-module__tooltipIn___0N31w 0.1s ease-out forwards;\n}\n\n.styles-module__markerQuote___FHmrz {\n display: block;\n font-size: 12px;\n font-style: italic;\n color: rgba(255, 255, 255, 0.6);\n margin-bottom: 0.3125rem;\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__markerNote___QkrrS {\n display: block;\n font-size: 13px;\n font-weight: 400;\n line-height: 1.4;\n color: #fff;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding-bottom: 2px;\n}\n\n.styles-module__markerHint___2iF-6 {\n display: block;\n font-size: 0.625rem;\n font-weight: 400;\n color: rgba(255, 255, 255, 0.6);\n margin-top: 0.375rem;\n white-space: nowrap;\n}\n\n.styles-module__settingsPanel___OxX3Y {\n position: absolute;\n right: 5px;\n bottom: calc(100% + 0.5rem);\n z-index: 1;\n overflow: hidden;\n background: #1c1c1c;\n border-radius: 1rem;\n padding: 13px 0 16px;\n min-width: 205px;\n cursor: default;\n opacity: 1;\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.25), 0 0 0 1px rgba(0, 0, 0, 0.04);\n transition: background 0.25s ease, box-shadow 0.25s ease;\n}\n.styles-module__settingsPanel___OxX3Y::before, .styles-module__settingsPanel___OxX3Y::after {\n content: "";\n position: absolute;\n top: 0;\n bottom: 0;\n width: 16px;\n z-index: 2;\n pointer-events: none;\n}\n.styles-module__settingsPanel___OxX3Y::before {\n left: 0;\n background: linear-gradient(to right, #1c1c1c 0%, transparent 100%);\n}\n.styles-module__settingsPanel___OxX3Y::after {\n right: 0;\n background: linear-gradient(to left, #1c1c1c 0%, transparent 100%);\n}\n.styles-module__settingsPanel___OxX3Y .styles-module__settingsHeader___pwDY9,\n.styles-module__settingsPanel___OxX3Y .styles-module__settingsBrand___0gJeM,\n.styles-module__settingsPanel___OxX3Y .styles-module__settingsBrandSlash___uTG18,\n.styles-module__settingsPanel___OxX3Y .styles-module__settingsVersion___TUcFq,\n.styles-module__settingsPanel___OxX3Y .styles-module__settingsSection___m-YM2,\n.styles-module__settingsPanel___OxX3Y .styles-module__settingsLabel___8UjfX,\n.styles-module__settingsPanel___OxX3Y .styles-module__cycleButton___FMKfw,\n.styles-module__settingsPanel___OxX3Y .styles-module__cycleDot___nPgLY,\n.styles-module__settingsPanel___OxX3Y .styles-module__dropdownButton___16NPz,\n.styles-module__settingsPanel___OxX3Y .styles-module__toggleLabel___Xm8Aa,\n.styles-module__settingsPanel___OxX3Y .styles-module__customCheckbox___U39ax,\n.styles-module__settingsPanel___OxX3Y .styles-module__sliderLabel___U8sPr,\n.styles-module__settingsPanel___OxX3Y .styles-module__slider___GLdxp,\n.styles-module__settingsPanel___OxX3Y .styles-module__helpIcon___xQg56,\n.styles-module__settingsPanel___OxX3Y .styles-module__themeToggle___2rUjA {\n transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__enter___WFIki {\n opacity: 1;\n transform: translateY(0) scale(1);\n filter: blur(0px);\n transition: opacity 0.2s ease, transform 0.2s ease, filter 0.2s ease;\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__exit___fyOJ0 {\n opacity: 0;\n transform: translateY(8px) scale(0.95);\n filter: blur(5px);\n pointer-events: none;\n transition: opacity 0.1s ease, transform 0.1s ease, filter 0.1s ease;\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__dark___ILIQf {\n background: #1a1a1a;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.08);\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__dark___ILIQf .styles-module__settingsLabel___8UjfX {\n color: rgba(255, 255, 255, 0.6);\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__dark___ILIQf .styles-module__settingsOption___UNa12 {\n color: rgba(255, 255, 255, 0.85);\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__dark___ILIQf .styles-module__settingsOption___UNa12:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__dark___ILIQf .styles-module__settingsOption___UNa12.styles-module__selected___OwRqP {\n background: rgba(255, 255, 255, 0.15);\n color: #fff;\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__dark___ILIQf .styles-module__toggleLabel___Xm8Aa {\n color: rgba(255, 255, 255, 0.85);\n}\n\n.styles-module__settingsPanelContainer___Xksv8 {\n overflow: visible;\n position: relative;\n display: flex;\n padding: 0 1rem;\n}\n.styles-module__settingsPanelContainer___Xksv8.styles-module__transitioning___qxzCk {\n overflow-x: clip;\n overflow-y: visible;\n}\n\n.styles-module__settingsPage___6YfHH {\n min-width: 100%;\n flex-shrink: 0;\n transition: transform 0.35s cubic-bezier(0.32, 0.72, 0, 1), opacity 0.2s ease-out;\n opacity: 1;\n}\n\n.styles-module__settingsPage___6YfHH.styles-module__slideLeft___Ps01J {\n transform: translateX(-100%);\n opacity: 0;\n}\n\n.styles-module__automationsPage___uvCq6 {\n position: absolute;\n top: 0;\n left: 100%;\n width: 100%;\n height: 100%;\n padding: 3px 1rem 0;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n transition: transform 0.35s cubic-bezier(0.32, 0.72, 0, 1), opacity 0.25s ease-out 0.1s;\n opacity: 0;\n}\n\n.styles-module__automationsPage___uvCq6.styles-module__slideIn___4-qXe {\n transform: translateX(-100%);\n opacity: 1;\n}\n\n.styles-module__settingsNavLink___wCzJt {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 0;\n border: none;\n background: transparent;\n font-family: inherit;\n font-size: 0.8125rem;\n font-weight: 400;\n color: rgba(255, 255, 255, 0.5);\n cursor: pointer;\n transition: color 0.15s ease;\n}\n.styles-module__settingsNavLink___wCzJt:hover {\n color: rgba(255, 255, 255, 0.9);\n}\n.styles-module__settingsNavLink___wCzJt.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.5);\n}\n.styles-module__settingsNavLink___wCzJt.styles-module__light___r6n4Y:hover {\n color: rgba(0, 0, 0, 0.8);\n}\n.styles-module__settingsNavLink___wCzJt svg {\n color: rgba(255, 255, 255, 0.4);\n transition: color 0.15s ease;\n}\n.styles-module__settingsNavLink___wCzJt:hover svg {\n color: #fff;\n}\n.styles-module__settingsNavLink___wCzJt.styles-module__light___r6n4Y svg {\n color: rgba(0, 0, 0, 0.25);\n}\n.styles-module__settingsNavLink___wCzJt.styles-module__light___r6n4Y:hover svg {\n color: rgba(0, 0, 0, 0.8);\n}\n\n.styles-module__settingsNavLinkRight___ZWwhj {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.styles-module__mcpNavIndicator___cl9pO {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.styles-module__mcpNavIndicator___cl9pO.styles-module__connected___7c28g {\n background: #34c759;\n animation: styles-module__mcpPulse___uNggr 2.5s ease-in-out infinite;\n}\n.styles-module__mcpNavIndicator___cl9pO.styles-module__connecting___uo-CW {\n background: #f5a623;\n animation: styles-module__mcpPulse___uNggr 1.5s ease-in-out infinite;\n}\n\n.styles-module__settingsBackButton___bIe2j {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 0 12px 0;\n margin: -6px 0 0.5rem 0;\n border: none;\n border-bottom: 1px solid rgba(255, 255, 255, 0.07);\n border-radius: 0;\n background: transparent;\n font-family: inherit;\n font-size: 0.8125rem;\n font-weight: 500;\n letter-spacing: -0.15px;\n color: #fff;\n cursor: pointer;\n transition: transform 0.12s cubic-bezier(0.32, 0.72, 0, 1);\n}\n.styles-module__settingsBackButton___bIe2j svg {\n opacity: 0.4;\n flex-shrink: 0;\n transition: opacity 0.15s ease, transform 0.18s cubic-bezier(0.32, 0.72, 0, 1);\n}\n.styles-module__settingsBackButton___bIe2j:hover svg {\n opacity: 1;\n}\n.styles-module__settingsBackButton___bIe2j.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.85);\n border-bottom-color: rgba(0, 0, 0, 0.08);\n}\n\n.styles-module__automationHeader___InP0r {\n display: flex;\n align-items: center;\n gap: 0.125rem;\n font-size: 0.8125rem;\n font-weight: 400;\n color: #fff;\n}\n.styles-module__automationHeader___InP0r .styles-module__helpIcon___xQg56 svg {\n transform: none;\n}\n.styles-module__automationHeader___InP0r.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.85);\n}\n\n.styles-module__automationDescription___NKlmo {\n font-size: 0.6875rem;\n font-weight: 300;\n color: rgba(255, 255, 255, 0.5);\n margin-top: 2px;\n line-height: 14px;\n}\n.styles-module__automationDescription___NKlmo.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.styles-module__learnMoreLink___8xv-x {\n color: rgba(255, 255, 255, 0.8);\n text-decoration: underline dotted;\n text-decoration-color: rgba(255, 255, 255, 0.2);\n text-underline-offset: 2px;\n transition: color 0.15s ease;\n}\n.styles-module__learnMoreLink___8xv-x:hover {\n color: #fff;\n}\n.styles-module__learnMoreLink___8xv-x.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.6);\n text-decoration-color: rgba(0, 0, 0, 0.2);\n}\n.styles-module__learnMoreLink___8xv-x.styles-module__light___r6n4Y:hover {\n color: rgba(0, 0, 0, 0.85);\n}\n\n.styles-module__autoSendRow___UblX5 {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.styles-module__autoSendLabel___icDc2 {\n font-size: 0.6875rem;\n font-weight: 400;\n color: rgba(255, 255, 255, 0.4);\n transition: color 0.15s ease;\n}\n.styles-module__autoSendLabel___icDc2.styles-module__active___-zoN6 {\n color: #66b8ff;\n}\n.styles-module__autoSendLabel___icDc2.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.4);\n}\n.styles-module__autoSendLabel___icDc2.styles-module__light___r6n4Y.styles-module__active___-zoN6 {\n color: #3c82f7;\n}\n\n.styles-module__webhookUrlInput___2375C {\n display: block;\n width: 100%;\n flex: 1;\n min-height: 60px;\n box-sizing: border-box;\n margin-top: 11px;\n padding: 8px 10px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 6px;\n background: rgba(255, 255, 255, 0.03);\n font-family: inherit;\n font-size: 0.75rem;\n font-weight: 400;\n color: #fff;\n outline: none;\n resize: none;\n cursor: text !important;\n user-select: text;\n transition: border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;\n}\n.styles-module__webhookUrlInput___2375C::placeholder {\n color: rgba(255, 255, 255, 0.3);\n}\n.styles-module__webhookUrlInput___2375C:focus {\n border-color: rgba(255, 255, 255, 0.3);\n background: rgba(255, 255, 255, 0.08);\n}\n.styles-module__webhookUrlInput___2375C.styles-module__light___r6n4Y {\n border-color: rgba(0, 0, 0, 0.1);\n background: rgba(0, 0, 0, 0.03);\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__webhookUrlInput___2375C.styles-module__light___r6n4Y::placeholder {\n color: rgba(0, 0, 0, 0.3);\n}\n.styles-module__webhookUrlInput___2375C.styles-module__light___r6n4Y:focus {\n border-color: rgba(0, 0, 0, 0.25);\n background: rgba(0, 0, 0, 0.05);\n}\n\n.styles-module__settingsHeader___pwDY9 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 24px;\n margin-bottom: 0.5rem;\n padding-bottom: 9px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.07);\n}\n\n.styles-module__settingsBrand___0gJeM {\n font-size: 0.8125rem;\n font-weight: 600;\n letter-spacing: -0.0094em;\n color: #fff;\n}\n\n.styles-module__settingsBrandSlash___uTG18 {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.styles-module__settingsVersion___TUcFq {\n font-size: 11px;\n font-weight: 400;\n color: rgba(255, 255, 255, 0.4);\n margin-left: auto;\n letter-spacing: -0.0094em;\n}\n\n.styles-module__settingsSection___m-YM2 + .styles-module__settingsSection___m-YM2 {\n margin-top: 0.5rem;\n padding-top: 0.5rem;\n border-top: 1px solid rgba(255, 255, 255, 0.07);\n}\n.styles-module__settingsSection___m-YM2.styles-module__settingsSectionExtraPadding___jdhFV {\n padding-top: calc(0.5rem + 4px);\n}\n\n.styles-module__settingsSectionGrow___h-5HZ {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.styles-module__settingsRow___3sdhc {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 24px;\n}\n.styles-module__settingsRow___3sdhc.styles-module__settingsRowMarginTop___zA0Sp {\n margin-top: 8px;\n}\n\n.styles-module__dropdownContainer___BVnxe {\n position: relative;\n}\n\n.styles-module__dropdownButton___16NPz {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.25rem 0.5rem;\n border: none;\n border-radius: 0.375rem;\n background: transparent;\n font-size: 0.8125rem;\n font-weight: 600;\n color: #fff;\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n letter-spacing: -0.0094em;\n}\n.styles-module__dropdownButton___16NPz:hover {\n background: rgba(255, 255, 255, 0.08);\n}\n.styles-module__dropdownButton___16NPz svg {\n opacity: 0.6;\n}\n\n.styles-module__cycleButton___FMKfw {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0;\n border: none;\n background: transparent;\n font-size: 0.8125rem;\n font-weight: 500;\n color: #fff;\n cursor: pointer;\n letter-spacing: -0.0094em;\n}\n.styles-module__cycleButton___FMKfw.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__cycleButton___FMKfw:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n}\n\n.styles-module__settingsRowDisabled___EgS0V .styles-module__settingsLabel___8UjfX {\n color: rgba(255, 255, 255, 0.2);\n}\n.styles-module__settingsRowDisabled___EgS0V .styles-module__settingsLabel___8UjfX.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.2);\n}\n.styles-module__settingsRowDisabled___EgS0V .styles-module__toggleSwitch___l4Ygm {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n@keyframes styles-module__cycleTextIn___Q6zJf {\n 0% {\n opacity: 0;\n transform: translateY(-6px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n.styles-module__cycleButtonText___fD1LR {\n display: inline-block;\n animation: styles-module__cycleTextIn___Q6zJf 0.2s ease-out;\n}\n\n.styles-module__cycleDots___LWuoQ {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.styles-module__cycleDot___nPgLY {\n width: 3px;\n height: 3px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.3);\n transform: scale(0.667);\n transition: background-color 0.25s ease-out, transform 0.25s ease-out;\n}\n.styles-module__cycleDot___nPgLY.styles-module__active___-zoN6 {\n background: #fff;\n transform: scale(1);\n}\n.styles-module__cycleDot___nPgLY.styles-module__light___r6n4Y {\n background: rgba(0, 0, 0, 0.2);\n}\n.styles-module__cycleDot___nPgLY.styles-module__light___r6n4Y.styles-module__active___-zoN6 {\n background: rgba(0, 0, 0, 0.7);\n}\n\n.styles-module__dropdownMenu___k73ER {\n position: absolute;\n right: 0;\n top: calc(100% + 0.25rem);\n background: #1a1a1a;\n border-radius: 0.5rem;\n padding: 0.25rem;\n min-width: 120px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.1);\n z-index: 10;\n animation: styles-module__scaleIn___c-r1K 0.15s ease-out;\n}\n\n.styles-module__dropdownItem___ylsLj {\n width: 100%;\n display: flex;\n align-items: center;\n padding: 0.5rem 0.625rem;\n border: none;\n border-radius: 0.375rem;\n background: transparent;\n font-size: 0.8125rem;\n font-weight: 500;\n color: rgba(255, 255, 255, 0.85);\n cursor: pointer;\n text-align: left;\n transition: background-color 0.15s ease, color 0.15s ease;\n letter-spacing: -0.0094em;\n}\n.styles-module__dropdownItem___ylsLj:hover {\n background: rgba(255, 255, 255, 0.08);\n}\n.styles-module__dropdownItem___ylsLj.styles-module__selected___OwRqP {\n background: rgba(255, 255, 255, 0.12);\n color: #fff;\n font-weight: 600;\n}\n\n.styles-module__settingsLabel___8UjfX {\n font-size: 0.8125rem;\n font-weight: 400;\n letter-spacing: -0.0094em;\n color: rgba(255, 255, 255, 0.5);\n display: flex;\n align-items: center;\n gap: 0.125rem;\n}\n.styles-module__settingsLabel___8UjfX.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.styles-module__settingsLabelMarker___ewdtV {\n padding-top: 3px;\n margin-bottom: 10px;\n}\n\n.styles-module__settingsOptions___LyrBA {\n display: flex;\n gap: 0.25rem;\n}\n\n.styles-module__settingsOption___UNa12 {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.25rem;\n padding: 0.375rem 0.5rem;\n border: none;\n border-radius: 0.375rem;\n background: transparent;\n font-size: 0.6875rem;\n font-weight: 500;\n color: rgba(0, 0, 0, 0.7);\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n.styles-module__settingsOption___UNa12:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n.styles-module__settingsOption___UNa12.styles-module__selected___OwRqP {\n background: rgba(60, 130, 247, 0.15);\n color: #3c82f7;\n}\n\n.styles-module__sliderContainer___ducXj {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.styles-module__slider___GLdxp {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n height: 4px;\n background: rgba(255, 255, 255, 0.15);\n border-radius: 2px;\n outline: none;\n cursor: pointer;\n}\n.styles-module__slider___GLdxp::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 14px;\n height: 14px;\n background: white;\n border-radius: 50%;\n cursor: pointer;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\n}\n.styles-module__slider___GLdxp::-moz-range-thumb {\n width: 14px;\n height: 14px;\n background: white;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\n}\n.styles-module__slider___GLdxp:hover::-webkit-slider-thumb {\n transform: scale(1.15);\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);\n}\n.styles-module__slider___GLdxp:hover::-moz-range-thumb {\n transform: scale(1.15);\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);\n}\n\n.styles-module__sliderLabels___FhLDB {\n display: flex;\n justify-content: space-between;\n}\n\n.styles-module__sliderLabel___U8sPr {\n font-size: 0.625rem;\n font-weight: 500;\n color: rgba(255, 255, 255, 0.4);\n cursor: pointer;\n transition: color 0.15s ease;\n}\n.styles-module__sliderLabel___U8sPr:hover {\n color: rgba(255, 255, 255, 0.7);\n}\n.styles-module__sliderLabel___U8sPr.styles-module__active___-zoN6 {\n color: rgba(255, 255, 255, 0.9);\n}\n\n.styles-module__colorOptions___iHCNX {\n display: flex;\n gap: 0.5rem;\n margin-top: 0.375rem;\n margin-bottom: 1px;\n}\n\n.styles-module__colorOption___IodiY {\n display: block;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n border: 2px solid transparent;\n cursor: pointer;\n transition: transform 0.2s cubic-bezier(0.25, 1, 0.5, 1);\n}\n.styles-module__colorOption___IodiY:hover {\n transform: scale(1.15);\n}\n.styles-module__colorOption___IodiY.styles-module__selected___OwRqP {\n transform: scale(0.83);\n}\n\n.styles-module__colorOptionRing___U2xpo {\n display: flex;\n width: 24px;\n height: 24px;\n border: 2px solid transparent;\n border-radius: 50%;\n transition: border-color 0.3s ease;\n}\n.styles-module__settingsToggle___fBrFn {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n cursor: pointer;\n}\n.styles-module__settingsToggle___fBrFn + .styles-module__settingsToggle___fBrFn {\n margin-top: calc(0.5rem + 6px);\n}\n.styles-module__settingsToggle___fBrFn input[type=checkbox] {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n}\n.styles-module__settingsToggle___fBrFn.styles-module__settingsToggleMarginBottom___MZUyF {\n margin-bottom: calc(0.5rem + 6px);\n}\n\n.styles-module__customCheckbox___U39ax {\n position: relative;\n width: 14px;\n height: 14px;\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 4px;\n background: rgba(255, 255, 255, 0.05);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: background 0.25s ease, border-color 0.25s ease;\n}\n.styles-module__customCheckbox___U39ax svg {\n color: #1a1a1a;\n opacity: 1;\n transition: opacity 0.15s ease;\n}\ninput[type=checkbox]:checked + .styles-module__customCheckbox___U39ax {\n border-color: rgba(255, 255, 255, 0.3);\n background: rgb(255, 255, 255);\n}\n.styles-module__customCheckbox___U39ax.styles-module__light___r6n4Y {\n border: 1px solid rgba(0, 0, 0, 0.15);\n background: #fff;\n}\n.styles-module__customCheckbox___U39ax.styles-module__light___r6n4Y.styles-module__checked___mnZLo {\n border-color: #1a1a1a;\n background: #1a1a1a;\n}\n.styles-module__customCheckbox___U39ax.styles-module__light___r6n4Y.styles-module__checked___mnZLo svg {\n color: #fff;\n}\n\n.styles-module__toggleLabel___Xm8Aa {\n font-size: 0.8125rem;\n font-weight: 400;\n color: rgba(255, 255, 255, 0.5);\n letter-spacing: -0.0094em;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n.styles-module__toggleLabel___Xm8Aa.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.styles-module__toggleSwitch___l4Ygm {\n position: relative;\n display: inline-block;\n width: 24px;\n height: 16px;\n flex-shrink: 0;\n cursor: pointer;\n transition: opacity 0.15s ease;\n}\n.styles-module__toggleSwitch___l4Ygm input {\n opacity: 0;\n width: 0;\n height: 0;\n}\n.styles-module__toggleSwitch___l4Ygm input:checked + .styles-module__toggleSlider___wprIn {\n background: #3c82f7;\n}\n.styles-module__toggleSwitch___l4Ygm input:checked + .styles-module__toggleSlider___wprIn::before {\n transform: translateX(8px);\n}\n.styles-module__toggleSwitch___l4Ygm.styles-module__disabled___332Jw {\n opacity: 0.4;\n pointer-events: none;\n}\n.styles-module__toggleSwitch___l4Ygm.styles-module__disabled___332Jw .styles-module__toggleSlider___wprIn {\n cursor: not-allowed;\n}\n\n.styles-module__toggleSlider___wprIn {\n position: absolute;\n cursor: pointer;\n inset: 0;\n border-radius: 16px;\n background: #484848;\n}\n.styles-module__light___r6n4Y .styles-module__toggleSlider___wprIn {\n background: #dddddd;\n}\n.styles-module__toggleSlider___wprIn::before {\n content: "";\n position: absolute;\n height: 12px;\n width: 12px;\n left: 2px;\n bottom: 2px;\n background: white;\n border-radius: 50%;\n transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n\n@keyframes styles-module__mcpPulse___uNggr {\n 0% {\n box-shadow: 0 0 0 0 rgba(52, 199, 89, 0.5);\n }\n 70% {\n box-shadow: 0 0 0 6px rgba(52, 199, 89, 0);\n }\n 100% {\n box-shadow: 0 0 0 0 rgba(52, 199, 89, 0);\n }\n}\n@keyframes styles-module__mcpPulseError___fov9B {\n 0% {\n box-shadow: 0 0 0 0 rgba(255, 59, 48, 0.5);\n }\n 70% {\n box-shadow: 0 0 0 6px rgba(255, 59, 48, 0);\n }\n 100% {\n box-shadow: 0 0 0 0 rgba(255, 59, 48, 0);\n }\n}\n.styles-module__mcpStatusDot___ibgkc {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.styles-module__mcpStatusDot___ibgkc.styles-module__connecting___uo-CW {\n background: #f5a623;\n animation: styles-module__mcpPulse___uNggr 1.5s infinite;\n}\n.styles-module__mcpStatusDot___ibgkc.styles-module__connected___7c28g {\n background: #34c759;\n animation: styles-module__mcpPulse___uNggr 2.5s ease-in-out infinite;\n}\n.styles-module__mcpStatusDot___ibgkc.styles-module__disconnected___cHPxR {\n background: #ff3b30;\n animation: styles-module__mcpPulseError___fov9B 2s infinite;\n}\n\n.styles-module__helpIcon___xQg56 {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: help;\n margin-left: 0;\n}\n.styles-module__helpIcon___xQg56 svg {\n display: block;\n transform: translateY(1px);\n color: rgba(255, 255, 255, 0.2);\n transition: color 0.15s ease;\n}\n.styles-module__helpIcon___xQg56:hover svg {\n color: rgba(255, 255, 255, 0.5);\n}\n.styles-module__helpIcon___xQg56.styles-module__helpIconNudgeDown___0cqpM svg {\n transform: translateY(1px);\n}\n.styles-module__helpIcon___xQg56.styles-module__helpIconNoNudge___abogC svg {\n transform: translateY(0.5px);\n}\n.styles-module__helpIcon___xQg56.styles-module__helpIconNudge1-5___DM2TQ svg {\n transform: translateY(1.5px);\n}\n.styles-module__helpIcon___xQg56.styles-module__helpIconNudge2___TfWgC svg {\n transform: translateY(2px);\n}\n\n.styles-module__dragSelection___kZLq2 {\n position: fixed;\n top: 0;\n left: 0;\n border: 2px solid rgba(52, 199, 89, 0.6);\n border-radius: 4px;\n background: rgba(52, 199, 89, 0.08);\n pointer-events: none;\n z-index: 99997;\n will-change: transform, width, height;\n contain: layout style;\n}\n\n.styles-module__dragCount___KM90j {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: #34c759;\n color: white;\n font-size: 0.875rem;\n font-weight: 600;\n padding: 0.25rem 0.5rem;\n border-radius: 1rem;\n min-width: 1.5rem;\n text-align: center;\n}\n\n.styles-module__highlightsContainer___-0xzG {\n position: fixed;\n top: 0;\n left: 0;\n pointer-events: none;\n z-index: 99996;\n}\n\n.styles-module__selectedElementHighlight___fyVlI {\n position: fixed;\n top: 0;\n left: 0;\n border: 2px solid rgba(52, 199, 89, 0.5);\n border-radius: 4px;\n background: rgba(52, 199, 89, 0.06);\n pointer-events: none;\n will-change: transform, width, height;\n contain: layout style;\n}\n\n.styles-module__light___r6n4Y.styles-module__toolbarContainer___dIhma {\n background: #fff;\n color: rgba(0, 0, 0, 0.85);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 4px 16px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.04);\n}\n.styles-module__light___r6n4Y.styles-module__toolbarContainer___dIhma.styles-module__collapsed___Rydsn:hover {\n background: #f5f5f5;\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc {\n color: rgba(0, 0, 0, 0.5);\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc:hover:not(:disabled):not([data-active=true]):not([data-failed=true]):not([data-auto-sync=true]):not([data-error=true]):not([data-no-hover=true]) {\n background: rgba(0, 0, 0, 0.06);\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc[data-active=true] {\n color: #3c82f7;\n background: rgba(60, 130, 247, 0.15);\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc[data-error=true] {\n color: #ff3b30;\n background: rgba(255, 59, 48, 0.15);\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc[data-danger]:hover:not(:disabled):not([data-active=true]):not([data-failed=true]) {\n background: rgba(255, 59, 48, 0.15);\n color: #ff3b30;\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc[data-auto-sync=true] {\n color: #34c759;\n background: transparent;\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc[data-failed=true] {\n color: #ff3b30;\n background: rgba(255, 59, 48, 0.15);\n}\n.styles-module__light___r6n4Y.styles-module__buttonTooltip___Burd9 {\n background: #fff;\n color: rgba(0, 0, 0, 0.85);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 4px 16px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.04);\n}\n.styles-module__light___r6n4Y.styles-module__buttonTooltip___Burd9::after {\n background: #fff;\n}\n.styles-module__light___r6n4Y.styles-module__divider___c--s1 {\n background: rgba(0, 0, 0, 0.1);\n}\n.styles-module__light___r6n4Y.styles-module__markerTooltip___aLJID {\n background: #fff;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.06);\n}\n.styles-module__light___r6n4Y.styles-module__markerTooltip___aLJID .styles-module__markerQuote___FHmrz {\n color: rgba(0, 0, 0, 0.5);\n}\n.styles-module__light___r6n4Y.styles-module__markerTooltip___aLJID .styles-module__markerNote___QkrrS {\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__light___r6n4Y.styles-module__markerTooltip___aLJID .styles-module__markerHint___2iF-6 {\n color: rgba(0, 0, 0, 0.35);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y {\n background: #fff;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 4px 16px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.04);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y::before {\n background: linear-gradient(to right, #fff 0%, transparent 100%);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y::after {\n background: linear-gradient(to left, #fff 0%, transparent 100%);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__settingsHeader___pwDY9 {\n border-bottom-color: rgba(0, 0, 0, 0.08);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__settingsBrand___0gJeM {\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__settingsBrandSlash___uTG18 {\n color: rgba(0, 0, 0, 0.4);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__settingsVersion___TUcFq {\n color: rgba(0, 0, 0, 0.4);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__settingsSection___m-YM2 {\n border-top-color: rgba(0, 0, 0, 0.08);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__settingsLabel___8UjfX {\n color: rgba(0, 0, 0, 0.5);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__cycleButton___FMKfw {\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__cycleDot___nPgLY {\n background: rgba(0, 0, 0, 0.2);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__cycleDot___nPgLY.styles-module__active___-zoN6 {\n background: rgba(0, 0, 0, 0.7);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__dropdownButton___16NPz {\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__dropdownButton___16NPz:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__toggleLabel___Xm8Aa {\n color: rgba(0, 0, 0, 0.5);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__customCheckbox___U39ax {\n border: 1px solid rgba(0, 0, 0, 0.15);\n background: #fff;\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__customCheckbox___U39ax.styles-module__checked___mnZLo {\n border-color: #1a1a1a;\n background: #1a1a1a;\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__customCheckbox___U39ax.styles-module__checked___mnZLo svg {\n color: #fff;\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__sliderLabel___U8sPr {\n color: rgba(0, 0, 0, 0.4);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__sliderLabel___U8sPr:hover {\n color: rgba(0, 0, 0, 0.7);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__sliderLabel___U8sPr.styles-module__active___-zoN6 {\n color: rgba(0, 0, 0, 0.9);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__slider___GLdxp {\n background: rgba(0, 0, 0, 0.1);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__slider___GLdxp::-webkit-slider-thumb {\n background: #1a1a1a;\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__slider___GLdxp::-moz-range-thumb {\n background: #1a1a1a;\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__helpIcon___xQg56 svg {\n color: rgba(0, 0, 0, 0.2);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__helpIcon___xQg56:hover svg {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.styles-module__themeToggle___2rUjA {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n margin-left: 0.5rem;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: rgba(255, 255, 255, 0.4);\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n.styles-module__themeToggle___2rUjA:hover {\n background: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.8);\n}\n.styles-module__light___r6n4Y .styles-module__themeToggle___2rUjA {\n color: rgba(0, 0, 0, 0.4);\n}\n.styles-module__light___r6n4Y .styles-module__themeToggle___2rUjA:hover {\n background: rgba(0, 0, 0, 0.06);\n color: rgba(0, 0, 0, 0.7);\n}\n\n.styles-module__themeIconWrapper___LsJIM {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n width: 20px;\n height: 20px;\n}\n\n.styles-module__themeIcon___lCCmo {\n display: flex;\n align-items: center;\n justify-content: center;\n animation: styles-module__themeIconIn___TU6ML 0.35s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;\n}\n\n@keyframes styles-module__themeIconIn___TU6ML {\n 0% {\n opacity: 0;\n transform: scale(0.8) rotate(-30deg);\n }\n 100% {\n opacity: 1;\n transform: scale(1) rotate(0deg);\n }\n}';
|
|
2374
|
-
var classNames2 = { "toolbar": "styles-module__toolbar___wNsdK", "toolbarContainer": "styles-module__toolbarContainer___dIhma", "dragging": "styles-module__dragging___xrolZ", "entrance": "styles-module__entrance___sgHd8", "toolbarEnter": "styles-module__toolbarEnter___u8RRu", "collapsed": "styles-module__collapsed___Rydsn", "expanded": "styles-module__expanded___ofKPx", "serverConnected": "styles-module__serverConnected___Gfbou", "toggleContent": "styles-module__toggleContent___0yfyP", "visible": "styles-module__visible___KHwEW", "hidden": "styles-module__hidden___Ae8H4", "controlsContent": "styles-module__controlsContent___9GJWU", "badge": "styles-module__badge___2XsgF", "fadeOut": "styles-module__fadeOut___6Ut6-", "badgeEnter": "styles-module__badgeEnter___mVQLj", "controlButton": "styles-module__controlButton___8Q0jc", "statusShowing": "styles-module__statusShowing___te6iu", "buttonBadge": "styles-module__buttonBadge___NeFWb", "light": "styles-module__light___r6n4Y", "mcpIndicator": "styles-module__mcpIndicator___zGJeL", "connected": "styles-module__connected___7c28g", "mcpIndicatorPulseConnected": "styles-module__mcpIndicatorPulseConnected___EDodZ", "connecting": "styles-module__connecting___uo-CW", "mcpIndicatorPulseConnecting": "styles-module__mcpIndicatorPulseConnecting___cCYte", "connectionIndicatorWrapper": "styles-module__connectionIndicatorWrapper___L-e-3", "connectionIndicator": "styles-module__connectionIndicator___afk9p", "connectionIndicatorVisible": "styles-module__connectionIndicatorVisible___C-i5B", "connectionIndicatorConnected": "styles-module__connectionIndicatorConnected___IY8pR", "connectionPulse": "styles-module__connectionPulse___-Zycw", "connectionIndicatorDisconnected": "styles-module__connectionIndicatorDisconnected___kmpaZ", "connectionIndicatorConnecting": "styles-module__connectionIndicatorConnecting___QmSLH", "buttonWrapper": "styles-module__buttonWrapper___rBcdv", "buttonTooltip": "styles-module__buttonTooltip___Burd9", "sendButtonWrapper": "styles-module__sendButtonWrapper___UUxG6", "sendButtonVisible": "styles-module__sendButtonVisible___WPSQU", "shortcut": "styles-module__shortcut___lEAQk", "tooltipBelow": "styles-module__tooltipBelow___m6ats", "tooltipsHidden": "styles-module__tooltipsHidden___VtLJG", "tooltipVisible": "styles-module__tooltipVisible___0jcCv", "buttonWrapperAlignLeft": "styles-module__buttonWrapperAlignLeft___myzIp", "buttonWrapperAlignRight": "styles-module__buttonWrapperAlignRight___HCQFR", "divider": "styles-module__divider___c--s1", "overlay": "styles-module__overlay___Q1O9y", "hoverHighlight": "styles-module__hoverHighlight___ogakW", "enter": "styles-module__enter___WFIki", "hoverHighlightIn": "styles-module__hoverHighlightIn___6WYHY", "multiSelectOutline": "styles-module__multiSelectOutline___cSJ-m", "fadeIn": "styles-module__fadeIn___b9qmf", "exit": "styles-module__exit___fyOJ0", "singleSelectOutline": "styles-module__singleSelectOutline___QhX-O", "hoverTooltip": "styles-module__hoverTooltip___bvLk7", "hoverTooltipIn": "styles-module__hoverTooltipIn___FYGQx", "hoverReactPath": "styles-module__hoverReactPath___gx1IJ", "hoverElementName": "styles-module__hoverElementName___QMLMl", "markersLayer": "styles-module__markersLayer___-25j1", "fixedMarkersLayer": "styles-module__fixedMarkersLayer___ffyX6", "marker": "styles-module__marker___6sQrs", "clearing": "styles-module__clearing___FQ--7", "markerIn": "styles-module__markerIn___5FaAP", "markerOut": "styles-module__markerOut___GU5jX", "pending": "styles-module__pending___2IHLC", "fixed": "styles-module__fixed___dBMHC", "multiSelect": "styles-module__multiSelect___YWiuz", "hovered": "styles-module__hovered___ZgXIy", "renumber": "styles-module__renumber___nCTxD", "renumberRoll": "styles-module__renumberRoll___Wgbq3", "markerTooltip": "styles-module__markerTooltip___aLJID", "tooltipIn": "styles-module__tooltipIn___0N31w", "markerQuote": "styles-module__markerQuote___FHmrz", "markerNote": "styles-module__markerNote___QkrrS", "markerHint": "styles-module__markerHint___2iF-6", "settingsPanel": "styles-module__settingsPanel___OxX3Y", "settingsHeader": "styles-module__settingsHeader___pwDY9", "settingsBrand": "styles-module__settingsBrand___0gJeM", "settingsBrandSlash": "styles-module__settingsBrandSlash___uTG18", "settingsVersion": "styles-module__settingsVersion___TUcFq", "settingsSection": "styles-module__settingsSection___m-YM2", "settingsLabel": "styles-module__settingsLabel___8UjfX", "cycleButton": "styles-module__cycleButton___FMKfw", "cycleDot": "styles-module__cycleDot___nPgLY", "dropdownButton": "styles-module__dropdownButton___16NPz", "toggleLabel": "styles-module__toggleLabel___Xm8Aa", "customCheckbox": "styles-module__customCheckbox___U39ax", "sliderLabel": "styles-module__sliderLabel___U8sPr", "slider": "styles-module__slider___GLdxp", "helpIcon": "styles-module__helpIcon___xQg56", "themeToggle": "styles-module__themeToggle___2rUjA", "dark": "styles-module__dark___ILIQf", "settingsOption": "styles-module__settingsOption___UNa12", "selected": "styles-module__selected___OwRqP", "settingsPanelContainer": "styles-module__settingsPanelContainer___Xksv8", "transitioning": "styles-module__transitioning___qxzCk", "settingsPage": "styles-module__settingsPage___6YfHH", "slideLeft": "styles-module__slideLeft___Ps01J", "automationsPage": "styles-module__automationsPage___uvCq6", "slideIn": "styles-module__slideIn___4-qXe", "settingsNavLink": "styles-module__settingsNavLink___wCzJt", "settingsNavLinkRight": "styles-module__settingsNavLinkRight___ZWwhj", "mcpNavIndicator": "styles-module__mcpNavIndicator___cl9pO", "mcpPulse": "styles-module__mcpPulse___uNggr", "settingsBackButton": "styles-module__settingsBackButton___bIe2j", "automationHeader": "styles-module__automationHeader___InP0r", "automationDescription": "styles-module__automationDescription___NKlmo", "learnMoreLink": "styles-module__learnMoreLink___8xv-x", "autoSendRow": "styles-module__autoSendRow___UblX5", "autoSendLabel": "styles-module__autoSendLabel___icDc2", "active": "styles-module__active___-zoN6", "webhookUrlInput": "styles-module__webhookUrlInput___2375C", "settingsSectionExtraPadding": "styles-module__settingsSectionExtraPadding___jdhFV", "settingsSectionGrow": "styles-module__settingsSectionGrow___h-5HZ", "settingsRow": "styles-module__settingsRow___3sdhc", "settingsRowMarginTop": "styles-module__settingsRowMarginTop___zA0Sp", "dropdownContainer": "styles-module__dropdownContainer___BVnxe", "settingsRowDisabled": "styles-module__settingsRowDisabled___EgS0V", "toggleSwitch": "styles-module__toggleSwitch___l4Ygm", "cycleButtonText": "styles-module__cycleButtonText___fD1LR", "cycleTextIn": "styles-module__cycleTextIn___Q6zJf", "cycleDots": "styles-module__cycleDots___LWuoQ", "dropdownMenu": "styles-module__dropdownMenu___k73ER", "scaleIn": "styles-module__scaleIn___c-r1K", "dropdownItem": "styles-module__dropdownItem___ylsLj", "settingsLabelMarker": "styles-module__settingsLabelMarker___ewdtV", "settingsOptions": "styles-module__settingsOptions___LyrBA", "sliderContainer": "styles-module__sliderContainer___ducXj", "sliderLabels": "styles-module__sliderLabels___FhLDB", "colorOptions": "styles-module__colorOptions___iHCNX", "colorOption": "styles-module__colorOption___IodiY", "colorOptionRing": "styles-module__colorOptionRing___U2xpo", "settingsToggle": "styles-module__settingsToggle___fBrFn", "settingsToggleMarginBottom": "styles-module__settingsToggleMarginBottom___MZUyF", "checked": "styles-module__checked___mnZLo", "toggleSlider": "styles-module__toggleSlider___wprIn", "disabled": "styles-module__disabled___332Jw", "mcpStatusDot": "styles-module__mcpStatusDot___ibgkc", "disconnected": "styles-module__disconnected___cHPxR", "mcpPulseError": "styles-module__mcpPulseError___fov9B", "helpIconNudgeDown": "styles-module__helpIconNudgeDown___0cqpM", "helpIconNoNudge": "styles-module__helpIconNoNudge___abogC", "helpIconNudge1-5": "styles-module__helpIconNudge1-5___DM2TQ", "helpIconNudge2": "styles-module__helpIconNudge2___TfWgC", "dragSelection": "styles-module__dragSelection___kZLq2", "dragCount": "styles-module__dragCount___KM90j", "highlightsContainer": "styles-module__highlightsContainer___-0xzG", "selectedElementHighlight": "styles-module__selectedElementHighlight___fyVlI", "themeIconWrapper": "styles-module__themeIconWrapper___LsJIM", "themeIcon": "styles-module__themeIcon___lCCmo", "themeIconIn": "styles-module__themeIconIn___TU6ML", "scaleOut": "styles-module__scaleOut___Wctwz", "slideUp": "styles-module__slideUp___kgD36", "slideDown": "styles-module__slideDown___zcdje", "settingsPanelIn": "styles-module__settingsPanelIn___MGfO8", "settingsPanelOut": "styles-module__settingsPanelOut___Zfymi" };
|
|
2746
|
+
var css2 = 'svg[fill=none] {\n fill: none !important;\n}\n\n.styles-module__toolbar___wNsdK :where(button, input, select, textarea, label) {\n background: unset;\n border: unset;\n border-radius: unset;\n padding: unset;\n margin: unset;\n color: unset;\n font: unset;\n letter-spacing: unset;\n text-transform: unset;\n text-decoration: unset;\n box-shadow: unset;\n outline: unset;\n}\n\n@keyframes styles-module__toolbarEnter___u8RRu {\n from {\n opacity: 0;\n transform: scale(0.5) rotate(90deg);\n }\n to {\n opacity: 1;\n transform: scale(1) rotate(0deg);\n }\n}\n@keyframes styles-module__toolbarHide___y8kaT {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.8);\n }\n}\n@keyframes styles-module__badgeEnter___mVQLj {\n from {\n opacity: 0;\n transform: scale(0);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__scaleIn___c-r1K {\n from {\n opacity: 0;\n transform: scale(0.85);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__scaleOut___Wctwz {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.85);\n }\n}\n@keyframes styles-module__slideUp___kgD36 {\n from {\n opacity: 0;\n transform: scale(0.85) translateY(8px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n@keyframes styles-module__slideDown___zcdje {\n from {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n to {\n opacity: 0;\n transform: scale(0.85) translateY(8px);\n }\n}\n@keyframes styles-module__markerIn___5FaAP {\n 0% {\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.3);\n }\n 100% {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n@keyframes styles-module__markerOut___GU5jX {\n 0% {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n 100% {\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.3);\n }\n}\n@keyframes styles-module__fadeIn___b9qmf {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes styles-module__fadeOut___6Ut6- {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes styles-module__tooltipIn___0N31w {\n from {\n opacity: 0;\n transform: translateX(-50%) translateY(2px) scale(0.891);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) translateY(0) scale(0.909);\n }\n}\n@keyframes styles-module__hoverHighlightIn___6WYHY {\n from {\n opacity: 0;\n transform: scale(0.98);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__hoverTooltipIn___FYGQx {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(4px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n@keyframes styles-module__settingsPanelIn___MGfO8 {\n from {\n opacity: 0;\n transform: translateY(10px) scale(0.95);\n filter: blur(5px);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n filter: blur(0px);\n }\n}\n@keyframes styles-module__settingsPanelOut___Zfymi {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n filter: blur(0px);\n }\n to {\n opacity: 0;\n transform: translateY(20px) scale(0.95);\n filter: blur(5px);\n }\n}\n.styles-module__toolbar___wNsdK {\n position: fixed;\n bottom: 1.25rem;\n right: 1.25rem;\n width: 297px;\n z-index: 100000;\n font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;\n pointer-events: none;\n transition: left 0s, top 0s, right 0s, bottom 0s;\n}\n\n.styles-module__toolbarContainer___dIhma {\n user-select: none;\n margin-left: auto;\n align-self: flex-end;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #1a1a1a;\n color: #fff;\n border: none;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), 0 4px 16px rgba(0, 0, 0, 0.1);\n pointer-events: auto;\n cursor: grab;\n transition: width 0.4s cubic-bezier(0.19, 1, 0.22, 1), transform 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n}\n.styles-module__toolbarContainer___dIhma.styles-module__dragging___xrolZ {\n transition: width 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n cursor: grabbing;\n}\n.styles-module__toolbarContainer___dIhma.styles-module__entrance___sgHd8 {\n animation: styles-module__toolbarEnter___u8RRu 0.5s cubic-bezier(0.34, 1.2, 0.64, 1) forwards;\n}\n.styles-module__toolbarContainer___dIhma.styles-module__hiding___1td44 {\n animation: styles-module__toolbarHide___y8kaT 0.4s cubic-bezier(0.4, 0, 1, 1) forwards;\n pointer-events: none;\n}\n.styles-module__toolbarContainer___dIhma.styles-module__collapsed___Rydsn {\n width: 44px;\n height: 44px;\n border-radius: 22px;\n padding: 0;\n cursor: pointer;\n}\n.styles-module__toolbarContainer___dIhma.styles-module__collapsed___Rydsn svg {\n margin-top: -1px;\n}\n.styles-module__toolbarContainer___dIhma.styles-module__collapsed___Rydsn:hover {\n background: #2a2a2a;\n}\n.styles-module__toolbarContainer___dIhma.styles-module__collapsed___Rydsn:active {\n transform: scale(0.95);\n}\n.styles-module__toolbarContainer___dIhma.styles-module__expanded___ofKPx {\n height: 44px;\n border-radius: 1.5rem;\n padding: 0.375rem;\n width: 257px;\n}\n.styles-module__toolbarContainer___dIhma.styles-module__expanded___ofKPx.styles-module__serverConnected___Gfbou {\n width: 297px;\n}\n\n.styles-module__toggleContent___0yfyP {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.1s cubic-bezier(0.19, 1, 0.22, 1);\n}\n.styles-module__toggleContent___0yfyP.styles-module__visible___KHwEW {\n opacity: 1;\n visibility: visible;\n pointer-events: auto;\n}\n.styles-module__toggleContent___0yfyP.styles-module__hidden___Ae8H4 {\n opacity: 0;\n pointer-events: none;\n}\n\n.styles-module__controlsContent___9GJWU {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n transition: filter 0.8s cubic-bezier(0.19, 1, 0.22, 1), opacity 0.8s cubic-bezier(0.19, 1, 0.22, 1), transform 0.6s cubic-bezier(0.19, 1, 0.22, 1);\n}\n.styles-module__controlsContent___9GJWU.styles-module__visible___KHwEW {\n opacity: 1;\n filter: blur(0px);\n transform: scale(1);\n visibility: visible;\n pointer-events: auto;\n}\n.styles-module__controlsContent___9GJWU.styles-module__hidden___Ae8H4 {\n pointer-events: none;\n opacity: 0;\n filter: blur(10px);\n transform: scale(0.4);\n}\n\n.styles-module__badge___2XsgF {\n position: absolute;\n top: -13px;\n right: -13px;\n user-select: none;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: 9px;\n background: #3c82f7;\n color: white;\n font-size: 0.625rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15), inset 0 0 0 1px rgba(255, 255, 255, 0.04);\n opacity: 1;\n transition: transform 0.3s ease, opacity 0.2s ease;\n transform: scale(1);\n}\n.styles-module__badge___2XsgF.styles-module__fadeOut___6Ut6- {\n opacity: 0;\n transform: scale(0);\n pointer-events: none;\n}\n.styles-module__badge___2XsgF.styles-module__entrance___sgHd8 {\n animation: styles-module__badgeEnter___mVQLj 0.3s cubic-bezier(0.34, 1.2, 0.64, 1) 0.4s both;\n}\n\n.styles-module__controlButton___8Q0jc {\n position: relative;\n cursor: pointer !important;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n border-radius: 50%;\n border: none;\n background: transparent;\n color: rgba(255, 255, 255, 0.85);\n transition: background-color 0.15s ease, color 0.15s ease, transform 0.1s ease, opacity 0.2s ease;\n}\n.styles-module__controlButton___8Q0jc:hover:not(:disabled):not([data-active=true]):not([data-failed=true]):not([data-auto-sync=true]):not([data-error=true]):not([data-no-hover=true]) {\n background: rgba(255, 255, 255, 0.12);\n color: #fff;\n}\n.styles-module__controlButton___8Q0jc:active:not(:disabled) {\n transform: scale(0.92);\n}\n.styles-module__controlButton___8Q0jc:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n}\n.styles-module__controlButton___8Q0jc[data-active=true] {\n color: #3c82f7;\n background: rgba(60, 130, 247, 0.25);\n}\n.styles-module__controlButton___8Q0jc[data-error=true] {\n color: #ff3b30;\n background: rgba(255, 59, 48, 0.25);\n}\n.styles-module__controlButton___8Q0jc[data-danger]:hover:not(:disabled):not([data-active=true]):not([data-failed=true]) {\n background: rgba(255, 59, 48, 0.25);\n color: #ff3b30;\n}\n.styles-module__controlButton___8Q0jc[data-no-hover=true], .styles-module__controlButton___8Q0jc.styles-module__statusShowing___te6iu {\n cursor: default !important;\n pointer-events: none;\n background: transparent !important;\n}\n.styles-module__controlButton___8Q0jc[data-auto-sync=true] {\n color: #34c759;\n background: transparent;\n cursor: default;\n}\n.styles-module__controlButton___8Q0jc[data-failed=true] {\n color: #ff3b30;\n background: rgba(255, 59, 48, 0.25);\n}\n\n.styles-module__buttonBadge___NeFWb {\n position: absolute;\n top: 0px;\n right: 0px;\n min-width: 16px;\n height: 16px;\n padding: 0 4px;\n border-radius: 8px;\n background: #3c82f7;\n color: white;\n font-size: 0.625rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 0 0 2px #1a1a1a, 0 1px 3px rgba(0, 0, 0, 0.2);\n pointer-events: none;\n}\n.styles-module__buttonBadge___NeFWb.styles-module__light___r6n4Y {\n box-shadow: 0 0 0 2px #fff, 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n@keyframes styles-module__mcpIndicatorPulseConnected___EDodZ {\n 0%, 100% {\n box-shadow: 0 0 0 0 rgba(52, 199, 89, 0.5);\n }\n 50% {\n box-shadow: 0 0 0 5px rgba(52, 199, 89, 0);\n }\n}\n@keyframes styles-module__mcpIndicatorPulseConnecting___cCYte {\n 0%, 100% {\n box-shadow: 0 0 0 0 rgba(245, 166, 35, 0.5);\n }\n 50% {\n box-shadow: 0 0 0 5px rgba(245, 166, 35, 0);\n }\n}\n.styles-module__mcpIndicator___zGJeL {\n position: absolute;\n top: 3px;\n right: 3px;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n pointer-events: none;\n transition: background 0.3s ease, opacity 0.15s ease, transform 0.15s ease;\n opacity: 1;\n transform: scale(1);\n}\n.styles-module__mcpIndicator___zGJeL.styles-module__connected___7c28g {\n background: #34c759;\n animation: styles-module__mcpIndicatorPulseConnected___EDodZ 2.5s ease-in-out infinite;\n}\n.styles-module__mcpIndicator___zGJeL.styles-module__connecting___uo-CW {\n background: #f5a623;\n animation: styles-module__mcpIndicatorPulseConnecting___cCYte 1.5s ease-in-out infinite;\n}\n.styles-module__mcpIndicator___zGJeL.styles-module__hidden___Ae8H4 {\n opacity: 0;\n transform: scale(0);\n animation: none;\n}\n\n@keyframes styles-module__connectionPulse___-Zycw {\n 0%, 100% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0.6;\n transform: scale(0.9);\n }\n}\n.styles-module__connectionIndicatorWrapper___L-e-3 {\n width: 8px;\n height: 34px;\n margin-left: 6px;\n margin-right: 6px;\n}\n\n.styles-module__connectionIndicator___afk9p {\n position: relative;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n opacity: 0;\n transition: opacity 0.3s ease, background 0.3s ease;\n cursor: default;\n}\n\n.styles-module__connectionIndicatorVisible___C-i5B {\n opacity: 1;\n}\n\n.styles-module__connectionIndicatorConnected___IY8pR {\n background: #34c759;\n animation: styles-module__connectionPulse___-Zycw 2.5s ease-in-out infinite;\n}\n\n.styles-module__connectionIndicatorDisconnected___kmpaZ {\n background: #ff3b30;\n animation: none;\n}\n\n.styles-module__connectionIndicatorConnecting___QmSLH {\n background: #f59e0b;\n animation: styles-module__connectionPulse___-Zycw 1s ease-in-out infinite;\n}\n\n.styles-module__buttonWrapper___rBcdv {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.styles-module__buttonWrapper___rBcdv:hover .styles-module__buttonTooltip___Burd9 {\n opacity: 1;\n visibility: visible;\n transform: translateX(-50%) scale(1);\n transition-delay: 0.85s;\n}\n.styles-module__buttonWrapper___rBcdv:has(.styles-module__controlButton___8Q0jc:disabled):hover .styles-module__buttonTooltip___Burd9 {\n opacity: 0;\n visibility: hidden;\n}\n\n.styles-module__tooltipsInSession___-0lHH .styles-module__buttonWrapper___rBcdv:hover .styles-module__buttonTooltip___Burd9 {\n transition-delay: 0s;\n}\n\n.styles-module__sendButtonWrapper___UUxG6 {\n width: 0;\n opacity: 0;\n overflow: hidden;\n pointer-events: none;\n margin-left: -0.375rem;\n transition: width 0.4s cubic-bezier(0.19, 1, 0.22, 1), opacity 0.3s cubic-bezier(0.19, 1, 0.22, 1), margin 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n}\n.styles-module__sendButtonWrapper___UUxG6 .styles-module__controlButton___8Q0jc {\n transform: scale(0.8);\n transition: transform 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n}\n.styles-module__sendButtonWrapper___UUxG6.styles-module__sendButtonVisible___WPSQU {\n width: 34px;\n opacity: 1;\n overflow: visible;\n pointer-events: auto;\n margin-left: 0;\n}\n.styles-module__sendButtonWrapper___UUxG6.styles-module__sendButtonVisible___WPSQU .styles-module__controlButton___8Q0jc {\n transform: scale(1);\n}\n\n.styles-module__buttonTooltip___Burd9 {\n position: absolute;\n bottom: calc(100% + 14px);\n left: 50%;\n transform: translateX(-50%) scale(0.95);\n padding: 6px 10px;\n background: #1a1a1a;\n color: rgba(255, 255, 255, 0.9);\n font-size: 12px;\n font-weight: 500;\n border-radius: 8px;\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n z-index: 100001;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n transition: opacity 0.135s ease, transform 0.135s ease, visibility 0.135s ease;\n}\n.styles-module__buttonTooltip___Burd9::after {\n content: "";\n position: absolute;\n top: calc(100% - 4px);\n left: 50%;\n transform: translateX(-50%) rotate(45deg);\n width: 8px;\n height: 8px;\n background: #1a1a1a;\n border-radius: 0 0 2px 0;\n}\n\n.styles-module__shortcut___lEAQk {\n margin-left: 4px;\n opacity: 0.5;\n}\n\n.styles-module__tooltipBelow___m6ats .styles-module__buttonTooltip___Burd9 {\n bottom: auto;\n top: calc(100% + 14px);\n transform: translateX(-50%) scale(0.95);\n}\n.styles-module__tooltipBelow___m6ats .styles-module__buttonTooltip___Burd9::after {\n top: -4px;\n bottom: auto;\n border-radius: 2px 0 0 0;\n}\n\n.styles-module__tooltipBelow___m6ats .styles-module__buttonWrapper___rBcdv:hover .styles-module__buttonTooltip___Burd9 {\n transform: translateX(-50%) scale(1);\n}\n\n.styles-module__tooltipsHidden___VtLJG .styles-module__buttonTooltip___Burd9 {\n opacity: 0 !important;\n visibility: hidden !important;\n transition: none !important;\n}\n\n.styles-module__tooltipVisible___0jcCv,\n.styles-module__tooltipsHidden___VtLJG .styles-module__tooltipVisible___0jcCv {\n opacity: 1 !important;\n visibility: visible !important;\n transform: translateX(-50%) scale(1) !important;\n transition-delay: 0s !important;\n}\n\n.styles-module__buttonWrapperAlignLeft___myzIp .styles-module__buttonTooltip___Burd9 {\n left: 50%;\n transform: translateX(-12px) scale(0.95);\n}\n.styles-module__buttonWrapperAlignLeft___myzIp .styles-module__buttonTooltip___Burd9::after {\n left: 16px;\n}\n.styles-module__buttonWrapperAlignLeft___myzIp:hover .styles-module__buttonTooltip___Burd9 {\n transform: translateX(-12px) scale(1);\n}\n\n.styles-module__tooltipBelow___m6ats .styles-module__buttonWrapperAlignLeft___myzIp .styles-module__buttonTooltip___Burd9 {\n transform: translateX(-12px) scale(0.95);\n}\n.styles-module__tooltipBelow___m6ats .styles-module__buttonWrapperAlignLeft___myzIp:hover .styles-module__buttonTooltip___Burd9 {\n transform: translateX(-12px) scale(1);\n}\n\n.styles-module__buttonWrapperAlignRight___HCQFR .styles-module__buttonTooltip___Burd9 {\n left: 50%;\n transform: translateX(calc(-100% + 12px)) scale(0.95);\n}\n.styles-module__buttonWrapperAlignRight___HCQFR .styles-module__buttonTooltip___Burd9::after {\n left: auto;\n right: 8px;\n}\n.styles-module__buttonWrapperAlignRight___HCQFR:hover .styles-module__buttonTooltip___Burd9 {\n transform: translateX(calc(-100% + 12px)) scale(1);\n}\n\n.styles-module__tooltipBelow___m6ats .styles-module__buttonWrapperAlignRight___HCQFR .styles-module__buttonTooltip___Burd9 {\n transform: translateX(calc(-100% + 12px)) scale(0.95);\n}\n.styles-module__tooltipBelow___m6ats .styles-module__buttonWrapperAlignRight___HCQFR:hover .styles-module__buttonTooltip___Burd9 {\n transform: translateX(calc(-100% + 12px)) scale(1);\n}\n\n.styles-module__divider___c--s1 {\n width: 1px;\n height: 12px;\n background: rgba(255, 255, 255, 0.15);\n margin: 0 0.125rem;\n}\n\n.styles-module__overlay___Q1O9y {\n position: fixed;\n inset: 0;\n z-index: 99997;\n pointer-events: none;\n}\n.styles-module__overlay___Q1O9y > * {\n pointer-events: auto;\n}\n\n.styles-module__hoverHighlight___ogakW {\n position: fixed;\n border: 2px solid rgba(60, 130, 247, 0.5);\n border-radius: 4px;\n pointer-events: none !important;\n background: rgba(60, 130, 247, 0.04);\n box-sizing: border-box;\n will-change: opacity;\n contain: layout style;\n}\n.styles-module__hoverHighlight___ogakW.styles-module__enter___WFIki {\n animation: styles-module__hoverHighlightIn___6WYHY 0.12s ease-out forwards;\n}\n\n.styles-module__multiSelectOutline___cSJ-m {\n position: fixed;\n border: 2px dashed rgba(52, 199, 89, 0.6);\n border-radius: 4px;\n pointer-events: none !important;\n background: rgba(52, 199, 89, 0.05);\n box-sizing: border-box;\n will-change: opacity;\n}\n.styles-module__multiSelectOutline___cSJ-m.styles-module__enter___WFIki {\n animation: styles-module__fadeIn___b9qmf 0.15s ease-out forwards;\n}\n.styles-module__multiSelectOutline___cSJ-m.styles-module__exit___fyOJ0 {\n animation: styles-module__fadeOut___6Ut6- 0.15s ease-out forwards;\n}\n\n.styles-module__singleSelectOutline___QhX-O {\n position: fixed;\n border: 2px solid rgba(60, 130, 247, 0.6);\n border-radius: 4px;\n pointer-events: none !important;\n background: rgba(60, 130, 247, 0.05);\n box-sizing: border-box;\n will-change: opacity;\n}\n.styles-module__singleSelectOutline___QhX-O.styles-module__enter___WFIki {\n animation: styles-module__fadeIn___b9qmf 0.15s ease-out forwards;\n}\n.styles-module__singleSelectOutline___QhX-O.styles-module__exit___fyOJ0 {\n animation: styles-module__fadeOut___6Ut6- 0.15s ease-out forwards;\n}\n\n.styles-module__hoverTooltip___bvLk7 {\n position: fixed;\n font-size: 0.6875rem;\n font-weight: 500;\n color: #fff;\n background: rgba(0, 0, 0, 0.85);\n padding: 0.35rem 0.6rem;\n border-radius: 0.375rem;\n pointer-events: none !important;\n white-space: nowrap;\n max-width: 280px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.styles-module__hoverTooltip___bvLk7.styles-module__enter___WFIki {\n animation: styles-module__hoverTooltipIn___FYGQx 0.1s ease-out forwards;\n}\n\n.styles-module__hoverReactPath___gx1IJ {\n font-size: 0.625rem;\n color: rgba(255, 255, 255, 0.6);\n margin-bottom: 0.15rem;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__hoverElementName___QMLMl {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__markersLayer___-25j1 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 0;\n z-index: 99998;\n pointer-events: none;\n}\n.styles-module__markersLayer___-25j1 > * {\n pointer-events: auto;\n}\n\n.styles-module__fixedMarkersLayer___ffyX6 {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 99998;\n pointer-events: none;\n}\n.styles-module__fixedMarkersLayer___ffyX6 > * {\n pointer-events: auto;\n}\n\n.styles-module__marker___6sQrs {\n position: absolute;\n width: 22px;\n height: 22px;\n background: #3c82f7;\n color: white;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.6875rem;\n font-weight: 600;\n transform: translate(-50%, -50%) scale(1);\n opacity: 1;\n cursor: pointer;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), inset 0 0 0 1px rgba(0, 0, 0, 0.04);\n user-select: none;\n will-change: transform, opacity;\n contain: layout style;\n z-index: 1;\n}\n.styles-module__marker___6sQrs:hover {\n z-index: 2;\n}\n.styles-module__marker___6sQrs:not(.styles-module__enter___WFIki):not(.styles-module__exit___fyOJ0):not(.styles-module__clearing___FQ--7) {\n transition: background-color 0.15s ease, transform 0.1s ease;\n}\n.styles-module__marker___6sQrs.styles-module__enter___WFIki {\n animation: styles-module__markerIn___5FaAP 0.25s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n.styles-module__marker___6sQrs.styles-module__exit___fyOJ0 {\n animation: styles-module__markerOut___GU5jX 0.2s ease-out both;\n pointer-events: none;\n}\n.styles-module__marker___6sQrs.styles-module__clearing___FQ--7 {\n animation: styles-module__markerOut___GU5jX 0.15s ease-out both;\n pointer-events: none;\n}\n.styles-module__marker___6sQrs:not(.styles-module__enter___WFIki):not(.styles-module__exit___fyOJ0):not(.styles-module__clearing___FQ--7):hover {\n transform: translate(-50%, -50%) scale(1.1);\n}\n.styles-module__marker___6sQrs.styles-module__pending___2IHLC {\n position: fixed;\n background: #3c82f7;\n}\n.styles-module__marker___6sQrs.styles-module__fixed___dBMHC {\n position: fixed;\n}\n.styles-module__marker___6sQrs.styles-module__multiSelect___YWiuz {\n background: #34c759;\n width: 26px;\n height: 26px;\n border-radius: 6px;\n font-size: 0.75rem;\n}\n.styles-module__marker___6sQrs.styles-module__multiSelect___YWiuz.styles-module__pending___2IHLC {\n background: #34c759;\n}\n.styles-module__marker___6sQrs.styles-module__hovered___ZgXIy {\n background: #ff3b30;\n}\n\n.styles-module__renumber___nCTxD {\n display: block;\n animation: styles-module__renumberRoll___Wgbq3 0.2s ease-out;\n}\n\n@keyframes styles-module__renumberRoll___Wgbq3 {\n 0% {\n transform: translateX(-40%);\n opacity: 0;\n }\n 100% {\n transform: translateX(0);\n opacity: 1;\n }\n}\n.styles-module__markerTooltip___aLJID {\n position: absolute;\n top: calc(100% + 10px);\n left: 50%;\n transform: translateX(-50%) scale(0.909);\n z-index: 100002;\n background: #1a1a1a;\n padding: 8px 0.75rem;\n border-radius: 0.75rem;\n font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;\n font-weight: 400;\n color: #fff;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.08);\n min-width: 120px;\n max-width: 200px;\n pointer-events: none;\n cursor: default;\n}\n.styles-module__markerTooltip___aLJID.styles-module__enter___WFIki {\n animation: styles-module__tooltipIn___0N31w 0.1s ease-out forwards;\n}\n\n.styles-module__markerQuote___FHmrz {\n display: block;\n font-size: 12px;\n font-style: italic;\n color: rgba(255, 255, 255, 0.6);\n margin-bottom: 0.3125rem;\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__markerNote___QkrrS {\n display: block;\n font-size: 13px;\n font-weight: 400;\n line-height: 1.4;\n color: #fff;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding-bottom: 2px;\n}\n\n.styles-module__markerHint___2iF-6 {\n display: block;\n font-size: 0.625rem;\n font-weight: 400;\n color: rgba(255, 255, 255, 0.6);\n margin-top: 0.375rem;\n white-space: nowrap;\n}\n\n.styles-module__settingsPanel___OxX3Y {\n position: absolute;\n right: 5px;\n bottom: calc(100% + 0.5rem);\n z-index: 1;\n overflow: hidden;\n background: #1c1c1c;\n border-radius: 1rem;\n padding: 13px 0 16px;\n min-width: 205px;\n cursor: default;\n opacity: 1;\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.25), 0 0 0 1px rgba(0, 0, 0, 0.04);\n transition: background 0.25s ease, box-shadow 0.25s ease;\n}\n.styles-module__settingsPanel___OxX3Y::before, .styles-module__settingsPanel___OxX3Y::after {\n content: "";\n position: absolute;\n top: 0;\n bottom: 0;\n width: 16px;\n z-index: 2;\n pointer-events: none;\n}\n.styles-module__settingsPanel___OxX3Y::before {\n left: 0;\n background: linear-gradient(to right, #1c1c1c 0%, transparent 100%);\n}\n.styles-module__settingsPanel___OxX3Y::after {\n right: 0;\n background: linear-gradient(to left, #1c1c1c 0%, transparent 100%);\n}\n.styles-module__settingsPanel___OxX3Y .styles-module__settingsHeader___pwDY9,\n.styles-module__settingsPanel___OxX3Y .styles-module__settingsBrand___0gJeM,\n.styles-module__settingsPanel___OxX3Y .styles-module__settingsBrandSlash___uTG18,\n.styles-module__settingsPanel___OxX3Y .styles-module__settingsVersion___TUcFq,\n.styles-module__settingsPanel___OxX3Y .styles-module__settingsSection___m-YM2,\n.styles-module__settingsPanel___OxX3Y .styles-module__settingsLabel___8UjfX,\n.styles-module__settingsPanel___OxX3Y .styles-module__cycleButton___FMKfw,\n.styles-module__settingsPanel___OxX3Y .styles-module__cycleDot___nPgLY,\n.styles-module__settingsPanel___OxX3Y .styles-module__dropdownButton___16NPz,\n.styles-module__settingsPanel___OxX3Y .styles-module__toggleLabel___Xm8Aa,\n.styles-module__settingsPanel___OxX3Y .styles-module__customCheckbox___U39ax,\n.styles-module__settingsPanel___OxX3Y .styles-module__sliderLabel___U8sPr,\n.styles-module__settingsPanel___OxX3Y .styles-module__slider___GLdxp,\n.styles-module__settingsPanel___OxX3Y .styles-module__helpIcon___xQg56,\n.styles-module__settingsPanel___OxX3Y .styles-module__themeToggle___2rUjA {\n transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__enter___WFIki {\n opacity: 1;\n transform: translateY(0) scale(1);\n filter: blur(0px);\n transition: opacity 0.2s ease, transform 0.2s ease, filter 0.2s ease;\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__exit___fyOJ0 {\n opacity: 0;\n transform: translateY(8px) scale(0.95);\n filter: blur(5px);\n pointer-events: none;\n transition: opacity 0.1s ease, transform 0.1s ease, filter 0.1s ease;\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__dark___ILIQf {\n background: #1a1a1a;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.08);\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__dark___ILIQf .styles-module__settingsLabel___8UjfX {\n color: rgba(255, 255, 255, 0.6);\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__dark___ILIQf .styles-module__settingsOption___UNa12 {\n color: rgba(255, 255, 255, 0.85);\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__dark___ILIQf .styles-module__settingsOption___UNa12:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__dark___ILIQf .styles-module__settingsOption___UNa12.styles-module__selected___OwRqP {\n background: rgba(255, 255, 255, 0.15);\n color: #fff;\n}\n.styles-module__settingsPanel___OxX3Y.styles-module__dark___ILIQf .styles-module__toggleLabel___Xm8Aa {\n color: rgba(255, 255, 255, 0.85);\n}\n\n.styles-module__settingsPanelContainer___Xksv8 {\n overflow: visible;\n position: relative;\n display: flex;\n padding: 0 1rem;\n}\n.styles-module__settingsPanelContainer___Xksv8.styles-module__transitioning___qxzCk {\n overflow-x: clip;\n overflow-y: visible;\n}\n\n.styles-module__settingsPage___6YfHH {\n min-width: 100%;\n flex-shrink: 0;\n transition: transform 0.35s cubic-bezier(0.32, 0.72, 0, 1), opacity 0.2s ease-out;\n opacity: 1;\n}\n\n.styles-module__settingsPage___6YfHH.styles-module__slideLeft___Ps01J {\n transform: translateX(-100%);\n opacity: 0;\n}\n\n.styles-module__automationsPage___uvCq6 {\n position: absolute;\n top: 0;\n left: 100%;\n width: 100%;\n height: 100%;\n padding: 3px 1rem 0;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n transition: transform 0.35s cubic-bezier(0.32, 0.72, 0, 1), opacity 0.25s ease-out 0.1s;\n opacity: 0;\n}\n\n.styles-module__automationsPage___uvCq6.styles-module__slideIn___4-qXe {\n transform: translateX(-100%);\n opacity: 1;\n}\n\n.styles-module__settingsNavLink___wCzJt {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 0;\n border: none;\n background: transparent;\n font-family: inherit;\n font-size: 0.8125rem;\n font-weight: 400;\n color: rgba(255, 255, 255, 0.5);\n cursor: pointer;\n transition: color 0.15s ease;\n}\n.styles-module__settingsNavLink___wCzJt:hover {\n color: rgba(255, 255, 255, 0.9);\n}\n.styles-module__settingsNavLink___wCzJt.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.5);\n}\n.styles-module__settingsNavLink___wCzJt.styles-module__light___r6n4Y:hover {\n color: rgba(0, 0, 0, 0.8);\n}\n.styles-module__settingsNavLink___wCzJt svg {\n color: rgba(255, 255, 255, 0.4);\n transition: color 0.15s ease;\n}\n.styles-module__settingsNavLink___wCzJt:hover svg {\n color: #fff;\n}\n.styles-module__settingsNavLink___wCzJt.styles-module__light___r6n4Y svg {\n color: rgba(0, 0, 0, 0.25);\n}\n.styles-module__settingsNavLink___wCzJt.styles-module__light___r6n4Y:hover svg {\n color: rgba(0, 0, 0, 0.8);\n}\n\n.styles-module__settingsNavLinkRight___ZWwhj {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.styles-module__mcpNavIndicator___cl9pO {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.styles-module__mcpNavIndicator___cl9pO.styles-module__connected___7c28g {\n background: #34c759;\n animation: styles-module__mcpPulse___uNggr 2.5s ease-in-out infinite;\n}\n.styles-module__mcpNavIndicator___cl9pO.styles-module__connecting___uo-CW {\n background: #f5a623;\n animation: styles-module__mcpPulse___uNggr 1.5s ease-in-out infinite;\n}\n\n.styles-module__settingsBackButton___bIe2j {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 0 12px 0;\n margin: -6px 0 0.5rem 0;\n border: none;\n border-bottom: 1px solid rgba(255, 255, 255, 0.07);\n border-radius: 0;\n background: transparent;\n font-family: inherit;\n font-size: 0.8125rem;\n font-weight: 500;\n letter-spacing: -0.15px;\n color: #fff;\n cursor: pointer;\n transition: transform 0.12s cubic-bezier(0.32, 0.72, 0, 1);\n}\n.styles-module__settingsBackButton___bIe2j svg {\n opacity: 0.4;\n flex-shrink: 0;\n transition: opacity 0.15s ease, transform 0.18s cubic-bezier(0.32, 0.72, 0, 1);\n}\n.styles-module__settingsBackButton___bIe2j:hover {\n border-bottom-color: rgba(255, 255, 255, 0.07);\n}\n.styles-module__settingsBackButton___bIe2j:hover svg {\n opacity: 1;\n}\n.styles-module__settingsBackButton___bIe2j.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.85);\n border-bottom-color: rgba(0, 0, 0, 0.08);\n}\n.styles-module__settingsBackButton___bIe2j.styles-module__light___r6n4Y:hover {\n border-bottom-color: rgba(0, 0, 0, 0.08);\n}\n\n.styles-module__automationHeader___InP0r {\n display: flex;\n align-items: center;\n gap: 0.125rem;\n font-size: 0.8125rem;\n font-weight: 400;\n color: #fff;\n}\n.styles-module__automationHeader___InP0r .styles-module__helpIcon___xQg56 svg {\n transform: none;\n}\n.styles-module__automationHeader___InP0r.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.85);\n}\n\n.styles-module__automationDescription___NKlmo {\n font-size: 0.6875rem;\n font-weight: 300;\n color: rgba(255, 255, 255, 0.5);\n margin-top: 2px;\n line-height: 14px;\n}\n.styles-module__automationDescription___NKlmo.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.styles-module__learnMoreLink___8xv-x {\n color: rgba(255, 255, 255, 0.8);\n text-decoration: underline dotted;\n text-decoration-color: rgba(255, 255, 255, 0.2);\n text-underline-offset: 2px;\n transition: color 0.15s ease;\n}\n.styles-module__learnMoreLink___8xv-x:hover {\n color: #fff;\n}\n.styles-module__learnMoreLink___8xv-x.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.6);\n text-decoration-color: rgba(0, 0, 0, 0.2);\n}\n.styles-module__learnMoreLink___8xv-x.styles-module__light___r6n4Y:hover {\n color: rgba(0, 0, 0, 0.85);\n}\n\n.styles-module__autoSendRow___UblX5 {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.styles-module__autoSendLabel___icDc2 {\n font-size: 0.6875rem;\n font-weight: 400;\n color: rgba(255, 255, 255, 0.4);\n transition: color 0.15s ease;\n}\n.styles-module__autoSendLabel___icDc2.styles-module__active___-zoN6 {\n color: #66b8ff;\n}\n.styles-module__autoSendLabel___icDc2.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.4);\n}\n.styles-module__autoSendLabel___icDc2.styles-module__light___r6n4Y.styles-module__active___-zoN6 {\n color: #3c82f7;\n}\n\n.styles-module__webhookUrlInput___2375C {\n display: block;\n width: 100%;\n flex: 1;\n min-height: 60px;\n box-sizing: border-box;\n margin-top: 11px;\n padding: 8px 10px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 6px;\n background: rgba(255, 255, 255, 0.03);\n font-family: inherit;\n font-size: 0.75rem;\n font-weight: 400;\n color: #fff;\n outline: none;\n resize: none;\n cursor: text !important;\n user-select: text;\n transition: border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;\n}\n.styles-module__webhookUrlInput___2375C::placeholder {\n color: rgba(255, 255, 255, 0.3);\n}\n.styles-module__webhookUrlInput___2375C:focus {\n border-color: rgba(255, 255, 255, 0.3);\n background: rgba(255, 255, 255, 0.08);\n}\n.styles-module__webhookUrlInput___2375C.styles-module__light___r6n4Y {\n border-color: rgba(0, 0, 0, 0.1);\n background: rgba(0, 0, 0, 0.03);\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__webhookUrlInput___2375C.styles-module__light___r6n4Y::placeholder {\n color: rgba(0, 0, 0, 0.3);\n}\n.styles-module__webhookUrlInput___2375C.styles-module__light___r6n4Y:focus {\n border-color: rgba(0, 0, 0, 0.25);\n background: rgba(0, 0, 0, 0.05);\n}\n\n.styles-module__settingsHeader___pwDY9 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 24px;\n margin-bottom: 0.5rem;\n padding-bottom: 9px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.07);\n}\n\n.styles-module__settingsBrand___0gJeM {\n font-size: 0.8125rem;\n font-weight: 600;\n letter-spacing: -0.0094em;\n color: #fff;\n}\n\n.styles-module__settingsBrandSlash___uTG18 {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.styles-module__settingsVersion___TUcFq {\n font-size: 11px;\n font-weight: 400;\n color: rgba(255, 255, 255, 0.4);\n margin-left: auto;\n letter-spacing: -0.0094em;\n}\n\n.styles-module__settingsSection___m-YM2 + .styles-module__settingsSection___m-YM2 {\n margin-top: 0.5rem;\n padding-top: 0.5rem;\n border-top: 1px solid rgba(255, 255, 255, 0.07);\n}\n.styles-module__settingsSection___m-YM2.styles-module__settingsSectionExtraPadding___jdhFV {\n padding-top: calc(0.5rem + 4px);\n}\n\n.styles-module__settingsSectionGrow___h-5HZ {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.styles-module__settingsRow___3sdhc {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 24px;\n}\n.styles-module__settingsRow___3sdhc.styles-module__settingsRowMarginTop___zA0Sp {\n margin-top: 8px;\n}\n\n.styles-module__dropdownContainer___BVnxe {\n position: relative;\n}\n\n.styles-module__dropdownButton___16NPz {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.25rem 0.5rem;\n border: none;\n border-radius: 0.375rem;\n background: transparent;\n font-size: 0.8125rem;\n font-weight: 600;\n color: #fff;\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n letter-spacing: -0.0094em;\n}\n.styles-module__dropdownButton___16NPz:hover {\n background: rgba(255, 255, 255, 0.08);\n}\n.styles-module__dropdownButton___16NPz svg {\n opacity: 0.6;\n}\n\n.styles-module__cycleButton___FMKfw {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0;\n border: none;\n background: transparent;\n font-size: 0.8125rem;\n font-weight: 500;\n color: #fff;\n cursor: pointer;\n letter-spacing: -0.0094em;\n}\n.styles-module__cycleButton___FMKfw.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__cycleButton___FMKfw:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n}\n\n.styles-module__settingsRowDisabled___EgS0V .styles-module__settingsLabel___8UjfX {\n color: rgba(255, 255, 255, 0.2);\n}\n.styles-module__settingsRowDisabled___EgS0V .styles-module__settingsLabel___8UjfX.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.2);\n}\n.styles-module__settingsRowDisabled___EgS0V .styles-module__toggleSwitch___l4Ygm {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n@keyframes styles-module__cycleTextIn___Q6zJf {\n 0% {\n opacity: 0;\n transform: translateY(-6px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n.styles-module__cycleButtonText___fD1LR {\n display: inline-block;\n animation: styles-module__cycleTextIn___Q6zJf 0.2s ease-out;\n}\n\n.styles-module__cycleDots___LWuoQ {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.styles-module__cycleDot___nPgLY {\n width: 3px;\n height: 3px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.3);\n transform: scale(0.667);\n transition: background-color 0.25s ease-out, transform 0.25s ease-out;\n}\n.styles-module__cycleDot___nPgLY.styles-module__active___-zoN6 {\n background: #fff;\n transform: scale(1);\n}\n.styles-module__cycleDot___nPgLY.styles-module__light___r6n4Y {\n background: rgba(0, 0, 0, 0.2);\n}\n.styles-module__cycleDot___nPgLY.styles-module__light___r6n4Y.styles-module__active___-zoN6 {\n background: rgba(0, 0, 0, 0.7);\n}\n\n.styles-module__dropdownMenu___k73ER {\n position: absolute;\n right: 0;\n top: calc(100% + 0.25rem);\n background: #1a1a1a;\n border-radius: 0.5rem;\n padding: 0.25rem;\n min-width: 120px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.1);\n z-index: 10;\n animation: styles-module__scaleIn___c-r1K 0.15s ease-out;\n}\n\n.styles-module__dropdownItem___ylsLj {\n width: 100%;\n display: flex;\n align-items: center;\n padding: 0.5rem 0.625rem;\n border: none;\n border-radius: 0.375rem;\n background: transparent;\n font-size: 0.8125rem;\n font-weight: 500;\n color: rgba(255, 255, 255, 0.85);\n cursor: pointer;\n text-align: left;\n transition: background-color 0.15s ease, color 0.15s ease;\n letter-spacing: -0.0094em;\n}\n.styles-module__dropdownItem___ylsLj:hover {\n background: rgba(255, 255, 255, 0.08);\n}\n.styles-module__dropdownItem___ylsLj.styles-module__selected___OwRqP {\n background: rgba(255, 255, 255, 0.12);\n color: #fff;\n font-weight: 600;\n}\n\n.styles-module__settingsLabel___8UjfX {\n font-size: 0.8125rem;\n font-weight: 400;\n letter-spacing: -0.0094em;\n color: rgba(255, 255, 255, 0.5);\n display: flex;\n align-items: center;\n gap: 0.125rem;\n}\n.styles-module__settingsLabel___8UjfX.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.styles-module__settingsLabelMarker___ewdtV {\n padding-top: 3px;\n margin-bottom: 10px;\n}\n\n.styles-module__settingsOptions___LyrBA {\n display: flex;\n gap: 0.25rem;\n}\n\n.styles-module__settingsOption___UNa12 {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.25rem;\n padding: 0.375rem 0.5rem;\n border: none;\n border-radius: 0.375rem;\n background: transparent;\n font-size: 0.6875rem;\n font-weight: 500;\n color: rgba(0, 0, 0, 0.7);\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n.styles-module__settingsOption___UNa12:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n.styles-module__settingsOption___UNa12.styles-module__selected___OwRqP {\n background: rgba(60, 130, 247, 0.15);\n color: #3c82f7;\n}\n\n.styles-module__sliderContainer___ducXj {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.styles-module__slider___GLdxp {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n height: 4px;\n background: rgba(255, 255, 255, 0.15);\n border-radius: 2px;\n outline: none;\n cursor: pointer;\n}\n.styles-module__slider___GLdxp::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 14px;\n height: 14px;\n background: white;\n border-radius: 50%;\n cursor: pointer;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\n}\n.styles-module__slider___GLdxp::-moz-range-thumb {\n width: 14px;\n height: 14px;\n background: white;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\n}\n.styles-module__slider___GLdxp:hover::-webkit-slider-thumb {\n transform: scale(1.15);\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);\n}\n.styles-module__slider___GLdxp:hover::-moz-range-thumb {\n transform: scale(1.15);\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);\n}\n\n.styles-module__sliderLabels___FhLDB {\n display: flex;\n justify-content: space-between;\n}\n\n.styles-module__sliderLabel___U8sPr {\n font-size: 0.625rem;\n font-weight: 500;\n color: rgba(255, 255, 255, 0.4);\n cursor: pointer;\n transition: color 0.15s ease;\n}\n.styles-module__sliderLabel___U8sPr:hover {\n color: rgba(255, 255, 255, 0.7);\n}\n.styles-module__sliderLabel___U8sPr.styles-module__active___-zoN6 {\n color: rgba(255, 255, 255, 0.9);\n}\n\n.styles-module__colorOptions___iHCNX {\n display: flex;\n gap: 0.5rem;\n margin-top: 0.375rem;\n margin-bottom: 1px;\n}\n\n.styles-module__colorOption___IodiY {\n display: block;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n border: 2px solid transparent;\n cursor: pointer;\n transition: transform 0.2s cubic-bezier(0.25, 1, 0.5, 1);\n}\n.styles-module__colorOption___IodiY:hover {\n transform: scale(1.15);\n}\n.styles-module__colorOption___IodiY.styles-module__selected___OwRqP {\n transform: scale(0.83);\n}\n\n.styles-module__colorOptionRing___U2xpo {\n display: flex;\n width: 24px;\n height: 24px;\n border: 2px solid transparent;\n border-radius: 50%;\n transition: border-color 0.3s ease;\n}\n.styles-module__settingsToggle___fBrFn {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n cursor: pointer;\n}\n.styles-module__settingsToggle___fBrFn + .styles-module__settingsToggle___fBrFn {\n margin-top: calc(0.5rem + 6px);\n}\n.styles-module__settingsToggle___fBrFn input[type=checkbox] {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n}\n.styles-module__settingsToggle___fBrFn.styles-module__settingsToggleMarginBottom___MZUyF {\n margin-bottom: calc(0.5rem + 6px);\n}\n\n.styles-module__customCheckbox___U39ax {\n position: relative;\n width: 14px;\n height: 14px;\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 4px;\n background: rgba(255, 255, 255, 0.05);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: background 0.25s ease, border-color 0.25s ease;\n}\n.styles-module__customCheckbox___U39ax svg {\n color: #1a1a1a;\n opacity: 1;\n transition: opacity 0.15s ease;\n}\ninput[type=checkbox]:checked + .styles-module__customCheckbox___U39ax {\n border-color: rgba(255, 255, 255, 0.3);\n background: rgb(255, 255, 255);\n}\n.styles-module__customCheckbox___U39ax.styles-module__light___r6n4Y {\n border: 1px solid rgba(0, 0, 0, 0.15);\n background: #fff;\n}\n.styles-module__customCheckbox___U39ax.styles-module__light___r6n4Y.styles-module__checked___mnZLo {\n border-color: #1a1a1a;\n background: #1a1a1a;\n}\n.styles-module__customCheckbox___U39ax.styles-module__light___r6n4Y.styles-module__checked___mnZLo svg {\n color: #fff;\n}\n\n.styles-module__toggleLabel___Xm8Aa {\n font-size: 0.8125rem;\n font-weight: 400;\n color: rgba(255, 255, 255, 0.5);\n letter-spacing: -0.0094em;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n.styles-module__toggleLabel___Xm8Aa.styles-module__light___r6n4Y {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.styles-module__toggleSwitch___l4Ygm {\n position: relative;\n display: inline-block;\n width: 24px;\n height: 16px;\n flex-shrink: 0;\n cursor: pointer;\n transition: opacity 0.15s ease;\n}\n.styles-module__toggleSwitch___l4Ygm input {\n opacity: 0;\n width: 0;\n height: 0;\n}\n.styles-module__toggleSwitch___l4Ygm input:checked + .styles-module__toggleSlider___wprIn {\n background: #3c82f7;\n}\n.styles-module__toggleSwitch___l4Ygm input:checked + .styles-module__toggleSlider___wprIn::before {\n transform: translateX(8px);\n}\n.styles-module__toggleSwitch___l4Ygm.styles-module__disabled___332Jw {\n opacity: 0.4;\n pointer-events: none;\n}\n.styles-module__toggleSwitch___l4Ygm.styles-module__disabled___332Jw .styles-module__toggleSlider___wprIn {\n cursor: not-allowed;\n}\n\n.styles-module__toggleSlider___wprIn {\n position: absolute;\n cursor: pointer;\n inset: 0;\n border-radius: 16px;\n background: #484848;\n}\n.styles-module__light___r6n4Y .styles-module__toggleSlider___wprIn {\n background: #dddddd;\n}\n.styles-module__toggleSlider___wprIn::before {\n content: "";\n position: absolute;\n height: 12px;\n width: 12px;\n left: 2px;\n bottom: 2px;\n background: white;\n border-radius: 50%;\n transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n\n@keyframes styles-module__mcpPulse___uNggr {\n 0% {\n box-shadow: 0 0 0 0 rgba(52, 199, 89, 0.5);\n }\n 70% {\n box-shadow: 0 0 0 6px rgba(52, 199, 89, 0);\n }\n 100% {\n box-shadow: 0 0 0 0 rgba(52, 199, 89, 0);\n }\n}\n@keyframes styles-module__mcpPulseError___fov9B {\n 0% {\n box-shadow: 0 0 0 0 rgba(255, 59, 48, 0.5);\n }\n 70% {\n box-shadow: 0 0 0 6px rgba(255, 59, 48, 0);\n }\n 100% {\n box-shadow: 0 0 0 0 rgba(255, 59, 48, 0);\n }\n}\n.styles-module__mcpStatusDot___ibgkc {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.styles-module__mcpStatusDot___ibgkc.styles-module__connecting___uo-CW {\n background: #f5a623;\n animation: styles-module__mcpPulse___uNggr 1.5s infinite;\n}\n.styles-module__mcpStatusDot___ibgkc.styles-module__connected___7c28g {\n background: #34c759;\n animation: styles-module__mcpPulse___uNggr 2.5s ease-in-out infinite;\n}\n.styles-module__mcpStatusDot___ibgkc.styles-module__disconnected___cHPxR {\n background: #ff3b30;\n animation: styles-module__mcpPulseError___fov9B 2s infinite;\n}\n\n.styles-module__helpIcon___xQg56 {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: help;\n margin-left: 0;\n}\n.styles-module__helpIcon___xQg56 svg {\n display: block;\n transform: translateY(1px);\n color: rgba(255, 255, 255, 0.2);\n transition: color 0.15s ease;\n}\n.styles-module__helpIcon___xQg56:hover svg {\n color: rgba(255, 255, 255, 0.5);\n}\n.styles-module__helpIcon___xQg56.styles-module__helpIconNudgeDown___0cqpM svg {\n transform: translateY(1px);\n}\n.styles-module__helpIcon___xQg56.styles-module__helpIconNoNudge___abogC svg {\n transform: translateY(0.5px);\n}\n.styles-module__helpIcon___xQg56.styles-module__helpIconNudge1-5___DM2TQ svg {\n transform: translateY(1.5px);\n}\n.styles-module__helpIcon___xQg56.styles-module__helpIconNudge2___TfWgC svg {\n transform: translateY(2px);\n}\n\n.styles-module__dragSelection___kZLq2 {\n position: fixed;\n top: 0;\n left: 0;\n border: 2px solid rgba(52, 199, 89, 0.6);\n border-radius: 4px;\n background: rgba(52, 199, 89, 0.08);\n pointer-events: none;\n z-index: 99997;\n will-change: transform, width, height;\n contain: layout style;\n}\n\n.styles-module__dragCount___KM90j {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: #34c759;\n color: white;\n font-size: 0.875rem;\n font-weight: 600;\n padding: 0.25rem 0.5rem;\n border-radius: 1rem;\n min-width: 1.5rem;\n text-align: center;\n}\n\n.styles-module__highlightsContainer___-0xzG {\n position: fixed;\n top: 0;\n left: 0;\n pointer-events: none;\n z-index: 99996;\n}\n\n.styles-module__selectedElementHighlight___fyVlI {\n position: fixed;\n top: 0;\n left: 0;\n border: 2px solid rgba(52, 199, 89, 0.5);\n border-radius: 4px;\n background: rgba(52, 199, 89, 0.06);\n pointer-events: none;\n will-change: transform, width, height;\n contain: layout style;\n}\n\n.styles-module__light___r6n4Y.styles-module__toolbarContainer___dIhma {\n background: #fff;\n color: rgba(0, 0, 0, 0.85);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 4px 16px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.04);\n}\n.styles-module__light___r6n4Y.styles-module__toolbarContainer___dIhma.styles-module__collapsed___Rydsn:hover {\n background: #f5f5f5;\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc {\n color: rgba(0, 0, 0, 0.5);\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc:hover:not(:disabled):not([data-active=true]):not([data-failed=true]):not([data-auto-sync=true]):not([data-error=true]):not([data-no-hover=true]) {\n background: rgba(0, 0, 0, 0.06);\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc[data-active=true] {\n color: #3c82f7;\n background: rgba(60, 130, 247, 0.15);\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc[data-error=true] {\n color: #ff3b30;\n background: rgba(255, 59, 48, 0.15);\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc[data-danger]:hover:not(:disabled):not([data-active=true]):not([data-failed=true]) {\n background: rgba(255, 59, 48, 0.15);\n color: #ff3b30;\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc[data-auto-sync=true] {\n color: #34c759;\n background: transparent;\n}\n.styles-module__light___r6n4Y.styles-module__controlButton___8Q0jc[data-failed=true] {\n color: #ff3b30;\n background: rgba(255, 59, 48, 0.15);\n}\n.styles-module__light___r6n4Y.styles-module__buttonTooltip___Burd9 {\n background: #fff;\n color: rgba(0, 0, 0, 0.85);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 4px 16px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.04);\n}\n.styles-module__light___r6n4Y.styles-module__buttonTooltip___Burd9::after {\n background: #fff;\n}\n.styles-module__light___r6n4Y.styles-module__divider___c--s1 {\n background: rgba(0, 0, 0, 0.1);\n}\n.styles-module__light___r6n4Y.styles-module__markerTooltip___aLJID {\n background: #fff;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.06);\n}\n.styles-module__light___r6n4Y.styles-module__markerTooltip___aLJID .styles-module__markerQuote___FHmrz {\n color: rgba(0, 0, 0, 0.5);\n}\n.styles-module__light___r6n4Y.styles-module__markerTooltip___aLJID .styles-module__markerNote___QkrrS {\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__light___r6n4Y.styles-module__markerTooltip___aLJID .styles-module__markerHint___2iF-6 {\n color: rgba(0, 0, 0, 0.35);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y {\n background: #fff;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 4px 16px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.04);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y::before {\n background: linear-gradient(to right, #fff 0%, transparent 100%);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y::after {\n background: linear-gradient(to left, #fff 0%, transparent 100%);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__settingsHeader___pwDY9 {\n border-bottom-color: rgba(0, 0, 0, 0.08);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__settingsBrand___0gJeM {\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__settingsBrandSlash___uTG18 {\n color: rgba(0, 0, 0, 0.4);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__settingsVersion___TUcFq {\n color: rgba(0, 0, 0, 0.4);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__settingsSection___m-YM2 {\n border-top-color: rgba(0, 0, 0, 0.08);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__settingsLabel___8UjfX {\n color: rgba(0, 0, 0, 0.5);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__cycleButton___FMKfw {\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__cycleDot___nPgLY {\n background: rgba(0, 0, 0, 0.2);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__cycleDot___nPgLY.styles-module__active___-zoN6 {\n background: rgba(0, 0, 0, 0.7);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__dropdownButton___16NPz {\n color: rgba(0, 0, 0, 0.85);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__dropdownButton___16NPz:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__toggleLabel___Xm8Aa {\n color: rgba(0, 0, 0, 0.5);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__customCheckbox___U39ax {\n border: 1px solid rgba(0, 0, 0, 0.15);\n background: #fff;\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__customCheckbox___U39ax.styles-module__checked___mnZLo {\n border-color: #1a1a1a;\n background: #1a1a1a;\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__customCheckbox___U39ax.styles-module__checked___mnZLo svg {\n color: #fff;\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__sliderLabel___U8sPr {\n color: rgba(0, 0, 0, 0.4);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__sliderLabel___U8sPr:hover {\n color: rgba(0, 0, 0, 0.7);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__sliderLabel___U8sPr.styles-module__active___-zoN6 {\n color: rgba(0, 0, 0, 0.9);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__slider___GLdxp {\n background: rgba(0, 0, 0, 0.1);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__slider___GLdxp::-webkit-slider-thumb {\n background: #1a1a1a;\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__slider___GLdxp::-moz-range-thumb {\n background: #1a1a1a;\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__helpIcon___xQg56 svg {\n color: rgba(0, 0, 0, 0.2);\n}\n.styles-module__light___r6n4Y.styles-module__settingsPanel___OxX3Y .styles-module__helpIcon___xQg56:hover svg {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.styles-module__themeToggle___2rUjA {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n margin-left: 0.5rem;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: rgba(255, 255, 255, 0.4);\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n.styles-module__themeToggle___2rUjA:hover {\n background: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.8);\n}\n.styles-module__light___r6n4Y .styles-module__themeToggle___2rUjA {\n color: rgba(0, 0, 0, 0.4);\n}\n.styles-module__light___r6n4Y .styles-module__themeToggle___2rUjA:hover {\n background: rgba(0, 0, 0, 0.06);\n color: rgba(0, 0, 0, 0.7);\n}\n\n.styles-module__themeIconWrapper___LsJIM {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n width: 20px;\n height: 20px;\n}\n\n.styles-module__themeIcon___lCCmo {\n display: flex;\n align-items: center;\n justify-content: center;\n animation: styles-module__themeIconIn___TU6ML 0.35s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;\n}\n\n@keyframes styles-module__themeIconIn___TU6ML {\n 0% {\n opacity: 0;\n transform: scale(0.8) rotate(-30deg);\n }\n 100% {\n opacity: 1;\n transform: scale(1) rotate(0deg);\n }\n}';
|
|
2747
|
+
var classNames2 = { "toolbar": "styles-module__toolbar___wNsdK", "toolbarContainer": "styles-module__toolbarContainer___dIhma", "dragging": "styles-module__dragging___xrolZ", "entrance": "styles-module__entrance___sgHd8", "toolbarEnter": "styles-module__toolbarEnter___u8RRu", "hiding": "styles-module__hiding___1td44", "toolbarHide": "styles-module__toolbarHide___y8kaT", "collapsed": "styles-module__collapsed___Rydsn", "expanded": "styles-module__expanded___ofKPx", "serverConnected": "styles-module__serverConnected___Gfbou", "toggleContent": "styles-module__toggleContent___0yfyP", "visible": "styles-module__visible___KHwEW", "hidden": "styles-module__hidden___Ae8H4", "controlsContent": "styles-module__controlsContent___9GJWU", "badge": "styles-module__badge___2XsgF", "fadeOut": "styles-module__fadeOut___6Ut6-", "badgeEnter": "styles-module__badgeEnter___mVQLj", "controlButton": "styles-module__controlButton___8Q0jc", "statusShowing": "styles-module__statusShowing___te6iu", "buttonBadge": "styles-module__buttonBadge___NeFWb", "light": "styles-module__light___r6n4Y", "mcpIndicator": "styles-module__mcpIndicator___zGJeL", "connected": "styles-module__connected___7c28g", "mcpIndicatorPulseConnected": "styles-module__mcpIndicatorPulseConnected___EDodZ", "connecting": "styles-module__connecting___uo-CW", "mcpIndicatorPulseConnecting": "styles-module__mcpIndicatorPulseConnecting___cCYte", "connectionIndicatorWrapper": "styles-module__connectionIndicatorWrapper___L-e-3", "connectionIndicator": "styles-module__connectionIndicator___afk9p", "connectionIndicatorVisible": "styles-module__connectionIndicatorVisible___C-i5B", "connectionIndicatorConnected": "styles-module__connectionIndicatorConnected___IY8pR", "connectionPulse": "styles-module__connectionPulse___-Zycw", "connectionIndicatorDisconnected": "styles-module__connectionIndicatorDisconnected___kmpaZ", "connectionIndicatorConnecting": "styles-module__connectionIndicatorConnecting___QmSLH", "buttonWrapper": "styles-module__buttonWrapper___rBcdv", "buttonTooltip": "styles-module__buttonTooltip___Burd9", "tooltipsInSession": "styles-module__tooltipsInSession___-0lHH", "sendButtonWrapper": "styles-module__sendButtonWrapper___UUxG6", "sendButtonVisible": "styles-module__sendButtonVisible___WPSQU", "shortcut": "styles-module__shortcut___lEAQk", "tooltipBelow": "styles-module__tooltipBelow___m6ats", "tooltipsHidden": "styles-module__tooltipsHidden___VtLJG", "tooltipVisible": "styles-module__tooltipVisible___0jcCv", "buttonWrapperAlignLeft": "styles-module__buttonWrapperAlignLeft___myzIp", "buttonWrapperAlignRight": "styles-module__buttonWrapperAlignRight___HCQFR", "divider": "styles-module__divider___c--s1", "overlay": "styles-module__overlay___Q1O9y", "hoverHighlight": "styles-module__hoverHighlight___ogakW", "enter": "styles-module__enter___WFIki", "hoverHighlightIn": "styles-module__hoverHighlightIn___6WYHY", "multiSelectOutline": "styles-module__multiSelectOutline___cSJ-m", "fadeIn": "styles-module__fadeIn___b9qmf", "exit": "styles-module__exit___fyOJ0", "singleSelectOutline": "styles-module__singleSelectOutline___QhX-O", "hoverTooltip": "styles-module__hoverTooltip___bvLk7", "hoverTooltipIn": "styles-module__hoverTooltipIn___FYGQx", "hoverReactPath": "styles-module__hoverReactPath___gx1IJ", "hoverElementName": "styles-module__hoverElementName___QMLMl", "markersLayer": "styles-module__markersLayer___-25j1", "fixedMarkersLayer": "styles-module__fixedMarkersLayer___ffyX6", "marker": "styles-module__marker___6sQrs", "clearing": "styles-module__clearing___FQ--7", "markerIn": "styles-module__markerIn___5FaAP", "markerOut": "styles-module__markerOut___GU5jX", "pending": "styles-module__pending___2IHLC", "fixed": "styles-module__fixed___dBMHC", "multiSelect": "styles-module__multiSelect___YWiuz", "hovered": "styles-module__hovered___ZgXIy", "renumber": "styles-module__renumber___nCTxD", "renumberRoll": "styles-module__renumberRoll___Wgbq3", "markerTooltip": "styles-module__markerTooltip___aLJID", "tooltipIn": "styles-module__tooltipIn___0N31w", "markerQuote": "styles-module__markerQuote___FHmrz", "markerNote": "styles-module__markerNote___QkrrS", "markerHint": "styles-module__markerHint___2iF-6", "settingsPanel": "styles-module__settingsPanel___OxX3Y", "settingsHeader": "styles-module__settingsHeader___pwDY9", "settingsBrand": "styles-module__settingsBrand___0gJeM", "settingsBrandSlash": "styles-module__settingsBrandSlash___uTG18", "settingsVersion": "styles-module__settingsVersion___TUcFq", "settingsSection": "styles-module__settingsSection___m-YM2", "settingsLabel": "styles-module__settingsLabel___8UjfX", "cycleButton": "styles-module__cycleButton___FMKfw", "cycleDot": "styles-module__cycleDot___nPgLY", "dropdownButton": "styles-module__dropdownButton___16NPz", "toggleLabel": "styles-module__toggleLabel___Xm8Aa", "customCheckbox": "styles-module__customCheckbox___U39ax", "sliderLabel": "styles-module__sliderLabel___U8sPr", "slider": "styles-module__slider___GLdxp", "helpIcon": "styles-module__helpIcon___xQg56", "themeToggle": "styles-module__themeToggle___2rUjA", "dark": "styles-module__dark___ILIQf", "settingsOption": "styles-module__settingsOption___UNa12", "selected": "styles-module__selected___OwRqP", "settingsPanelContainer": "styles-module__settingsPanelContainer___Xksv8", "transitioning": "styles-module__transitioning___qxzCk", "settingsPage": "styles-module__settingsPage___6YfHH", "slideLeft": "styles-module__slideLeft___Ps01J", "automationsPage": "styles-module__automationsPage___uvCq6", "slideIn": "styles-module__slideIn___4-qXe", "settingsNavLink": "styles-module__settingsNavLink___wCzJt", "settingsNavLinkRight": "styles-module__settingsNavLinkRight___ZWwhj", "mcpNavIndicator": "styles-module__mcpNavIndicator___cl9pO", "mcpPulse": "styles-module__mcpPulse___uNggr", "settingsBackButton": "styles-module__settingsBackButton___bIe2j", "automationHeader": "styles-module__automationHeader___InP0r", "automationDescription": "styles-module__automationDescription___NKlmo", "learnMoreLink": "styles-module__learnMoreLink___8xv-x", "autoSendRow": "styles-module__autoSendRow___UblX5", "autoSendLabel": "styles-module__autoSendLabel___icDc2", "active": "styles-module__active___-zoN6", "webhookUrlInput": "styles-module__webhookUrlInput___2375C", "settingsSectionExtraPadding": "styles-module__settingsSectionExtraPadding___jdhFV", "settingsSectionGrow": "styles-module__settingsSectionGrow___h-5HZ", "settingsRow": "styles-module__settingsRow___3sdhc", "settingsRowMarginTop": "styles-module__settingsRowMarginTop___zA0Sp", "dropdownContainer": "styles-module__dropdownContainer___BVnxe", "settingsRowDisabled": "styles-module__settingsRowDisabled___EgS0V", "toggleSwitch": "styles-module__toggleSwitch___l4Ygm", "cycleButtonText": "styles-module__cycleButtonText___fD1LR", "cycleTextIn": "styles-module__cycleTextIn___Q6zJf", "cycleDots": "styles-module__cycleDots___LWuoQ", "dropdownMenu": "styles-module__dropdownMenu___k73ER", "scaleIn": "styles-module__scaleIn___c-r1K", "dropdownItem": "styles-module__dropdownItem___ylsLj", "settingsLabelMarker": "styles-module__settingsLabelMarker___ewdtV", "settingsOptions": "styles-module__settingsOptions___LyrBA", "sliderContainer": "styles-module__sliderContainer___ducXj", "sliderLabels": "styles-module__sliderLabels___FhLDB", "colorOptions": "styles-module__colorOptions___iHCNX", "colorOption": "styles-module__colorOption___IodiY", "colorOptionRing": "styles-module__colorOptionRing___U2xpo", "settingsToggle": "styles-module__settingsToggle___fBrFn", "settingsToggleMarginBottom": "styles-module__settingsToggleMarginBottom___MZUyF", "checked": "styles-module__checked___mnZLo", "toggleSlider": "styles-module__toggleSlider___wprIn", "disabled": "styles-module__disabled___332Jw", "mcpStatusDot": "styles-module__mcpStatusDot___ibgkc", "disconnected": "styles-module__disconnected___cHPxR", "mcpPulseError": "styles-module__mcpPulseError___fov9B", "helpIconNudgeDown": "styles-module__helpIconNudgeDown___0cqpM", "helpIconNoNudge": "styles-module__helpIconNoNudge___abogC", "helpIconNudge1-5": "styles-module__helpIconNudge1-5___DM2TQ", "helpIconNudge2": "styles-module__helpIconNudge2___TfWgC", "dragSelection": "styles-module__dragSelection___kZLq2", "dragCount": "styles-module__dragCount___KM90j", "highlightsContainer": "styles-module__highlightsContainer___-0xzG", "selectedElementHighlight": "styles-module__selectedElementHighlight___fyVlI", "themeIconWrapper": "styles-module__themeIconWrapper___LsJIM", "themeIcon": "styles-module__themeIcon___lCCmo", "themeIconIn": "styles-module__themeIconIn___TU6ML", "scaleOut": "styles-module__scaleOut___Wctwz", "slideUp": "styles-module__slideUp___kgD36", "slideDown": "styles-module__slideDown___zcdje", "settingsPanelIn": "styles-module__settingsPanelIn___MGfO8", "settingsPanelOut": "styles-module__settingsPanelOut___Zfymi" };
|
|
2375
2748
|
if (typeof document !== "undefined") {
|
|
2376
2749
|
let style = document.getElementById("feedback-tool-styles-page-toolbar-css-styles");
|
|
2377
2750
|
if (!style) {
|
|
@@ -2461,6 +2834,17 @@ function isElementFixed(element) {
|
|
|
2461
2834
|
}
|
|
2462
2835
|
return false;
|
|
2463
2836
|
}
|
|
2837
|
+
function isRenderableAnnotation(annotation) {
|
|
2838
|
+
return annotation.status !== "resolved" && annotation.status !== "dismissed";
|
|
2839
|
+
}
|
|
2840
|
+
function detectSourceFile(element) {
|
|
2841
|
+
const result = getSourceLocation(element);
|
|
2842
|
+
const loc = result.found ? result : findNearestComponentSource(element);
|
|
2843
|
+
if (loc.found && loc.source) {
|
|
2844
|
+
return formatSourceLocation(loc.source, "path");
|
|
2845
|
+
}
|
|
2846
|
+
return void 0;
|
|
2847
|
+
}
|
|
2464
2848
|
function generateOutput(annotations, pathname, detailLevel = "standard", reactMode = "filtered") {
|
|
2465
2849
|
if (annotations.length === 0) return "";
|
|
2466
2850
|
const viewport = typeof window !== "undefined" ? `${window.innerWidth}\xD7${window.innerHeight}` : "unknown";
|
|
@@ -2492,7 +2876,7 @@ function generateOutput(annotations, pathname, detailLevel = "standard", reactMo
|
|
|
2492
2876
|
output += "\n";
|
|
2493
2877
|
annotations.forEach((a, i) => {
|
|
2494
2878
|
if (detailLevel === "compact") {
|
|
2495
|
-
output += `${i + 1}. **${a.element}
|
|
2879
|
+
output += `${i + 1}. **${a.element}**${a.sourceFile ? ` (${a.sourceFile})` : ""}: ${a.comment}`;
|
|
2496
2880
|
if (a.selectedText) {
|
|
2497
2881
|
output += ` (re: "${a.selectedText.slice(0, 30)}${a.selectedText.length > 30 ? "..." : ""}")`;
|
|
2498
2882
|
}
|
|
@@ -2536,6 +2920,10 @@ function generateOutput(annotations, pathname, detailLevel = "standard", reactMo
|
|
|
2536
2920
|
}
|
|
2537
2921
|
if (a.nearbyElements) {
|
|
2538
2922
|
output += `**Nearby Elements:** ${a.nearbyElements}
|
|
2923
|
+
`;
|
|
2924
|
+
}
|
|
2925
|
+
if (a.sourceFile) {
|
|
2926
|
+
output += `**Source:** ${a.sourceFile}
|
|
2539
2927
|
`;
|
|
2540
2928
|
}
|
|
2541
2929
|
if (a.reactComponents) {
|
|
@@ -2550,6 +2938,10 @@ function generateOutput(annotations, pathname, detailLevel = "standard", reactMo
|
|
|
2550
2938
|
`;
|
|
2551
2939
|
output += `**Location:** ${a.elementPath}
|
|
2552
2940
|
`;
|
|
2941
|
+
if (a.sourceFile) {
|
|
2942
|
+
output += `**Source:** ${a.sourceFile}
|
|
2943
|
+
`;
|
|
2944
|
+
}
|
|
2553
2945
|
if (a.reactComponents) {
|
|
2554
2946
|
output += `**React:** ${a.reactComponents}
|
|
2555
2947
|
`;
|
|
@@ -2593,60 +2985,103 @@ function PageFeedbackToolbarCSS({
|
|
|
2593
2985
|
endpoint,
|
|
2594
2986
|
sessionId: initialSessionId,
|
|
2595
2987
|
onSessionCreated,
|
|
2596
|
-
webhookUrl
|
|
2988
|
+
webhookUrl,
|
|
2989
|
+
className: userClassName
|
|
2597
2990
|
} = {}) {
|
|
2598
|
-
const [isActive, setIsActive] = (0,
|
|
2599
|
-
const [annotations, setAnnotations] = (0,
|
|
2600
|
-
const [showMarkers, setShowMarkers] = (0,
|
|
2601
|
-
const [
|
|
2602
|
-
const [
|
|
2603
|
-
const
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
|
|
2991
|
+
const [isActive, setIsActive] = (0, import_react3.useState)(false);
|
|
2992
|
+
const [annotations, setAnnotations] = (0, import_react3.useState)([]);
|
|
2993
|
+
const [showMarkers, setShowMarkers] = (0, import_react3.useState)(true);
|
|
2994
|
+
const [isToolbarHidden, setIsToolbarHidden] = (0, import_react3.useState)(() => loadToolbarHidden());
|
|
2995
|
+
const [isToolbarHiding, setIsToolbarHiding] = (0, import_react3.useState)(false);
|
|
2996
|
+
const portalWrapperRef = (0, import_react3.useRef)(null);
|
|
2997
|
+
(0, import_react3.useEffect)(() => {
|
|
2998
|
+
const stop = (e) => {
|
|
2999
|
+
const wrapper = portalWrapperRef.current;
|
|
3000
|
+
if (wrapper && wrapper.contains(e.target)) {
|
|
3001
|
+
e.stopPropagation();
|
|
3002
|
+
}
|
|
3003
|
+
};
|
|
3004
|
+
const events = ["mousedown", "click", "pointerdown"];
|
|
3005
|
+
events.forEach((evt) => document.body.addEventListener(evt, stop));
|
|
3006
|
+
return () => {
|
|
3007
|
+
events.forEach((evt) => document.body.removeEventListener(evt, stop));
|
|
3008
|
+
};
|
|
3009
|
+
}, []);
|
|
3010
|
+
const [markersVisible, setMarkersVisible] = (0, import_react3.useState)(false);
|
|
3011
|
+
const [markersExiting, setMarkersExiting] = (0, import_react3.useState)(false);
|
|
3012
|
+
const [hoverInfo, setHoverInfo] = (0, import_react3.useState)(null);
|
|
3013
|
+
const [hoverPosition, setHoverPosition] = (0, import_react3.useState)({ x: 0, y: 0 });
|
|
3014
|
+
const [pendingAnnotation, setPendingAnnotation] = (0, import_react3.useState)(null);
|
|
3015
|
+
const [copied, setCopied] = (0, import_react3.useState)(false);
|
|
3016
|
+
const [sendState, setSendState] = (0, import_react3.useState)("idle");
|
|
3017
|
+
const [cleared, setCleared] = (0, import_react3.useState)(false);
|
|
3018
|
+
const [isClearing, setIsClearing] = (0, import_react3.useState)(false);
|
|
3019
|
+
const [hoveredMarkerId, setHoveredMarkerId] = (0, import_react3.useState)(null);
|
|
3020
|
+
const [hoveredTargetElement, setHoveredTargetElement] = (0, import_react3.useState)(null);
|
|
3021
|
+
const [hoveredTargetElements, setHoveredTargetElements] = (0, import_react3.useState)([]);
|
|
3022
|
+
const [deletingMarkerId, setDeletingMarkerId] = (0, import_react3.useState)(null);
|
|
3023
|
+
const [renumberFrom, setRenumberFrom] = (0, import_react3.useState)(null);
|
|
3024
|
+
const [editingAnnotation, setEditingAnnotation] = (0, import_react3.useState)(
|
|
2616
3025
|
null
|
|
2617
3026
|
);
|
|
2618
|
-
const [editingTargetElement, setEditingTargetElement] = (0,
|
|
2619
|
-
const [editingTargetElements, setEditingTargetElements] = (0,
|
|
2620
|
-
const [scrollY, setScrollY] = (0,
|
|
2621
|
-
const [isScrolling, setIsScrolling] = (0,
|
|
2622
|
-
const [mounted, setMounted] = (0,
|
|
2623
|
-
const [isFrozen, setIsFrozen] = (0,
|
|
2624
|
-
const [showSettings, setShowSettings] = (0,
|
|
2625
|
-
const [showSettingsVisible, setShowSettingsVisible] = (0,
|
|
2626
|
-
const [settingsPage, setSettingsPage] = (0,
|
|
3027
|
+
const [editingTargetElement, setEditingTargetElement] = (0, import_react3.useState)(null);
|
|
3028
|
+
const [editingTargetElements, setEditingTargetElements] = (0, import_react3.useState)([]);
|
|
3029
|
+
const [scrollY, setScrollY] = (0, import_react3.useState)(0);
|
|
3030
|
+
const [isScrolling, setIsScrolling] = (0, import_react3.useState)(false);
|
|
3031
|
+
const [mounted, setMounted] = (0, import_react3.useState)(false);
|
|
3032
|
+
const [isFrozen, setIsFrozen] = (0, import_react3.useState)(false);
|
|
3033
|
+
const [showSettings, setShowSettings] = (0, import_react3.useState)(false);
|
|
3034
|
+
const [showSettingsVisible, setShowSettingsVisible] = (0, import_react3.useState)(false);
|
|
3035
|
+
const [settingsPage, setSettingsPage] = (0, import_react3.useState)(
|
|
2627
3036
|
"main"
|
|
2628
3037
|
);
|
|
2629
|
-
const [isTransitioning, setIsTransitioning] = (0,
|
|
2630
|
-
const [tooltipsHidden, setTooltipsHidden] = (0,
|
|
2631
|
-
const [
|
|
2632
|
-
const
|
|
3038
|
+
const [isTransitioning, setIsTransitioning] = (0, import_react3.useState)(false);
|
|
3039
|
+
const [tooltipsHidden, setTooltipsHidden] = (0, import_react3.useState)(false);
|
|
3040
|
+
const [tooltipSessionActive, setTooltipSessionActive] = (0, import_react3.useState)(false);
|
|
3041
|
+
const tooltipSessionTimerRef = (0, import_react3.useRef)(
|
|
3042
|
+
null
|
|
3043
|
+
);
|
|
3044
|
+
const [pendingMultiSelectElements, setPendingMultiSelectElements] = (0, import_react3.useState)([]);
|
|
3045
|
+
const modifiersHeldRef = (0, import_react3.useRef)({ cmd: false, shift: false });
|
|
2633
3046
|
const hideTooltipsUntilMouseLeave = () => {
|
|
2634
3047
|
setTooltipsHidden(true);
|
|
2635
3048
|
};
|
|
2636
3049
|
const showTooltipsAgain = () => {
|
|
2637
3050
|
setTooltipsHidden(false);
|
|
2638
3051
|
};
|
|
3052
|
+
const handleControlsMouseEnter = () => {
|
|
3053
|
+
if (!tooltipSessionActive) {
|
|
3054
|
+
tooltipSessionTimerRef.current = setTimeout(
|
|
3055
|
+
() => setTooltipSessionActive(true),
|
|
3056
|
+
850
|
|
3057
|
+
);
|
|
3058
|
+
}
|
|
3059
|
+
};
|
|
3060
|
+
const handleControlsMouseLeave = () => {
|
|
3061
|
+
if (tooltipSessionTimerRef.current) {
|
|
3062
|
+
clearTimeout(tooltipSessionTimerRef.current);
|
|
3063
|
+
tooltipSessionTimerRef.current = null;
|
|
3064
|
+
}
|
|
3065
|
+
setTooltipSessionActive(false);
|
|
3066
|
+
showTooltipsAgain();
|
|
3067
|
+
};
|
|
3068
|
+
(0, import_react3.useEffect)(() => {
|
|
3069
|
+
return () => {
|
|
3070
|
+
if (tooltipSessionTimerRef.current)
|
|
3071
|
+
clearTimeout(tooltipSessionTimerRef.current);
|
|
3072
|
+
};
|
|
3073
|
+
}, []);
|
|
2639
3074
|
const Tooltip = ({
|
|
2640
3075
|
content,
|
|
2641
3076
|
children
|
|
2642
3077
|
}) => {
|
|
2643
|
-
const [isHovering, setIsHovering] = (0,
|
|
2644
|
-
const [visible, setVisible] = (0,
|
|
2645
|
-
const [shouldRender, setShouldRender] = (0,
|
|
2646
|
-
const [position, setPosition] = (0,
|
|
2647
|
-
const triggerRef = (0,
|
|
2648
|
-
const timeoutRef = (0,
|
|
2649
|
-
const exitTimeoutRef = (0,
|
|
3078
|
+
const [isHovering, setIsHovering] = (0, import_react3.useState)(false);
|
|
3079
|
+
const [visible, setVisible] = (0, import_react3.useState)(false);
|
|
3080
|
+
const [shouldRender, setShouldRender] = (0, import_react3.useState)(false);
|
|
3081
|
+
const [position, setPosition] = (0, import_react3.useState)({ top: 0, right: 0 });
|
|
3082
|
+
const triggerRef = (0, import_react3.useRef)(null);
|
|
3083
|
+
const timeoutRef = (0, import_react3.useRef)(null);
|
|
3084
|
+
const exitTimeoutRef = (0, import_react3.useRef)(null);
|
|
2650
3085
|
const updatePosition = () => {
|
|
2651
3086
|
if (triggerRef.current) {
|
|
2652
3087
|
const rect = triggerRef.current.getBoundingClientRect();
|
|
@@ -2679,7 +3114,7 @@ function PageFeedbackToolbarCSS({
|
|
|
2679
3114
|
setShouldRender(false);
|
|
2680
3115
|
}, 150);
|
|
2681
3116
|
};
|
|
2682
|
-
(0,
|
|
3117
|
+
(0, import_react3.useEffect)(() => {
|
|
2683
3118
|
return () => {
|
|
2684
3119
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
2685
3120
|
if (exitTimeoutRef.current) clearTimeout(exitTimeoutRef.current);
|
|
@@ -2727,43 +3162,43 @@ function PageFeedbackToolbarCSS({
|
|
|
2727
3162
|
)
|
|
2728
3163
|
] });
|
|
2729
3164
|
};
|
|
2730
|
-
const [settings, setSettings] = (0,
|
|
2731
|
-
const [isDarkMode, setIsDarkMode] = (0,
|
|
2732
|
-
const [showEntranceAnimation, setShowEntranceAnimation] = (0,
|
|
2733
|
-
const
|
|
2734
|
-
const effectiveReactMode =
|
|
2735
|
-
const [currentSessionId, setCurrentSessionId] = (0,
|
|
3165
|
+
const [settings, setSettings] = (0, import_react3.useState)(DEFAULT_SETTINGS);
|
|
3166
|
+
const [isDarkMode, setIsDarkMode] = (0, import_react3.useState)(true);
|
|
3167
|
+
const [showEntranceAnimation, setShowEntranceAnimation] = (0, import_react3.useState)(false);
|
|
3168
|
+
const isDevMode = process.env.NODE_ENV === "development";
|
|
3169
|
+
const effectiveReactMode = isDevMode && settings.reactEnabled ? OUTPUT_TO_REACT_MODE[settings.outputDetail] : "off";
|
|
3170
|
+
const [currentSessionId, setCurrentSessionId] = (0, import_react3.useState)(
|
|
2736
3171
|
initialSessionId ?? null
|
|
2737
3172
|
);
|
|
2738
|
-
const sessionInitializedRef = (0,
|
|
2739
|
-
const [connectionStatus, setConnectionStatus] = (0,
|
|
2740
|
-
const [toolbarPosition, setToolbarPosition] = (0,
|
|
2741
|
-
const [isDraggingToolbar, setIsDraggingToolbar] = (0,
|
|
2742
|
-
const [dragStartPos, setDragStartPos] = (0,
|
|
2743
|
-
const [dragRotation, setDragRotation] = (0,
|
|
2744
|
-
const justFinishedToolbarDragRef = (0,
|
|
2745
|
-
const [animatedMarkers, setAnimatedMarkers] = (0,
|
|
3173
|
+
const sessionInitializedRef = (0, import_react3.useRef)(false);
|
|
3174
|
+
const [connectionStatus, setConnectionStatus] = (0, import_react3.useState)(endpoint ? "connecting" : "disconnected");
|
|
3175
|
+
const [toolbarPosition, setToolbarPosition] = (0, import_react3.useState)(null);
|
|
3176
|
+
const [isDraggingToolbar, setIsDraggingToolbar] = (0, import_react3.useState)(false);
|
|
3177
|
+
const [dragStartPos, setDragStartPos] = (0, import_react3.useState)(null);
|
|
3178
|
+
const [dragRotation, setDragRotation] = (0, import_react3.useState)(0);
|
|
3179
|
+
const justFinishedToolbarDragRef = (0, import_react3.useRef)(false);
|
|
3180
|
+
const [animatedMarkers, setAnimatedMarkers] = (0, import_react3.useState)(
|
|
2746
3181
|
/* @__PURE__ */ new Set()
|
|
2747
3182
|
);
|
|
2748
|
-
const [exitingMarkers, setExitingMarkers] = (0,
|
|
2749
|
-
const [pendingExiting, setPendingExiting] = (0,
|
|
2750
|
-
const [editExiting, setEditExiting] = (0,
|
|
2751
|
-
const [isDragging, setIsDragging] = (0,
|
|
2752
|
-
const mouseDownPosRef = (0,
|
|
2753
|
-
const dragStartRef = (0,
|
|
2754
|
-
const dragRectRef = (0,
|
|
2755
|
-
const highlightsContainerRef = (0,
|
|
2756
|
-
const justFinishedDragRef = (0,
|
|
2757
|
-
const lastElementUpdateRef = (0,
|
|
2758
|
-
const recentlyAddedIdRef = (0,
|
|
2759
|
-
const prevConnectionStatusRef = (0,
|
|
3183
|
+
const [exitingMarkers, setExitingMarkers] = (0, import_react3.useState)(/* @__PURE__ */ new Set());
|
|
3184
|
+
const [pendingExiting, setPendingExiting] = (0, import_react3.useState)(false);
|
|
3185
|
+
const [editExiting, setEditExiting] = (0, import_react3.useState)(false);
|
|
3186
|
+
const [isDragging, setIsDragging] = (0, import_react3.useState)(false);
|
|
3187
|
+
const mouseDownPosRef = (0, import_react3.useRef)(null);
|
|
3188
|
+
const dragStartRef = (0, import_react3.useRef)(null);
|
|
3189
|
+
const dragRectRef = (0, import_react3.useRef)(null);
|
|
3190
|
+
const highlightsContainerRef = (0, import_react3.useRef)(null);
|
|
3191
|
+
const justFinishedDragRef = (0, import_react3.useRef)(false);
|
|
3192
|
+
const lastElementUpdateRef = (0, import_react3.useRef)(0);
|
|
3193
|
+
const recentlyAddedIdRef = (0, import_react3.useRef)(null);
|
|
3194
|
+
const prevConnectionStatusRef = (0, import_react3.useRef)(null);
|
|
2760
3195
|
const DRAG_THRESHOLD = 8;
|
|
2761
3196
|
const ELEMENT_UPDATE_THROTTLE = 50;
|
|
2762
|
-
const popupRef = (0,
|
|
2763
|
-
const editPopupRef = (0,
|
|
2764
|
-
const scrollTimeoutRef = (0,
|
|
3197
|
+
const popupRef = (0, import_react3.useRef)(null);
|
|
3198
|
+
const editPopupRef = (0, import_react3.useRef)(null);
|
|
3199
|
+
const scrollTimeoutRef = (0, import_react3.useRef)(null);
|
|
2765
3200
|
const pathname = typeof window !== "undefined" ? window.location.pathname : "/";
|
|
2766
|
-
(0,
|
|
3201
|
+
(0, import_react3.useEffect)(() => {
|
|
2767
3202
|
if (showSettings) {
|
|
2768
3203
|
setShowSettingsVisible(true);
|
|
2769
3204
|
} else {
|
|
@@ -2773,13 +3208,13 @@ function PageFeedbackToolbarCSS({
|
|
|
2773
3208
|
return () => clearTimeout(timer);
|
|
2774
3209
|
}
|
|
2775
3210
|
}, [showSettings]);
|
|
2776
|
-
(0,
|
|
3211
|
+
(0, import_react3.useEffect)(() => {
|
|
2777
3212
|
setIsTransitioning(true);
|
|
2778
3213
|
const timer = originalSetTimeout(() => setIsTransitioning(false), 350);
|
|
2779
3214
|
return () => clearTimeout(timer);
|
|
2780
3215
|
}, [settingsPage]);
|
|
2781
3216
|
const shouldShowMarkers = isActive && showMarkers;
|
|
2782
|
-
(0,
|
|
3217
|
+
(0, import_react3.useEffect)(() => {
|
|
2783
3218
|
if (shouldShowMarkers) {
|
|
2784
3219
|
setMarkersExiting(false);
|
|
2785
3220
|
setMarkersVisible(true);
|
|
@@ -2801,11 +3236,11 @@ function PageFeedbackToolbarCSS({
|
|
|
2801
3236
|
return () => clearTimeout(timer);
|
|
2802
3237
|
}
|
|
2803
3238
|
}, [shouldShowMarkers]);
|
|
2804
|
-
(0,
|
|
3239
|
+
(0, import_react3.useEffect)(() => {
|
|
2805
3240
|
setMounted(true);
|
|
2806
3241
|
setScrollY(window.scrollY);
|
|
2807
3242
|
const stored = loadAnnotations(pathname);
|
|
2808
|
-
setAnnotations(stored);
|
|
3243
|
+
setAnnotations(stored.filter(isRenderableAnnotation));
|
|
2809
3244
|
if (!hasPlayedEntranceAnimation) {
|
|
2810
3245
|
setShowEntranceAnimation(true);
|
|
2811
3246
|
hasPlayedEntranceAnimation = true;
|
|
@@ -2836,7 +3271,7 @@ function PageFeedbackToolbarCSS({
|
|
|
2836
3271
|
} catch (e) {
|
|
2837
3272
|
}
|
|
2838
3273
|
}, [pathname]);
|
|
2839
|
-
(0,
|
|
3274
|
+
(0, import_react3.useEffect)(() => {
|
|
2840
3275
|
if (mounted) {
|
|
2841
3276
|
localStorage.setItem(
|
|
2842
3277
|
"feedback-toolbar-settings",
|
|
@@ -2844,7 +3279,7 @@ function PageFeedbackToolbarCSS({
|
|
|
2844
3279
|
);
|
|
2845
3280
|
}
|
|
2846
3281
|
}, [settings, mounted]);
|
|
2847
|
-
(0,
|
|
3282
|
+
(0, import_react3.useEffect)(() => {
|
|
2848
3283
|
if (mounted) {
|
|
2849
3284
|
localStorage.setItem(
|
|
2850
3285
|
"feedback-toolbar-theme",
|
|
@@ -2852,8 +3287,8 @@ function PageFeedbackToolbarCSS({
|
|
|
2852
3287
|
);
|
|
2853
3288
|
}
|
|
2854
3289
|
}, [isDarkMode, mounted]);
|
|
2855
|
-
const prevDraggingRef = (0,
|
|
2856
|
-
(0,
|
|
3290
|
+
const prevDraggingRef = (0, import_react3.useRef)(false);
|
|
3291
|
+
(0, import_react3.useEffect)(() => {
|
|
2857
3292
|
const wasDragging = prevDraggingRef.current;
|
|
2858
3293
|
prevDraggingRef.current = isDraggingToolbar;
|
|
2859
3294
|
if (wasDragging && !isDraggingToolbar && toolbarPosition && mounted) {
|
|
@@ -2863,7 +3298,7 @@ function PageFeedbackToolbarCSS({
|
|
|
2863
3298
|
);
|
|
2864
3299
|
}
|
|
2865
3300
|
}, [isDraggingToolbar, toolbarPosition, mounted]);
|
|
2866
|
-
(0,
|
|
3301
|
+
(0, import_react3.useEffect)(() => {
|
|
2867
3302
|
if (!endpoint || !mounted || sessionInitializedRef.current) return;
|
|
2868
3303
|
sessionInitializedRef.current = true;
|
|
2869
3304
|
setConnectionStatus("connecting");
|
|
@@ -2911,17 +3346,19 @@ function PageFeedbackToolbarCSS({
|
|
|
2911
3346
|
...session.annotations,
|
|
2912
3347
|
...syncedAnnotations
|
|
2913
3348
|
];
|
|
2914
|
-
setAnnotations(allAnnotations);
|
|
3349
|
+
setAnnotations(allAnnotations.filter(isRenderableAnnotation));
|
|
2915
3350
|
saveAnnotationsWithSyncMarker(
|
|
2916
3351
|
pathname,
|
|
2917
|
-
allAnnotations,
|
|
3352
|
+
allAnnotations.filter(isRenderableAnnotation),
|
|
2918
3353
|
session.id
|
|
2919
3354
|
);
|
|
2920
3355
|
} else {
|
|
2921
|
-
setAnnotations(
|
|
3356
|
+
setAnnotations(
|
|
3357
|
+
session.annotations.filter(isRenderableAnnotation)
|
|
3358
|
+
);
|
|
2922
3359
|
saveAnnotationsWithSyncMarker(
|
|
2923
3360
|
pathname,
|
|
2924
|
-
session.annotations,
|
|
3361
|
+
session.annotations.filter(isRenderableAnnotation),
|
|
2925
3362
|
session.id
|
|
2926
3363
|
);
|
|
2927
3364
|
}
|
|
@@ -2973,9 +3410,12 @@ function PageFeedbackToolbarCSS({
|
|
|
2973
3410
|
);
|
|
2974
3411
|
return unsyncedAnnotations[i];
|
|
2975
3412
|
});
|
|
3413
|
+
const renderableSyncedAnnotations = syncedAnnotations.filter(
|
|
3414
|
+
isRenderableAnnotation
|
|
3415
|
+
);
|
|
2976
3416
|
saveAnnotationsWithSyncMarker(
|
|
2977
3417
|
pagePath,
|
|
2978
|
-
|
|
3418
|
+
renderableSyncedAnnotations,
|
|
2979
3419
|
targetSession.id
|
|
2980
3420
|
);
|
|
2981
3421
|
if (isCurrentPage) {
|
|
@@ -2986,7 +3426,7 @@ function PageFeedbackToolbarCSS({
|
|
|
2986
3426
|
const newDuringSync = prev.filter(
|
|
2987
3427
|
(a) => !originalIds.has(a.id)
|
|
2988
3428
|
);
|
|
2989
|
-
return [...
|
|
3429
|
+
return [...renderableSyncedAnnotations, ...newDuringSync];
|
|
2990
3430
|
});
|
|
2991
3431
|
}
|
|
2992
3432
|
} catch (err) {
|
|
@@ -3010,7 +3450,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3010
3450
|
};
|
|
3011
3451
|
initSession();
|
|
3012
3452
|
}, [endpoint, initialSessionId, mounted, onSessionCreated, pathname]);
|
|
3013
|
-
(0,
|
|
3453
|
+
(0, import_react3.useEffect)(() => {
|
|
3014
3454
|
if (!endpoint || !mounted) return;
|
|
3015
3455
|
const checkHealth = async () => {
|
|
3016
3456
|
try {
|
|
@@ -3028,7 +3468,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3028
3468
|
const interval = originalSetInterval(checkHealth, 1e4);
|
|
3029
3469
|
return () => clearInterval(interval);
|
|
3030
3470
|
}, [endpoint, mounted]);
|
|
3031
|
-
(0,
|
|
3471
|
+
(0, import_react3.useEffect)(() => {
|
|
3032
3472
|
if (!endpoint || !mounted || !currentSessionId) return;
|
|
3033
3473
|
const eventSource = new EventSource(
|
|
3034
3474
|
`${endpoint}/sessions/${currentSessionId}/events`
|
|
@@ -3058,7 +3498,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3058
3498
|
eventSource.close();
|
|
3059
3499
|
};
|
|
3060
3500
|
}, [endpoint, mounted, currentSessionId]);
|
|
3061
|
-
(0,
|
|
3501
|
+
(0, import_react3.useEffect)(() => {
|
|
3062
3502
|
if (!endpoint || !mounted) return;
|
|
3063
3503
|
const wasDisconnected = prevConnectionStatusRef.current === "disconnected";
|
|
3064
3504
|
const isNowConnected = connectionStatus === "connected";
|
|
@@ -3106,8 +3546,15 @@ function PageFeedbackToolbarCSS({
|
|
|
3106
3546
|
return unsyncedLocal[i];
|
|
3107
3547
|
});
|
|
3108
3548
|
const allAnnotations = [...serverAnnotations, ...syncedAnnotations];
|
|
3109
|
-
|
|
3110
|
-
|
|
3549
|
+
const renderableAnnotations = allAnnotations.filter(
|
|
3550
|
+
isRenderableAnnotation
|
|
3551
|
+
);
|
|
3552
|
+
setAnnotations(renderableAnnotations);
|
|
3553
|
+
saveAnnotationsWithSyncMarker(
|
|
3554
|
+
pathname,
|
|
3555
|
+
renderableAnnotations,
|
|
3556
|
+
sessionId
|
|
3557
|
+
);
|
|
3111
3558
|
}
|
|
3112
3559
|
} catch (err) {
|
|
3113
3560
|
console.warn("[Agentation] Failed to sync on reconnect:", err);
|
|
@@ -3116,7 +3563,18 @@ function PageFeedbackToolbarCSS({
|
|
|
3116
3563
|
syncLocalAnnotations();
|
|
3117
3564
|
}
|
|
3118
3565
|
}, [connectionStatus, endpoint, mounted, currentSessionId, pathname]);
|
|
3119
|
-
(0,
|
|
3566
|
+
const hideToolbarTemporarily = (0, import_react3.useCallback)(() => {
|
|
3567
|
+
if (isToolbarHiding) return;
|
|
3568
|
+
setIsToolbarHiding(true);
|
|
3569
|
+
setShowSettings(false);
|
|
3570
|
+
setIsActive(false);
|
|
3571
|
+
originalSetTimeout(() => {
|
|
3572
|
+
saveToolbarHidden(true);
|
|
3573
|
+
setIsToolbarHidden(true);
|
|
3574
|
+
setIsToolbarHiding(false);
|
|
3575
|
+
}, 400);
|
|
3576
|
+
}, [isToolbarHiding]);
|
|
3577
|
+
(0, import_react3.useEffect)(() => {
|
|
3120
3578
|
if (!enableDemoMode) return;
|
|
3121
3579
|
if (!mounted || !demoAnnotations || demoAnnotations.length === 0) return;
|
|
3122
3580
|
if (annotations.length > 0) return;
|
|
@@ -3160,7 +3618,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3160
3618
|
timeoutIds.forEach(clearTimeout);
|
|
3161
3619
|
};
|
|
3162
3620
|
}, [enableDemoMode, mounted, demoAnnotations, demoDelay]);
|
|
3163
|
-
(0,
|
|
3621
|
+
(0, import_react3.useEffect)(() => {
|
|
3164
3622
|
const handleScroll = () => {
|
|
3165
3623
|
setScrollY(window.scrollY);
|
|
3166
3624
|
setIsScrolling(true);
|
|
@@ -3179,7 +3637,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3179
3637
|
}
|
|
3180
3638
|
};
|
|
3181
3639
|
}, []);
|
|
3182
|
-
(0,
|
|
3640
|
+
(0, import_react3.useEffect)(() => {
|
|
3183
3641
|
if (mounted && annotations.length > 0) {
|
|
3184
3642
|
if (currentSessionId) {
|
|
3185
3643
|
saveAnnotationsWithSyncMarker(pathname, annotations, currentSessionId);
|
|
@@ -3190,24 +3648,24 @@ function PageFeedbackToolbarCSS({
|
|
|
3190
3648
|
localStorage.removeItem(getStorageKey(pathname));
|
|
3191
3649
|
}
|
|
3192
3650
|
}, [annotations, pathname, mounted, currentSessionId]);
|
|
3193
|
-
const freezeAnimations = (0,
|
|
3651
|
+
const freezeAnimations = (0, import_react3.useCallback)(() => {
|
|
3194
3652
|
if (isFrozen) return;
|
|
3195
3653
|
freeze();
|
|
3196
3654
|
setIsFrozen(true);
|
|
3197
3655
|
}, [isFrozen]);
|
|
3198
|
-
const unfreezeAnimations = (0,
|
|
3656
|
+
const unfreezeAnimations = (0, import_react3.useCallback)(() => {
|
|
3199
3657
|
if (!isFrozen) return;
|
|
3200
3658
|
unfreeze();
|
|
3201
3659
|
setIsFrozen(false);
|
|
3202
3660
|
}, [isFrozen]);
|
|
3203
|
-
const toggleFreeze = (0,
|
|
3661
|
+
const toggleFreeze = (0, import_react3.useCallback)(() => {
|
|
3204
3662
|
if (isFrozen) {
|
|
3205
3663
|
unfreezeAnimations();
|
|
3206
3664
|
} else {
|
|
3207
3665
|
freezeAnimations();
|
|
3208
3666
|
}
|
|
3209
3667
|
}, [isFrozen, freezeAnimations, unfreezeAnimations]);
|
|
3210
|
-
const createMultiSelectPendingAnnotation = (0,
|
|
3668
|
+
const createMultiSelectPendingAnnotation = (0, import_react3.useCallback)(() => {
|
|
3211
3669
|
if (pendingMultiSelectElements.length === 0) return;
|
|
3212
3670
|
const firstItem = pendingMultiSelectElements[0];
|
|
3213
3671
|
const firstEl = firstItem.element;
|
|
@@ -3238,7 +3696,8 @@ function PageFeedbackToolbarCSS({
|
|
|
3238
3696
|
nearbyElements: getNearbyElements(firstEl),
|
|
3239
3697
|
cssClasses: getElementClasses(firstEl),
|
|
3240
3698
|
nearbyText: getNearbyText(firstEl),
|
|
3241
|
-
reactComponents: firstItem.reactComponents
|
|
3699
|
+
reactComponents: firstItem.reactComponents,
|
|
3700
|
+
sourceFile: detectSourceFile(firstEl)
|
|
3242
3701
|
});
|
|
3243
3702
|
} else {
|
|
3244
3703
|
const bounds = {
|
|
@@ -3285,13 +3744,14 @@ function PageFeedbackToolbarCSS({
|
|
|
3285
3744
|
computedStylesObj: getDetailedComputedStyles(firstEl),
|
|
3286
3745
|
nearbyElements: getNearbyElements(firstEl),
|
|
3287
3746
|
cssClasses: getElementClasses(firstEl),
|
|
3288
|
-
nearbyText: getNearbyText(firstEl)
|
|
3747
|
+
nearbyText: getNearbyText(firstEl),
|
|
3748
|
+
sourceFile: detectSourceFile(firstEl)
|
|
3289
3749
|
});
|
|
3290
3750
|
}
|
|
3291
3751
|
setPendingMultiSelectElements([]);
|
|
3292
3752
|
setHoverInfo(null);
|
|
3293
3753
|
}, [pendingMultiSelectElements]);
|
|
3294
|
-
(0,
|
|
3754
|
+
(0, import_react3.useEffect)(() => {
|
|
3295
3755
|
if (!isActive) {
|
|
3296
3756
|
setPendingAnnotation(null);
|
|
3297
3757
|
setEditingAnnotation(null);
|
|
@@ -3306,12 +3766,12 @@ function PageFeedbackToolbarCSS({
|
|
|
3306
3766
|
}
|
|
3307
3767
|
}
|
|
3308
3768
|
}, [isActive, isFrozen, unfreezeAnimations]);
|
|
3309
|
-
(0,
|
|
3769
|
+
(0, import_react3.useEffect)(() => {
|
|
3310
3770
|
return () => {
|
|
3311
3771
|
unfreeze();
|
|
3312
3772
|
};
|
|
3313
3773
|
}, []);
|
|
3314
|
-
(0,
|
|
3774
|
+
(0, import_react3.useEffect)(() => {
|
|
3315
3775
|
if (!isActive) return;
|
|
3316
3776
|
const style = document.createElement("style");
|
|
3317
3777
|
style.id = "feedback-cursor-styles";
|
|
@@ -3358,7 +3818,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3358
3818
|
if (existingStyle) existingStyle.remove();
|
|
3359
3819
|
};
|
|
3360
3820
|
}, [isActive]);
|
|
3361
|
-
(0,
|
|
3821
|
+
(0, import_react3.useEffect)(() => {
|
|
3362
3822
|
if (!isActive || pendingAnnotation) return;
|
|
3363
3823
|
const handleMouseMove = (e) => {
|
|
3364
3824
|
const target = e.composedPath()[0] || e.target;
|
|
@@ -3385,7 +3845,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3385
3845
|
document.addEventListener("mousemove", handleMouseMove);
|
|
3386
3846
|
return () => document.removeEventListener("mousemove", handleMouseMove);
|
|
3387
3847
|
}, [isActive, pendingAnnotation, effectiveReactMode]);
|
|
3388
|
-
(0,
|
|
3848
|
+
(0, import_react3.useEffect)(() => {
|
|
3389
3849
|
if (!isActive) return;
|
|
3390
3850
|
const handleClick = (e) => {
|
|
3391
3851
|
if (justFinishedDragRef.current) {
|
|
@@ -3491,6 +3951,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3491
3951
|
computedStylesObj,
|
|
3492
3952
|
nearbyElements: getNearbyElements(elementUnder),
|
|
3493
3953
|
reactComponents: reactComponents ?? void 0,
|
|
3954
|
+
sourceFile: detectSourceFile(elementUnder),
|
|
3494
3955
|
targetElement: elementUnder
|
|
3495
3956
|
// Store for live position queries
|
|
3496
3957
|
});
|
|
@@ -3506,7 +3967,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3506
3967
|
effectiveReactMode,
|
|
3507
3968
|
pendingMultiSelectElements
|
|
3508
3969
|
]);
|
|
3509
|
-
(0,
|
|
3970
|
+
(0, import_react3.useEffect)(() => {
|
|
3510
3971
|
if (!isActive) return;
|
|
3511
3972
|
const handleKeyDown = (e) => {
|
|
3512
3973
|
if (e.key === "Meta") modifiersHeldRef.current.cmd = true;
|
|
@@ -3534,7 +3995,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3534
3995
|
window.removeEventListener("blur", handleBlur);
|
|
3535
3996
|
};
|
|
3536
3997
|
}, [isActive, pendingMultiSelectElements, createMultiSelectPendingAnnotation]);
|
|
3537
|
-
(0,
|
|
3998
|
+
(0, import_react3.useEffect)(() => {
|
|
3538
3999
|
if (!isActive || pendingAnnotation) return;
|
|
3539
4000
|
const handleMouseDown = (e) => {
|
|
3540
4001
|
const target = e.composedPath()[0] || e.target;
|
|
@@ -3588,7 +4049,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3588
4049
|
document.addEventListener("mousedown", handleMouseDown);
|
|
3589
4050
|
return () => document.removeEventListener("mousedown", handleMouseDown);
|
|
3590
4051
|
}, [isActive, pendingAnnotation]);
|
|
3591
|
-
(0,
|
|
4052
|
+
(0, import_react3.useEffect)(() => {
|
|
3592
4053
|
if (!isActive || pendingAnnotation) return;
|
|
3593
4054
|
const handleMouseMove = (e) => {
|
|
3594
4055
|
if (!mouseDownPosRef.current) return;
|
|
@@ -3733,7 +4194,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3733
4194
|
document.addEventListener("mousemove", handleMouseMove, { passive: true });
|
|
3734
4195
|
return () => document.removeEventListener("mousemove", handleMouseMove);
|
|
3735
4196
|
}, [isActive, pendingAnnotation, isDragging, DRAG_THRESHOLD]);
|
|
3736
|
-
(0,
|
|
4197
|
+
(0, import_react3.useEffect)(() => {
|
|
3737
4198
|
if (!isActive) return;
|
|
3738
4199
|
const handleMouseUp = (e) => {
|
|
3739
4200
|
const wasDragging = isDragging;
|
|
@@ -3805,7 +4266,8 @@ function PageFeedbackToolbarCSS({
|
|
|
3805
4266
|
computedStylesObj: firstElementComputedStyles,
|
|
3806
4267
|
nearbyElements: getNearbyElements(firstElement),
|
|
3807
4268
|
cssClasses: getElementClasses(firstElement),
|
|
3808
|
-
nearbyText: getNearbyText(firstElement)
|
|
4269
|
+
nearbyText: getNearbyText(firstElement),
|
|
4270
|
+
sourceFile: detectSourceFile(firstElement)
|
|
3809
4271
|
});
|
|
3810
4272
|
} else {
|
|
3811
4273
|
const width = Math.abs(right - left);
|
|
@@ -3841,7 +4303,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3841
4303
|
document.addEventListener("mouseup", handleMouseUp);
|
|
3842
4304
|
return () => document.removeEventListener("mouseup", handleMouseUp);
|
|
3843
4305
|
}, [isActive, isDragging]);
|
|
3844
|
-
const fireWebhook = (0,
|
|
4306
|
+
const fireWebhook = (0, import_react3.useCallback)(
|
|
3845
4307
|
async (event, payload, force) => {
|
|
3846
4308
|
const targetUrl = settings.webhookUrl || webhookUrl;
|
|
3847
4309
|
if (!targetUrl || !settings.webhooksEnabled && !force) return false;
|
|
@@ -3864,7 +4326,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3864
4326
|
},
|
|
3865
4327
|
[webhookUrl, settings.webhookUrl, settings.webhooksEnabled]
|
|
3866
4328
|
);
|
|
3867
|
-
const addAnnotation = (0,
|
|
4329
|
+
const addAnnotation = (0, import_react3.useCallback)(
|
|
3868
4330
|
(comment) => {
|
|
3869
4331
|
if (!pendingAnnotation) return;
|
|
3870
4332
|
const newAnnotation = {
|
|
@@ -3886,6 +4348,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3886
4348
|
computedStyles: pendingAnnotation.computedStyles,
|
|
3887
4349
|
nearbyElements: pendingAnnotation.nearbyElements,
|
|
3888
4350
|
reactComponents: pendingAnnotation.reactComponents,
|
|
4351
|
+
sourceFile: pendingAnnotation.sourceFile,
|
|
3889
4352
|
elementBoundingBoxes: pendingAnnotation.elementBoundingBoxes,
|
|
3890
4353
|
// Protocol fields for server sync
|
|
3891
4354
|
...endpoint && currentSessionId ? {
|
|
@@ -3938,14 +4401,14 @@ function PageFeedbackToolbarCSS({
|
|
|
3938
4401
|
currentSessionId
|
|
3939
4402
|
]
|
|
3940
4403
|
);
|
|
3941
|
-
const cancelAnnotation = (0,
|
|
4404
|
+
const cancelAnnotation = (0, import_react3.useCallback)(() => {
|
|
3942
4405
|
setPendingExiting(true);
|
|
3943
4406
|
originalSetTimeout(() => {
|
|
3944
4407
|
setPendingAnnotation(null);
|
|
3945
4408
|
setPendingExiting(false);
|
|
3946
4409
|
}, 150);
|
|
3947
4410
|
}, []);
|
|
3948
|
-
const deleteAnnotation2 = (0,
|
|
4411
|
+
const deleteAnnotation2 = (0, import_react3.useCallback)(
|
|
3949
4412
|
(id) => {
|
|
3950
4413
|
const deletedIndex = annotations.findIndex((a) => a.id === id);
|
|
3951
4414
|
const deletedAnnotation = annotations[deletedIndex];
|
|
@@ -3988,7 +4451,7 @@ function PageFeedbackToolbarCSS({
|
|
|
3988
4451
|
},
|
|
3989
4452
|
[annotations, editingAnnotation, onAnnotationDelete, fireWebhook, endpoint]
|
|
3990
4453
|
);
|
|
3991
|
-
const startEditAnnotation = (0,
|
|
4454
|
+
const startEditAnnotation = (0, import_react3.useCallback)((annotation) => {
|
|
3992
4455
|
setEditingAnnotation(annotation);
|
|
3993
4456
|
setHoveredMarkerId(null);
|
|
3994
4457
|
setHoveredTargetElement(null);
|
|
@@ -4026,7 +4489,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4026
4489
|
setEditingTargetElements([]);
|
|
4027
4490
|
}
|
|
4028
4491
|
}, []);
|
|
4029
|
-
const handleMarkerHover = (0,
|
|
4492
|
+
const handleMarkerHover = (0, import_react3.useCallback)(
|
|
4030
4493
|
(annotation) => {
|
|
4031
4494
|
if (!annotation) {
|
|
4032
4495
|
setHoveredMarkerId(null);
|
|
@@ -4073,7 +4536,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4073
4536
|
},
|
|
4074
4537
|
[]
|
|
4075
4538
|
);
|
|
4076
|
-
const updateAnnotation2 = (0,
|
|
4539
|
+
const updateAnnotation2 = (0, import_react3.useCallback)(
|
|
4077
4540
|
(newComment) => {
|
|
4078
4541
|
if (!editingAnnotation) return;
|
|
4079
4542
|
const updatedAnnotation = { ...editingAnnotation, comment: newComment };
|
|
@@ -4104,7 +4567,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4104
4567
|
},
|
|
4105
4568
|
[editingAnnotation, onAnnotationUpdate, fireWebhook, endpoint]
|
|
4106
4569
|
);
|
|
4107
|
-
const cancelEditAnnotation = (0,
|
|
4570
|
+
const cancelEditAnnotation = (0, import_react3.useCallback)(() => {
|
|
4108
4571
|
setEditExiting(true);
|
|
4109
4572
|
originalSetTimeout(() => {
|
|
4110
4573
|
setEditingAnnotation(null);
|
|
@@ -4113,7 +4576,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4113
4576
|
setEditExiting(false);
|
|
4114
4577
|
}, 150);
|
|
4115
4578
|
}, []);
|
|
4116
|
-
const clearAll = (0,
|
|
4579
|
+
const clearAll = (0, import_react3.useCallback)(() => {
|
|
4117
4580
|
const count = annotations.length;
|
|
4118
4581
|
if (count === 0) return;
|
|
4119
4582
|
onAnnotationsClear?.(annotations);
|
|
@@ -4141,7 +4604,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4141
4604
|
}, totalAnimationTime);
|
|
4142
4605
|
originalSetTimeout(() => setCleared(false), 1500);
|
|
4143
4606
|
}, [pathname, annotations, onAnnotationsClear, fireWebhook, endpoint]);
|
|
4144
|
-
const copyOutput = (0,
|
|
4607
|
+
const copyOutput = (0, import_react3.useCallback)(async () => {
|
|
4145
4608
|
const displayUrl = typeof window !== "undefined" ? window.location.pathname + window.location.search + window.location.hash : pathname;
|
|
4146
4609
|
const output = generateOutput(
|
|
4147
4610
|
annotations,
|
|
@@ -4172,7 +4635,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4172
4635
|
copyToClipboard,
|
|
4173
4636
|
onCopy
|
|
4174
4637
|
]);
|
|
4175
|
-
const sendToWebhook = (0,
|
|
4638
|
+
const sendToWebhook = (0, import_react3.useCallback)(async () => {
|
|
4176
4639
|
const displayUrl = typeof window !== "undefined" ? window.location.pathname + window.location.search + window.location.hash : pathname;
|
|
4177
4640
|
const output = generateOutput(
|
|
4178
4641
|
annotations,
|
|
@@ -4202,7 +4665,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4202
4665
|
settings.autoClearAfterCopy,
|
|
4203
4666
|
clearAll
|
|
4204
4667
|
]);
|
|
4205
|
-
(0,
|
|
4668
|
+
(0, import_react3.useEffect)(() => {
|
|
4206
4669
|
if (!dragStartPos) return;
|
|
4207
4670
|
const DRAG_THRESHOLD2 = 10;
|
|
4208
4671
|
const handleMouseMove = (e) => {
|
|
@@ -4244,7 +4707,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4244
4707
|
document.removeEventListener("mouseup", handleMouseUp);
|
|
4245
4708
|
};
|
|
4246
4709
|
}, [dragStartPos, isDraggingToolbar, isActive, connectionStatus]);
|
|
4247
|
-
const handleToolbarMouseDown = (0,
|
|
4710
|
+
const handleToolbarMouseDown = (0, import_react3.useCallback)(
|
|
4248
4711
|
(e) => {
|
|
4249
4712
|
if (e.target.closest("button") || e.target.closest(`.${styles_module_default2.settingsPanel}`)) {
|
|
4250
4713
|
return;
|
|
@@ -4265,7 +4728,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4265
4728
|
},
|
|
4266
4729
|
[toolbarPosition]
|
|
4267
4730
|
);
|
|
4268
|
-
(0,
|
|
4731
|
+
(0, import_react3.useEffect)(() => {
|
|
4269
4732
|
if (!toolbarPosition) return;
|
|
4270
4733
|
const constrainPosition = () => {
|
|
4271
4734
|
const padding = 20;
|
|
@@ -4290,7 +4753,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4290
4753
|
window.addEventListener("resize", constrainPosition);
|
|
4291
4754
|
return () => window.removeEventListener("resize", constrainPosition);
|
|
4292
4755
|
}, [toolbarPosition, isActive, connectionStatus]);
|
|
4293
|
-
(0,
|
|
4756
|
+
(0, import_react3.useEffect)(() => {
|
|
4294
4757
|
const handleKeyDown = (e) => {
|
|
4295
4758
|
const target = e.target;
|
|
4296
4759
|
const isTyping = target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.isContentEditable;
|
|
@@ -4363,9 +4826,10 @@ function PageFeedbackToolbarCSS({
|
|
|
4363
4826
|
pendingMultiSelectElements
|
|
4364
4827
|
]);
|
|
4365
4828
|
if (!mounted) return null;
|
|
4829
|
+
if (isToolbarHidden) return null;
|
|
4366
4830
|
const hasAnnotations = annotations.length > 0;
|
|
4367
4831
|
const visibleAnnotations = annotations.filter(
|
|
4368
|
-
(a) => !exitingMarkers.has(a.id)
|
|
4832
|
+
(a) => !exitingMarkers.has(a.id) && isRenderableAnnotation(a)
|
|
4369
4833
|
);
|
|
4370
4834
|
const exitingAnnotationsList = annotations.filter(
|
|
4371
4835
|
(a) => exitingMarkers.has(a.id)
|
|
@@ -4395,11 +4859,11 @@ function PageFeedbackToolbarCSS({
|
|
|
4395
4859
|
return styles;
|
|
4396
4860
|
};
|
|
4397
4861
|
return (0, import_react_dom.createPortal)(
|
|
4398
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
4862
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { ref: portalWrapperRef, style: { display: "contents" }, children: [
|
|
4399
4863
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
4400
4864
|
"div",
|
|
4401
4865
|
{
|
|
4402
|
-
className: styles_module_default2.toolbar
|
|
4866
|
+
className: `${styles_module_default2.toolbar}${userClassName ? ` ${userClassName}` : ""}`,
|
|
4403
4867
|
"data-feedback-toolbar": true,
|
|
4404
4868
|
style: toolbarPosition ? {
|
|
4405
4869
|
left: toolbarPosition.x,
|
|
@@ -4410,7 +4874,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4410
4874
|
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
4411
4875
|
"div",
|
|
4412
4876
|
{
|
|
4413
|
-
className: `${styles_module_default2.toolbarContainer} ${!isDarkMode ? styles_module_default2.light : ""} ${isActive ? styles_module_default2.expanded : styles_module_default2.collapsed} ${showEntranceAnimation ? styles_module_default2.entrance : ""} ${isDraggingToolbar ? styles_module_default2.dragging : ""} ${!settings.webhooksEnabled && (isValidUrl(settings.webhookUrl) || isValidUrl(webhookUrl || "")) ? styles_module_default2.serverConnected : ""}`,
|
|
4877
|
+
className: `${styles_module_default2.toolbarContainer} ${!isDarkMode ? styles_module_default2.light : ""} ${isActive ? styles_module_default2.expanded : styles_module_default2.collapsed} ${showEntranceAnimation ? styles_module_default2.entrance : ""} ${isToolbarHiding ? styles_module_default2.hiding : ""} ${isDraggingToolbar ? styles_module_default2.dragging : ""} ${!settings.webhooksEnabled && (isValidUrl(settings.webhookUrl) || isValidUrl(webhookUrl || "")) ? styles_module_default2.serverConnected : ""}`,
|
|
4414
4878
|
onClick: !isActive ? (e) => {
|
|
4415
4879
|
if (justFinishedToolbarDragRef.current) {
|
|
4416
4880
|
justFinishedToolbarDragRef.current = false;
|
|
@@ -4450,8 +4914,9 @@ function PageFeedbackToolbarCSS({
|
|
|
4450
4914
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
4451
4915
|
"div",
|
|
4452
4916
|
{
|
|
4453
|
-
className: `${styles_module_default2.controlsContent} ${isActive ? styles_module_default2.visible : styles_module_default2.hidden} ${toolbarPosition && toolbarPosition.y < 100 ? styles_module_default2.tooltipBelow : ""} ${tooltipsHidden || showSettings ? styles_module_default2.tooltipsHidden : ""}`,
|
|
4454
|
-
|
|
4917
|
+
className: `${styles_module_default2.controlsContent} ${isActive ? styles_module_default2.visible : styles_module_default2.hidden} ${toolbarPosition && toolbarPosition.y < 100 ? styles_module_default2.tooltipBelow : ""} ${tooltipsHidden || showSettings ? styles_module_default2.tooltipsHidden : ""} ${tooltipSessionActive ? styles_module_default2.tooltipsInSession : ""}`,
|
|
4918
|
+
onMouseEnter: handleControlsMouseEnter,
|
|
4919
|
+
onMouseLeave: handleControlsMouseLeave,
|
|
4455
4920
|
children: [
|
|
4456
4921
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
4457
4922
|
"div",
|
|
@@ -4520,7 +4985,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4520
4985
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
4521
4986
|
"div",
|
|
4522
4987
|
{
|
|
4523
|
-
className: `${styles_module_default2.buttonWrapper} ${styles_module_default2.sendButtonWrapper} ${!settings.webhooksEnabled && (isValidUrl(settings.webhookUrl) || isValidUrl(webhookUrl || "")) ? styles_module_default2.sendButtonVisible : ""}`,
|
|
4988
|
+
className: `${styles_module_default2.buttonWrapper} ${styles_module_default2.sendButtonWrapper} ${isActive && !settings.webhooksEnabled && (isValidUrl(settings.webhookUrl) || isValidUrl(webhookUrl || "")) ? styles_module_default2.sendButtonVisible : ""}`,
|
|
4524
4989
|
children: [
|
|
4525
4990
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
4526
4991
|
"button",
|
|
@@ -4665,7 +5130,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4665
5130
|
] }),
|
|
4666
5131
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { className: styles_module_default2.settingsVersion, children: [
|
|
4667
5132
|
"v",
|
|
4668
|
-
"2.
|
|
5133
|
+
"2.3.1"
|
|
4669
5134
|
] }),
|
|
4670
5135
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
4671
5136
|
"button",
|
|
@@ -4735,7 +5200,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4735
5200
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
4736
5201
|
"div",
|
|
4737
5202
|
{
|
|
4738
|
-
className: `${styles_module_default2.settingsRow} ${styles_module_default2.settingsRowMarginTop} ${!
|
|
5203
|
+
className: `${styles_module_default2.settingsRow} ${styles_module_default2.settingsRowMarginTop} ${!isDevMode ? styles_module_default2.settingsRowDisabled : ""}`,
|
|
4739
5204
|
children: [
|
|
4740
5205
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
4741
5206
|
"div",
|
|
@@ -4746,7 +5211,7 @@ function PageFeedbackToolbarCSS({
|
|
|
4746
5211
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
4747
5212
|
Tooltip,
|
|
4748
5213
|
{
|
|
4749
|
-
content: !
|
|
5214
|
+
content: !isDevMode ? "Disabled \u2014 production builds minify component names, making detection unreliable. Use in development mode." : "Include React component names in annotations",
|
|
4750
5215
|
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: styles_module_default2.helpIcon, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(IconHelp, { size: 20 }) })
|
|
4751
5216
|
}
|
|
4752
5217
|
)
|
|
@@ -4756,14 +5221,14 @@ function PageFeedbackToolbarCSS({
|
|
|
4756
5221
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
4757
5222
|
"label",
|
|
4758
5223
|
{
|
|
4759
|
-
className: `${styles_module_default2.toggleSwitch} ${!
|
|
5224
|
+
className: `${styles_module_default2.toggleSwitch} ${!isDevMode ? styles_module_default2.disabled : ""}`,
|
|
4760
5225
|
children: [
|
|
4761
5226
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
4762
5227
|
"input",
|
|
4763
5228
|
{
|
|
4764
5229
|
type: "checkbox",
|
|
4765
|
-
checked:
|
|
4766
|
-
disabled: !
|
|
5230
|
+
checked: isDevMode && settings.reactEnabled,
|
|
5231
|
+
disabled: !isDevMode,
|
|
4767
5232
|
onChange: () => setSettings((s) => ({
|
|
4768
5233
|
...s,
|
|
4769
5234
|
reactEnabled: !s.reactEnabled
|
|
@@ -4776,7 +5241,34 @@ function PageFeedbackToolbarCSS({
|
|
|
4776
5241
|
)
|
|
4777
5242
|
]
|
|
4778
5243
|
}
|
|
4779
|
-
)
|
|
5244
|
+
),
|
|
5245
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: `${styles_module_default2.settingsRow} ${styles_module_default2.settingsRowMarginTop}`, children: [
|
|
5246
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
5247
|
+
"div",
|
|
5248
|
+
{
|
|
5249
|
+
className: `${styles_module_default2.settingsLabel} ${!isDarkMode ? styles_module_default2.light : ""}`,
|
|
5250
|
+
children: [
|
|
5251
|
+
"Hide Until Restart",
|
|
5252
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Tooltip, { content: "Hides the toolbar until you open a new tab", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: styles_module_default2.helpIcon, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(IconHelp, { size: 20 }) }) })
|
|
5253
|
+
]
|
|
5254
|
+
}
|
|
5255
|
+
),
|
|
5256
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("label", { className: styles_module_default2.toggleSwitch, children: [
|
|
5257
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
5258
|
+
"input",
|
|
5259
|
+
{
|
|
5260
|
+
type: "checkbox",
|
|
5261
|
+
checked: false,
|
|
5262
|
+
onChange: (e) => {
|
|
5263
|
+
if (e.target.checked) {
|
|
5264
|
+
hideToolbarTemporarily();
|
|
5265
|
+
}
|
|
5266
|
+
}
|
|
5267
|
+
}
|
|
5268
|
+
),
|
|
5269
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: styles_module_default2.toggleSlider })
|
|
5270
|
+
] })
|
|
5271
|
+
] })
|
|
4780
5272
|
] }),
|
|
4781
5273
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: styles_module_default2.settingsSection, children: [
|
|
4782
5274
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
@@ -5046,6 +5538,7 @@ function PageFeedbackToolbarCSS({
|
|
|
5046
5538
|
style: {
|
|
5047
5539
|
"--marker-color": settings.annotationColor
|
|
5048
5540
|
},
|
|
5541
|
+
onKeyDown: (e) => e.stopPropagation(),
|
|
5049
5542
|
onChange: (e) => setSettings((s) => ({
|
|
5050
5543
|
...s,
|
|
5051
5544
|
webhookUrl: e.target.value
|