@opentabs-dev/browser-extension 0.0.52 → 0.0.53

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.
Files changed (74) hide show
  1. package/dist/background-message-handlers.d.ts +24 -3
  2. package/dist/background-message-handlers.d.ts.map +1 -1
  3. package/dist/background-message-handlers.js +251 -9
  4. package/dist/background-message-handlers.js.map +1 -1
  5. package/dist/background.js +593 -117
  6. package/dist/background.js.map +1 -1
  7. package/dist/confirmation-badge.d.ts +2 -2
  8. package/dist/confirmation-badge.d.ts.map +1 -1
  9. package/dist/confirmation-badge.js +49 -17
  10. package/dist/confirmation-badge.js.map +1 -1
  11. package/dist/constants.d.ts +8 -0
  12. package/dist/constants.d.ts.map +1 -1
  13. package/dist/constants.js +8 -0
  14. package/dist/constants.js.map +1 -1
  15. package/dist/extension-messages.d.ts +49 -6
  16. package/dist/extension-messages.d.ts.map +1 -1
  17. package/dist/known-methods.d.ts +2 -2
  18. package/dist/known-methods.d.ts.map +1 -1
  19. package/dist/known-methods.js +1 -0
  20. package/dist/known-methods.js.map +1 -1
  21. package/dist/message-router.d.ts.map +1 -1
  22. package/dist/message-router.js +119 -11
  23. package/dist/message-router.js.map +1 -1
  24. package/dist/offscreen/index.js +11 -2
  25. package/dist/offscreen/index.js.map +1 -1
  26. package/dist/server-request.d.ts +19 -0
  27. package/dist/server-request.d.ts.map +1 -0
  28. package/dist/server-request.js +79 -0
  29. package/dist/server-request.js.map +1 -0
  30. package/dist/server-state-cache.d.ts +41 -0
  31. package/dist/server-state-cache.d.ts.map +1 -0
  32. package/dist/server-state-cache.js +75 -0
  33. package/dist/server-state-cache.js.map +1 -0
  34. package/dist/side-panel/App.d.ts.map +1 -1
  35. package/dist/side-panel/App.js +28 -59
  36. package/dist/side-panel/App.js.map +1 -1
  37. package/dist/side-panel/bridge.d.ts +19 -33
  38. package/dist/side-panel/bridge.d.ts.map +1 -1
  39. package/dist/side-panel/bridge.js +27 -91
  40. package/dist/side-panel/bridge.js.map +1 -1
  41. package/dist/side-panel/components/BrowserToolsCard.d.ts.map +1 -1
  42. package/dist/side-panel/components/BrowserToolsCard.js +2 -1
  43. package/dist/side-panel/components/BrowserToolsCard.js.map +1 -1
  44. package/dist/side-panel/components/PluginCard.d.ts.map +1 -1
  45. package/dist/side-panel/components/PluginCard.js +2 -1
  46. package/dist/side-panel/components/PluginCard.js.map +1 -1
  47. package/dist/side-panel/components/PluginIcon.d.ts +2 -1
  48. package/dist/side-panel/components/PluginIcon.d.ts.map +1 -1
  49. package/dist/side-panel/components/PluginIcon.js +23 -5
  50. package/dist/side-panel/components/PluginIcon.js.map +1 -1
  51. package/dist/side-panel/components/ToolIcon.d.ts +2 -1
  52. package/dist/side-panel/components/ToolIcon.d.ts.map +1 -1
  53. package/dist/side-panel/components/ToolIcon.js +17 -3
  54. package/dist/side-panel/components/ToolIcon.js.map +1 -1
  55. package/dist/side-panel/components/ToolRow.d.ts.map +1 -1
  56. package/dist/side-panel/components/ToolRow.js +1 -2
  57. package/dist/side-panel/components/ToolRow.js.map +1 -1
  58. package/dist/side-panel/components/retro/Button.d.ts +1 -1
  59. package/dist/side-panel/hooks/useServerNotifications.d.ts +1 -3
  60. package/dist/side-panel/hooks/useServerNotifications.d.ts.map +1 -1
  61. package/dist/side-panel/hooks/useServerNotifications.js +2 -8
  62. package/dist/side-panel/hooks/useServerNotifications.js.map +1 -1
  63. package/dist/side-panel/side-panel.js +1201 -1210
  64. package/dist/side-panel/styles.css +1 -1
  65. package/dist/side-panel-toggle.d.ts +6 -0
  66. package/dist/side-panel-toggle.d.ts.map +1 -1
  67. package/dist/side-panel-toggle.js +6 -0
  68. package/dist/side-panel-toggle.js.map +1 -1
  69. package/dist/tab-state.d.ts +19 -1
  70. package/dist/tab-state.d.ts.map +1 -1
  71. package/dist/tab-state.js +128 -3
  72. package/dist/tab-state.js.map +1 -1
  73. package/manifest.json +1 -1
  74. package/package.json +1 -1
@@ -58455,104 +58455,56 @@ var import_compiler_runtime31 = __toESM(require_compiler_runtime(), 1);
58455
58455
  var matchesTool = (tool, filterLower) => tool.displayName.toLowerCase().includes(filterLower) || tool.name.toLowerCase().includes(filterLower) || tool.description.toLowerCase().includes(filterLower);
58456
58456
  var matchesPlugin = (plugin, filterLower) => plugin.displayName.toLowerCase().includes(filterLower) || plugin.name.toLowerCase().includes(filterLower) || (plugin.tools ?? []).some((tool) => tool.displayName.toLowerCase().includes(filterLower) || tool.name.toLowerCase().includes(filterLower));
58457
58457
  var extractShortName = (name) => (name.split("/").pop() ?? name).replace(/^opentabs-plugin-/, "");
58458
- var REQUEST_TIMEOUT_MS = 3e4;
58459
- var pendingRequests = /* @__PURE__ */ new Map();
58460
- var rejectAllPending = () => {
58461
- for (const [id, pending] of pendingRequests) {
58462
- pendingRequests.delete(id);
58463
- clearTimeout(pending.timerId);
58464
- pending.reject(new Error("Server disconnected"));
58465
- }
58466
- };
58467
- var sendRequest = (method, params = {}) => {
58468
- const id = crypto.randomUUID();
58469
- const data = {
58470
- jsonrpc: "2.0",
58471
- method,
58472
- params,
58473
- id
58474
- };
58475
- return new Promise((resolve, reject) => {
58476
- const timerId = setTimeout(() => {
58477
- if (pendingRequests.has(id)) {
58478
- pendingRequests.delete(id);
58479
- reject(new Error(`Request ${method} timed out after ${REQUEST_TIMEOUT_MS}ms`));
58480
- }
58481
- }, REQUEST_TIMEOUT_MS);
58482
- pendingRequests.set(id, {
58483
- resolve,
58484
- reject,
58485
- timerId
58486
- });
58487
- chrome.runtime.sendMessage({
58488
- type: "bg:send",
58489
- data
58490
- }).catch((err) => {
58491
- clearTimeout(timerId);
58492
- pendingRequests.delete(id);
58493
- reject(err instanceof Error ? err : new Error(String(err)));
58494
- });
58495
- });
58496
- };
58497
- var handleServerResponse = (data) => {
58498
- const rawId = data.id;
58499
- if (rawId === void 0 || rawId === null || data.method) return false;
58500
- const id = String(rawId);
58501
- const pending = pendingRequests.get(id);
58502
- if (!pending) return false;
58503
- pendingRequests.delete(id);
58504
- clearTimeout(pending.timerId);
58505
- if ("error" in data) {
58506
- const err = data.error;
58507
- pending.reject(new Error(err.message ?? "Unknown server error"));
58508
- } else {
58509
- pending.resolve(data.result);
58510
- }
58511
- return true;
58512
- };
58513
- var getConnectionState = () => new Promise((resolve) => {
58514
- chrome.runtime.sendMessage({
58515
- type: "bg:getConnectionState"
58516
- }, (response) => {
58458
+ var sendBgMessage = (message) => new Promise((resolve, reject) => {
58459
+ chrome.runtime.sendMessage(message, (response) => {
58517
58460
  if (chrome.runtime.lastError) {
58518
- resolve({
58519
- connected: false
58520
- });
58521
- } else {
58522
- resolve({
58523
- connected: response?.connected === true,
58524
- disconnectReason: response?.disconnectReason
58525
- });
58461
+ reject(new Error(chrome.runtime.lastError.message ?? "Unknown error"));
58462
+ return;
58463
+ }
58464
+ if (response && typeof response === "object" && "error" in response) {
58465
+ reject(new Error(response.error));
58466
+ return;
58526
58467
  }
58468
+ resolve(response);
58527
58469
  });
58528
58470
  });
58529
- var fetchConfigState = () => sendRequest("config.getState");
58530
- var setToolEnabled = (plugin, tool, enabled) => sendRequest("config.setToolEnabled", {
58471
+ var getFullState = () => sendBgMessage({
58472
+ type: "bg:getFullState"
58473
+ });
58474
+ var setToolEnabled = (plugin, tool, enabled) => sendBgMessage({
58475
+ type: "bg:setToolEnabled",
58531
58476
  plugin,
58532
58477
  tool,
58533
58478
  enabled
58534
58479
  });
58535
- var setAllToolsEnabled = (plugin, enabled) => sendRequest("config.setAllToolsEnabled", {
58480
+ var setAllToolsEnabled = (plugin, enabled) => sendBgMessage({
58481
+ type: "bg:setAllToolsEnabled",
58536
58482
  plugin,
58537
58483
  enabled
58538
58484
  });
58539
- var setBrowserToolEnabled = (tool, enabled) => sendRequest("config.setBrowserToolEnabled", {
58485
+ var setBrowserToolEnabled = (tool, enabled) => sendBgMessage({
58486
+ type: "bg:setBrowserToolEnabled",
58540
58487
  tool,
58541
58488
  enabled
58542
58489
  });
58543
- var setAllBrowserToolsEnabled = (enabled) => sendRequest("config.setAllBrowserToolsEnabled", {
58490
+ var setAllBrowserToolsEnabled = (enabled) => sendBgMessage({
58491
+ type: "bg:setAllBrowserToolsEnabled",
58544
58492
  enabled
58545
58493
  });
58546
- var searchPlugins = (query) => sendRequest("plugin.search", {
58494
+ var searchPlugins = (query) => sendBgMessage({
58495
+ type: "bg:searchPlugins",
58547
58496
  query
58548
58497
  });
58549
- var installPlugin = (name) => sendRequest("plugin.install", {
58498
+ var installPlugin = (name) => sendBgMessage({
58499
+ type: "bg:installPlugin",
58550
58500
  name
58551
58501
  });
58552
- var removePlugin = (name) => sendRequest("plugin.remove", {
58502
+ var removePlugin = (name) => sendBgMessage({
58503
+ type: "bg:removePlugin",
58553
58504
  name
58554
58505
  });
58555
- var updatePlugin = (name) => sendRequest("plugin.updateFromRegistry", {
58506
+ var updatePlugin = (name) => sendBgMessage({
58507
+ type: "bg:updatePlugin",
58556
58508
  name
58557
58509
  });
58558
58510
  var sendConfirmationResponse = (id, decision, scope) => {
@@ -58571,7 +58523,7 @@ var sendConfirmationResponse = (id, decision, scope) => {
58571
58523
  };
58572
58524
 
58573
58525
  // src/side-panel/components/BrowserToolsCard.tsx
58574
- var import_compiler_runtime13 = __toESM(require_compiler_runtime(), 1);
58526
+ var import_compiler_runtime12 = __toESM(require_compiler_runtime(), 1);
58575
58527
 
58576
58528
  // src/side-panel/components/BrowserToolsMenu.tsx
58577
58529
  var import_compiler_runtime2 = __toESM(require_compiler_runtime(), 1);
@@ -67813,6 +67765,7 @@ var sanitizeSvg = (svg) => {
67813
67765
  };
67814
67766
 
67815
67767
  // src/side-panel/components/PluginIcon.tsx
67768
+ var import_react7 = __toESM(require_react(), 1);
67816
67769
  var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);
67817
67770
  var AVATAR_PALETTE_SIZE = 10;
67818
67771
  var hashString = (str) => {
@@ -67825,28 +67778,57 @@ var hashString = (str) => {
67825
67778
  var getAvatarVar = (pluginName) => `var(--avatar-${String(hashString(pluginName) % AVATAR_PALETTE_SIZE)})`;
67826
67779
  var getAvatarLetter = (displayName, pluginName) => (displayName[0] ?? pluginName[0] ?? "?").toUpperCase();
67827
67780
  var StatusIndicator = (t0) => {
67828
- const $2 = (0, import_compiler_runtime3.c)(15);
67781
+ const $2 = (0, import_compiler_runtime3.c)(24);
67829
67782
  const {
67830
67783
  tabState,
67831
67784
  hasUpdate,
67832
- size: size4
67785
+ size: size4,
67786
+ active: t1
67833
67787
  } = t0;
67788
+ const active = t1 === void 0 ? false : t1;
67789
+ const prevActiveRef = (0, import_react7.useRef)(false);
67790
+ const [fadingOut, setFadingOut] = (0, import_react7.useState)(false);
67791
+ let t2;
67792
+ let t3;
67793
+ if ($2[0] !== active) {
67794
+ t2 = () => {
67795
+ const wasActive = prevActiveRef.current;
67796
+ prevActiveRef.current = active;
67797
+ if (!wasActive || active) {
67798
+ return;
67799
+ }
67800
+ const startTimer = setTimeout(() => setFadingOut(true), 0);
67801
+ const endTimer = setTimeout(() => setFadingOut(false), 500);
67802
+ return () => {
67803
+ clearTimeout(startTimer);
67804
+ clearTimeout(endTimer);
67805
+ };
67806
+ };
67807
+ t3 = [active];
67808
+ $2[0] = active;
67809
+ $2[1] = t2;
67810
+ $2[2] = t3;
67811
+ } else {
67812
+ t2 = $2[1];
67813
+ t3 = $2[2];
67814
+ }
67815
+ (0, import_react7.useEffect)(t2, t3);
67834
67816
  if (tabState === "closed") {
67835
67817
  return null;
67836
67818
  }
67837
- let t1;
67838
- if ($2[0] !== size4) {
67839
- t1 = Math.round(size4 * 0.3);
67840
- $2[0] = size4;
67841
- $2[1] = t1;
67819
+ let t4;
67820
+ if ($2[3] !== size4) {
67821
+ t4 = Math.round(size4 * 0.3);
67822
+ $2[3] = size4;
67823
+ $2[4] = t4;
67842
67824
  } else {
67843
- t1 = $2[1];
67825
+ t4 = $2[4];
67844
67826
  }
67845
- const dotSize = Math.max(8, t1);
67827
+ const dotSize = Math.max(8, t4);
67846
67828
  if (tabState === "unavailable") {
67847
- let t22;
67848
- if ($2[2] !== dotSize) {
67849
- t22 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", {
67829
+ let t52;
67830
+ if ($2[5] !== dotSize) {
67831
+ t52 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", {
67850
67832
  className: "bg-primary border-card absolute rounded-full border-2",
67851
67833
  style: {
67852
67834
  width: dotSize,
@@ -67855,39 +67837,39 @@ var StatusIndicator = (t0) => {
67855
67837
  right: -2
67856
67838
  }
67857
67839
  });
67858
- $2[2] = dotSize;
67859
- $2[3] = t22;
67840
+ $2[5] = dotSize;
67841
+ $2[6] = t52;
67860
67842
  } else {
67861
- t22 = $2[3];
67843
+ t52 = $2[6];
67862
67844
  }
67863
- return t22;
67845
+ return t52;
67864
67846
  }
67865
67847
  if (hasUpdate) {
67866
- let t22;
67867
- if ($2[4] !== dotSize) {
67868
- t22 = Math.round(dotSize * 0.6);
67869
- $2[4] = dotSize;
67870
- $2[5] = t22;
67848
+ let t52;
67849
+ if ($2[7] !== dotSize) {
67850
+ t52 = Math.round(dotSize * 0.6);
67851
+ $2[7] = dotSize;
67852
+ $2[8] = t52;
67871
67853
  } else {
67872
- t22 = $2[5];
67854
+ t52 = $2[8];
67873
67855
  }
67874
- const iconSize = Math.max(6, t22);
67875
- let t3;
67876
- if ($2[6] !== dotSize) {
67877
- t3 = {
67856
+ const iconSize = Math.max(6, t52);
67857
+ let t62;
67858
+ if ($2[9] !== dotSize) {
67859
+ t62 = {
67878
67860
  width: dotSize,
67879
67861
  height: dotSize,
67880
67862
  bottom: -2,
67881
67863
  right: -2
67882
67864
  };
67883
- $2[6] = dotSize;
67884
- $2[7] = t3;
67865
+ $2[9] = dotSize;
67866
+ $2[10] = t62;
67885
67867
  } else {
67886
- t3 = $2[7];
67868
+ t62 = $2[10];
67887
67869
  }
67888
- let t4;
67889
- if ($2[8] !== iconSize) {
67890
- t4 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ArrowUp, {
67870
+ let t72;
67871
+ if ($2[11] !== iconSize) {
67872
+ t72 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ArrowUp, {
67891
67873
  className: "text-accent-foreground",
67892
67874
  style: {
67893
67875
  width: iconSize,
@@ -67895,43 +67877,63 @@ var StatusIndicator = (t0) => {
67895
67877
  },
67896
67878
  strokeWidth: 3
67897
67879
  });
67898
- $2[8] = iconSize;
67899
- $2[9] = t4;
67880
+ $2[11] = iconSize;
67881
+ $2[12] = t72;
67900
67882
  } else {
67901
- t4 = $2[9];
67883
+ t72 = $2[12];
67902
67884
  }
67903
- let t5;
67904
- if ($2[10] !== t3 || $2[11] !== t4) {
67905
- t5 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", {
67885
+ let t82;
67886
+ if ($2[13] !== t62 || $2[14] !== t72) {
67887
+ t82 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", {
67906
67888
  className: "bg-accent border-card absolute flex items-center justify-center rounded-full border-2",
67907
- style: t3,
67908
- children: t4
67889
+ style: t62,
67890
+ children: t72
67909
67891
  });
67910
- $2[10] = t3;
67911
- $2[11] = t4;
67912
- $2[12] = t5;
67892
+ $2[13] = t62;
67893
+ $2[14] = t72;
67894
+ $2[15] = t82;
67913
67895
  } else {
67914
- t5 = $2[12];
67896
+ t82 = $2[15];
67915
67897
  }
67916
- return t5;
67898
+ return t82;
67917
67899
  }
67918
- let t2;
67919
- if ($2[13] !== dotSize) {
67920
- t2 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", {
67921
- className: "bg-success border-card absolute rounded-full border-2",
67922
- style: {
67923
- width: dotSize,
67924
- height: dotSize,
67925
- bottom: -2,
67926
- right: -2
67927
- }
67900
+ const t5 = active && "animate-activity-flash";
67901
+ const t6 = fadingOut && !active && "animate-activity-fade-out";
67902
+ let t7;
67903
+ if ($2[16] !== t5 || $2[17] !== t6) {
67904
+ t7 = cn("bg-success border-card absolute rounded-full border-2", t5, t6);
67905
+ $2[16] = t5;
67906
+ $2[17] = t6;
67907
+ $2[18] = t7;
67908
+ } else {
67909
+ t7 = $2[18];
67910
+ }
67911
+ let t8;
67912
+ if ($2[19] !== dotSize) {
67913
+ t8 = {
67914
+ width: dotSize,
67915
+ height: dotSize,
67916
+ bottom: -2,
67917
+ right: -2
67918
+ };
67919
+ $2[19] = dotSize;
67920
+ $2[20] = t8;
67921
+ } else {
67922
+ t8 = $2[20];
67923
+ }
67924
+ let t9;
67925
+ if ($2[21] !== t7 || $2[22] !== t8) {
67926
+ t9 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", {
67927
+ className: t7,
67928
+ style: t8
67928
67929
  });
67929
- $2[13] = dotSize;
67930
- $2[14] = t2;
67930
+ $2[21] = t7;
67931
+ $2[22] = t8;
67932
+ $2[23] = t9;
67931
67933
  } else {
67932
- t2 = $2[14];
67934
+ t9 = $2[23];
67933
67935
  }
67934
- return t2;
67936
+ return t9;
67935
67937
  };
67936
67938
  var tryGetSanitizedSvg = (rawSvg, pluginName) => {
67937
67939
  if (!rawSvg) return void 0;
@@ -67943,7 +67945,7 @@ var tryGetSanitizedSvg = (rawSvg, pluginName) => {
67943
67945
  }
67944
67946
  };
67945
67947
  var PluginIcon = (t0) => {
67946
- const $2 = (0, import_compiler_runtime3.c)(57);
67948
+ const $2 = (0, import_compiler_runtime3.c)(59);
67947
67949
  const {
67948
67950
  pluginName,
67949
67951
  displayName,
@@ -67952,262 +67954,268 @@ var PluginIcon = (t0) => {
67952
67954
  size: t3,
67953
67955
  className: t4,
67954
67956
  iconSvg,
67955
- iconInactiveSvg
67957
+ iconInactiveSvg,
67958
+ active: t5
67956
67959
  } = t0;
67957
67960
  const tabState = t1 === void 0 ? "closed" : t1;
67958
67961
  const hasUpdate = t2 === void 0 ? false : t2;
67959
67962
  const size4 = t3 === void 0 ? 32 : t3;
67960
67963
  const className = t4 === void 0 ? "" : t4;
67964
+ const active = t5 === void 0 ? false : t5;
67961
67965
  const isReady = tabState === "ready";
67962
67966
  const hasSvg = !!iconSvg;
67963
67967
  const rawSvg = isReady ? iconSvg : iconInactiveSvg;
67964
- let t5;
67968
+ let t6;
67965
67969
  if ($2[0] !== pluginName || $2[1] !== rawSvg) {
67966
- t5 = tryGetSanitizedSvg(rawSvg, pluginName);
67970
+ t6 = tryGetSanitizedSvg(rawSvg, pluginName);
67967
67971
  $2[0] = pluginName;
67968
67972
  $2[1] = rawSvg;
67969
- $2[2] = t5;
67973
+ $2[2] = t6;
67970
67974
  } else {
67971
- t5 = $2[2];
67975
+ t6 = $2[2];
67972
67976
  }
67973
- const svgToRender = t5;
67974
- let t6;
67977
+ const svgToRender = t6;
67978
+ let t7;
67975
67979
  if ($2[3] !== size4) {
67976
- t6 = Math.round(size4 * 0.6);
67980
+ t7 = Math.round(size4 * 0.6);
67977
67981
  $2[3] = size4;
67978
- $2[4] = t6;
67982
+ $2[4] = t7;
67979
67983
  } else {
67980
- t6 = $2[4];
67984
+ t7 = $2[4];
67981
67985
  }
67982
- const innerSize = t6;
67986
+ const innerSize = t7;
67983
67987
  if (hasSvg && svgToRender) {
67984
- const t72 = `relative shrink-0 ${className}`;
67985
- let t82;
67988
+ const t82 = `relative shrink-0 ${className}`;
67989
+ let t92;
67986
67990
  if ($2[5] !== size4) {
67987
- t82 = {
67991
+ t92 = {
67988
67992
  width: size4,
67989
67993
  height: size4
67990
67994
  };
67991
67995
  $2[5] = size4;
67992
- $2[6] = t82;
67996
+ $2[6] = t92;
67993
67997
  } else {
67994
- t82 = $2[6];
67998
+ t92 = $2[6];
67995
67999
  }
67996
- let t92;
68000
+ let t102;
67997
68001
  if ($2[7] !== size4) {
67998
- t92 = {
68002
+ t102 = {
67999
68003
  width: size4,
68000
68004
  height: size4
68001
68005
  };
68002
68006
  $2[7] = size4;
68003
- $2[8] = t92;
68007
+ $2[8] = t102;
68004
68008
  } else {
68005
- t92 = $2[8];
68009
+ t102 = $2[8];
68006
68010
  }
68007
- let t102;
68011
+ let t112;
68008
68012
  if ($2[9] !== innerSize) {
68009
- t102 = {
68013
+ t112 = {
68010
68014
  width: innerSize,
68011
68015
  height: innerSize
68012
68016
  };
68013
68017
  $2[9] = innerSize;
68014
- $2[10] = t102;
68018
+ $2[10] = t112;
68015
68019
  } else {
68016
- t102 = $2[10];
68020
+ t112 = $2[10];
68017
68021
  }
68018
- let t112;
68022
+ let t122;
68019
68023
  if ($2[11] !== svgToRender) {
68020
- t112 = {
68024
+ t122 = {
68021
68025
  __html: svgToRender
68022
68026
  };
68023
68027
  $2[11] = svgToRender;
68024
- $2[12] = t112;
68028
+ $2[12] = t122;
68025
68029
  } else {
68026
- t112 = $2[12];
68030
+ t122 = $2[12];
68027
68031
  }
68028
- let t122;
68029
- if ($2[13] !== t102 || $2[14] !== t112) {
68030
- t122 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", {
68032
+ let t132;
68033
+ if ($2[13] !== t112 || $2[14] !== t122) {
68034
+ t132 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", {
68031
68035
  className: "overflow-hidden",
68032
- style: t102,
68033
- dangerouslySetInnerHTML: t112
68036
+ style: t112,
68037
+ dangerouslySetInnerHTML: t122
68034
68038
  });
68035
- $2[13] = t102;
68036
- $2[14] = t112;
68037
- $2[15] = t122;
68039
+ $2[13] = t112;
68040
+ $2[14] = t122;
68041
+ $2[15] = t132;
68038
68042
  } else {
68039
- t122 = $2[15];
68043
+ t132 = $2[15];
68040
68044
  }
68041
- let t132;
68042
- if ($2[16] !== t122 || $2[17] !== t92) {
68043
- t132 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", {
68045
+ let t142;
68046
+ if ($2[16] !== t102 || $2[17] !== t132) {
68047
+ t142 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", {
68044
68048
  className: "border-border flex h-full w-full items-center justify-center rounded border-2",
68045
- style: t92,
68046
- children: t122
68049
+ style: t102,
68050
+ children: t132
68047
68051
  });
68048
- $2[16] = t122;
68049
- $2[17] = t92;
68050
- $2[18] = t132;
68052
+ $2[16] = t102;
68053
+ $2[17] = t132;
68054
+ $2[18] = t142;
68051
68055
  } else {
68052
- t132 = $2[18];
68056
+ t142 = $2[18];
68053
68057
  }
68054
- let t142;
68055
- if ($2[19] !== hasUpdate || $2[20] !== size4 || $2[21] !== tabState) {
68056
- t142 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StatusIndicator, {
68058
+ let t152;
68059
+ if ($2[19] !== active || $2[20] !== hasUpdate || $2[21] !== size4 || $2[22] !== tabState) {
68060
+ t152 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StatusIndicator, {
68057
68061
  tabState,
68058
68062
  hasUpdate,
68059
- size: size4
68063
+ size: size4,
68064
+ active
68060
68065
  });
68061
- $2[19] = hasUpdate;
68062
- $2[20] = size4;
68063
- $2[21] = tabState;
68064
- $2[22] = t142;
68066
+ $2[19] = active;
68067
+ $2[20] = hasUpdate;
68068
+ $2[21] = size4;
68069
+ $2[22] = tabState;
68070
+ $2[23] = t152;
68065
68071
  } else {
68066
- t142 = $2[22];
68072
+ t152 = $2[23];
68067
68073
  }
68068
- let t152;
68069
- if ($2[23] !== t132 || $2[24] !== t142 || $2[25] !== t72 || $2[26] !== t82) {
68070
- t152 = /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", {
68071
- className: t72,
68072
- style: t82,
68073
- children: [t132, t142]
68074
+ let t162;
68075
+ if ($2[24] !== t142 || $2[25] !== t152 || $2[26] !== t82 || $2[27] !== t92) {
68076
+ t162 = /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", {
68077
+ className: t82,
68078
+ style: t92,
68079
+ children: [t142, t152]
68074
68080
  });
68075
- $2[23] = t132;
68076
68081
  $2[24] = t142;
68077
- $2[25] = t72;
68082
+ $2[25] = t152;
68078
68083
  $2[26] = t82;
68079
- $2[27] = t152;
68084
+ $2[27] = t92;
68085
+ $2[28] = t162;
68080
68086
  } else {
68081
- t152 = $2[27];
68087
+ t162 = $2[28];
68082
68088
  }
68083
- return t152;
68089
+ return t162;
68084
68090
  }
68085
- let t7;
68086
- if ($2[28] !== displayName || $2[29] !== pluginName) {
68087
- t7 = getAvatarLetter(displayName, pluginName);
68088
- $2[28] = displayName;
68089
- $2[29] = pluginName;
68090
- $2[30] = t7;
68091
+ let t8;
68092
+ if ($2[29] !== displayName || $2[30] !== pluginName) {
68093
+ t8 = getAvatarLetter(displayName, pluginName);
68094
+ $2[29] = displayName;
68095
+ $2[30] = pluginName;
68096
+ $2[31] = t8;
68091
68097
  } else {
68092
- t7 = $2[30];
68098
+ t8 = $2[31];
68093
68099
  }
68094
- const letter = t7;
68095
- let t8;
68096
- if ($2[31] !== size4) {
68097
- t8 = Math.round(size4 * 0.55);
68098
- $2[31] = size4;
68099
- $2[32] = t8;
68100
+ const letter = t8;
68101
+ let t9;
68102
+ if ($2[32] !== size4) {
68103
+ t9 = Math.round(size4 * 0.55);
68104
+ $2[32] = size4;
68105
+ $2[33] = t9;
68100
68106
  } else {
68101
- t8 = $2[32];
68107
+ t9 = $2[33];
68102
68108
  }
68103
- const fontSize = t8;
68104
- const t9 = `relative shrink-0 ${className}`;
68105
- let t10;
68106
- if ($2[33] !== size4) {
68107
- t10 = {
68109
+ const fontSize = t9;
68110
+ const t10 = `relative shrink-0 ${className}`;
68111
+ let t11;
68112
+ if ($2[34] !== size4) {
68113
+ t11 = {
68108
68114
  width: size4,
68109
68115
  height: size4
68110
68116
  };
68111
- $2[33] = size4;
68112
- $2[34] = t10;
68117
+ $2[34] = size4;
68118
+ $2[35] = t11;
68113
68119
  } else {
68114
- t10 = $2[34];
68120
+ t11 = $2[35];
68115
68121
  }
68116
- let t11;
68117
- if ($2[35] !== pluginName) {
68118
- t11 = getAvatarVar(pluginName);
68119
- $2[35] = pluginName;
68120
- $2[36] = t11;
68122
+ let t12;
68123
+ if ($2[36] !== pluginName) {
68124
+ t12 = getAvatarVar(pluginName);
68125
+ $2[36] = pluginName;
68126
+ $2[37] = t12;
68121
68127
  } else {
68122
- t11 = $2[36];
68128
+ t12 = $2[37];
68123
68129
  }
68124
- let t12;
68125
- if ($2[37] !== size4 || $2[38] !== t11) {
68126
- t12 = {
68130
+ let t13;
68131
+ if ($2[38] !== size4 || $2[39] !== t12) {
68132
+ t13 = {
68127
68133
  width: size4,
68128
68134
  height: size4,
68129
- backgroundColor: t11
68135
+ backgroundColor: t12
68130
68136
  };
68131
- $2[37] = size4;
68132
- $2[38] = t11;
68137
+ $2[38] = size4;
68133
68138
  $2[39] = t12;
68139
+ $2[40] = t13;
68134
68140
  } else {
68135
- t12 = $2[39];
68141
+ t13 = $2[40];
68136
68142
  }
68137
- let t13;
68138
- if ($2[40] !== fontSize) {
68139
- t13 = {
68143
+ let t14;
68144
+ if ($2[41] !== fontSize) {
68145
+ t14 = {
68140
68146
  fontSize,
68141
68147
  letterSpacing: "-0.02em"
68142
68148
  };
68143
- $2[40] = fontSize;
68144
- $2[41] = t13;
68149
+ $2[41] = fontSize;
68150
+ $2[42] = t14;
68145
68151
  } else {
68146
- t13 = $2[41];
68152
+ t14 = $2[42];
68147
68153
  }
68148
- let t14;
68149
- if ($2[42] !== letter || $2[43] !== t13) {
68150
- t14 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", {
68154
+ let t15;
68155
+ if ($2[43] !== letter || $2[44] !== t14) {
68156
+ t15 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", {
68151
68157
  className: "font-head leading-none text-white select-none",
68152
- style: t13,
68158
+ style: t14,
68153
68159
  children: letter
68154
68160
  });
68155
- $2[42] = letter;
68156
- $2[43] = t13;
68161
+ $2[43] = letter;
68157
68162
  $2[44] = t14;
68163
+ $2[45] = t15;
68158
68164
  } else {
68159
- t14 = $2[44];
68165
+ t15 = $2[45];
68160
68166
  }
68161
- let t15;
68162
- if ($2[45] !== t12 || $2[46] !== t14) {
68163
- t15 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", {
68167
+ let t16;
68168
+ if ($2[46] !== t13 || $2[47] !== t15) {
68169
+ t16 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", {
68164
68170
  className: "border-border flex h-full w-full items-center justify-center rounded border-2",
68165
- style: t12,
68166
- children: t14
68171
+ style: t13,
68172
+ children: t15
68167
68173
  });
68168
- $2[45] = t12;
68169
- $2[46] = t14;
68174
+ $2[46] = t13;
68170
68175
  $2[47] = t15;
68176
+ $2[48] = t16;
68171
68177
  } else {
68172
- t15 = $2[47];
68178
+ t16 = $2[48];
68173
68179
  }
68174
- let t16;
68175
- if ($2[48] !== hasUpdate || $2[49] !== size4 || $2[50] !== tabState) {
68176
- t16 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StatusIndicator, {
68180
+ let t17;
68181
+ if ($2[49] !== active || $2[50] !== hasUpdate || $2[51] !== size4 || $2[52] !== tabState) {
68182
+ t17 = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StatusIndicator, {
68177
68183
  tabState,
68178
68184
  hasUpdate,
68179
- size: size4
68185
+ size: size4,
68186
+ active
68180
68187
  });
68181
- $2[48] = hasUpdate;
68182
- $2[49] = size4;
68183
- $2[50] = tabState;
68184
- $2[51] = t16;
68188
+ $2[49] = active;
68189
+ $2[50] = hasUpdate;
68190
+ $2[51] = size4;
68191
+ $2[52] = tabState;
68192
+ $2[53] = t17;
68185
68193
  } else {
68186
- t16 = $2[51];
68194
+ t17 = $2[53];
68187
68195
  }
68188
- let t17;
68189
- if ($2[52] !== t10 || $2[53] !== t15 || $2[54] !== t16 || $2[55] !== t9) {
68190
- t17 = /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", {
68191
- className: t9,
68192
- style: t10,
68193
- children: [t15, t16]
68196
+ let t18;
68197
+ if ($2[54] !== t10 || $2[55] !== t11 || $2[56] !== t16 || $2[57] !== t17) {
68198
+ t18 = /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", {
68199
+ className: t10,
68200
+ style: t11,
68201
+ children: [t16, t17]
68194
68202
  });
68195
- $2[52] = t10;
68196
- $2[53] = t15;
68197
- $2[54] = t16;
68198
- $2[55] = t9;
68199
- $2[56] = t17;
68203
+ $2[54] = t10;
68204
+ $2[55] = t11;
68205
+ $2[56] = t16;
68206
+ $2[57] = t17;
68207
+ $2[58] = t18;
68200
68208
  } else {
68201
- t17 = $2[56];
68209
+ t18 = $2[58];
68202
68210
  }
68203
- return t17;
68211
+ return t18;
68204
68212
  };
68205
68213
 
68206
68214
  // src/side-panel/components/retro/Accordion.tsx
68207
68215
  var import_compiler_runtime4 = __toESM(require_compiler_runtime(), 1);
68208
68216
 
68209
68217
  // ../../node_modules/@radix-ui/react-accordion/dist/index.mjs
68210
- var import_react7 = __toESM(require_react(), 1);
68218
+ var import_react8 = __toESM(require_react(), 1);
68211
68219
 
68212
68220
  // ../../node_modules/@radix-ui/react-collapsible/dist/index.mjs
68213
68221
  var React36 = __toESM(require_react(), 1);
@@ -68355,7 +68363,7 @@ var [createAccordionContext, createAccordionScope] = createContextScope(ACCORDIO
68355
68363
  createCollapsibleScope
68356
68364
  ]);
68357
68365
  var useCollapsibleScope = createCollapsibleScope();
68358
- var Accordion = import_react7.default.forwardRef(
68366
+ var Accordion = import_react8.default.forwardRef(
68359
68367
  (props, forwardedRef) => {
68360
68368
  const { type, ...accordionProps } = props;
68361
68369
  const singleProps = accordionProps;
@@ -68369,7 +68377,7 @@ var [AccordionCollapsibleProvider, useAccordionCollapsibleContext] = createAccor
68369
68377
  ACCORDION_NAME,
68370
68378
  { collapsible: false }
68371
68379
  );
68372
- var AccordionImplSingle = import_react7.default.forwardRef(
68380
+ var AccordionImplSingle = import_react8.default.forwardRef(
68373
68381
  (props, forwardedRef) => {
68374
68382
  const {
68375
68383
  value: valueProp,
@@ -68389,15 +68397,15 @@ var AccordionImplSingle = import_react7.default.forwardRef(
68389
68397
  AccordionValueProvider,
68390
68398
  {
68391
68399
  scope: props.__scopeAccordion,
68392
- value: import_react7.default.useMemo(() => value ? [value] : [], [value]),
68400
+ value: import_react8.default.useMemo(() => value ? [value] : [], [value]),
68393
68401
  onItemOpen: setValue,
68394
- onItemClose: import_react7.default.useCallback(() => collapsible && setValue(""), [collapsible, setValue]),
68402
+ onItemClose: import_react8.default.useCallback(() => collapsible && setValue(""), [collapsible, setValue]),
68395
68403
  children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(AccordionCollapsibleProvider, { scope: props.__scopeAccordion, collapsible, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(AccordionImpl, { ...accordionSingleProps, ref: forwardedRef }) })
68396
68404
  }
68397
68405
  );
68398
68406
  }
68399
68407
  );
68400
- var AccordionImplMultiple = import_react7.default.forwardRef((props, forwardedRef) => {
68408
+ var AccordionImplMultiple = import_react8.default.forwardRef((props, forwardedRef) => {
68401
68409
  const {
68402
68410
  value: valueProp,
68403
68411
  defaultValue,
@@ -68411,11 +68419,11 @@ var AccordionImplMultiple = import_react7.default.forwardRef((props, forwardedRe
68411
68419
  onChange: onValueChange,
68412
68420
  caller: ACCORDION_NAME
68413
68421
  });
68414
- const handleItemOpen = import_react7.default.useCallback(
68422
+ const handleItemOpen = import_react8.default.useCallback(
68415
68423
  (itemValue) => setValue((prevValue = []) => [...prevValue, itemValue]),
68416
68424
  [setValue]
68417
68425
  );
68418
- const handleItemClose = import_react7.default.useCallback(
68426
+ const handleItemClose = import_react8.default.useCallback(
68419
68427
  (itemValue) => setValue((prevValue = []) => prevValue.filter((value2) => value2 !== itemValue)),
68420
68428
  [setValue]
68421
68429
  );
@@ -68431,10 +68439,10 @@ var AccordionImplMultiple = import_react7.default.forwardRef((props, forwardedRe
68431
68439
  );
68432
68440
  });
68433
68441
  var [AccordionImplProvider, useAccordionContext] = createAccordionContext(ACCORDION_NAME);
68434
- var AccordionImpl = import_react7.default.forwardRef(
68442
+ var AccordionImpl = import_react8.default.forwardRef(
68435
68443
  (props, forwardedRef) => {
68436
68444
  const { __scopeAccordion, disabled, dir, orientation = "vertical", ...accordionProps } = props;
68437
- const accordionRef = import_react7.default.useRef(null);
68445
+ const accordionRef = import_react8.default.useRef(null);
68438
68446
  const composedRefs = useComposedRefs(accordionRef, forwardedRef);
68439
68447
  const getItems = useCollection3(__scopeAccordion);
68440
68448
  const direction = useDirection(dir);
@@ -68523,7 +68531,7 @@ var AccordionImpl = import_react7.default.forwardRef(
68523
68531
  );
68524
68532
  var ITEM_NAME4 = "AccordionItem";
68525
68533
  var [AccordionItemProvider, useAccordionItemContext] = createAccordionContext(ITEM_NAME4);
68526
- var AccordionItem = import_react7.default.forwardRef(
68534
+ var AccordionItem = import_react8.default.forwardRef(
68527
68535
  (props, forwardedRef) => {
68528
68536
  const { __scopeAccordion, value, ...accordionItemProps } = props;
68529
68537
  const accordionContext = useAccordionContext(ITEM_NAME4, __scopeAccordion);
@@ -68564,7 +68572,7 @@ var AccordionItem = import_react7.default.forwardRef(
68564
68572
  );
68565
68573
  AccordionItem.displayName = ITEM_NAME4;
68566
68574
  var HEADER_NAME = "AccordionHeader";
68567
- var AccordionHeader = import_react7.default.forwardRef(
68575
+ var AccordionHeader = import_react8.default.forwardRef(
68568
68576
  (props, forwardedRef) => {
68569
68577
  const { __scopeAccordion, ...headerProps } = props;
68570
68578
  const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);
@@ -68583,7 +68591,7 @@ var AccordionHeader = import_react7.default.forwardRef(
68583
68591
  );
68584
68592
  AccordionHeader.displayName = HEADER_NAME;
68585
68593
  var TRIGGER_NAME3 = "AccordionTrigger";
68586
- var AccordionTrigger = import_react7.default.forwardRef(
68594
+ var AccordionTrigger = import_react8.default.forwardRef(
68587
68595
  (props, forwardedRef) => {
68588
68596
  const { __scopeAccordion, ...triggerProps } = props;
68589
68597
  const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);
@@ -68605,7 +68613,7 @@ var AccordionTrigger = import_react7.default.forwardRef(
68605
68613
  );
68606
68614
  AccordionTrigger.displayName = TRIGGER_NAME3;
68607
68615
  var CONTENT_NAME5 = "AccordionContent";
68608
- var AccordionContent = import_react7.default.forwardRef(
68616
+ var AccordionContent = import_react8.default.forwardRef(
68609
68617
  (props, forwardedRef) => {
68610
68618
  const { __scopeAccordion, ...contentProps } = props;
68611
68619
  const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);
@@ -69310,187 +69318,62 @@ var Switch2 = (t0) => {
69310
69318
  };
69311
69319
 
69312
69320
  // src/side-panel/components/ToolRow.tsx
69313
- var import_compiler_runtime12 = __toESM(require_compiler_runtime(), 1);
69321
+ var import_compiler_runtime11 = __toESM(require_compiler_runtime(), 1);
69314
69322
 
69315
- // src/side-panel/components/retro/Loader.tsx
69323
+ // src/side-panel/components/retro/Tooltip.tsx
69316
69324
  var import_compiler_runtime9 = __toESM(require_compiler_runtime(), 1);
69325
+
69326
+ // ../../node_modules/@radix-ui/react-tooltip/dist/index.mjs
69327
+ var React42 = __toESM(require_react(), 1);
69328
+
69329
+ // ../../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.mjs
69330
+ var React40 = __toESM(require_react(), 1);
69317
69331
  var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
69318
- var loaderVariants = cva("flex gap-1", {
69319
- variants: {
69320
- variant: {
69321
- default: "[&>div]:bg-primary [&>div]:border-border",
69322
- secondary: "[&>div]:bg-secondary [&>div]:border-border",
69323
- outline: "[&>div]:bg-transparent [&>div]:border-border"
69324
- },
69325
- size: {
69326
- sm: "[&>div]:w-2 [&>div]:h-2",
69327
- md: "[&>div]:w-3 [&>div]:h-3",
69328
- lg: "[&>div]:w-4 [&>div]:h-4"
69329
- }
69330
- },
69331
- defaultVariants: {
69332
- variant: "default",
69333
- size: "md"
69334
- }
69332
+ var SLOTTABLE_IDENTIFIER4 = /* @__PURE__ */ Symbol("radix.slottable");
69333
+ // @__NO_SIDE_EFFECTS__
69334
+ function createSlottable(ownerName) {
69335
+ const Slottable2 = ({ children }) => {
69336
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jsx_runtime28.Fragment, { children });
69337
+ };
69338
+ Slottable2.displayName = `${ownerName}.Slottable`;
69339
+ Slottable2.__radixId = SLOTTABLE_IDENTIFIER4;
69340
+ return Slottable2;
69341
+ }
69342
+
69343
+ // ../../node_modules/@radix-ui/react-visually-hidden/dist/index.mjs
69344
+ var React41 = __toESM(require_react(), 1);
69345
+ var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
69346
+ var VISUALLY_HIDDEN_STYLES = Object.freeze({
69347
+ // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss
69348
+ position: "absolute",
69349
+ border: 0,
69350
+ width: 1,
69351
+ height: 1,
69352
+ padding: 0,
69353
+ margin: -1,
69354
+ overflow: "hidden",
69355
+ clip: "rect(0, 0, 0, 0)",
69356
+ whiteSpace: "nowrap",
69357
+ wordWrap: "normal"
69335
69358
  });
69336
- var Loader2 = (t0) => {
69337
- const $2 = (0, import_compiler_runtime9.c)(24);
69338
- let className;
69339
- let props;
69340
- let ref;
69341
- let size4;
69342
- let t1;
69343
- let t2;
69344
- let t3;
69345
- let variant;
69346
- if ($2[0] !== t0) {
69347
- ({
69348
- className,
69349
- variant,
69350
- size: size4,
69351
- count: t1,
69352
- duration: t2,
69353
- delayStep: t3,
69354
- ref,
69355
- ...props
69356
- } = t0);
69357
- $2[0] = t0;
69358
- $2[1] = className;
69359
- $2[2] = props;
69360
- $2[3] = ref;
69361
- $2[4] = size4;
69362
- $2[5] = t1;
69363
- $2[6] = t2;
69364
- $2[7] = t3;
69365
- $2[8] = variant;
69366
- } else {
69367
- className = $2[1];
69368
- props = $2[2];
69369
- ref = $2[3];
69370
- size4 = $2[4];
69371
- t1 = $2[5];
69372
- t2 = $2[6];
69373
- t3 = $2[7];
69374
- variant = $2[8];
69375
- }
69376
- const count3 = t1 === void 0 ? 3 : t1;
69377
- const duration = t2 === void 0 ? 0.5 : t2;
69378
- const delayStep = t3 === void 0 ? 100 : t3;
69379
- let t4;
69380
- if ($2[9] !== className || $2[10] !== size4 || $2[11] !== variant) {
69381
- t4 = cn(loaderVariants({
69382
- variant,
69383
- size: size4
69384
- }), className);
69385
- $2[9] = className;
69386
- $2[10] = size4;
69387
- $2[11] = variant;
69388
- $2[12] = t4;
69389
- } else {
69390
- t4 = $2[12];
69391
- }
69392
- let t5;
69393
- if ($2[13] !== count3) {
69394
- t5 = Array.from({
69395
- length: count3
69396
- });
69397
- $2[13] = count3;
69398
- $2[14] = t5;
69399
- } else {
69400
- t5 = $2[14];
69401
- }
69402
- let t6;
69403
- if ($2[15] !== delayStep || $2[16] !== duration || $2[17] !== t5) {
69404
- t6 = t5.map((_2, i2) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", {
69405
- className: "animate-bounce rounded border-2",
69406
- style: {
69407
- animationDuration: `${duration}s`,
69408
- animationIterationCount: "infinite",
69409
- animationDelay: `${i2 * delayStep}ms`
69410
- }
69411
- }, i2));
69412
- $2[15] = delayStep;
69413
- $2[16] = duration;
69414
- $2[17] = t5;
69415
- $2[18] = t6;
69416
- } else {
69417
- t6 = $2[18];
69418
- }
69419
- let t7;
69420
- if ($2[19] !== props || $2[20] !== ref || $2[21] !== t4 || $2[22] !== t6) {
69421
- t7 = /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", {
69422
- className: t4,
69423
- ref,
69424
- role: "status",
69425
- "aria-label": "Loading...",
69426
- ...props,
69427
- children: t6
69428
- });
69429
- $2[19] = props;
69430
- $2[20] = ref;
69431
- $2[21] = t4;
69432
- $2[22] = t6;
69433
- $2[23] = t7;
69434
- } else {
69435
- t7 = $2[23];
69436
- }
69437
- return t7;
69438
- };
69439
-
69440
- // src/side-panel/components/retro/Tooltip.tsx
69441
- var import_compiler_runtime10 = __toESM(require_compiler_runtime(), 1);
69442
-
69443
- // ../../node_modules/@radix-ui/react-tooltip/dist/index.mjs
69444
- var React42 = __toESM(require_react(), 1);
69445
-
69446
- // ../../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.mjs
69447
- var React40 = __toESM(require_react(), 1);
69448
- var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
69449
- var SLOTTABLE_IDENTIFIER4 = /* @__PURE__ */ Symbol("radix.slottable");
69450
- // @__NO_SIDE_EFFECTS__
69451
- function createSlottable(ownerName) {
69452
- const Slottable2 = ({ children }) => {
69453
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_jsx_runtime29.Fragment, { children });
69454
- };
69455
- Slottable2.displayName = `${ownerName}.Slottable`;
69456
- Slottable2.__radixId = SLOTTABLE_IDENTIFIER4;
69457
- return Slottable2;
69458
- }
69459
-
69460
- // ../../node_modules/@radix-ui/react-visually-hidden/dist/index.mjs
69461
- var React41 = __toESM(require_react(), 1);
69462
- var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
69463
- var VISUALLY_HIDDEN_STYLES = Object.freeze({
69464
- // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss
69465
- position: "absolute",
69466
- border: 0,
69467
- width: 1,
69468
- height: 1,
69469
- padding: 0,
69470
- margin: -1,
69471
- overflow: "hidden",
69472
- clip: "rect(0, 0, 0, 0)",
69473
- whiteSpace: "nowrap",
69474
- wordWrap: "normal"
69475
- });
69476
- var NAME2 = "VisuallyHidden";
69477
- var VisuallyHidden = React41.forwardRef(
69478
- (props, forwardedRef) => {
69479
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
69480
- Primitive.span,
69481
- {
69482
- ...props,
69483
- ref: forwardedRef,
69484
- style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }
69485
- }
69486
- );
69359
+ var NAME2 = "VisuallyHidden";
69360
+ var VisuallyHidden = React41.forwardRef(
69361
+ (props, forwardedRef) => {
69362
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
69363
+ Primitive.span,
69364
+ {
69365
+ ...props,
69366
+ ref: forwardedRef,
69367
+ style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }
69368
+ }
69369
+ );
69487
69370
  }
69488
69371
  );
69489
69372
  VisuallyHidden.displayName = NAME2;
69490
69373
  var Root6 = VisuallyHidden;
69491
69374
 
69492
69375
  // ../../node_modules/@radix-ui/react-tooltip/dist/index.mjs
69493
- var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1);
69376
+ var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
69494
69377
  var [createTooltipContext, createTooltipScope] = createContextScope("Tooltip", [
69495
69378
  createPopperScope
69496
69379
  ]);
@@ -69514,7 +69397,7 @@ var TooltipProvider = (props) => {
69514
69397
  const skipDelayTimer = skipDelayTimerRef.current;
69515
69398
  return () => window.clearTimeout(skipDelayTimer);
69516
69399
  }, []);
69517
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
69400
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
69518
69401
  TooltipProviderContextProvider,
69519
69402
  {
69520
69403
  scope: __scopeTooltip,
@@ -69605,7 +69488,7 @@ var Tooltip = (props) => {
69605
69488
  }
69606
69489
  };
69607
69490
  }, []);
69608
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Root2, { ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
69491
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Root2, { ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
69609
69492
  TooltipContextProvider,
69610
69493
  {
69611
69494
  scope: __scopeTooltip,
@@ -69649,7 +69532,7 @@ var TooltipTrigger = React42.forwardRef(
69649
69532
  React42.useEffect(() => {
69650
69533
  return () => document.removeEventListener("pointerup", handlePointerUp);
69651
69534
  }, [handlePointerUp]);
69652
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
69535
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
69653
69536
  Primitive.button,
69654
69537
  {
69655
69538
  "aria-describedby": context.open ? context.contentId : void 0,
@@ -69691,7 +69574,7 @@ var [PortalProvider2, usePortalContext2] = createTooltipContext(PORTAL_NAME4, {
69691
69574
  var TooltipPortal = (props) => {
69692
69575
  const { __scopeTooltip, forceMount, children, container } = props;
69693
69576
  const context = useTooltipContext(PORTAL_NAME4, __scopeTooltip);
69694
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(PortalProvider2, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Portal, { asChild: true, container, children }) }) });
69577
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(PortalProvider2, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Portal, { asChild: true, container, children }) }) });
69695
69578
  };
69696
69579
  TooltipPortal.displayName = PORTAL_NAME4;
69697
69580
  var CONTENT_NAME6 = "TooltipContent";
@@ -69700,7 +69583,7 @@ var TooltipContent = React42.forwardRef(
69700
69583
  const portalContext = usePortalContext2(CONTENT_NAME6, props.__scopeTooltip);
69701
69584
  const { forceMount = portalContext.forceMount, side = "top", ...contentProps } = props;
69702
69585
  const context = useTooltipContext(CONTENT_NAME6, props.__scopeTooltip);
69703
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });
69586
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });
69704
69587
  }
69705
69588
  );
69706
69589
  var TooltipContentHoverable = React42.forwardRef((props, forwardedRef) => {
@@ -69762,7 +69645,7 @@ var TooltipContentHoverable = React42.forwardRef((props, forwardedRef) => {
69762
69645
  return () => document.removeEventListener("pointermove", handleTrackPointerGrace);
69763
69646
  }
69764
69647
  }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);
69765
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(TooltipContentImpl, { ...props, ref: composedRefs });
69648
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TooltipContentImpl, { ...props, ref: composedRefs });
69766
69649
  });
69767
69650
  var [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });
69768
69651
  var Slottable = createSlottable("TooltipContent");
@@ -69793,7 +69676,7 @@ var TooltipContentImpl = React42.forwardRef(
69793
69676
  return () => window.removeEventListener("scroll", handleScroll2, { capture: true });
69794
69677
  }
69795
69678
  }, [context.trigger, onClose]);
69796
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
69679
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
69797
69680
  DismissableLayer,
69798
69681
  {
69799
69682
  asChild: true,
@@ -69802,7 +69685,7 @@ var TooltipContentImpl = React42.forwardRef(
69802
69685
  onPointerDownOutside,
69803
69686
  onFocusOutside: (event) => event.preventDefault(),
69804
69687
  onDismiss: onClose,
69805
- children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
69688
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
69806
69689
  Content,
69807
69690
  {
69808
69691
  "data-state": context.stateAttribute,
@@ -69821,8 +69704,8 @@ var TooltipContentImpl = React42.forwardRef(
69821
69704
  }
69822
69705
  },
69823
69706
  children: [
69824
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Slottable, { children }),
69825
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Root6, { id: context.contentId, role: "tooltip", children: ariaLabel || children }) })
69707
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Slottable, { children }),
69708
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Root6, { id: context.contentId, role: "tooltip", children: ariaLabel || children }) })
69826
69709
  ]
69827
69710
  }
69828
69711
  )
@@ -69840,7 +69723,7 @@ var TooltipArrow = React42.forwardRef(
69840
69723
  ARROW_NAME4,
69841
69724
  __scopeTooltip
69842
69725
  );
69843
- return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Arrow2, { ...popperScope, ...arrowProps, ref: forwardedRef });
69726
+ return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Arrow2, { ...popperScope, ...arrowProps, ref: forwardedRef });
69844
69727
  }
69845
69728
  );
69846
69729
  TooltipArrow.displayName = ARROW_NAME4;
@@ -69966,7 +69849,7 @@ var Portal3 = TooltipPortal;
69966
69849
  var Content24 = TooltipContent;
69967
69850
 
69968
69851
  // src/side-panel/components/retro/Tooltip.tsx
69969
- var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);
69852
+ var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1);
69970
69853
  var tooltipContentVariants = cva("z-50 overflow-hidden rounded border-2 border-border px-3 py-1.5 text-xs animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]", {
69971
69854
  variants: {
69972
69855
  variant: {
@@ -69983,7 +69866,7 @@ var TooltipProvider2 = Provider;
69983
69866
  var Tooltip2 = Root33;
69984
69867
  var TooltipTrigger2 = Trigger3;
69985
69868
  var TooltipContent2 = (t0) => {
69986
- const $2 = (0, import_compiler_runtime10.c)(14);
69869
+ const $2 = (0, import_compiler_runtime9.c)(14);
69987
69870
  let className;
69988
69871
  let props;
69989
69872
  let ref;
@@ -70025,8 +69908,8 @@ var TooltipContent2 = (t0) => {
70025
69908
  }
70026
69909
  let t3;
70027
69910
  if ($2[9] !== props || $2[10] !== ref || $2[11] !== sideOffset || $2[12] !== t2) {
70028
- t3 = /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Portal3, {
70029
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Content24, {
69911
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Portal3, {
69912
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Content24, {
70030
69913
  ref,
70031
69914
  sideOffset,
70032
69915
  className: t2,
@@ -70050,10 +69933,10 @@ var TooltipObject = Object.assign(Tooltip2, {
70050
69933
  });
70051
69934
 
70052
69935
  // src/side-panel/components/ToolIcon.tsx
70053
- var import_compiler_runtime11 = __toESM(require_compiler_runtime(), 1);
69936
+ var import_compiler_runtime10 = __toESM(require_compiler_runtime(), 1);
70054
69937
 
70055
69938
  // ../../node_modules/lucide-react/dist/esm/DynamicIcon.js
70056
- var import_react8 = __toESM(require_react());
69939
+ var import_react9 = __toESM(require_react());
70057
69940
 
70058
69941
  // ../../node_modules/lucide-react/dist/esm/dynamicIconImports.js
70059
69942
  var dynamicIconImports = {
@@ -72005,13 +71888,13 @@ async function getIconNode(name) {
72005
71888
  const icon = await dynamicIconImports[name]();
72006
71889
  return icon.__iconNode;
72007
71890
  }
72008
- var DynamicIcon = /* @__PURE__ */ (0, import_react8.forwardRef)(({
71891
+ var DynamicIcon = /* @__PURE__ */ (0, import_react9.forwardRef)(({
72009
71892
  name,
72010
71893
  fallback: Fallback,
72011
71894
  ...props
72012
71895
  }, ref) => {
72013
- const [iconNode, setIconNode] = (0, import_react8.useState)();
72014
- (0, import_react8.useEffect)(() => {
71896
+ const [iconNode, setIconNode] = (0, import_react9.useState)();
71897
+ (0, import_react9.useEffect)(() => {
72015
71898
  getIconNode(name).then(setIconNode).catch((error) => {
72016
71899
  console.error(error);
72017
71900
  });
@@ -72020,9 +71903,9 @@ var DynamicIcon = /* @__PURE__ */ (0, import_react8.forwardRef)(({
72020
71903
  if (Fallback == null) {
72021
71904
  return null;
72022
71905
  }
72023
- return /* @__PURE__ */ (0, import_react8.createElement)(Fallback);
71906
+ return /* @__PURE__ */ (0, import_react9.createElement)(Fallback);
72024
71907
  }
72025
- return /* @__PURE__ */ (0, import_react8.createElement)(Icon, {
71908
+ return /* @__PURE__ */ (0, import_react9.createElement)(Icon, {
72026
71909
  ref,
72027
71910
  ...props,
72028
71911
  iconNode
@@ -72030,10 +71913,10 @@ var DynamicIcon = /* @__PURE__ */ (0, import_react8.forwardRef)(({
72030
71913
  });
72031
71914
 
72032
71915
  // src/side-panel/components/ToolIcon.tsx
72033
- var import_react9 = __toESM(require_react(), 1);
72034
- var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1);
71916
+ var import_react10 = __toESM(require_react(), 1);
71917
+ var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);
72035
71918
  var FallbackIcon = (t0) => {
72036
- const $2 = (0, import_compiler_runtime11.c)(4);
71919
+ const $2 = (0, import_compiler_runtime10.c)(4);
72037
71920
  const {
72038
71921
  enabled: t1
72039
71922
  } = t0;
@@ -72049,7 +71932,7 @@ var FallbackIcon = (t0) => {
72049
71932
  }
72050
71933
  let t4;
72051
71934
  if ($2[2] !== t3) {
72052
- t4 = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Wrench, {
71935
+ t4 = /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Wrench, {
72053
71936
  className: t3
72054
71937
  });
72055
71938
  $2[2] = t3;
@@ -72060,65 +71943,108 @@ var FallbackIcon = (t0) => {
72060
71943
  return t4;
72061
71944
  };
72062
71945
  var ToolIcon = (t0) => {
72063
- const $2 = (0, import_compiler_runtime11.c)(9);
71946
+ const $2 = (0, import_compiler_runtime10.c)(16);
72064
71947
  const {
72065
71948
  icon,
72066
71949
  className: t1,
72067
- enabled: t2
71950
+ enabled: t2,
71951
+ active: t3
72068
71952
  } = t0;
72069
71953
  const className = t1 === void 0 ? "" : t1;
72070
71954
  const enabled = t2 === void 0 ? true : t2;
72071
- const t3 = enabled ? "border-border bg-primary" : "border-border/40 bg-muted/40";
71955
+ const active = t3 === void 0 ? false : t3;
71956
+ const [fadingOut, setFadingOut] = (0, import_react10.useState)(false);
71957
+ const prevActiveRef = (0, import_react10.useRef)(false);
72072
71958
  let t4;
72073
- if ($2[0] !== className || $2[1] !== t3) {
72074
- t4 = cn("flex h-6 w-6 shrink-0 items-center justify-center rounded border-2 transition-colors", t3, className);
72075
- $2[0] = className;
72076
- $2[1] = t3;
72077
- $2[2] = t4;
71959
+ let t5;
71960
+ if ($2[0] !== active) {
71961
+ t4 = () => {
71962
+ if (prevActiveRef.current && !active) {
71963
+ setTimeout(() => setFadingOut(true), 0);
71964
+ const timer = setTimeout(() => setFadingOut(false), 500);
71965
+ prevActiveRef.current = active;
71966
+ return () => clearTimeout(timer);
71967
+ }
71968
+ prevActiveRef.current = active;
71969
+ };
71970
+ t5 = [active];
71971
+ $2[0] = active;
71972
+ $2[1] = t4;
71973
+ $2[2] = t5;
72078
71974
  } else {
72079
- t4 = $2[2];
71975
+ t4 = $2[1];
71976
+ t5 = $2[2];
72080
71977
  }
72081
- let t5;
72082
- if ($2[3] !== enabled || $2[4] !== icon) {
72083
- t5 = icon ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react9.Suspense, {
72084
- fallback: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(FallbackIcon, {
71978
+ (0, import_react10.useEffect)(t4, t5);
71979
+ const t6 = enabled ? "border-border bg-primary" : "border-border/40 bg-muted/40";
71980
+ let t7;
71981
+ if ($2[3] !== className || $2[4] !== t6) {
71982
+ t7 = cn("relative flex h-6 w-6 shrink-0 items-center justify-center rounded border-2 transition-colors", t6, className);
71983
+ $2[3] = className;
71984
+ $2[4] = t6;
71985
+ $2[5] = t7;
71986
+ } else {
71987
+ t7 = $2[5];
71988
+ }
71989
+ let t8;
71990
+ if ($2[6] !== enabled || $2[7] !== icon) {
71991
+ t8 = icon ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_react10.Suspense, {
71992
+ fallback: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(FallbackIcon, {
72085
71993
  enabled
72086
71994
  }),
72087
- children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(DynamicIcon, {
71995
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(DynamicIcon, {
72088
71996
  name: icon,
72089
71997
  className: cn("h-3 w-3 transition-colors", enabled ? "text-primary-foreground" : "text-muted-foreground"),
72090
- fallback: () => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(FallbackIcon, {
71998
+ fallback: () => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(FallbackIcon, {
72091
71999
  enabled
72092
72000
  })
72093
72001
  })
72094
- }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(FallbackIcon, {
72002
+ }) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(FallbackIcon, {
72095
72003
  enabled
72096
72004
  });
72097
- $2[3] = enabled;
72098
- $2[4] = icon;
72099
- $2[5] = t5;
72005
+ $2[6] = enabled;
72006
+ $2[7] = icon;
72007
+ $2[8] = t8;
72100
72008
  } else {
72101
- t5 = $2[5];
72009
+ t8 = $2[8];
72102
72010
  }
72103
- let t6;
72104
- if ($2[6] !== t4 || $2[7] !== t5) {
72105
- t6 = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", {
72106
- className: t4,
72107
- children: t5
72011
+ let t9;
72012
+ if ($2[9] !== active || $2[10] !== fadingOut) {
72013
+ t9 = (active || fadingOut) && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", {
72014
+ className: cn("bg-success border-card absolute rounded-full border-2", active && "animate-activity-flash", fadingOut && !active && "animate-activity-fade-out"),
72015
+ style: {
72016
+ width: 8,
72017
+ height: 8,
72018
+ bottom: -2,
72019
+ right: -2
72020
+ }
72108
72021
  });
72109
- $2[6] = t4;
72110
- $2[7] = t5;
72111
- $2[8] = t6;
72022
+ $2[9] = active;
72023
+ $2[10] = fadingOut;
72024
+ $2[11] = t9;
72112
72025
  } else {
72113
- t6 = $2[8];
72026
+ t9 = $2[11];
72114
72027
  }
72115
- return t6;
72028
+ let t10;
72029
+ if ($2[12] !== t7 || $2[13] !== t8 || $2[14] !== t9) {
72030
+ t10 = /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", {
72031
+ className: t7,
72032
+ children: [t8, t9]
72033
+ });
72034
+ $2[12] = t7;
72035
+ $2[13] = t8;
72036
+ $2[14] = t9;
72037
+ $2[15] = t10;
72038
+ } else {
72039
+ t10 = $2[15];
72040
+ }
72041
+ return t10;
72116
72042
  };
72117
72043
 
72118
72044
  // src/side-panel/components/ToolRow.tsx
72119
- var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);
72045
+ var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1);
72120
72046
  var ToolRow = (t0) => {
72121
- const $2 = (0, import_compiler_runtime12.c)(29);
72047
+ const $2 = (0, import_compiler_runtime11.c)(24);
72122
72048
  const {
72123
72049
  name,
72124
72050
  displayName,
@@ -72129,130 +72055,108 @@ var ToolRow = (t0) => {
72129
72055
  onToggle
72130
72056
  } = t0;
72131
72057
  const t1 = enabled ? "hover:bg-primary/10" : "hover:bg-muted/50";
72132
- const t2 = active && "bg-accent/20";
72133
- let t3;
72134
- if ($2[0] !== t1 || $2[1] !== t2) {
72135
- t3 = cn("border-border flex items-center gap-2 border-b px-3 py-2 transition-colors last:border-b-0", t1, t2);
72058
+ let t2;
72059
+ if ($2[0] !== t1) {
72060
+ t2 = cn("border-border flex items-center gap-2 border-b px-3 py-2 transition-colors last:border-b-0", t1);
72136
72061
  $2[0] = t1;
72137
72062
  $2[1] = t2;
72138
- $2[2] = t3;
72139
72063
  } else {
72140
- t3 = $2[2];
72064
+ t2 = $2[1];
72141
72065
  }
72142
- let t4;
72143
- if ($2[3] !== enabled || $2[4] !== icon) {
72144
- t4 = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ToolIcon, {
72066
+ let t3;
72067
+ if ($2[2] !== active || $2[3] !== enabled || $2[4] !== icon) {
72068
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ToolIcon, {
72145
72069
  icon,
72146
- enabled
72070
+ enabled,
72071
+ active
72147
72072
  });
72073
+ $2[2] = active;
72148
72074
  $2[3] = enabled;
72149
72075
  $2[4] = icon;
72150
- $2[5] = t4;
72076
+ $2[5] = t3;
72151
72077
  } else {
72152
- t4 = $2[5];
72078
+ t3 = $2[5];
72153
72079
  }
72154
- let t5;
72080
+ let t4;
72155
72081
  if ($2[6] !== displayName) {
72156
- t5 = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(TooltipObject.Trigger, {
72082
+ t4 = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TooltipObject.Trigger, {
72157
72083
  asChild: true,
72158
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", {
72084
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", {
72159
72085
  className: "min-w-0 flex-1",
72160
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", {
72086
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", {
72161
72087
  className: "text-foreground truncate text-sm",
72162
72088
  children: displayName
72163
72089
  })
72164
72090
  })
72165
72091
  });
72166
72092
  $2[6] = displayName;
72167
- $2[7] = t5;
72093
+ $2[7] = t4;
72168
72094
  } else {
72169
- t5 = $2[7];
72095
+ t4 = $2[7];
72170
72096
  }
72171
- let t6;
72097
+ let t5;
72172
72098
  if ($2[8] !== description) {
72173
- t6 = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(TooltipObject.Content, {
72099
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TooltipObject.Content, {
72174
72100
  children: description
72175
72101
  });
72176
72102
  $2[8] = description;
72177
- $2[9] = t6;
72103
+ $2[9] = t5;
72178
72104
  } else {
72179
- t6 = $2[9];
72105
+ t5 = $2[9];
72180
72106
  }
72181
- let t7;
72182
- if ($2[10] !== t5 || $2[11] !== t6) {
72183
- t7 = /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(TooltipObject, {
72184
- children: [t5, t6]
72107
+ let t6;
72108
+ if ($2[10] !== t4 || $2[11] !== t5) {
72109
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(TooltipObject, {
72110
+ children: [t4, t5]
72185
72111
  });
72186
- $2[10] = t5;
72187
- $2[11] = t6;
72188
- $2[12] = t7;
72112
+ $2[10] = t4;
72113
+ $2[11] = t5;
72114
+ $2[12] = t6;
72189
72115
  } else {
72190
- t7 = $2[12];
72116
+ t6 = $2[12];
72191
72117
  }
72192
- let t8;
72193
- if ($2[13] !== active) {
72194
- t8 = active && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Loader2, {
72195
- size: "sm",
72196
- count: 2,
72197
- duration: 0.4,
72198
- delayStep: 80
72199
- });
72200
- $2[13] = active;
72201
- $2[14] = t8;
72118
+ let t7;
72119
+ if ($2[13] !== onToggle) {
72120
+ t7 = () => onToggle();
72121
+ $2[13] = onToggle;
72122
+ $2[14] = t7;
72202
72123
  } else {
72203
- t8 = $2[14];
72124
+ t7 = $2[14];
72204
72125
  }
72126
+ const t8 = `Toggle ${name} tool`;
72205
72127
  let t9;
72206
- if ($2[15] !== onToggle) {
72207
- t9 = () => onToggle();
72208
- $2[15] = onToggle;
72209
- $2[16] = t9;
72210
- } else {
72211
- t9 = $2[16];
72212
- }
72213
- const t10 = `Toggle ${name} tool`;
72214
- let t11;
72215
- if ($2[17] !== enabled || $2[18] !== t10 || $2[19] !== t9) {
72216
- t11 = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Switch2, {
72217
- checked: enabled,
72218
- onCheckedChange: t9,
72219
- onClick: _temp3,
72220
- "aria-label": t10
72221
- });
72222
- $2[17] = enabled;
72223
- $2[18] = t10;
72224
- $2[19] = t9;
72225
- $2[20] = t11;
72226
- } else {
72227
- t11 = $2[20];
72228
- }
72229
- let t12;
72230
- if ($2[21] !== t11 || $2[22] !== t8) {
72231
- t12 = /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", {
72128
+ if ($2[15] !== enabled || $2[16] !== t7 || $2[17] !== t8) {
72129
+ t9 = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", {
72232
72130
  className: "flex shrink-0 items-center gap-2",
72233
- children: [t8, t11]
72131
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Switch2, {
72132
+ checked: enabled,
72133
+ onCheckedChange: t7,
72134
+ onClick: _temp3,
72135
+ "aria-label": t8
72136
+ })
72234
72137
  });
72235
- $2[21] = t11;
72236
- $2[22] = t8;
72237
- $2[23] = t12;
72138
+ $2[15] = enabled;
72139
+ $2[16] = t7;
72140
+ $2[17] = t8;
72141
+ $2[18] = t9;
72238
72142
  } else {
72239
- t12 = $2[23];
72143
+ t9 = $2[18];
72240
72144
  }
72241
- let t13;
72242
- if ($2[24] !== t12 || $2[25] !== t3 || $2[26] !== t4 || $2[27] !== t7) {
72243
- t13 = /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", {
72244
- className: t3,
72245
- children: [t4, t7, t12]
72145
+ let t10;
72146
+ if ($2[19] !== t2 || $2[20] !== t3 || $2[21] !== t6 || $2[22] !== t9) {
72147
+ t10 = /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", {
72148
+ className: t2,
72149
+ children: [t3, t6, t9]
72246
72150
  });
72247
- $2[24] = t12;
72248
- $2[25] = t3;
72249
- $2[26] = t4;
72250
- $2[27] = t7;
72251
- $2[28] = t13;
72151
+ $2[19] = t2;
72152
+ $2[20] = t3;
72153
+ $2[21] = t6;
72154
+ $2[22] = t9;
72155
+ $2[23] = t10;
72252
72156
  } else {
72253
- t13 = $2[28];
72157
+ t10 = $2[23];
72254
72158
  }
72255
- return t13;
72159
+ return t10;
72256
72160
  };
72257
72161
  function _temp3(e2) {
72258
72162
  return e2.stopPropagation();
@@ -72264,12 +72168,12 @@ var COUNTDOWN_POLL_INTERVAL_MS = 200;
72264
72168
  var TOOL_INVOCATION_TIMEOUT_MS = 5 * 60 * 1e3;
72265
72169
 
72266
72170
  // src/side-panel/components/BrowserToolsCard.tsx
72267
- var import_react10 = __toESM(require_react(), 1);
72268
- var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1);
72171
+ var import_react11 = __toESM(require_react(), 1);
72172
+ var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);
72269
72173
  var CHROME_ICON_SVG = ['<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">', "<defs>", '<linearGradient id="chrome-a" x1="3.2173" y1="15" x2="44.7812" y2="15" gradientUnits="userSpaceOnUse">', '<stop offset="0" stop-color="#d93025"/><stop offset="1" stop-color="#ea4335"/>', "</linearGradient>", '<linearGradient id="chrome-b" x1="20.7219" y1="47.6791" x2="41.5039" y2="11.6837" gradientUnits="userSpaceOnUse">', '<stop offset="0" stop-color="#fcc934"/><stop offset="1" stop-color="#fbbc04"/>', "</linearGradient>", '<linearGradient id="chrome-c" x1="26.5981" y1="46.5015" x2="5.8161" y2="10.506" gradientUnits="userSpaceOnUse">', '<stop offset="0" stop-color="#1e8e3e"/><stop offset="1" stop-color="#34a853"/>', "</linearGradient>", "</defs>", '<circle cx="24" cy="23.9947" r="12" fill="#fff"/>', '<path d="M3.2154,36A24,24,0,1,0,12,3.2154,24,24,0,0,0,3.2154,36ZM34.3923,18A12,12,0,1,1,18,13.6077,12,12,0,0,1,34.3923,18Z" fill="none"/>', '<path d="M24,12H44.7812a23.9939,23.9939,0,0,0-41.5639.0029L13.6079,30l.0093-.0024A11.9852,11.9852,0,0,1,24,12Z" fill="url(#chrome-a)"/>', '<circle cx="24" cy="24" r="9.5" fill="#1a73e8"/>', '<path d="M34.3913,30.0029,24.0007,48A23.994,23.994,0,0,0,44.78,12.0031H23.9989l-.0025.0093A11.985,11.985,0,0,1,34.3913,30.0029Z" fill="url(#chrome-b)"/>', '<path d="M13.6086,30.0031,3.218,12.006A23.994,23.994,0,0,0,24.0025,48L34.3931,30.0029l-.0067-.0068a11.9852,11.9852,0,0,1-20.7778.007Z" fill="url(#chrome-c)"/>', "</svg>"].join("");
72270
72174
  var toDisplayName = (name) => name.replace(/^browser_/, "").split("_").map((w3) => w3.charAt(0).toUpperCase() + w3.slice(1)).join(" ");
72271
72175
  var BrowserToolsCard = (t0) => {
72272
- const $2 = (0, import_compiler_runtime13.c)(14);
72176
+ const $2 = (0, import_compiler_runtime12.c)(23);
72273
72177
  const {
72274
72178
  tools,
72275
72179
  activeTools,
@@ -72277,10 +72181,10 @@ var BrowserToolsCard = (t0) => {
72277
72181
  toolFilter,
72278
72182
  serverVersion
72279
72183
  } = t0;
72280
- const [toggleError, setToggleError] = (0, import_react10.useState)(null);
72281
- const errorTimerRef = (0, import_react10.useRef)(void 0);
72282
- const toggleCounter = (0, import_react10.useRef)(0);
72283
- const preToggleRef = (0, import_react10.useRef)([]);
72184
+ const [toggleError, setToggleError] = (0, import_react11.useState)(null);
72185
+ const errorTimerRef = (0, import_react11.useRef)(void 0);
72186
+ const toggleCounter = (0, import_react11.useRef)(0);
72187
+ const preToggleRef = (0, import_react11.useRef)([]);
72284
72188
  let t1;
72285
72189
  let t2;
72286
72190
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -72292,7 +72196,7 @@ var BrowserToolsCard = (t0) => {
72292
72196
  t1 = $2[0];
72293
72197
  t2 = $2[1];
72294
72198
  }
72295
- (0, import_react10.useEffect)(t1, t2);
72199
+ (0, import_react11.useEffect)(t1, t2);
72296
72200
  const showToggleError = (message) => {
72297
72201
  clearTimeout(errorTimerRef.current);
72298
72202
  setToggleError(message);
@@ -72343,68 +72247,101 @@ var BrowserToolsCard = (t0) => {
72343
72247
  const filterLower = toolFilter?.toLowerCase() ?? "";
72344
72248
  const visibleTools = filterLower ? tools.filter((t_2) => toDisplayName(t_2.name).toLowerCase().includes(filterLower) || t_2.name.toLowerCase().includes(filterLower) || t_2.description.toLowerCase().includes(filterLower)) : tools;
72345
72249
  let t4;
72346
- if ($2[4] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
72347
- t4 = /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(PluginIcon, {
72250
+ if ($2[4] !== activeTools || $2[5] !== tools) {
72251
+ let t52;
72252
+ if ($2[7] !== activeTools) {
72253
+ t52 = (t_3) => activeTools.has(`browser:${t_3.name}`);
72254
+ $2[7] = activeTools;
72255
+ $2[8] = t52;
72256
+ } else {
72257
+ t52 = $2[8];
72258
+ }
72259
+ t4 = tools.some(t52);
72260
+ $2[4] = activeTools;
72261
+ $2[5] = tools;
72262
+ $2[6] = t4;
72263
+ } else {
72264
+ t4 = $2[6];
72265
+ }
72266
+ const hasActiveTool = t4;
72267
+ let t5;
72268
+ if ($2[9] !== hasActiveTool) {
72269
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(PluginIcon, {
72348
72270
  pluginName: "browser",
72349
72271
  displayName: "Browser",
72272
+ tabState: "ready",
72350
72273
  size: 32,
72351
72274
  iconSvg: CHROME_ICON_SVG,
72352
- iconInactiveSvg: CHROME_ICON_SVG
72275
+ iconInactiveSvg: CHROME_ICON_SVG,
72276
+ active: hasActiveTool
72353
72277
  });
72354
- $2[4] = t4;
72278
+ $2[9] = hasActiveTool;
72279
+ $2[10] = t5;
72355
72280
  } else {
72356
- t4 = $2[4];
72281
+ t5 = $2[10];
72357
72282
  }
72358
- let t5;
72359
- if ($2[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
72360
- t5 = /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Trigger22, {
72361
- className: "flex min-w-0 flex-1 cursor-pointer items-center gap-2 px-3 py-2 focus:outline-hidden [&[data-state=open]>svg.chevron]:rotate-180",
72362
- children: [t4, /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", {
72363
- className: "font-head text-foreground flex min-w-0 flex-1 items-center gap-1.5 truncate text-sm",
72364
- children: ["Browser", /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Badge2, {
72365
- variant: "default",
72366
- size: "sm",
72367
- className: "align-middle",
72368
- children: "CORE"
72369
- })]
72370
- }), /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ChevronDown, {
72371
- className: "chevron h-4 w-4 shrink-0 transition-transform duration-200"
72283
+ let t6;
72284
+ let t7;
72285
+ if ($2[11] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
72286
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", {
72287
+ className: "font-head text-foreground flex min-w-0 flex-1 items-center gap-1.5 truncate text-sm",
72288
+ children: ["Browser", /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Badge2, {
72289
+ variant: "default",
72290
+ size: "sm",
72291
+ className: "align-middle",
72292
+ children: "CORE"
72372
72293
  })]
72373
72294
  });
72374
- $2[5] = t5;
72295
+ t7 = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ChevronDown, {
72296
+ className: "chevron h-4 w-4 shrink-0 transition-transform duration-200"
72297
+ });
72298
+ $2[11] = t6;
72299
+ $2[12] = t7;
72375
72300
  } else {
72376
- t5 = $2[5];
72301
+ t6 = $2[11];
72302
+ t7 = $2[12];
72377
72303
  }
72378
- let t6;
72379
- if ($2[6] !== serverVersion) {
72380
- t6 = /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(BrowserToolsMenu, {
72304
+ let t8;
72305
+ if ($2[13] !== t5) {
72306
+ t8 = /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(Trigger22, {
72307
+ className: "flex min-w-0 flex-1 cursor-pointer items-center gap-2 px-3 py-2 focus:outline-hidden [&[data-state=open]>svg.chevron]:rotate-180",
72308
+ children: [t5, t6, t7]
72309
+ });
72310
+ $2[13] = t5;
72311
+ $2[14] = t8;
72312
+ } else {
72313
+ t8 = $2[14];
72314
+ }
72315
+ let t9;
72316
+ if ($2[15] !== serverVersion) {
72317
+ t9 = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(BrowserToolsMenu, {
72381
72318
  serverVersion,
72382
72319
  className: "flex shrink-0 items-center px-1"
72383
72320
  });
72384
- $2[6] = serverVersion;
72385
- $2[7] = t6;
72321
+ $2[15] = serverVersion;
72322
+ $2[16] = t9;
72386
72323
  } else {
72387
- t6 = $2[7];
72324
+ t9 = $2[16];
72388
72325
  }
72389
- let t7;
72390
- if ($2[8] !== toggleError) {
72391
- t7 = toggleError && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(AlertComponent, {
72326
+ let t10;
72327
+ if ($2[17] !== toggleError) {
72328
+ t10 = toggleError && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(AlertComponent, {
72392
72329
  status: "error",
72393
72330
  className: "mx-3 mb-1 px-2 py-1 text-xs",
72394
72331
  children: toggleError
72395
72332
  });
72396
- $2[8] = toggleError;
72397
- $2[9] = t7;
72333
+ $2[17] = toggleError;
72334
+ $2[18] = t10;
72398
72335
  } else {
72399
- t7 = $2[9];
72336
+ t10 = $2[18];
72400
72337
  }
72401
- const t8 = AccordionComponent;
72402
- const t9 = "border-border border-t";
72403
- const t10 = toolFilter && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", {
72338
+ const t11 = AccordionComponent;
72339
+ const t12 = "border-border border-t";
72340
+ const t13 = toolFilter && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", {
72404
72341
  className: "text-muted-foreground mb-1 px-3 pt-2 text-xs",
72405
72342
  children: [visibleTools.length, " of ", tools.length, " tools"]
72406
72343
  });
72407
- const t11 = visibleTools.map((tool) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ToolRow, {
72344
+ const t14 = visibleTools.map((tool) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ToolRow, {
72408
72345
  name: tool.name,
72409
72346
  displayName: toDisplayName(tool.name),
72410
72347
  description: tool.description,
@@ -72413,35 +72350,35 @@ var BrowserToolsCard = (t0) => {
72413
72350
  active: activeTools.has(`browser:${tool.name}`),
72414
72351
  onToggle: () => handleToggleTool(tool.name, tool.enabled)
72415
72352
  }, tool.name));
72416
- let t12;
72417
- if ($2[10] !== t10 || $2[11] !== t11 || $2[12] !== t8.Content) {
72418
- t12 = /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(t8.Content, {
72419
- className: t9,
72420
- children: [t10, t11]
72353
+ let t15;
72354
+ if ($2[19] !== t11.Content || $2[20] !== t13 || $2[21] !== t14) {
72355
+ t15 = /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(t11.Content, {
72356
+ className: t12,
72357
+ children: [t13, t14]
72421
72358
  });
72422
- $2[10] = t10;
72423
- $2[11] = t11;
72424
- $2[12] = t8.Content;
72425
- $2[13] = t12;
72359
+ $2[19] = t11.Content;
72360
+ $2[20] = t13;
72361
+ $2[21] = t14;
72362
+ $2[22] = t15;
72426
72363
  } else {
72427
- t12 = $2[13];
72364
+ t15 = $2[22];
72428
72365
  }
72429
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(AccordionComponent.Item, {
72366
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(AccordionComponent.Item, {
72430
72367
  value: "browser-tools",
72431
- children: [/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Header, {
72368
+ children: [/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(Header, {
72432
72369
  className: "flex",
72433
- children: [t5, t6, /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", {
72370
+ children: [t8, t9, /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", {
72434
72371
  className: "flex shrink-0 items-center px-3",
72435
72372
  onClick: _temp22,
72436
72373
  onKeyDown: _temp32,
72437
72374
  role: "presentation",
72438
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Switch2, {
72375
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Switch2, {
72439
72376
  checked: allEnabled,
72440
72377
  onCheckedChange: handleToggleAll,
72441
72378
  "aria-label": "Toggle all browser tools"
72442
72379
  })
72443
72380
  })]
72444
- }), t7, t12]
72381
+ }), t10, t15]
72445
72382
  });
72446
72383
  };
72447
72384
  function _temp4(t2) {
@@ -72457,14 +72394,14 @@ function _temp32(e_0) {
72457
72394
  }
72458
72395
 
72459
72396
  // src/side-panel/components/ConfirmationDialog.tsx
72460
- var import_compiler_runtime16 = __toESM(require_compiler_runtime(), 1);
72397
+ var import_compiler_runtime15 = __toESM(require_compiler_runtime(), 1);
72461
72398
 
72462
72399
  // src/side-panel/components/retro/Button.tsx
72463
- var import_compiler_runtime14 = __toESM(require_compiler_runtime(), 1);
72400
+ var import_compiler_runtime13 = __toESM(require_compiler_runtime(), 1);
72464
72401
 
72465
72402
  // ../../node_modules/@radix-ui/react-slot/dist/index.mjs
72466
72403
  var React43 = __toESM(require_react(), 1);
72467
- var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1);
72404
+ var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1);
72468
72405
  var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy");
72469
72406
  var use = React43[" use ".trim().toString()];
72470
72407
  function isPromiseLike(value) {
@@ -72493,9 +72430,9 @@ function createSlot4(ownerName) {
72493
72430
  return child;
72494
72431
  }
72495
72432
  });
72496
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React43.isValidElement(newElement) ? React43.cloneElement(newElement, void 0, newChildren) : null });
72433
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React43.isValidElement(newElement) ? React43.cloneElement(newElement, void 0, newChildren) : null });
72497
72434
  }
72498
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });
72435
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });
72499
72436
  });
72500
72437
  Slot22.displayName = `${ownerName}.Slot`;
72501
72438
  return Slot22;
@@ -72564,7 +72501,7 @@ function getElementRef5(element) {
72564
72501
  }
72565
72502
 
72566
72503
  // src/side-panel/components/retro/Button.tsx
72567
- var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1);
72504
+ var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1);
72568
72505
  var buttonVariants = cva("font-head transition-all rounded outline-hidden cursor-pointer duration-200 font-medium flex justify-center items-center disabled:opacity-60 disabled:cursor-not-allowed", {
72569
72506
  variants: {
72570
72507
  variant: {
@@ -72587,7 +72524,7 @@ var buttonVariants = cva("font-head transition-all rounded outline-hidden cursor
72587
72524
  }
72588
72525
  });
72589
72526
  var Button = (t0) => {
72590
- const $2 = (0, import_compiler_runtime14.c)(18);
72527
+ const $2 = (0, import_compiler_runtime13.c)(18);
72591
72528
  let children;
72592
72529
  let props;
72593
72530
  let ref;
@@ -72642,7 +72579,7 @@ var Button = (t0) => {
72642
72579
  }
72643
72580
  let t6;
72644
72581
  if ($2[12] !== Comp || $2[13] !== children || $2[14] !== props || $2[15] !== ref || $2[16] !== t5) {
72645
- t6 = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Comp, {
72582
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Comp, {
72646
72583
  ref,
72647
72584
  className: t5,
72648
72585
  ...props,
@@ -72661,14 +72598,14 @@ var Button = (t0) => {
72661
72598
  };
72662
72599
 
72663
72600
  // src/side-panel/components/retro/Progress.tsx
72664
- var import_compiler_runtime15 = __toESM(require_compiler_runtime(), 1);
72601
+ var import_compiler_runtime14 = __toESM(require_compiler_runtime(), 1);
72665
72602
 
72666
72603
  // ../../node_modules/@radix-ui/react-progress/dist/index.mjs
72667
72604
  var React46 = __toESM(require_react(), 1);
72668
72605
 
72669
72606
  // ../../node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context/dist/index.mjs
72670
72607
  var React44 = __toESM(require_react(), 1);
72671
- var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1);
72608
+ var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1);
72672
72609
  function createContextScope2(scopeName, createContextScopeDeps = []) {
72673
72610
  let defaultContexts = [];
72674
72611
  function createContext32(rootComponentName, defaultContext) {
@@ -72680,7 +72617,7 @@ function createContextScope2(scopeName, createContextScopeDeps = []) {
72680
72617
  const { scope, children, ...context } = props;
72681
72618
  const Context = scope?.[scopeName]?.[index2] || BaseContext;
72682
72619
  const value = React44.useMemo(() => context, Object.values(context));
72683
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Context.Provider, { value, children });
72620
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Context.Provider, { value, children });
72684
72621
  };
72685
72622
  Provider2.displayName = rootComponentName + "Provider";
72686
72623
  function useContext22(consumerName, scope) {
@@ -72731,7 +72668,7 @@ function composeContextScopes2(...scopes) {
72731
72668
  // ../../node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive/dist/index.mjs
72732
72669
  var React45 = __toESM(require_react(), 1);
72733
72670
  var ReactDOM4 = __toESM(require_react_dom(), 1);
72734
- var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1);
72671
+ var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1);
72735
72672
  var NODES2 = [
72736
72673
  "a",
72737
72674
  "button",
@@ -72759,14 +72696,14 @@ var Primitive2 = NODES2.reduce((primitive, node) => {
72759
72696
  if (typeof window !== "undefined") {
72760
72697
  window[/* @__PURE__ */ Symbol.for("radix-ui")] = true;
72761
72698
  }
72762
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });
72699
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });
72763
72700
  });
72764
72701
  Node2.displayName = `Primitive.${node}`;
72765
72702
  return { ...primitive, [node]: Node2 };
72766
72703
  }, {});
72767
72704
 
72768
72705
  // ../../node_modules/@radix-ui/react-progress/dist/index.mjs
72769
- var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1);
72706
+ var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1);
72770
72707
  var PROGRESS_NAME = "Progress";
72771
72708
  var DEFAULT_MAX = 100;
72772
72709
  var [createProgressContext, createProgressScope] = createContextScope2(PROGRESS_NAME);
@@ -72789,7 +72726,7 @@ var Progress = React46.forwardRef(
72789
72726
  }
72790
72727
  const value = isValidValueNumber(valueProp, max2) ? valueProp : null;
72791
72728
  const valueLabel = isNumber2(value) ? getValueLabel(value, max2) : void 0;
72792
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(ProgressProvider, { scope: __scopeProgress, value, max: max2, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
72729
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(ProgressProvider, { scope: __scopeProgress, value, max: max2, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
72793
72730
  Primitive2.div,
72794
72731
  {
72795
72732
  "aria-valuemax": max2,
@@ -72812,7 +72749,7 @@ var ProgressIndicator = React46.forwardRef(
72812
72749
  (props, forwardedRef) => {
72813
72750
  const { __scopeProgress, ...indicatorProps } = props;
72814
72751
  const context = useProgressContext(INDICATOR_NAME2, __scopeProgress);
72815
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
72752
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
72816
72753
  Primitive2.div,
72817
72754
  {
72818
72755
  "data-state": getProgressState(context.value, context.max),
@@ -72855,9 +72792,9 @@ var Root7 = Progress;
72855
72792
  var Indicator = ProgressIndicator;
72856
72793
 
72857
72794
  // src/side-panel/components/retro/Progress.tsx
72858
- var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1);
72795
+ var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1);
72859
72796
  var Progress2 = (t0) => {
72860
- const $2 = (0, import_compiler_runtime15.c)(19);
72797
+ const $2 = (0, import_compiler_runtime14.c)(19);
72861
72798
  let className;
72862
72799
  let indicatorClassName;
72863
72800
  let props;
@@ -72909,7 +72846,7 @@ var Progress2 = (t0) => {
72909
72846
  }
72910
72847
  let t5;
72911
72848
  if ($2[11] !== t2 || $2[12] !== t4) {
72912
- t5 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Indicator, {
72849
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Indicator, {
72913
72850
  className: t2,
72914
72851
  style: t4
72915
72852
  });
@@ -72921,7 +72858,7 @@ var Progress2 = (t0) => {
72921
72858
  }
72922
72859
  let t6;
72923
72860
  if ($2[14] !== props || $2[15] !== t1 || $2[16] !== t5 || $2[17] !== value) {
72924
- t6 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Root7, {
72861
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Root7, {
72925
72862
  className: t1,
72926
72863
  value,
72927
72864
  ...props,
@@ -72939,15 +72876,15 @@ var Progress2 = (t0) => {
72939
72876
  };
72940
72877
 
72941
72878
  // src/side-panel/components/ConfirmationDialog.tsx
72942
- var import_react11 = __toESM(require_react(), 1);
72943
- var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1);
72879
+ var import_react12 = __toESM(require_react(), 1);
72880
+ var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1);
72944
72881
  var CountdownBar = (t0) => {
72945
- const $2 = (0, import_compiler_runtime16.c)(12);
72882
+ const $2 = (0, import_compiler_runtime15.c)(12);
72946
72883
  const {
72947
72884
  timeoutMs,
72948
72885
  receivedAt
72949
72886
  } = t0;
72950
- const [remaining, setRemaining] = (0, import_react11.useState)(timeoutMs);
72887
+ const [remaining, setRemaining] = (0, import_react12.useState)(timeoutMs);
72951
72888
  let t1;
72952
72889
  let t2;
72953
72890
  if ($2[0] !== receivedAt || $2[1] !== timeoutMs) {
@@ -72973,14 +72910,14 @@ var CountdownBar = (t0) => {
72973
72910
  t1 = $2[2];
72974
72911
  t2 = $2[3];
72975
72912
  }
72976
- (0, import_react11.useEffect)(t1, t2);
72913
+ (0, import_react12.useEffect)(t1, t2);
72977
72914
  const seconds = Math.ceil(remaining / 1e3);
72978
72915
  const fraction = remaining / timeoutMs;
72979
72916
  const t3 = fraction * 100;
72980
72917
  const t4 = fraction > 0.33 ? "bg-accent-foreground" : "bg-destructive";
72981
72918
  let t5;
72982
72919
  if ($2[4] !== t3 || $2[5] !== t4) {
72983
- t5 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Progress2, {
72920
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Progress2, {
72984
72921
  value: t3,
72985
72922
  className: "flex-1",
72986
72923
  indicatorClassName: t4
@@ -72993,7 +72930,7 @@ var CountdownBar = (t0) => {
72993
72930
  }
72994
72931
  let t6;
72995
72932
  if ($2[7] !== seconds) {
72996
- t6 = /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("span", {
72933
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("span", {
72997
72934
  className: "text-muted-foreground font-mono text-xs tabular-nums",
72998
72935
  children: [seconds, "s"]
72999
72936
  });
@@ -73004,7 +72941,7 @@ var CountdownBar = (t0) => {
73004
72941
  }
73005
72942
  let t7;
73006
72943
  if ($2[9] !== t5 || $2[10] !== t6) {
73007
- t7 = /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", {
72944
+ t7 = /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", {
73008
72945
  className: "mt-2 flex items-center gap-2",
73009
72946
  children: [t5, t6]
73010
72947
  });
@@ -73017,20 +72954,20 @@ var CountdownBar = (t0) => {
73017
72954
  return t7;
73018
72955
  };
73019
72956
  var AllowAlwaysButton = (t0) => {
73020
- const $2 = (0, import_compiler_runtime16.c)(13);
72957
+ const $2 = (0, import_compiler_runtime15.c)(13);
73021
72958
  const {
73022
72959
  domain,
73023
72960
  onSelect
73024
72961
  } = t0;
73025
72962
  let t1;
73026
72963
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
73027
- t1 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(MenuObject.Trigger, {
72964
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(MenuObject.Trigger, {
73028
72965
  asChild: true,
73029
- children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(Button, {
72966
+ children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Button, {
73030
72967
  size: "sm",
73031
72968
  variant: "outline",
73032
72969
  className: "w-full gap-1 text-xs",
73033
- children: ["Allow Always", /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ChevronDown, {
72970
+ children: ["Allow Always", /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ChevronDown, {
73034
72971
  className: "h-3 w-3"
73035
72972
  })]
73036
72973
  })
@@ -73041,7 +72978,7 @@ var AllowAlwaysButton = (t0) => {
73041
72978
  }
73042
72979
  let t2;
73043
72980
  if ($2[1] !== domain || $2[2] !== onSelect) {
73044
- t2 = domain && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(MenuObject.Item, {
72981
+ t2 = domain && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(MenuObject.Item, {
73045
72982
  onSelect: () => onSelect("tool_domain"),
73046
72983
  children: "For this tool on this domain"
73047
72984
  });
@@ -73053,7 +72990,7 @@ var AllowAlwaysButton = (t0) => {
73053
72990
  }
73054
72991
  let t3;
73055
72992
  if ($2[4] !== onSelect) {
73056
- t3 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(MenuObject.Item, {
72993
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(MenuObject.Item, {
73057
72994
  onSelect: () => onSelect("tool_all"),
73058
72995
  children: "For this tool everywhere"
73059
72996
  });
@@ -73064,7 +73001,7 @@ var AllowAlwaysButton = (t0) => {
73064
73001
  }
73065
73002
  let t4;
73066
73003
  if ($2[6] !== domain || $2[7] !== onSelect) {
73067
- t4 = domain && /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(MenuObject.Item, {
73004
+ t4 = domain && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(MenuObject.Item, {
73068
73005
  onSelect: () => onSelect("domain_all"),
73069
73006
  children: ["For all tools on ", domain]
73070
73007
  });
@@ -73076,8 +73013,8 @@ var AllowAlwaysButton = (t0) => {
73076
73013
  }
73077
73014
  let t5;
73078
73015
  if ($2[9] !== t2 || $2[10] !== t3 || $2[11] !== t4) {
73079
- t5 = /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(MenuObject, {
73080
- children: [t1, /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(MenuObject.Content, {
73016
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(MenuObject, {
73017
+ children: [t1, /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(MenuObject.Content, {
73081
73018
  side: "top",
73082
73019
  align: "end",
73083
73020
  children: [t2, t3, t4]
@@ -73094,13 +73031,13 @@ var AllowAlwaysButton = (t0) => {
73094
73031
  };
73095
73032
  var resolveDisplayIndex = (currentIndex, count3) => Math.min(currentIndex, count3 - 1);
73096
73033
  var ConfirmationDialog = (t0) => {
73097
- const $2 = (0, import_compiler_runtime16.c)(52);
73034
+ const $2 = (0, import_compiler_runtime15.c)(52);
73098
73035
  const {
73099
73036
  confirmations,
73100
73037
  onRespond,
73101
73038
  onDenyAll
73102
73039
  } = t0;
73103
- const [currentIndex, setCurrentIndex] = (0, import_react11.useState)(0);
73040
+ const [currentIndex, setCurrentIndex] = (0, import_react12.useState)(0);
73104
73041
  const safeIndex = resolveDisplayIndex(currentIndex, confirmations.length);
73105
73042
  const current = confirmations[safeIndex];
73106
73043
  if (!current) {
@@ -73110,10 +73047,10 @@ var ConfirmationDialog = (t0) => {
73110
73047
  let t1;
73111
73048
  let t2;
73112
73049
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
73113
- t1 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ShieldAlert, {
73050
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ShieldAlert, {
73114
73051
  className: "text-accent-foreground h-4 w-4 shrink-0"
73115
73052
  });
73116
- t2 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Text, {
73053
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Text, {
73117
73054
  as: "h6",
73118
73055
  className: "flex-1 text-sm",
73119
73056
  children: "Approval Required"
@@ -73126,7 +73063,7 @@ var ConfirmationDialog = (t0) => {
73126
73063
  }
73127
73064
  let t3;
73128
73065
  if ($2[2] !== count3 || $2[3] !== safeIndex) {
73129
- t3 = count3 > 1 && /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("span", {
73066
+ t3 = count3 > 1 && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("span", {
73130
73067
  className: "text-muted-foreground font-mono text-xs",
73131
73068
  children: [safeIndex + 1, " of ", count3]
73132
73069
  });
@@ -73138,7 +73075,7 @@ var ConfirmationDialog = (t0) => {
73138
73075
  }
73139
73076
  let t4;
73140
73077
  if ($2[5] !== t3) {
73141
- t4 = /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", {
73078
+ t4 = /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", {
73142
73079
  className: "border-accent-foreground flex items-center gap-2 border-b-2 px-3 py-2",
73143
73080
  children: [t1, t2, t3]
73144
73081
  });
@@ -73149,7 +73086,7 @@ var ConfirmationDialog = (t0) => {
73149
73086
  }
73150
73087
  let t5;
73151
73088
  if ($2[7] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
73152
- t5 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", {
73089
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", {
73153
73090
  className: "text-muted-foreground font-sans text-xs",
73154
73091
  children: "Tool"
73155
73092
  });
@@ -73159,8 +73096,8 @@ var ConfirmationDialog = (t0) => {
73159
73096
  }
73160
73097
  let t6;
73161
73098
  if ($2[8] !== current.tool) {
73162
- t6 = /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", {
73163
- children: [t5, /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", {
73099
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", {
73100
+ children: [t5, /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", {
73164
73101
  className: "font-mono text-sm",
73165
73102
  children: current.tool
73166
73103
  })]
@@ -73172,11 +73109,11 @@ var ConfirmationDialog = (t0) => {
73172
73109
  }
73173
73110
  let t7;
73174
73111
  if ($2[10] !== current.domain) {
73175
- t7 = current.domain && /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", {
73176
- children: [/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", {
73112
+ t7 = current.domain && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", {
73113
+ children: [/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", {
73177
73114
  className: "text-muted-foreground font-sans text-xs",
73178
73115
  children: "Domain"
73179
- }), /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", {
73116
+ }), /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", {
73180
73117
  className: "font-sans text-sm",
73181
73118
  children: current.domain
73182
73119
  })]
@@ -73188,11 +73125,11 @@ var ConfirmationDialog = (t0) => {
73188
73125
  }
73189
73126
  let t8;
73190
73127
  if ($2[12] !== current.paramsPreview) {
73191
- t8 = current.paramsPreview && /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", {
73192
- children: [/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", {
73128
+ t8 = current.paramsPreview && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", {
73129
+ children: [/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", {
73193
73130
  className: "text-muted-foreground font-sans text-xs",
73194
73131
  children: "Parameters"
73195
- }), /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("pre", {
73132
+ }), /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("pre", {
73196
73133
  className: "border-border bg-card mt-0.5 max-h-20 overflow-auto rounded border px-2 py-1 font-mono text-xs leading-tight",
73197
73134
  children: current.paramsPreview
73198
73135
  })]
@@ -73204,7 +73141,7 @@ var ConfirmationDialog = (t0) => {
73204
73141
  }
73205
73142
  let t9;
73206
73143
  if ($2[14] !== current.receivedAt || $2[15] !== current.timeoutMs) {
73207
- t9 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(CountdownBar, {
73144
+ t9 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(CountdownBar, {
73208
73145
  timeoutMs: current.timeoutMs,
73209
73146
  receivedAt: current.receivedAt
73210
73147
  });
@@ -73216,7 +73153,7 @@ var ConfirmationDialog = (t0) => {
73216
73153
  }
73217
73154
  let t10;
73218
73155
  if ($2[17] !== t6 || $2[18] !== t7 || $2[19] !== t8 || $2[20] !== t9) {
73219
- t10 = /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", {
73156
+ t10 = /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", {
73220
73157
  className: "space-y-2 px-3 py-2",
73221
73158
  children: [t6, t7, t8, t9]
73222
73159
  });
@@ -73230,7 +73167,7 @@ var ConfirmationDialog = (t0) => {
73230
73167
  }
73231
73168
  let t11;
73232
73169
  if ($2[22] !== current.id || $2[23] !== onRespond) {
73233
- t11 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Button, {
73170
+ t11 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Button, {
73234
73171
  size: "sm",
73235
73172
  className: "w-full",
73236
73173
  onClick: () => onRespond(current.id, "allow_once"),
@@ -73253,7 +73190,7 @@ var ConfirmationDialog = (t0) => {
73253
73190
  }
73254
73191
  let t13;
73255
73192
  if ($2[28] !== current.domain || $2[29] !== t12) {
73256
- t13 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(AllowAlwaysButton, {
73193
+ t13 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(AllowAlwaysButton, {
73257
73194
  domain: current.domain,
73258
73195
  onSelect: t12
73259
73196
  });
@@ -73265,7 +73202,7 @@ var ConfirmationDialog = (t0) => {
73265
73202
  }
73266
73203
  let t14;
73267
73204
  if ($2[31] !== current.id || $2[32] !== onRespond) {
73268
- t14 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Button, {
73205
+ t14 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Button, {
73269
73206
  size: "sm",
73270
73207
  variant: "outline",
73271
73208
  className: "text-destructive w-full text-xs",
@@ -73280,7 +73217,7 @@ var ConfirmationDialog = (t0) => {
73280
73217
  }
73281
73218
  let t15;
73282
73219
  if ($2[34] !== count3 || $2[35] !== onDenyAll) {
73283
- t15 = count3 > 1 && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Button, {
73220
+ t15 = count3 > 1 && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Button, {
73284
73221
  size: "sm",
73285
73222
  variant: "outline",
73286
73223
  className: "text-destructive w-full text-xs",
@@ -73295,7 +73232,7 @@ var ConfirmationDialog = (t0) => {
73295
73232
  }
73296
73233
  let t16;
73297
73234
  if ($2[37] !== t14 || $2[38] !== t15) {
73298
- t16 = /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", {
73235
+ t16 = /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", {
73299
73236
  className: "flex items-center gap-2",
73300
73237
  children: [t14, t15]
73301
73238
  });
@@ -73307,7 +73244,7 @@ var ConfirmationDialog = (t0) => {
73307
73244
  }
73308
73245
  let t17;
73309
73246
  if ($2[40] !== t11 || $2[41] !== t13 || $2[42] !== t16) {
73310
- t17 = /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", {
73247
+ t17 = /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", {
73311
73248
  className: "border-accent-foreground flex flex-col gap-1.5 border-t-2 py-2 pr-4 pl-3",
73312
73249
  children: [t11, t13, t16]
73313
73250
  });
@@ -73320,15 +73257,15 @@ var ConfirmationDialog = (t0) => {
73320
73257
  }
73321
73258
  let t18;
73322
73259
  if ($2[44] !== count3 || $2[45] !== safeIndex) {
73323
- t18 = count3 > 1 && /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", {
73260
+ t18 = count3 > 1 && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", {
73324
73261
  className: "border-border flex justify-center gap-2 border-t px-3 py-1",
73325
- children: [/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("button", {
73262
+ children: [/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("button", {
73326
73263
  type: "button",
73327
73264
  className: "text-muted-foreground hover:text-foreground cursor-pointer font-mono text-xs disabled:cursor-not-allowed disabled:opacity-40",
73328
73265
  disabled: safeIndex === 0,
73329
73266
  onClick: () => setCurrentIndex(_temp5),
73330
73267
  children: "prev"
73331
- }), /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("button", {
73268
+ }), /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("button", {
73332
73269
  type: "button",
73333
73270
  className: "text-muted-foreground hover:text-foreground cursor-pointer font-mono text-xs disabled:cursor-not-allowed disabled:opacity-40",
73334
73271
  disabled: safeIndex >= count3 - 1,
@@ -73344,10 +73281,10 @@ var ConfirmationDialog = (t0) => {
73344
73281
  }
73345
73282
  let t19;
73346
73283
  if ($2[47] !== t10 || $2[48] !== t17 || $2[49] !== t18 || $2[50] !== t4) {
73347
- t19 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", {
73284
+ t19 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", {
73348
73285
  className: "mx-4 mt-2",
73349
73286
  role: "alert",
73350
- children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", {
73287
+ children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", {
73351
73288
  className: "border-accent-foreground bg-accent/30 rounded border-2 shadow-md",
73352
73289
  children: [t4, t10, t17, t18]
73353
73290
  })
@@ -73373,10 +73310,10 @@ function _temp23(i_0) {
73373
73310
  var import_compiler_runtime18 = __toESM(require_compiler_runtime(), 1);
73374
73311
 
73375
73312
  // src/side-panel/components/retro/Empty.tsx
73376
- var import_compiler_runtime17 = __toESM(require_compiler_runtime(), 1);
73377
- var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1);
73313
+ var import_compiler_runtime16 = __toESM(require_compiler_runtime(), 1);
73314
+ var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1);
73378
73315
  var Empty = (t0) => {
73379
- const $2 = (0, import_compiler_runtime17.c)(8);
73316
+ const $2 = (0, import_compiler_runtime16.c)(8);
73380
73317
  let className;
73381
73318
  let props;
73382
73319
  if ($2[0] !== t0) {
@@ -73401,7 +73338,7 @@ var Empty = (t0) => {
73401
73338
  }
73402
73339
  let t2;
73403
73340
  if ($2[5] !== props || $2[6] !== t1) {
73404
- t2 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
73341
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", {
73405
73342
  className: t1,
73406
73343
  ...props
73407
73344
  });
@@ -73415,7 +73352,7 @@ var Empty = (t0) => {
73415
73352
  };
73416
73353
  Empty.displayName = "Empty";
73417
73354
  var EmptyContent = (t0) => {
73418
- const $2 = (0, import_compiler_runtime17.c)(8);
73355
+ const $2 = (0, import_compiler_runtime16.c)(8);
73419
73356
  let className;
73420
73357
  let props;
73421
73358
  if ($2[0] !== t0) {
@@ -73440,7 +73377,7 @@ var EmptyContent = (t0) => {
73440
73377
  }
73441
73378
  let t2;
73442
73379
  if ($2[5] !== props || $2[6] !== t1) {
73443
- t2 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
73380
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", {
73444
73381
  className: t1,
73445
73382
  ...props
73446
73383
  });
@@ -73454,7 +73391,7 @@ var EmptyContent = (t0) => {
73454
73391
  };
73455
73392
  EmptyContent.displayName = "Empty.Content";
73456
73393
  var EmptyIcon = (t0) => {
73457
- const $2 = (0, import_compiler_runtime17.c)(12);
73394
+ const $2 = (0, import_compiler_runtime16.c)(12);
73458
73395
  let children;
73459
73396
  let className;
73460
73397
  let props;
@@ -73483,7 +73420,7 @@ var EmptyIcon = (t0) => {
73483
73420
  }
73484
73421
  let t2;
73485
73422
  if ($2[6] !== children) {
73486
- t2 = children || /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Ghost, {
73423
+ t2 = children || /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Ghost, {
73487
73424
  className: "h-full w-full"
73488
73425
  });
73489
73426
  $2[6] = children;
@@ -73493,7 +73430,7 @@ var EmptyIcon = (t0) => {
73493
73430
  }
73494
73431
  let t3;
73495
73432
  if ($2[8] !== props || $2[9] !== t1 || $2[10] !== t2) {
73496
- t3 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
73433
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", {
73497
73434
  className: t1,
73498
73435
  ...props,
73499
73436
  children: t2
@@ -73509,7 +73446,7 @@ var EmptyIcon = (t0) => {
73509
73446
  };
73510
73447
  EmptyIcon.displayName = "Empty.Icon";
73511
73448
  var EmptyTitle = (t0) => {
73512
- const $2 = (0, import_compiler_runtime17.c)(8);
73449
+ const $2 = (0, import_compiler_runtime16.c)(8);
73513
73450
  let className;
73514
73451
  let props;
73515
73452
  if ($2[0] !== t0) {
@@ -73534,7 +73471,7 @@ var EmptyTitle = (t0) => {
73534
73471
  }
73535
73472
  let t2;
73536
73473
  if ($2[5] !== props || $2[6] !== t1) {
73537
- t2 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Text, {
73474
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Text, {
73538
73475
  as: "h3",
73539
73476
  className: t1,
73540
73477
  ...props
@@ -73549,7 +73486,7 @@ var EmptyTitle = (t0) => {
73549
73486
  };
73550
73487
  EmptyTitle.displayName = "Empty.Title";
73551
73488
  var EmptySeparator = (t0) => {
73552
- const $2 = (0, import_compiler_runtime17.c)(8);
73489
+ const $2 = (0, import_compiler_runtime16.c)(8);
73553
73490
  let className;
73554
73491
  let props;
73555
73492
  if ($2[0] !== t0) {
@@ -73574,7 +73511,7 @@ var EmptySeparator = (t0) => {
73574
73511
  }
73575
73512
  let t2;
73576
73513
  if ($2[5] !== props || $2[6] !== t1) {
73577
- t2 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
73514
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", {
73578
73515
  role: "separator",
73579
73516
  className: t1,
73580
73517
  ...props
@@ -73589,7 +73526,7 @@ var EmptySeparator = (t0) => {
73589
73526
  };
73590
73527
  EmptySeparator.displayName = "Empty.Separator";
73591
73528
  var EmptyDescription = (t0) => {
73592
- const $2 = (0, import_compiler_runtime17.c)(8);
73529
+ const $2 = (0, import_compiler_runtime16.c)(8);
73593
73530
  let className;
73594
73531
  let props;
73595
73532
  if ($2[0] !== t0) {
@@ -73610,30 +73547,155 @@ var EmptyDescription = (t0) => {
73610
73547
  $2[3] = className;
73611
73548
  $2[4] = t1;
73612
73549
  } else {
73613
- t1 = $2[4];
73550
+ t1 = $2[4];
73551
+ }
73552
+ let t2;
73553
+ if ($2[5] !== props || $2[6] !== t1) {
73554
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("p", {
73555
+ className: t1,
73556
+ ...props
73557
+ });
73558
+ $2[5] = props;
73559
+ $2[6] = t1;
73560
+ $2[7] = t2;
73561
+ } else {
73562
+ t2 = $2[7];
73563
+ }
73564
+ return t2;
73565
+ };
73566
+ EmptyDescription.displayName = "Empty.Description";
73567
+ var EmptyComponent = Object.assign(Empty, {
73568
+ Content: EmptyContent,
73569
+ Icon: EmptyIcon,
73570
+ Title: EmptyTitle,
73571
+ Separator: EmptySeparator,
73572
+ Description: EmptyDescription
73573
+ });
73574
+
73575
+ // src/side-panel/components/retro/Loader.tsx
73576
+ var import_compiler_runtime17 = __toESM(require_compiler_runtime(), 1);
73577
+ var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1);
73578
+ var loaderVariants = cva("flex gap-1", {
73579
+ variants: {
73580
+ variant: {
73581
+ default: "[&>div]:bg-primary [&>div]:border-border",
73582
+ secondary: "[&>div]:bg-secondary [&>div]:border-border",
73583
+ outline: "[&>div]:bg-transparent [&>div]:border-border"
73584
+ },
73585
+ size: {
73586
+ sm: "[&>div]:w-2 [&>div]:h-2",
73587
+ md: "[&>div]:w-3 [&>div]:h-3",
73588
+ lg: "[&>div]:w-4 [&>div]:h-4"
73589
+ }
73590
+ },
73591
+ defaultVariants: {
73592
+ variant: "default",
73593
+ size: "md"
73594
+ }
73595
+ });
73596
+ var Loader2 = (t0) => {
73597
+ const $2 = (0, import_compiler_runtime17.c)(24);
73598
+ let className;
73599
+ let props;
73600
+ let ref;
73601
+ let size4;
73602
+ let t1;
73603
+ let t2;
73604
+ let t3;
73605
+ let variant;
73606
+ if ($2[0] !== t0) {
73607
+ ({
73608
+ className,
73609
+ variant,
73610
+ size: size4,
73611
+ count: t1,
73612
+ duration: t2,
73613
+ delayStep: t3,
73614
+ ref,
73615
+ ...props
73616
+ } = t0);
73617
+ $2[0] = t0;
73618
+ $2[1] = className;
73619
+ $2[2] = props;
73620
+ $2[3] = ref;
73621
+ $2[4] = size4;
73622
+ $2[5] = t1;
73623
+ $2[6] = t2;
73624
+ $2[7] = t3;
73625
+ $2[8] = variant;
73626
+ } else {
73627
+ className = $2[1];
73628
+ props = $2[2];
73629
+ ref = $2[3];
73630
+ size4 = $2[4];
73631
+ t1 = $2[5];
73632
+ t2 = $2[6];
73633
+ t3 = $2[7];
73634
+ variant = $2[8];
73635
+ }
73636
+ const count3 = t1 === void 0 ? 3 : t1;
73637
+ const duration = t2 === void 0 ? 0.5 : t2;
73638
+ const delayStep = t3 === void 0 ? 100 : t3;
73639
+ let t4;
73640
+ if ($2[9] !== className || $2[10] !== size4 || $2[11] !== variant) {
73641
+ t4 = cn(loaderVariants({
73642
+ variant,
73643
+ size: size4
73644
+ }), className);
73645
+ $2[9] = className;
73646
+ $2[10] = size4;
73647
+ $2[11] = variant;
73648
+ $2[12] = t4;
73649
+ } else {
73650
+ t4 = $2[12];
73651
+ }
73652
+ let t5;
73653
+ if ($2[13] !== count3) {
73654
+ t5 = Array.from({
73655
+ length: count3
73656
+ });
73657
+ $2[13] = count3;
73658
+ $2[14] = t5;
73659
+ } else {
73660
+ t5 = $2[14];
73661
+ }
73662
+ let t6;
73663
+ if ($2[15] !== delayStep || $2[16] !== duration || $2[17] !== t5) {
73664
+ t6 = t5.map((_2, i2) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
73665
+ className: "animate-bounce rounded border-2",
73666
+ style: {
73667
+ animationDuration: `${duration}s`,
73668
+ animationIterationCount: "infinite",
73669
+ animationDelay: `${i2 * delayStep}ms`
73670
+ }
73671
+ }, i2));
73672
+ $2[15] = delayStep;
73673
+ $2[16] = duration;
73674
+ $2[17] = t5;
73675
+ $2[18] = t6;
73676
+ } else {
73677
+ t6 = $2[18];
73614
73678
  }
73615
- let t2;
73616
- if ($2[5] !== props || $2[6] !== t1) {
73617
- t2 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", {
73618
- className: t1,
73619
- ...props
73679
+ let t7;
73680
+ if ($2[19] !== props || $2[20] !== ref || $2[21] !== t4 || $2[22] !== t6) {
73681
+ t7 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
73682
+ className: t4,
73683
+ ref,
73684
+ role: "status",
73685
+ "aria-label": "Loading...",
73686
+ ...props,
73687
+ children: t6
73620
73688
  });
73621
- $2[5] = props;
73622
- $2[6] = t1;
73623
- $2[7] = t2;
73689
+ $2[19] = props;
73690
+ $2[20] = ref;
73691
+ $2[21] = t4;
73692
+ $2[22] = t6;
73693
+ $2[23] = t7;
73624
73694
  } else {
73625
- t2 = $2[7];
73695
+ t7 = $2[23];
73626
73696
  }
73627
- return t2;
73697
+ return t7;
73628
73698
  };
73629
- EmptyDescription.displayName = "Empty.Description";
73630
- var EmptyComponent = Object.assign(Empty, {
73631
- Content: EmptyContent,
73632
- Icon: EmptyIcon,
73633
- Title: EmptyTitle,
73634
- Separator: EmptySeparator,
73635
- Description: EmptyDescription
73636
- });
73637
73699
 
73638
73700
  // src/constants.ts
73639
73701
  var SERVER_PORT_KEY = "serverPort";
@@ -73642,11 +73704,11 @@ var MAX_INPUT_SIZE = 10 * 1024 * 1024;
73642
73704
  var VALID_PLUGIN_NAME = /^[a-z0-9]+(-[a-z0-9]+)*$/;
73643
73705
 
73644
73706
  // src/side-panel/components/EmptyStates.tsx
73645
- var import_react12 = __toESM(require_react(), 1);
73707
+ var import_react13 = __toESM(require_react(), 1);
73646
73708
  var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1);
73647
73709
  var ConnectionRefusedState = () => {
73648
73710
  const $2 = (0, import_compiler_runtime18.c)(7);
73649
- const [port, setPort] = (0, import_react12.useState)(DEFAULT_SERVER_PORT);
73711
+ const [port, setPort] = (0, import_react13.useState)(DEFAULT_SERVER_PORT);
73650
73712
  let t0;
73651
73713
  let t1;
73652
73714
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -73676,7 +73738,7 @@ var ConnectionRefusedState = () => {
73676
73738
  t0 = $2[0];
73677
73739
  t1 = $2[1];
73678
73740
  }
73679
- (0, import_react12.useEffect)(t0, t1);
73741
+ (0, import_react13.useEffect)(t0, t1);
73680
73742
  const command = port === DEFAULT_SERVER_PORT ? "opentabs start" : `opentabs start --port ${port}`;
73681
73743
  let t2;
73682
73744
  let t3;
@@ -73787,7 +73849,7 @@ var import_compiler_runtime21 = __toESM(require_compiler_runtime(), 1);
73787
73849
 
73788
73850
  // src/side-panel/components/retro/NumberStepper.tsx
73789
73851
  var import_compiler_runtime19 = __toESM(require_compiler_runtime(), 1);
73790
- var import_react13 = __toESM(require_react(), 1);
73852
+ var import_react14 = __toESM(require_react(), 1);
73791
73853
  var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1);
73792
73854
  var NumberStepper = (t0) => {
73793
73855
  const $2 = (0, import_compiler_runtime19.c)(42);
@@ -73828,7 +73890,7 @@ var NumberStepper = (t0) => {
73828
73890
  const min2 = t1 === void 0 ? 1 : t1;
73829
73891
  const max2 = t2 === void 0 ? 65535 : t2;
73830
73892
  const step = t3 === void 0 ? 1 : t3;
73831
- const inputRef = (0, import_react13.useRef)(null);
73893
+ const inputRef = (0, import_react14.useRef)(null);
73832
73894
  let t4;
73833
73895
  if ($2[8] !== max2 || $2[9] !== min2 || $2[10] !== onChange) {
73834
73896
  t4 = () => {
@@ -74032,14 +74094,14 @@ var NumberStepper = (t0) => {
74032
74094
 
74033
74095
  // src/side-panel/hooks/useTheme.ts
74034
74096
  var import_compiler_runtime20 = __toESM(require_compiler_runtime(), 1);
74035
- var import_react14 = __toESM(require_react(), 1);
74097
+ var import_react15 = __toESM(require_react(), 1);
74036
74098
  var STORAGE_KEY = "theme";
74037
74099
  var applyTheme = (theme) => {
74038
74100
  document.documentElement.classList.toggle("dark", theme === "dark");
74039
74101
  };
74040
74102
  var useTheme = () => {
74041
74103
  const $2 = (0, import_compiler_runtime20.c)(5);
74042
- const [theme, setTheme] = (0, import_react14.useState)(_temp7);
74104
+ const [theme, setTheme] = (0, import_react15.useState)(_temp7);
74043
74105
  let t0;
74044
74106
  let t1;
74045
74107
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -74059,7 +74121,7 @@ var useTheme = () => {
74059
74121
  t0 = $2[0];
74060
74122
  t1 = $2[1];
74061
74123
  }
74062
- (0, import_react14.useEffect)(t0, t1);
74124
+ (0, import_react15.useEffect)(t0, t1);
74063
74125
  let t2;
74064
74126
  if ($2[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
74065
74127
  t2 = () => {
@@ -74097,11 +74159,11 @@ function _temp33() {
74097
74159
  }
74098
74160
 
74099
74161
  // src/side-panel/components/Footer.tsx
74100
- var import_react15 = __toESM(require_react(), 1);
74162
+ var import_react16 = __toESM(require_react(), 1);
74101
74163
  var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1);
74102
74164
  var PortEditor = () => {
74103
74165
  const $2 = (0, import_compiler_runtime21.c)(5);
74104
- const [initialPort, setInitialPort] = (0, import_react15.useState)(null);
74166
+ const [initialPort, setInitialPort] = (0, import_react16.useState)(null);
74105
74167
  let t0;
74106
74168
  let t1;
74107
74169
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -74120,7 +74182,7 @@ var PortEditor = () => {
74120
74182
  t0 = $2[0];
74121
74183
  t1 = $2[1];
74122
74184
  }
74123
- (0, import_react15.useEffect)(t0, t1);
74185
+ (0, import_react16.useEffect)(t0, t1);
74124
74186
  const handleChange = _temp34;
74125
74187
  if (initialPort === null) {
74126
74188
  return null;
@@ -74261,14 +74323,14 @@ var import_compiler_runtime26 = __toESM(require_compiler_runtime(), 1);
74261
74323
 
74262
74324
  // src/side-panel/components/FailedPluginCard.tsx
74263
74325
  var import_compiler_runtime22 = __toESM(require_compiler_runtime(), 1);
74264
- var import_react16 = __toESM(require_react(), 1);
74326
+ var import_react17 = __toESM(require_react(), 1);
74265
74327
  var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1);
74266
74328
  var FailedPluginCard = (t0) => {
74267
74329
  const $2 = (0, import_compiler_runtime22.c)(13);
74268
74330
  const {
74269
74331
  plugin
74270
74332
  } = t0;
74271
- const [expanded, setExpanded] = (0, import_react16.useState)(false);
74333
+ const [expanded, setExpanded] = (0, import_react17.useState)(false);
74272
74334
  let t1;
74273
74335
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
74274
74336
  t1 = /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", {
@@ -75032,7 +75094,7 @@ var DialogObject = Object.assign(Dialog2, {
75032
75094
  });
75033
75095
 
75034
75096
  // src/side-panel/components/PluginMenu.tsx
75035
- var import_react17 = __toESM(require_react(), 1);
75097
+ var import_react18 = __toESM(require_react(), 1);
75036
75098
  var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1);
75037
75099
  var PluginMenu = (t0) => {
75038
75100
  const $2 = (0, import_compiler_runtime24.c)(48);
@@ -75044,7 +75106,7 @@ var PluginMenu = (t0) => {
75044
75106
  removing,
75045
75107
  className
75046
75108
  } = t0;
75047
- const [confirmOpen, setConfirmOpen] = (0, import_react17.useState)(false);
75109
+ const [confirmOpen, setConfirmOpen] = (0, import_react18.useState)(false);
75048
75110
  const isLocal = plugin.source === "local";
75049
75111
  const removeLabel = isLocal ? "Remove" : "Uninstall";
75050
75112
  let t1;
@@ -75299,10 +75361,10 @@ function _temp26(e_0) {
75299
75361
  }
75300
75362
 
75301
75363
  // src/side-panel/components/PluginCard.tsx
75302
- var import_react18 = __toESM(require_react(), 1);
75364
+ var import_react19 = __toESM(require_react(), 1);
75303
75365
  var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1);
75304
75366
  var PluginCard = (t0) => {
75305
- const $2 = (0, import_compiler_runtime25.c)(47);
75367
+ const $2 = (0, import_compiler_runtime25.c)(37);
75306
75368
  const {
75307
75369
  plugin,
75308
75370
  activeTools,
@@ -75314,10 +75376,10 @@ var PluginCard = (t0) => {
75314
75376
  removingPlugin,
75315
75377
  actionError
75316
75378
  } = t0;
75317
- const [toggleError, setToggleError] = (0, import_react18.useState)(null);
75318
- const errorTimerRef = (0, import_react18.useRef)(void 0);
75319
- const toggleCounter = (0, import_react18.useRef)(0);
75320
- const preToggleRef = (0, import_react18.useRef)([]);
75379
+ const [toggleError, setToggleError] = (0, import_react19.useState)(null);
75380
+ const errorTimerRef = (0, import_react19.useRef)(void 0);
75381
+ const toggleCounter = (0, import_react19.useRef)(0);
75382
+ const preToggleRef = (0, import_react19.useRef)([]);
75321
75383
  let t1;
75322
75384
  let t2;
75323
75385
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -75329,7 +75391,7 @@ var PluginCard = (t0) => {
75329
75391
  t1 = $2[0];
75330
75392
  t2 = $2[1];
75331
75393
  }
75332
- (0, import_react18.useEffect)(t1, t2);
75394
+ (0, import_react19.useEffect)(t1, t2);
75333
75395
  const showToggleError = (message) => {
75334
75396
  clearTimeout(errorTimerRef.current);
75335
75397
  setToggleError(message);
@@ -75385,83 +75447,55 @@ var PluginCard = (t0) => {
75385
75447
  };
75386
75448
  const filterLower = toolFilter?.toLowerCase() ?? "";
75387
75449
  const visibleTools = filterLower ? pluginTools.filter((t_2) => matchesTool(t_2, filterLower)) : pluginTools;
75388
- const t4 = plugin.name;
75389
- const t5 = !!plugin.update;
75450
+ let t4;
75451
+ if ($2[5] !== activeTools || $2[6] !== plugin.name) {
75452
+ t4 = (t_3) => activeTools.has(`${plugin.name}:${t_3.name}`);
75453
+ $2[5] = activeTools;
75454
+ $2[6] = plugin.name;
75455
+ $2[7] = t4;
75456
+ } else {
75457
+ t4 = $2[7];
75458
+ }
75459
+ const hasActiveTool = pluginTools.some(t4);
75460
+ const t5 = plugin.name;
75390
75461
  let t6;
75391
- if ($2[5] !== plugin.displayName || $2[6] !== plugin.iconInactiveSvg || $2[7] !== plugin.iconSvg || $2[8] !== plugin.name || $2[9] !== plugin.tabState || $2[10] !== t5) {
75392
- t6 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(TooltipObject.Trigger, {
75393
- asChild: true,
75394
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", {
75395
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PluginIcon, {
75396
- pluginName: plugin.name,
75397
- displayName: plugin.displayName,
75398
- tabState: plugin.tabState,
75399
- hasUpdate: t5,
75400
- size: 32,
75401
- iconSvg: plugin.iconSvg,
75402
- iconInactiveSvg: plugin.iconInactiveSvg
75403
- })
75404
- })
75462
+ if ($2[8] !== plugin.update) {
75463
+ t6 = plugin.update && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, {
75464
+ children: [" \xB7 Update: ", plugin.update.latestVersion]
75405
75465
  });
75406
- $2[5] = plugin.displayName;
75407
- $2[6] = plugin.iconInactiveSvg;
75408
- $2[7] = plugin.iconSvg;
75409
- $2[8] = plugin.name;
75410
- $2[9] = plugin.tabState;
75411
- $2[10] = t5;
75412
- $2[11] = t6;
75466
+ $2[8] = plugin.update;
75467
+ $2[9] = t6;
75413
75468
  } else {
75414
- t6 = $2[11];
75469
+ t6 = $2[9];
75415
75470
  }
75416
75471
  let t7;
75417
- if ($2[12] !== plugin.update) {
75418
- t7 = plugin.update && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, {
75419
- children: [" \xB7 Update: ", plugin.update.latestVersion]
75472
+ if ($2[10] !== plugin.trustTier || $2[11] !== plugin.version || $2[12] !== t6) {
75473
+ t7 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(TooltipObject.Content, {
75474
+ children: ["v", plugin.version, " \xB7 ", plugin.trustTier, t6]
75420
75475
  });
75421
- $2[12] = plugin.update;
75476
+ $2[10] = plugin.trustTier;
75477
+ $2[11] = plugin.version;
75478
+ $2[12] = t6;
75422
75479
  $2[13] = t7;
75423
75480
  } else {
75424
75481
  t7 = $2[13];
75425
75482
  }
75426
75483
  let t8;
75427
- if ($2[14] !== plugin.trustTier || $2[15] !== plugin.version || $2[16] !== t7) {
75428
- t8 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(TooltipObject.Content, {
75429
- children: ["v", plugin.version, " \xB7 ", plugin.trustTier, t7]
75430
- });
75431
- $2[14] = plugin.trustTier;
75432
- $2[15] = plugin.version;
75433
- $2[16] = t7;
75434
- $2[17] = t8;
75435
- } else {
75436
- t8 = $2[17];
75437
- }
75438
- let t9;
75439
- if ($2[18] !== t6 || $2[19] !== t8) {
75440
- t9 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(TooltipObject, {
75441
- children: [t6, t8]
75442
- });
75443
- $2[18] = t6;
75444
- $2[19] = t8;
75445
- $2[20] = t9;
75446
- } else {
75447
- t9 = $2[20];
75448
- }
75449
- let t10;
75450
- if ($2[21] !== plugin.source) {
75451
- t10 = plugin.source === "local" && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Badge2, {
75484
+ if ($2[14] !== plugin.source) {
75485
+ t8 = plugin.source === "local" && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Badge2, {
75452
75486
  variant: "default",
75453
75487
  size: "sm",
75454
75488
  className: "align-middle",
75455
75489
  children: "DEV"
75456
75490
  });
75457
- $2[21] = plugin.source;
75458
- $2[22] = t10;
75491
+ $2[14] = plugin.source;
75492
+ $2[15] = t8;
75459
75493
  } else {
75460
- t10 = $2[22];
75494
+ t8 = $2[15];
75461
75495
  }
75462
- let t11;
75463
- if ($2[23] !== plugin.sdkVersion) {
75464
- t11 = !plugin.sdkVersion && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(TooltipObject, {
75496
+ let t9;
75497
+ if ($2[16] !== plugin.sdkVersion) {
75498
+ t9 = !plugin.sdkVersion && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(TooltipObject, {
75465
75499
  children: [/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(TooltipObject.Trigger, {
75466
75500
  asChild: true,
75467
75501
  children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Badge2, {
@@ -75474,99 +75508,87 @@ var PluginCard = (t0) => {
75474
75508
  children: "SDK version mismatch \u2014 rebuild plugin"
75475
75509
  })]
75476
75510
  });
75477
- $2[23] = plugin.sdkVersion;
75478
- $2[24] = t11;
75511
+ $2[16] = plugin.sdkVersion;
75512
+ $2[17] = t9;
75479
75513
  } else {
75480
- t11 = $2[24];
75514
+ t9 = $2[17];
75481
75515
  }
75482
- let t12;
75483
- if ($2[25] !== plugin.displayName || $2[26] !== t10 || $2[27] !== t11) {
75484
- t12 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", {
75516
+ let t10;
75517
+ if ($2[18] !== plugin.displayName || $2[19] !== t8 || $2[20] !== t9) {
75518
+ t10 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", {
75485
75519
  className: "font-head text-foreground flex min-w-0 flex-1 items-center gap-1.5 truncate text-sm",
75486
- children: [plugin.displayName, t10, t11]
75520
+ children: [plugin.displayName, t8, t9]
75487
75521
  });
75488
- $2[25] = plugin.displayName;
75489
- $2[26] = t10;
75490
- $2[27] = t11;
75491
- $2[28] = t12;
75522
+ $2[18] = plugin.displayName;
75523
+ $2[19] = t8;
75524
+ $2[20] = t9;
75525
+ $2[21] = t10;
75492
75526
  } else {
75493
- t12 = $2[28];
75527
+ t10 = $2[21];
75494
75528
  }
75495
- let t13;
75496
- if ($2[29] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
75497
- t13 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ChevronDown, {
75529
+ let t11;
75530
+ if ($2[22] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
75531
+ t11 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ChevronDown, {
75498
75532
  className: "h-4 w-4 shrink-0 transition-transform duration-200"
75499
75533
  });
75500
- $2[29] = t13;
75501
- } else {
75502
- t13 = $2[29];
75503
- }
75504
- let t14;
75505
- if ($2[30] !== t12 || $2[31] !== t9) {
75506
- t14 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(Trigger22, {
75507
- className: "flex min-w-0 flex-1 cursor-pointer items-center gap-2 px-3 py-2 focus:outline-hidden [&[data-state=open]>svg]:rotate-180",
75508
- children: [t9, t12, t13]
75509
- });
75510
- $2[30] = t12;
75511
- $2[31] = t9;
75512
- $2[32] = t14;
75534
+ $2[22] = t11;
75513
75535
  } else {
75514
- t14 = $2[32];
75536
+ t11 = $2[22];
75515
75537
  }
75516
- const t15 = onUpdate ?? _temp27;
75517
- const t16 = onRemove ?? _temp35;
75518
- const t17 = updatingPlugin ?? false;
75519
- const t18 = removingPlugin ?? false;
75520
- let t19;
75521
- if ($2[33] !== plugin || $2[34] !== t15 || $2[35] !== t16 || $2[36] !== t17 || $2[37] !== t18) {
75522
- t19 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PluginMenu, {
75538
+ const t12 = onUpdate ?? _temp27;
75539
+ const t13 = onRemove ?? _temp35;
75540
+ const t14 = updatingPlugin ?? false;
75541
+ const t15 = removingPlugin ?? false;
75542
+ let t16;
75543
+ if ($2[23] !== plugin || $2[24] !== t12 || $2[25] !== t13 || $2[26] !== t14 || $2[27] !== t15) {
75544
+ t16 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PluginMenu, {
75523
75545
  plugin,
75524
- onUpdate: t15,
75525
- onRemove: t16,
75526
- updating: t17,
75527
- removing: t18,
75546
+ onUpdate: t12,
75547
+ onRemove: t13,
75548
+ updating: t14,
75549
+ removing: t15,
75528
75550
  className: "flex shrink-0 items-center px-1"
75529
75551
  });
75530
- $2[33] = plugin;
75531
- $2[34] = t15;
75532
- $2[35] = t16;
75533
- $2[36] = t17;
75534
- $2[37] = t18;
75535
- $2[38] = t19;
75552
+ $2[23] = plugin;
75553
+ $2[24] = t12;
75554
+ $2[25] = t13;
75555
+ $2[26] = t14;
75556
+ $2[27] = t15;
75557
+ $2[28] = t16;
75536
75558
  } else {
75537
- t19 = $2[38];
75559
+ t16 = $2[28];
75538
75560
  }
75539
- let t20;
75540
- if ($2[39] !== toggleError) {
75541
- t20 = toggleError && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(AlertComponent, {
75561
+ let t17;
75562
+ if ($2[29] !== toggleError) {
75563
+ t17 = toggleError && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(AlertComponent, {
75542
75564
  status: "error",
75543
75565
  className: "mx-3 mb-1 px-2 py-1 text-xs",
75544
75566
  children: toggleError
75545
75567
  });
75546
- $2[39] = toggleError;
75547
- $2[40] = t20;
75568
+ $2[29] = toggleError;
75569
+ $2[30] = t17;
75548
75570
  } else {
75549
- t20 = $2[40];
75571
+ t17 = $2[30];
75550
75572
  }
75551
- let t21;
75552
- if ($2[41] !== actionError) {
75553
- t21 = actionError && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(AlertComponent, {
75573
+ let t18;
75574
+ if ($2[31] !== actionError) {
75575
+ t18 = actionError && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(AlertComponent, {
75554
75576
  status: "error",
75555
75577
  className: "mx-3 mb-1 px-2 py-1 text-xs",
75556
75578
  children: actionError
75557
75579
  });
75558
- $2[41] = actionError;
75559
- $2[42] = t21;
75580
+ $2[31] = actionError;
75581
+ $2[32] = t18;
75560
75582
  } else {
75561
- t21 = $2[42];
75583
+ t18 = $2[32];
75562
75584
  }
75563
- const t22 = AccordionComponent;
75564
- const t23 = "border-border border-t";
75565
- const t24 = toolFilter && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", {
75585
+ const t19 = AccordionComponent;
75586
+ const t20 = "border-border border-t";
75587
+ const t21 = toolFilter && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", {
75566
75588
  className: "text-muted-foreground mb-1 px-3 pt-2 text-xs",
75567
75589
  children: [visibleTools.length, " of ", pluginTools.length, " tools"]
75568
75590
  });
75569
- const t25 = visibleTools.map((tool) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ToolRow, {
75591
+ const t22 = visibleTools.map((tool) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ToolRow, {
75570
75592
  name: tool.name,
75571
75593
  displayName: tool.displayName,
75572
75594
  description: tool.description,
@@ -75575,25 +75597,44 @@ var PluginCard = (t0) => {
75575
75597
  active: activeTools.has(`${plugin.name}:${tool.name}`),
75576
75598
  onToggle: () => handleToggleTool(tool.name, tool.enabled)
75577
75599
  }, tool.name));
75578
- let t26;
75579
- if ($2[43] !== t22.Content || $2[44] !== t24 || $2[45] !== t25) {
75580
- t26 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(t22.Content, {
75581
- className: t23,
75582
- children: [t24, t25]
75600
+ let t23;
75601
+ if ($2[33] !== t19.Content || $2[34] !== t21 || $2[35] !== t22) {
75602
+ t23 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(t19.Content, {
75603
+ className: t20,
75604
+ children: [t21, t22]
75583
75605
  });
75584
- $2[43] = t22.Content;
75585
- $2[44] = t24;
75586
- $2[45] = t25;
75587
- $2[46] = t26;
75606
+ $2[33] = t19.Content;
75607
+ $2[34] = t21;
75608
+ $2[35] = t22;
75609
+ $2[36] = t23;
75588
75610
  } else {
75589
- t26 = $2[46];
75611
+ t23 = $2[36];
75590
75612
  }
75591
75613
  return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(AccordionComponent.Item, {
75592
- value: t4,
75614
+ value: t5,
75593
75615
  className: removingPlugin ? "pointer-events-none opacity-60 transition-opacity" : void 0,
75594
75616
  children: [/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(Header, {
75595
75617
  className: "flex",
75596
- children: [t14, t19, /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", {
75618
+ children: [/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(Trigger22, {
75619
+ className: "flex min-w-0 flex-1 cursor-pointer items-center gap-2 px-3 py-2 focus:outline-hidden [&[data-state=open]>svg]:rotate-180",
75620
+ children: [/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(TooltipObject, {
75621
+ children: [/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(TooltipObject.Trigger, {
75622
+ asChild: true,
75623
+ children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", {
75624
+ children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PluginIcon, {
75625
+ pluginName: plugin.name,
75626
+ displayName: plugin.displayName,
75627
+ tabState: plugin.tabState,
75628
+ hasUpdate: !!plugin.update,
75629
+ size: 32,
75630
+ iconSvg: plugin.iconSvg,
75631
+ iconInactiveSvg: plugin.iconInactiveSvg,
75632
+ active: hasActiveTool
75633
+ })
75634
+ })
75635
+ }), t7]
75636
+ }), t10, t11]
75637
+ }), t16, /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", {
75597
75638
  className: "flex shrink-0 items-center px-3",
75598
75639
  onClick: _temp42,
75599
75640
  onKeyDown: _temp52,
@@ -75604,7 +75645,7 @@ var PluginCard = (t0) => {
75604
75645
  "aria-label": `Toggle all tools for ${plugin.name}`
75605
75646
  })
75606
75647
  })]
75607
- }), t20, t21, t26]
75648
+ }), t17, t18, t23]
75608
75649
  });
75609
75650
  };
75610
75651
  function _temp10(t2) {
@@ -76228,15 +76269,14 @@ function _temp12(p_1) {
76228
76269
 
76229
76270
  // src/side-panel/hooks/useServerNotifications.ts
76230
76271
  var import_compiler_runtime30 = __toESM(require_compiler_runtime(), 1);
76231
- var import_react19 = __toESM(require_react(), 1);
76272
+ var import_react20 = __toESM(require_react(), 1);
76232
76273
  var validTabStates = /* @__PURE__ */ new Set(["closed", "unavailable", "ready"]);
76233
76274
  var useServerNotifications = (t0) => {
76234
- const $2 = (0, import_compiler_runtime30.c)(10);
76275
+ const $2 = (0, import_compiler_runtime30.c)(9);
76235
76276
  const {
76236
76277
  setPlugins,
76237
76278
  setActiveTools,
76238
- setPendingConfirmations,
76239
- pendingTabStates
76279
+ setPendingConfirmations
76240
76280
  } = t0;
76241
76281
  let t1;
76242
76282
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -76245,7 +76285,7 @@ var useServerNotifications = (t0) => {
76245
76285
  } else {
76246
76286
  t1 = $2[0];
76247
76287
  }
76248
- const timeoutIds = (0, import_react19.useRef)(t1);
76288
+ const timeoutIds = (0, import_react20.useRef)(t1);
76249
76289
  let t2;
76250
76290
  if ($2[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
76251
76291
  t2 = /* @__PURE__ */ new Map();
@@ -76253,7 +76293,7 @@ var useServerNotifications = (t0) => {
76253
76293
  } else {
76254
76294
  t2 = $2[1];
76255
76295
  }
76256
- const invocationTimeoutIds = (0, import_react19.useRef)(t2);
76296
+ const invocationTimeoutIds = (0, import_react20.useRef)(t2);
76257
76297
  let t3;
76258
76298
  let t4;
76259
76299
  if ($2[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
@@ -76278,7 +76318,7 @@ var useServerNotifications = (t0) => {
76278
76318
  t3 = $2[2];
76279
76319
  t4 = $2[3];
76280
76320
  }
76281
- (0, import_react19.useEffect)(t3, t4);
76321
+ (0, import_react20.useEffect)(t3, t4);
76282
76322
  let t5;
76283
76323
  if ($2[4] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
76284
76324
  t5 = (id_1) => {
@@ -76294,7 +76334,7 @@ var useServerNotifications = (t0) => {
76294
76334
  }
76295
76335
  const clearConfirmationTimeout = t5;
76296
76336
  let t6;
76297
- if ($2[5] !== pendingTabStates || $2[6] !== setActiveTools || $2[7] !== setPendingConfirmations || $2[8] !== setPlugins) {
76337
+ if ($2[5] !== setActiveTools || $2[6] !== setPendingConfirmations || $2[7] !== setPlugins) {
76298
76338
  const handleNotification = (data) => {
76299
76339
  if (data.method === "confirmation.request" && data.params) {
76300
76340
  const params = data.params;
@@ -76326,16 +76366,10 @@ var useServerNotifications = (t0) => {
76326
76366
  if (typeof params_0.plugin === "string" && typeof params_0.state === "string" && validTabStates.has(params_0.state) && VALID_PLUGIN_NAME.test(params_0.plugin)) {
76327
76367
  const pluginName = params_0.plugin;
76328
76368
  const newState = params_0.state;
76329
- setPlugins((prev_1) => {
76330
- if (prev_1.length === 0) {
76331
- pendingTabStates.current.set(pluginName, newState);
76332
- return prev_1;
76333
- }
76334
- return prev_1.map((p3) => p3.name === pluginName ? {
76335
- ...p3,
76336
- tabState: newState
76337
- } : p3);
76338
- });
76369
+ setPlugins((prev_1) => prev_1.map((p3) => p3.name === pluginName ? {
76370
+ ...p3,
76371
+ tabState: newState
76372
+ } : p3));
76339
76373
  }
76340
76374
  }
76341
76375
  if (data.method === "tool.invocationStart" && data.params) {
@@ -76379,13 +76413,12 @@ var useServerNotifications = (t0) => {
76379
76413
  handleNotification,
76380
76414
  clearConfirmationTimeout
76381
76415
  };
76382
- $2[5] = pendingTabStates;
76383
- $2[6] = setActiveTools;
76384
- $2[7] = setPendingConfirmations;
76385
- $2[8] = setPlugins;
76386
- $2[9] = t6;
76416
+ $2[5] = setActiveTools;
76417
+ $2[6] = setPendingConfirmations;
76418
+ $2[7] = setPlugins;
76419
+ $2[8] = t6;
76387
76420
  } else {
76388
- t6 = $2[9];
76421
+ t6 = $2[8];
76389
76422
  }
76390
76423
  return t6;
76391
76424
  };
@@ -76556,7 +76589,7 @@ var BROWSER_TOOLS_CATALOG = [{
76556
76589
  }];
76557
76590
 
76558
76591
  // ../../node_modules/overlayscrollbars-react/overlayscrollbars-react.mjs
76559
- var import_react20 = __toESM(require_react(), 1);
76592
+ var import_react21 = __toESM(require_react(), 1);
76560
76593
 
76561
76594
  // ../../node_modules/overlayscrollbars/overlayscrollbars.mjs
76562
76595
  var createCache = (t2, n2) => {
@@ -79155,22 +79188,22 @@ var S2 = () => {
79155
79188
  ];
79156
79189
  };
79157
79190
  var F2 = (l2) => {
79158
- const { options: o2, events: t2, defer: c2 } = l2 || {}, [a2, i2] = (0, import_react20.useMemo)(S2, []), r3 = (0, import_react20.useRef)(null), u2 = (0, import_react20.useRef)(c2), s2 = (0, import_react20.useRef)(o2), n2 = (0, import_react20.useRef)(t2);
79159
- return (0, import_react20.useEffect)(() => {
79191
+ const { options: o2, events: t2, defer: c2 } = l2 || {}, [a2, i2] = (0, import_react21.useMemo)(S2, []), r3 = (0, import_react21.useRef)(null), u2 = (0, import_react21.useRef)(c2), s2 = (0, import_react21.useRef)(o2), n2 = (0, import_react21.useRef)(t2);
79192
+ return (0, import_react21.useEffect)(() => {
79160
79193
  u2.current = c2;
79161
- }, [c2]), (0, import_react20.useEffect)(() => {
79194
+ }, [c2]), (0, import_react21.useEffect)(() => {
79162
79195
  const { current: e2 } = r3;
79163
79196
  s2.current = o2, OverlayScrollbars.valid(e2) && e2.options(o2 || {}, true);
79164
- }, [o2]), (0, import_react20.useEffect)(() => {
79197
+ }, [o2]), (0, import_react21.useEffect)(() => {
79165
79198
  const { current: e2 } = r3;
79166
79199
  n2.current = t2, OverlayScrollbars.valid(e2) && e2.on(t2 || {}, true);
79167
- }, [t2]), (0, import_react20.useEffect)(
79200
+ }, [t2]), (0, import_react21.useEffect)(
79168
79201
  () => () => {
79169
79202
  var e2;
79170
79203
  i2(), (e2 = r3.current) == null || e2.destroy();
79171
79204
  },
79172
79205
  []
79173
- ), (0, import_react20.useMemo)(
79206
+ ), (0, import_react21.useMemo)(
79174
79207
  () => [
79175
79208
  (e2) => {
79176
79209
  const v2 = r3.current;
@@ -79185,8 +79218,8 @@ var F2 = (l2) => {
79185
79218
  );
79186
79219
  };
79187
79220
  var q2 = (l2, o2) => {
79188
- const { element: t2 = "div", options: c2, events: a2, defer: i2, children: r3, ...u2 } = l2, s2 = t2, n2 = (0, import_react20.useRef)(null), e2 = (0, import_react20.useRef)(null), [v2, f2] = F2({ options: c2, events: a2, defer: i2 });
79189
- return (0, import_react20.useEffect)(() => {
79221
+ const { element: t2 = "div", options: c2, events: a2, defer: i2, children: r3, ...u2 } = l2, s2 = t2, n2 = (0, import_react21.useRef)(null), e2 = (0, import_react21.useRef)(null), [v2, f2] = F2({ options: c2, events: a2, defer: i2 });
79222
+ return (0, import_react21.useEffect)(() => {
79190
79223
  const { current: y2 } = n2, { current: b2 } = e2;
79191
79224
  if (!y2)
79192
79225
  return;
@@ -79208,7 +79241,7 @@ var q2 = (l2, o2) => {
79208
79241
  var R2;
79209
79242
  return (R2 = f2()) == null ? void 0 : R2.destroy();
79210
79243
  };
79211
- }, [v2, t2]), (0, import_react20.useImperativeHandle)(
79244
+ }, [v2, t2]), (0, import_react21.useImperativeHandle)(
79212
79245
  o2,
79213
79246
  () => ({
79214
79247
  osInstance: f2,
@@ -79216,17 +79249,17 @@ var q2 = (l2, o2) => {
79216
79249
  }),
79217
79250
  []
79218
79251
  ), // @ts-ignore
79219
- /* @__PURE__ */ import_react20.default.createElement(s2, { "data-overlayscrollbars-initialize": "", ref: n2, ...u2 }, t2 === "body" ? r3 : /* @__PURE__ */ import_react20.default.createElement("div", { "data-overlayscrollbars-contents": "", ref: e2 }, r3));
79252
+ /* @__PURE__ */ import_react21.default.createElement(s2, { "data-overlayscrollbars-initialize": "", ref: n2, ...u2 }, t2 === "body" ? r3 : /* @__PURE__ */ import_react21.default.createElement("div", { "data-overlayscrollbars-contents": "", ref: e2 }, r3));
79220
79253
  };
79221
- var g2 = (0, import_react20.forwardRef)(q2);
79254
+ var g2 = (0, import_react21.forwardRef)(q2);
79222
79255
 
79223
79256
  // src/side-panel/App.tsx
79224
- var import_react21 = __toESM(require_react(), 1);
79257
+ var import_react22 = __toESM(require_react(), 1);
79225
79258
  var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1);
79226
79259
  var App = () => {
79227
- const $2 = (0, import_compiler_runtime31.c)(68);
79228
- const [connected, setConnected] = (0, import_react21.useState)(false);
79229
- const [disconnectReason, setDisconnectReason] = (0, import_react21.useState)();
79260
+ const $2 = (0, import_compiler_runtime31.c)(67);
79261
+ const [connected, setConnected] = (0, import_react22.useState)(false);
79262
+ const [disconnectReason, setDisconnectReason] = (0, import_react22.useState)();
79230
79263
  let t0;
79231
79264
  if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79232
79265
  t0 = [];
@@ -79234,7 +79267,7 @@ var App = () => {
79234
79267
  } else {
79235
79268
  t0 = $2[0];
79236
79269
  }
79237
- const [plugins, setPlugins] = (0, import_react21.useState)(t0);
79270
+ const [plugins, setPlugins] = (0, import_react22.useState)(t0);
79238
79271
  let t1;
79239
79272
  if ($2[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79240
79273
  t1 = [];
@@ -79242,10 +79275,10 @@ var App = () => {
79242
79275
  } else {
79243
79276
  t1 = $2[1];
79244
79277
  }
79245
- const [failedPlugins, setFailedPlugins] = (0, import_react21.useState)(t1);
79246
- const [browserTools, setBrowserTools] = (0, import_react21.useState)(_temp28);
79247
- const [serverVersion, setServerVersion] = (0, import_react21.useState)(void 0);
79248
- const [loading, setLoading] = (0, import_react21.useState)(true);
79278
+ const [failedPlugins, setFailedPlugins] = (0, import_react22.useState)(t1);
79279
+ const [browserTools, setBrowserTools] = (0, import_react22.useState)(_temp28);
79280
+ const [serverVersion, setServerVersion] = (0, import_react22.useState)(void 0);
79281
+ const [loading, setLoading] = (0, import_react22.useState)(true);
79249
79282
  let t2;
79250
79283
  if ($2[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79251
79284
  t2 = /* @__PURE__ */ new Set();
@@ -79253,8 +79286,8 @@ var App = () => {
79253
79286
  } else {
79254
79287
  t2 = $2[2];
79255
79288
  }
79256
- const [activeTools, setActiveTools] = (0, import_react21.useState)(t2);
79257
- const [searchQuery, setSearchQuery] = (0, import_react21.useState)("");
79289
+ const [activeTools, setActiveTools] = (0, import_react22.useState)(t2);
79290
+ const [searchQuery, setSearchQuery] = (0, import_react22.useState)("");
79258
79291
  let t3;
79259
79292
  if ($2[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79260
79293
  t3 = [];
@@ -79262,7 +79295,7 @@ var App = () => {
79262
79295
  } else {
79263
79296
  t3 = $2[3];
79264
79297
  }
79265
- const [pendingConfirmations, setPendingConfirmations] = (0, import_react21.useState)(t3);
79298
+ const [pendingConfirmations, setPendingConfirmations] = (0, import_react22.useState)(t3);
79266
79299
  let t4;
79267
79300
  if ($2[4] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79268
79301
  t4 = [];
@@ -79270,8 +79303,8 @@ var App = () => {
79270
79303
  } else {
79271
79304
  t4 = $2[4];
79272
79305
  }
79273
- const [npmResults, setNpmResults] = (0, import_react21.useState)(t4);
79274
- const [npmSearching, setNpmSearching] = (0, import_react21.useState)(false);
79306
+ const [npmResults, setNpmResults] = (0, import_react22.useState)(t4);
79307
+ const [npmSearching, setNpmSearching] = (0, import_react22.useState)(false);
79275
79308
  let t5;
79276
79309
  if ($2[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79277
79310
  t5 = /* @__PURE__ */ new Set();
@@ -79279,7 +79312,7 @@ var App = () => {
79279
79312
  } else {
79280
79313
  t5 = $2[5];
79281
79314
  }
79282
- const [installingPlugins, setInstallingPlugins] = (0, import_react21.useState)(t5);
79315
+ const [installingPlugins, setInstallingPlugins] = (0, import_react22.useState)(t5);
79283
79316
  let t6;
79284
79317
  if ($2[6] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79285
79318
  t6 = /* @__PURE__ */ new Set();
@@ -79287,7 +79320,7 @@ var App = () => {
79287
79320
  } else {
79288
79321
  t6 = $2[6];
79289
79322
  }
79290
- const [removingPlugins, setRemovingPlugins] = (0, import_react21.useState)(t6);
79323
+ const [removingPlugins, setRemovingPlugins] = (0, import_react22.useState)(t6);
79291
79324
  let t7;
79292
79325
  if ($2[7] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79293
79326
  t7 = /* @__PURE__ */ new Map();
@@ -79295,7 +79328,7 @@ var App = () => {
79295
79328
  } else {
79296
79329
  t7 = $2[7];
79297
79330
  }
79298
- const [installErrors, setInstallErrors] = (0, import_react21.useState)(t7);
79331
+ const [installErrors, setInstallErrors] = (0, import_react22.useState)(t7);
79299
79332
  let t8;
79300
79333
  if ($2[8] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79301
79334
  t8 = /* @__PURE__ */ new Map();
@@ -79303,8 +79336,7 @@ var App = () => {
79303
79336
  } else {
79304
79337
  t8 = $2[8];
79305
79338
  }
79306
- const [pluginErrors, setPluginErrors] = (0, import_react21.useState)(t8);
79307
- const lastFetchRef = (0, import_react21.useRef)(0);
79339
+ const [pluginErrors, setPluginErrors] = (0, import_react22.useState)(t8);
79308
79340
  let t9;
79309
79341
  if ($2[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79310
79342
  t9 = /* @__PURE__ */ new Map();
@@ -79312,74 +79344,65 @@ var App = () => {
79312
79344
  } else {
79313
79345
  t9 = $2[9];
79314
79346
  }
79315
- const pluginErrorTimers = (0, import_react21.useRef)(t9);
79347
+ const pluginErrorTimers = (0, import_react22.useRef)(t9);
79348
+ const npmSearchTimer = (0, import_react22.useRef)(void 0);
79349
+ const npmSearchCounter = (0, import_react22.useRef)(0);
79350
+ const connectedRef = (0, import_react22.useRef)(connected);
79351
+ const loadingRef = (0, import_react22.useRef)(loading);
79352
+ const pluginsRef = (0, import_react22.useRef)(plugins);
79316
79353
  let t10;
79317
- if ($2[10] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79318
- t10 = /* @__PURE__ */ new Map();
79319
- $2[10] = t10;
79320
- } else {
79321
- t10 = $2[10];
79322
- }
79323
- const pendingTabStates = (0, import_react21.useRef)(t10);
79324
- const npmSearchTimer = (0, import_react21.useRef)(void 0);
79325
- const npmSearchCounter = (0, import_react21.useRef)(0);
79326
- const connectedRef = (0, import_react21.useRef)(connected);
79327
- const loadingRef = (0, import_react21.useRef)(loading);
79328
- const pluginsRef = (0, import_react21.useRef)(plugins);
79329
79354
  let t11;
79330
- let t12;
79331
- if ($2[11] !== connected || $2[12] !== loading || $2[13] !== plugins) {
79332
- t11 = () => {
79355
+ if ($2[10] !== connected || $2[11] !== loading || $2[12] !== plugins) {
79356
+ t10 = () => {
79333
79357
  connectedRef.current = connected;
79334
79358
  loadingRef.current = loading;
79335
79359
  pluginsRef.current = plugins;
79336
79360
  };
79337
- t12 = [connected, loading, plugins];
79338
- $2[11] = connected;
79339
- $2[12] = loading;
79340
- $2[13] = plugins;
79361
+ t11 = [connected, loading, plugins];
79362
+ $2[10] = connected;
79363
+ $2[11] = loading;
79364
+ $2[12] = plugins;
79365
+ $2[13] = t10;
79341
79366
  $2[14] = t11;
79342
- $2[15] = t12;
79343
79367
  } else {
79368
+ t10 = $2[13];
79344
79369
  t11 = $2[14];
79345
- t12 = $2[15];
79346
79370
  }
79347
- (0, import_react21.useEffect)(t11, t12);
79348
- let t13;
79349
- if ($2[16] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79350
- t13 = {
79371
+ (0, import_react22.useEffect)(t10, t11);
79372
+ let t12;
79373
+ if ($2[15] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79374
+ t12 = {
79351
79375
  setPlugins,
79352
79376
  setActiveTools,
79353
- setPendingConfirmations,
79354
- pendingTabStates
79377
+ setPendingConfirmations
79355
79378
  };
79356
- $2[16] = t13;
79379
+ $2[15] = t12;
79357
79380
  } else {
79358
- t13 = $2[16];
79381
+ t12 = $2[15];
79359
79382
  }
79360
79383
  const {
79361
79384
  handleNotification,
79362
79385
  clearConfirmationTimeout
79363
- } = useServerNotifications(t13);
79386
+ } = useServerNotifications(t12);
79387
+ let t13;
79364
79388
  let t14;
79365
- let t15;
79366
- if ($2[17] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79367
- t14 = () => () => {
79389
+ if ($2[16] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79390
+ t13 = () => () => {
79368
79391
  for (const timer of pluginErrorTimers.current.values()) {
79369
79392
  clearTimeout(timer);
79370
79393
  }
79371
79394
  };
79372
- t15 = [];
79395
+ t14 = [];
79396
+ $2[16] = t13;
79373
79397
  $2[17] = t14;
79374
- $2[18] = t15;
79375
79398
  } else {
79399
+ t13 = $2[16];
79376
79400
  t14 = $2[17];
79377
- t15 = $2[18];
79378
79401
  }
79379
- (0, import_react21.useEffect)(t14, t15);
79380
- let t16;
79381
- if ($2[19] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79382
- t16 = (pluginName, message) => {
79402
+ (0, import_react22.useEffect)(t13, t14);
79403
+ let t15;
79404
+ if ($2[18] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79405
+ t15 = (pluginName, message) => {
79383
79406
  const existing = pluginErrorTimers.current.get(pluginName);
79384
79407
  if (existing) {
79385
79408
  clearTimeout(existing);
@@ -79394,14 +79417,14 @@ var App = () => {
79394
79417
  pluginErrorTimers.current.delete(pluginName);
79395
79418
  }, ERROR_DISPLAY_DURATION_MS));
79396
79419
  };
79397
- $2[19] = t16;
79420
+ $2[18] = t15;
79398
79421
  } else {
79399
- t16 = $2[19];
79422
+ t15 = $2[18];
79400
79423
  }
79401
- const showPluginError = t16;
79402
- let t17;
79403
- if ($2[20] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79404
- t17 = (pluginName_0) => {
79424
+ const showPluginError = t15;
79425
+ let t16;
79426
+ if ($2[19] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79427
+ t16 = (pluginName_0) => {
79405
79428
  const existing_0 = pluginErrorTimers.current.get(pluginName_0);
79406
79429
  if (existing_0) {
79407
79430
  clearTimeout(existing_0);
@@ -79413,14 +79436,14 @@ var App = () => {
79413
79436
  return next_0;
79414
79437
  });
79415
79438
  };
79416
- $2[20] = t17;
79439
+ $2[19] = t16;
79417
79440
  } else {
79418
- t17 = $2[20];
79441
+ t16 = $2[19];
79419
79442
  }
79420
- const clearPluginError = t17;
79421
- let t18;
79422
- if ($2[21] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79423
- t18 = (query) => {
79443
+ const clearPluginError = t16;
79444
+ let t17;
79445
+ if ($2[20] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79446
+ t17 = (query) => {
79424
79447
  setSearchQuery(query);
79425
79448
  clearTimeout(npmSearchTimer.current);
79426
79449
  if (!query.trim()) {
@@ -79446,14 +79469,14 @@ var App = () => {
79446
79469
  });
79447
79470
  }, 400);
79448
79471
  };
79449
- $2[21] = t18;
79472
+ $2[20] = t17;
79450
79473
  } else {
79451
- t18 = $2[21];
79474
+ t17 = $2[20];
79452
79475
  }
79453
- const handleSearchChange = t18;
79454
- let t19;
79455
- if ($2[22] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79456
- t19 = (name) => {
79476
+ const handleSearchChange = t17;
79477
+ let t18;
79478
+ if ($2[21] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79479
+ t18 = (name) => {
79457
79480
  setInstallingPlugins((prev_2) => new Set(prev_2).add(name));
79458
79481
  setInstallErrors((prev_3) => {
79459
79482
  const next_1 = new Map(prev_3);
@@ -79476,14 +79499,14 @@ var App = () => {
79476
79499
  setInstallErrors((prev_6) => new Map(prev_6).set(name, err instanceof Error ? err.message : String(err)));
79477
79500
  });
79478
79501
  };
79479
- $2[22] = t19;
79502
+ $2[21] = t18;
79480
79503
  } else {
79481
- t19 = $2[22];
79504
+ t18 = $2[21];
79482
79505
  }
79483
- const handleInstall = t19;
79484
- let t20;
79485
- if ($2[23] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79486
- t20 = (pluginName_1) => {
79506
+ const handleInstall = t18;
79507
+ let t19;
79508
+ if ($2[22] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79509
+ t19 = (pluginName_1) => {
79487
79510
  clearPluginError(pluginName_1);
79488
79511
  setRemovingPlugins((prev_7) => new Set(prev_7).add(pluginName_1));
79489
79512
  removePlugin(pluginName_1).then(() => {
@@ -79501,73 +79524,53 @@ var App = () => {
79501
79524
  showPluginError(pluginName_1, err_0 instanceof Error ? err_0.message : String(err_0));
79502
79525
  });
79503
79526
  };
79504
- $2[23] = t20;
79527
+ $2[22] = t19;
79505
79528
  } else {
79506
- t20 = $2[23];
79529
+ t19 = $2[22];
79507
79530
  }
79508
- const handleRemove = t20;
79509
- let t21;
79510
- if ($2[24] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79511
- t21 = (pluginName_2) => {
79531
+ const handleRemove = t19;
79532
+ let t20;
79533
+ if ($2[23] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79534
+ t20 = (pluginName_2) => {
79512
79535
  clearPluginError(pluginName_2);
79513
79536
  updatePlugin(pluginName_2).catch((err_1) => {
79514
79537
  showPluginError(pluginName_2, err_1 instanceof Error ? err_1.message : String(err_1));
79515
79538
  });
79516
79539
  };
79517
- $2[24] = t21;
79540
+ $2[23] = t20;
79518
79541
  } else {
79519
- t21 = $2[24];
79542
+ t20 = $2[23];
79520
79543
  }
79521
- const handleUpdate = t21;
79544
+ const handleUpdate = t20;
79545
+ let t21;
79522
79546
  let t22;
79523
- let t23;
79524
- if ($2[25] !== handleNotification) {
79525
- t22 = () => {
79526
- const loadPlugins = () => {
79527
- const now = Date.now();
79528
- if (now - lastFetchRef.current < 200) {
79529
- return Promise.resolve();
79530
- }
79531
- lastFetchRef.current = now;
79532
- return fetchConfigState().then((result_0) => {
79533
- let updatedPlugins = result_0.plugins ?? [];
79534
- if (pendingTabStates.current.size > 0) {
79535
- updatedPlugins = updatedPlugins.map((p3) => {
79536
- const buffered = pendingTabStates.current.get(p3.name);
79537
- return buffered ? {
79538
- ...p3,
79539
- tabState: buffered
79540
- } : p3;
79541
- });
79542
- pendingTabStates.current.clear();
79543
- }
79544
- setPlugins(updatedPlugins);
79545
- setFailedPlugins(result_0.failedPlugins ?? []);
79546
- setBrowserTools((prev_10) => prev_10.map((t_0) => {
79547
- const serverTool = result_0.browserTools?.find((s2) => s2.name === t_0.name);
79548
- return serverTool ? {
79549
- ...t_0,
79550
- enabled: serverTool.enabled
79551
- } : t_0;
79552
- }));
79553
- setServerVersion(result_0.serverVersion);
79554
- setActiveTools((prev_11) => {
79555
- const next_6 = /* @__PURE__ */ new Set();
79556
- for (const key of prev_11) {
79557
- if (key.startsWith("browser:") || updatedPlugins.some((p_0) => key.startsWith(p_0.name + ":"))) {
79558
- next_6.add(key);
79559
- }
79547
+ if ($2[24] !== handleNotification) {
79548
+ t21 = () => {
79549
+ const applyFullState = (result_0) => {
79550
+ setConnected(result_0.connected);
79551
+ setDisconnectReason(result_0.disconnectReason);
79552
+ setPlugins(result_0.plugins);
79553
+ setFailedPlugins(result_0.failedPlugins);
79554
+ setBrowserTools((prev_10) => prev_10.map((t_0) => {
79555
+ const serverTool = result_0.browserTools.find((s2) => s2.name === t_0.name);
79556
+ return serverTool ? {
79557
+ ...t_0,
79558
+ enabled: serverTool.enabled
79559
+ } : t_0;
79560
+ }));
79561
+ setServerVersion(result_0.serverVersion);
79562
+ setActiveTools((prev_11) => {
79563
+ const next_6 = /* @__PURE__ */ new Set();
79564
+ for (const key of prev_11) {
79565
+ if (key.startsWith("browser:") || result_0.plugins.some((p3) => key.startsWith(p3.name + ":"))) {
79566
+ next_6.add(key);
79560
79567
  }
79561
- return next_6;
79562
- });
79563
- }).catch(_temp36);
79568
+ }
79569
+ return next_6;
79570
+ });
79564
79571
  };
79565
- getConnectionState().then(async (result_1) => {
79566
- setConnected(result_1.connected);
79567
- setDisconnectReason(result_1.disconnectReason);
79568
- if (result_1.connected) {
79569
- await loadPlugins();
79570
- }
79572
+ getFullState().then((result_1) => {
79573
+ applyFullState(result_1);
79571
79574
  setLoading(false);
79572
79575
  }).catch(() => {
79573
79576
  setLoading(false);
@@ -79582,7 +79585,7 @@ var App = () => {
79582
79585
  connected: connectedRef.current,
79583
79586
  loading: loadingRef.current,
79584
79587
  pluginCount: currentPlugins.length,
79585
- plugins: currentPlugins.map(_temp43)
79588
+ plugins: currentPlugins.map(_temp36)
79586
79589
  },
79587
79590
  html
79588
79591
  });
@@ -79593,7 +79596,7 @@ var App = () => {
79593
79596
  setConnected(isConnected);
79594
79597
  setDisconnectReason(isConnected ? void 0 : message_0.data.disconnectReason);
79595
79598
  if (isConnected) {
79596
- loadPlugins();
79599
+ getFullState().then(applyFullState).catch(_temp43);
79597
79600
  } else {
79598
79601
  setPlugins([]);
79599
79602
  setFailedPlugins([]);
@@ -79605,7 +79608,6 @@ var App = () => {
79605
79608
  clearTimeout(npmSearchTimer.current);
79606
79609
  setNpmResults([]);
79607
79610
  setNpmSearching(false);
79608
- rejectAllPending();
79609
79611
  }
79610
79612
  sendResponse({
79611
79613
  ok: true
@@ -79614,14 +79616,8 @@ var App = () => {
79614
79616
  }
79615
79617
  if (message_0.type === "sp:serverMessage") {
79616
79618
  const data = message_0.data;
79617
- if (handleServerResponse(data)) {
79618
- sendResponse({
79619
- ok: true
79620
- });
79621
- return true;
79622
- }
79623
79619
  if (data.method === "plugins.changed") {
79624
- loadPlugins();
79620
+ getFullState().then(applyFullState).catch(_temp62);
79625
79621
  sendResponse({
79626
79622
  ok: true
79627
79623
  });
@@ -79633,13 +79629,6 @@ var App = () => {
79633
79629
  });
79634
79630
  return true;
79635
79631
  }
79636
- if (message_0.type === "ws:message") {
79637
- const wsData = message_0.data;
79638
- if (wsData?.method === "sync.full") {
79639
- loadPlugins();
79640
- }
79641
- return false;
79642
- }
79643
79632
  return false;
79644
79633
  };
79645
79634
  chrome.runtime.onMessage.addListener(listener);
@@ -79648,65 +79637,65 @@ var App = () => {
79648
79637
  chrome.runtime.onMessage.removeListener(listener);
79649
79638
  };
79650
79639
  };
79651
- t23 = [handleNotification];
79652
- $2[25] = handleNotification;
79640
+ t22 = [handleNotification];
79641
+ $2[24] = handleNotification;
79642
+ $2[25] = t21;
79653
79643
  $2[26] = t22;
79654
- $2[27] = t23;
79655
79644
  } else {
79645
+ t21 = $2[25];
79656
79646
  t22 = $2[26];
79657
- t23 = $2[27];
79658
79647
  }
79659
- (0, import_react21.useEffect)(t22, t23);
79660
- let t24;
79661
- if ($2[28] !== clearConfirmationTimeout) {
79662
- t24 = (id, decision, scope) => {
79648
+ (0, import_react22.useEffect)(t21, t22);
79649
+ let t23;
79650
+ if ($2[27] !== clearConfirmationTimeout) {
79651
+ t23 = (id, decision, scope) => {
79663
79652
  clearConfirmationTimeout(id);
79664
79653
  sendConfirmationResponse(id, decision, scope);
79665
79654
  setPendingConfirmations((prev_12) => prev_12.filter((c2) => c2.id !== id));
79666
79655
  };
79667
- $2[28] = clearConfirmationTimeout;
79668
- $2[29] = t24;
79656
+ $2[27] = clearConfirmationTimeout;
79657
+ $2[28] = t23;
79669
79658
  } else {
79670
- t24 = $2[29];
79659
+ t23 = $2[28];
79671
79660
  }
79672
- const handleConfirmationRespond = t24;
79673
- let t25;
79674
- if ($2[30] !== clearConfirmationTimeout || $2[31] !== pendingConfirmations) {
79675
- t25 = () => {
79661
+ const handleConfirmationRespond = t23;
79662
+ let t24;
79663
+ if ($2[29] !== clearConfirmationTimeout || $2[30] !== pendingConfirmations) {
79664
+ t24 = () => {
79676
79665
  for (const c_0 of pendingConfirmations) {
79677
79666
  clearConfirmationTimeout(c_0.id);
79678
79667
  sendConfirmationResponse(c_0.id, "deny");
79679
79668
  }
79680
79669
  setPendingConfirmations([]);
79681
79670
  };
79682
- $2[30] = clearConfirmationTimeout;
79683
- $2[31] = pendingConfirmations;
79684
- $2[32] = t25;
79671
+ $2[29] = clearConfirmationTimeout;
79672
+ $2[30] = pendingConfirmations;
79673
+ $2[31] = t24;
79685
79674
  } else {
79686
- t25 = $2[32];
79675
+ t24 = $2[31];
79687
79676
  }
79688
- const handleDenyAll = t25;
79677
+ const handleDenyAll = t24;
79689
79678
  const hasContent = plugins.length > 0 || failedPlugins.length > 0 || browserTools.length > 0;
79690
79679
  const showPlugins = !loading && connected && (hasContent || !!searchQuery);
79691
79680
  const showSearchBar = connected && !loading;
79692
- let t26;
79693
- if ($2[33] !== connected || $2[34] !== handleConfirmationRespond || $2[35] !== handleDenyAll || $2[36] !== pendingConfirmations) {
79694
- t26 = connected && pendingConfirmations.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ConfirmationDialog, {
79681
+ let t25;
79682
+ if ($2[32] !== connected || $2[33] !== handleConfirmationRespond || $2[34] !== handleDenyAll || $2[35] !== pendingConfirmations) {
79683
+ t25 = connected && pendingConfirmations.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ConfirmationDialog, {
79695
79684
  confirmations: pendingConfirmations,
79696
79685
  onRespond: handleConfirmationRespond,
79697
79686
  onDenyAll: handleDenyAll
79698
79687
  });
79699
- $2[33] = connected;
79700
- $2[34] = handleConfirmationRespond;
79701
- $2[35] = handleDenyAll;
79702
- $2[36] = pendingConfirmations;
79703
- $2[37] = t26;
79688
+ $2[32] = connected;
79689
+ $2[33] = handleConfirmationRespond;
79690
+ $2[34] = handleDenyAll;
79691
+ $2[35] = pendingConfirmations;
79692
+ $2[36] = t25;
79704
79693
  } else {
79705
- t26 = $2[37];
79694
+ t25 = $2[36];
79706
79695
  }
79707
- let t27;
79708
- if ($2[38] !== searchQuery || $2[39] !== showSearchBar) {
79709
- t27 = showSearchBar && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", {
79696
+ let t26;
79697
+ if ($2[37] !== searchQuery || $2[38] !== showSearchBar) {
79698
+ t26 = showSearchBar && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", {
79710
79699
  className: "shrink-0 px-4 pt-4 pb-2",
79711
79700
  children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", {
79712
79701
  className: "relative",
@@ -79727,35 +79716,35 @@ var App = () => {
79727
79716
  })]
79728
79717
  })
79729
79718
  });
79730
- $2[38] = searchQuery;
79731
- $2[39] = showSearchBar;
79732
- $2[40] = t27;
79719
+ $2[37] = searchQuery;
79720
+ $2[38] = showSearchBar;
79721
+ $2[39] = t26;
79733
79722
  } else {
79734
- t27 = $2[40];
79723
+ t26 = $2[39];
79735
79724
  }
79725
+ let t27;
79736
79726
  let t28;
79737
- let t29;
79738
- if ($2[41] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79739
- t28 = {
79727
+ if ($2[40] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79728
+ t27 = {
79740
79729
  height: 0
79741
79730
  };
79742
- t29 = {
79731
+ t28 = {
79743
79732
  scrollbars: {
79744
79733
  theme: "os-theme-retro",
79745
79734
  autoHide: "scroll",
79746
79735
  autoHideDelay: 600
79747
79736
  }
79748
79737
  };
79738
+ $2[40] = t27;
79749
79739
  $2[41] = t28;
79750
- $2[42] = t29;
79751
79740
  } else {
79741
+ t27 = $2[40];
79752
79742
  t28 = $2[41];
79753
- t29 = $2[42];
79754
79743
  }
79755
- const t30 = `px-4 pb-4 ${showSearchBar ? "pt-2" : "pt-4"} ${showPlugins ? "" : "flex min-h-full items-center justify-center"}`;
79756
- let t31;
79757
- if ($2[43] !== activeTools || $2[44] !== browserTools || $2[45] !== connected || $2[46] !== disconnectReason || $2[47] !== failedPlugins || $2[48] !== hasContent || $2[49] !== installErrors || $2[50] !== installingPlugins || $2[51] !== loading || $2[52] !== npmResults || $2[53] !== npmSearching || $2[54] !== pluginErrors || $2[55] !== plugins || $2[56] !== removingPlugins || $2[57] !== searchQuery || $2[58] !== serverVersion) {
79758
- t31 = loading ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(LoadingState, {}) : !connected ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(DisconnectedState, {
79744
+ const t29 = `px-4 pb-4 ${showSearchBar ? "pt-2" : "pt-4"} ${showPlugins ? "" : "flex min-h-full items-center justify-center"}`;
79745
+ let t30;
79746
+ if ($2[42] !== activeTools || $2[43] !== browserTools || $2[44] !== connected || $2[45] !== disconnectReason || $2[46] !== failedPlugins || $2[47] !== hasContent || $2[48] !== installErrors || $2[49] !== installingPlugins || $2[50] !== loading || $2[51] !== npmResults || $2[52] !== npmSearching || $2[53] !== pluginErrors || $2[54] !== plugins || $2[55] !== removingPlugins || $2[56] !== searchQuery || $2[57] !== serverVersion) {
79747
+ t30 = loading ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(LoadingState, {}) : !connected ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(DisconnectedState, {
79759
79748
  reason: disconnectReason
79760
79749
  }) : searchQuery ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(SearchResults, {
79761
79750
  plugins,
@@ -79797,66 +79786,66 @@ var App = () => {
79797
79786
  pluginErrors
79798
79787
  })]
79799
79788
  }) : null;
79800
- $2[43] = activeTools;
79801
- $2[44] = browserTools;
79802
- $2[45] = connected;
79803
- $2[46] = disconnectReason;
79804
- $2[47] = failedPlugins;
79805
- $2[48] = hasContent;
79806
- $2[49] = installErrors;
79807
- $2[50] = installingPlugins;
79808
- $2[51] = loading;
79809
- $2[52] = npmResults;
79810
- $2[53] = npmSearching;
79811
- $2[54] = pluginErrors;
79812
- $2[55] = plugins;
79813
- $2[56] = removingPlugins;
79814
- $2[57] = searchQuery;
79815
- $2[58] = serverVersion;
79816
- $2[59] = t31;
79789
+ $2[42] = activeTools;
79790
+ $2[43] = browserTools;
79791
+ $2[44] = connected;
79792
+ $2[45] = disconnectReason;
79793
+ $2[46] = failedPlugins;
79794
+ $2[47] = hasContent;
79795
+ $2[48] = installErrors;
79796
+ $2[49] = installingPlugins;
79797
+ $2[50] = loading;
79798
+ $2[51] = npmResults;
79799
+ $2[52] = npmSearching;
79800
+ $2[53] = pluginErrors;
79801
+ $2[54] = plugins;
79802
+ $2[55] = removingPlugins;
79803
+ $2[56] = searchQuery;
79804
+ $2[57] = serverVersion;
79805
+ $2[58] = t30;
79817
79806
  } else {
79818
- t31 = $2[59];
79807
+ t30 = $2[58];
79819
79808
  }
79820
- let t32;
79821
- if ($2[60] !== t30 || $2[61] !== t31) {
79822
- t32 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(g2, {
79809
+ let t31;
79810
+ if ($2[59] !== t29 || $2[60] !== t30) {
79811
+ t31 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(g2, {
79823
79812
  className: "flex-1",
79824
- style: t28,
79825
- options: t29,
79813
+ style: t27,
79814
+ options: t28,
79826
79815
  children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("main", {
79827
- className: t30,
79828
- children: t31
79816
+ className: t29,
79817
+ children: t30
79829
79818
  })
79830
79819
  });
79820
+ $2[59] = t29;
79831
79821
  $2[60] = t30;
79832
79822
  $2[61] = t31;
79823
+ } else {
79824
+ t31 = $2[61];
79825
+ }
79826
+ let t32;
79827
+ if ($2[62] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79828
+ t32 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Footer, {});
79833
79829
  $2[62] = t32;
79834
79830
  } else {
79835
79831
  t32 = $2[62];
79836
79832
  }
79837
79833
  let t33;
79838
- if ($2[63] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79839
- t33 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Footer, {});
79840
- $2[63] = t33;
79841
- } else {
79842
- t33 = $2[63];
79843
- }
79844
- let t34;
79845
- if ($2[64] !== t26 || $2[65] !== t27 || $2[66] !== t32) {
79846
- t34 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(TooltipObject.Provider, {
79834
+ if ($2[63] !== t25 || $2[64] !== t26 || $2[65] !== t31) {
79835
+ t33 = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(TooltipObject.Provider, {
79847
79836
  children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", {
79848
79837
  className: "text-foreground flex h-screen flex-col overflow-hidden",
79849
- children: [t26, t27, t32, t33]
79838
+ children: [t25, t26, t31, t32]
79850
79839
  })
79851
79840
  });
79841
+ $2[63] = t25;
79852
79842
  $2[64] = t26;
79853
- $2[65] = t27;
79854
- $2[66] = t32;
79855
- $2[67] = t34;
79843
+ $2[65] = t31;
79844
+ $2[66] = t33;
79856
79845
  } else {
79857
- t34 = $2[67];
79846
+ t33 = $2[66];
79858
79847
  }
79859
- return t34;
79848
+ return t33;
79860
79849
  };
79861
79850
  function _temp14(t2) {
79862
79851
  return {
@@ -79867,25 +79856,27 @@ function _temp14(t2) {
79867
79856
  function _temp28() {
79868
79857
  return BROWSER_TOOLS_CATALOG.map(_temp14);
79869
79858
  }
79870
- function _temp36() {
79871
- }
79872
- function _temp43(p_1) {
79859
+ function _temp36(p_0) {
79873
79860
  return {
79874
- name: p_1.name,
79875
- tabState: p_1.tabState
79861
+ name: p_0.name,
79862
+ tabState: p_0.tabState
79876
79863
  };
79877
79864
  }
79865
+ function _temp43() {
79866
+ }
79878
79867
  function _temp53(t_1) {
79879
79868
  return {
79880
79869
  ...t_1,
79881
79870
  enabled: true
79882
79871
  };
79883
79872
  }
79873
+ function _temp62() {
79874
+ }
79884
79875
 
79885
79876
  // src/side-panel/components/ErrorBoundary.tsx
79886
- var import_react22 = __toESM(require_react(), 1);
79877
+ var import_react23 = __toESM(require_react(), 1);
79887
79878
  var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1);
79888
- var ErrorBoundary = class extends import_react22.Component {
79879
+ var ErrorBoundary = class extends import_react23.Component {
79889
79880
  state = {
79890
79881
  hasError: false
79891
79882
  };
@@ -79923,7 +79914,7 @@ var ErrorBoundary = class extends import_react22.Component {
79923
79914
  };
79924
79915
 
79925
79916
  // src/side-panel/index.tsx
79926
- var import_react23 = __toESM(require_react(), 1);
79917
+ var import_react24 = __toESM(require_react(), 1);
79927
79918
  var import_client = __toESM(require_client(), 1);
79928
79919
  var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1);
79929
79920
  var rootEl = document.getElementById("root");
@@ -79931,7 +79922,7 @@ if (!rootEl) {
79931
79922
  throw new Error("Root element not found");
79932
79923
  }
79933
79924
  var root = (0, import_client.createRoot)(rootEl);
79934
- root.render(/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react23.StrictMode, {
79925
+ root.render(/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react24.StrictMode, {
79935
79926
  children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(ErrorBoundary, {
79936
79927
  children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(App, {})
79937
79928
  })