@opentabs-dev/browser-extension 0.0.64 → 0.0.65

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 (52) hide show
  1. package/dist/background-message-handlers.d.ts +3 -1
  2. package/dist/background-message-handlers.d.ts.map +1 -1
  3. package/dist/background-message-handlers.js +14 -1
  4. package/dist/background-message-handlers.js.map +1 -1
  5. package/dist/background.js +210 -140
  6. package/dist/browser-commands/interaction-commands.d.ts +2 -0
  7. package/dist/browser-commands/interaction-commands.d.ts.map +1 -1
  8. package/dist/browser-commands/interaction-commands.js +26 -3
  9. package/dist/browser-commands/interaction-commands.js.map +1 -1
  10. package/dist/browser-commands/key-press-command.d.ts +6 -0
  11. package/dist/browser-commands/key-press-command.d.ts.map +1 -1
  12. package/dist/browser-commands/key-press-command.js +137 -118
  13. package/dist/browser-commands/key-press-command.js.map +1 -1
  14. package/dist/dispatch-helpers.js +2 -2
  15. package/dist/dispatch-helpers.js.map +1 -1
  16. package/dist/extension-messages.d.ts +8 -1
  17. package/dist/extension-messages.d.ts.map +1 -1
  18. package/dist/iife-injection.d.ts +5 -4
  19. package/dist/iife-injection.d.ts.map +1 -1
  20. package/dist/iife-injection.js +21 -12
  21. package/dist/iife-injection.js.map +1 -1
  22. package/dist/message-router.d.ts +2 -0
  23. package/dist/message-router.d.ts.map +1 -1
  24. package/dist/message-router.js +16 -4
  25. package/dist/message-router.js.map +1 -1
  26. package/dist/offscreen/index.js +1 -0
  27. package/dist/offscreen/index.js.map +1 -1
  28. package/dist/side-panel/App.d.ts.map +1 -1
  29. package/dist/side-panel/App.js +22 -2
  30. package/dist/side-panel/App.js.map +1 -1
  31. package/dist/side-panel/bridge.d.ts +5 -1
  32. package/dist/side-panel/bridge.d.ts.map +1 -1
  33. package/dist/side-panel/bridge.js +3 -1
  34. package/dist/side-panel/bridge.js.map +1 -1
  35. package/dist/side-panel/components/FailedPluginCard.d.ts +6 -2
  36. package/dist/side-panel/components/FailedPluginCard.d.ts.map +1 -1
  37. package/dist/side-panel/components/FailedPluginCard.js +11 -3
  38. package/dist/side-panel/components/FailedPluginCard.js.map +1 -1
  39. package/dist/side-panel/components/PluginList.d.ts +3 -1
  40. package/dist/side-panel/components/PluginList.d.ts.map +1 -1
  41. package/dist/side-panel/components/PluginList.js +2 -2
  42. package/dist/side-panel/components/PluginList.js.map +1 -1
  43. package/dist/side-panel/side-panel.js +421 -238
  44. package/dist/side-panel/styles.css +1 -1
  45. package/dist/tab-matching.d.ts +5 -3
  46. package/dist/tab-matching.d.ts.map +1 -1
  47. package/dist/tab-matching.js +27 -9
  48. package/dist/tab-matching.js.map +1 -1
  49. package/dist/tab-state.js +2 -2
  50. package/dist/tab-state.js.map +1 -1
  51. package/manifest.json +1 -1
  52. package/package.json +1 -1
@@ -58464,7 +58464,7 @@ var BROWSER_TOOLS_CATALOG = [{
58464
58464
  group: "Page Inspection"
58465
58465
  }, {
58466
58466
  name: "browser_click_element",
58467
- description: "Click an element on the page matching the given CSS selector. Dispatches a click event on the first matching element. Returns the tag name and trimmed text content of the clicked element. Useful for submitting forms, toggling buttons, and navigating.",
58467
+ description: "Click an element on the page matching the given CSS selector. Dispatches trusted (isTrusted: true) mouse events (mousedown + mouseup) via Chrome DevTools Protocol Input.dispatchMouseEvent at the element center. Returns the tag name and trimmed text content of the clicked element. Useful for submitting forms, toggling buttons, and navigating.",
58468
58468
  summary: "Click an element on the page",
58469
58469
  icon: "mouse-pointer-click",
58470
58470
  group: "Page Interaction"
@@ -58602,7 +58602,7 @@ var BROWSER_TOOLS_CATALOG = [{
58602
58602
  group: "Tabs"
58603
58603
  }, {
58604
58604
  name: "browser_press_key",
58605
- description: "Press a keyboard key on the page. Dispatches a full keyboard event sequence (keydown, keypress for printable keys, keyup) and an InputEvent for printable characters on input/textarea elements. Common use cases: Enter to submit forms, Escape to close modals/dialogs, Tab to move between fields, arrow keys to navigate custom menus/dropdowns, Ctrl+K or Cmd+K for search. Supports Ctrl and Meta (Cmd) as independent modifiers. Uses standard KeyboardEvent.key values.",
58605
+ description: "Press a keyboard key on the page. Dispatches trusted (isTrusted: true) keyboard events via Chrome DevTools Protocol Input.dispatchKeyEvent. Named keys (Enter, Escape, etc.) dispatch rawKeyDown + keyUp; printable characters dispatch keyDown + char + keyUp. Common use cases: Enter to submit forms, Escape to close modals/dialogs, Tab to move between fields, arrow keys to navigate custom menus/dropdowns, Ctrl+K or Cmd+K for search. Supports Ctrl and Meta (Cmd) as independent modifiers. Uses standard KeyboardEvent.key values.",
58606
58606
  summary: "Press a keyboard key on the page",
58607
58607
  icon: "command",
58608
58608
  group: "Page Interaction"
@@ -61434,6 +61434,10 @@ var removePlugin = (name) => sendBgMessage({
61434
61434
  type: "bg:removePlugin",
61435
61435
  name
61436
61436
  });
61437
+ var removeFailedPlugin = (specifier) => sendBgMessage({
61438
+ type: "bg:removeFailedPlugin",
61439
+ specifier
61440
+ });
61437
61441
  var updatePlugin = (name) => sendBgMessage({
61438
61442
  type: "bg:updatePlugin",
61439
61443
  name
@@ -79200,14 +79204,29 @@ var import_compiler_runtime22 = __toESM(require_compiler_runtime(), 1);
79200
79204
  var import_react18 = __toESM(require_react(), 1);
79201
79205
  var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1);
79202
79206
  var FailedPluginCard = (t0) => {
79203
- const $2 = (0, import_compiler_runtime22.c)(13);
79207
+ const $2 = (0, import_compiler_runtime22.c)(36);
79204
79208
  const {
79205
- plugin
79209
+ plugin,
79210
+ onRemove,
79211
+ removing
79206
79212
  } = t0;
79207
79213
  const [expanded, setExpanded] = (0, import_react18.useState)(false);
79214
+ const [confirmOpen, setConfirmOpen] = (0, import_react18.useState)(false);
79208
79215
  let t1;
79209
- if ($2[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79210
- t1 = /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", {
79216
+ if ($2[0] !== onRemove) {
79217
+ t1 = () => {
79218
+ setConfirmOpen(false);
79219
+ onRemove();
79220
+ };
79221
+ $2[0] = onRemove;
79222
+ $2[1] = t1;
79223
+ } else {
79224
+ t1 = $2[1];
79225
+ }
79226
+ const handleConfirmRemove = t1;
79227
+ let t2;
79228
+ if ($2[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79229
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", {
79211
79230
  className: "flex items-center gap-2",
79212
79231
  children: [/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(TriangleAlert, {
79213
79232
  className: "h-4 w-4 shrink-0 text-destructive"
@@ -79216,62 +79235,188 @@ var FailedPluginCard = (t0) => {
79216
79235
  children: "Failed to load"
79217
79236
  })]
79218
79237
  });
79219
- $2[0] = t1;
79220
- } else {
79221
- t1 = $2[0];
79222
- }
79223
- let t2;
79224
- if ($2[1] !== plugin.specifier) {
79225
- t2 = /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", {
79226
- className: "mt-1 truncate text-muted-foreground text-xs",
79227
- children: plugin.specifier
79228
- });
79229
- $2[1] = plugin.specifier;
79230
79238
  $2[2] = t2;
79231
79239
  } else {
79232
79240
  t2 = $2[2];
79233
79241
  }
79234
- const t3 = `mt-1 select-text text-destructive/80 text-xs leading-snug ${expanded ? "" : "line-clamp-2"}`;
79242
+ let t3;
79243
+ if ($2[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79244
+ t3 = () => setConfirmOpen(true);
79245
+ $2[3] = t3;
79246
+ } else {
79247
+ t3 = $2[3];
79248
+ }
79235
79249
  let t4;
79236
- if ($2[3] !== plugin.error || $2[4] !== t3) {
79237
- t4 = /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", {
79238
- className: t3,
79239
- children: plugin.error
79250
+ if ($2[4] !== removing) {
79251
+ t4 = removing ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Loader2, {
79252
+ size: "sm"
79253
+ }) : /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Trash2, {
79254
+ className: "h-3.5 w-3.5"
79240
79255
  });
79241
- $2[3] = plugin.error;
79242
- $2[4] = t3;
79256
+ $2[4] = removing;
79243
79257
  $2[5] = t4;
79244
79258
  } else {
79245
79259
  t4 = $2[5];
79246
79260
  }
79247
79261
  let t5;
79248
- if ($2[6] !== expanded || $2[7] !== plugin.error.length) {
79249
- t5 = plugin.error.length > 100 && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("button", {
79262
+ if ($2[6] !== removing || $2[7] !== t4) {
79263
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", {
79264
+ className: "flex items-center justify-between",
79265
+ children: [t2, /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("button", {
79266
+ type: "button",
79267
+ onClick: t3,
79268
+ disabled: removing,
79269
+ className: "cursor-pointer text-muted-foreground transition-colors hover:text-destructive disabled:opacity-50",
79270
+ children: t4
79271
+ })]
79272
+ });
79273
+ $2[6] = removing;
79274
+ $2[7] = t4;
79275
+ $2[8] = t5;
79276
+ } else {
79277
+ t5 = $2[8];
79278
+ }
79279
+ let t6;
79280
+ if ($2[9] !== plugin.specifier) {
79281
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", {
79282
+ className: "mt-1 truncate text-muted-foreground text-xs",
79283
+ children: plugin.specifier
79284
+ });
79285
+ $2[9] = plugin.specifier;
79286
+ $2[10] = t6;
79287
+ } else {
79288
+ t6 = $2[10];
79289
+ }
79290
+ const t7 = `mt-1 select-text text-destructive/80 text-xs leading-snug ${expanded ? "" : "line-clamp-2"}`;
79291
+ let t8;
79292
+ if ($2[11] !== plugin.error || $2[12] !== t7) {
79293
+ t8 = /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", {
79294
+ className: t7,
79295
+ children: plugin.error
79296
+ });
79297
+ $2[11] = plugin.error;
79298
+ $2[12] = t7;
79299
+ $2[13] = t8;
79300
+ } else {
79301
+ t8 = $2[13];
79302
+ }
79303
+ let t9;
79304
+ if ($2[14] !== expanded || $2[15] !== plugin.error.length) {
79305
+ t9 = plugin.error.length > 100 && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("button", {
79250
79306
  type: "button",
79251
79307
  onClick: () => setExpanded(!expanded),
79252
79308
  className: "mt-1 cursor-pointer text-muted-foreground text-xs underline",
79253
79309
  children: expanded ? "Show less" : "Show more"
79254
79310
  });
79255
- $2[6] = expanded;
79256
- $2[7] = plugin.error.length;
79257
- $2[8] = t5;
79311
+ $2[14] = expanded;
79312
+ $2[15] = plugin.error.length;
79313
+ $2[16] = t9;
79258
79314
  } else {
79259
- t5 = $2[8];
79315
+ t9 = $2[16];
79260
79316
  }
79261
- let t6;
79262
- if ($2[9] !== t2 || $2[10] !== t4 || $2[11] !== t5) {
79263
- t6 = /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", {
79317
+ let t10;
79318
+ if ($2[17] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79319
+ t10 = /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DialogObject.Header, {
79320
+ className: "border-destructive bg-destructive text-destructive-foreground",
79321
+ children: "Remove Plugin Path"
79322
+ });
79323
+ $2[17] = t10;
79324
+ } else {
79325
+ t10 = $2[17];
79326
+ }
79327
+ let t11;
79328
+ if ($2[18] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79329
+ t11 = /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("p", {
79330
+ className: "text-foreground text-sm",
79331
+ children: "Are you sure you want to remove this plugin path from your config?"
79332
+ });
79333
+ $2[18] = t11;
79334
+ } else {
79335
+ t11 = $2[18];
79336
+ }
79337
+ let t12;
79338
+ if ($2[19] !== plugin.specifier) {
79339
+ t12 = /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(DialogObject.Body, {
79340
+ children: [t11, /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("p", {
79341
+ className: "mt-2 break-all rounded border border-border bg-muted/50 p-2 font-mono text-xs",
79342
+ children: plugin.specifier
79343
+ })]
79344
+ });
79345
+ $2[19] = plugin.specifier;
79346
+ $2[20] = t12;
79347
+ } else {
79348
+ t12 = $2[20];
79349
+ }
79350
+ let t13;
79351
+ if ($2[21] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79352
+ t13 = /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DialogObject.Close, {
79353
+ asChild: true,
79354
+ children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Button, {
79355
+ size: "sm",
79356
+ variant: "outline",
79357
+ children: "Cancel"
79358
+ })
79359
+ });
79360
+ $2[21] = t13;
79361
+ } else {
79362
+ t13 = $2[21];
79363
+ }
79364
+ let t14;
79365
+ if ($2[22] !== handleConfirmRemove) {
79366
+ t14 = /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(DialogObject.Footer, {
79367
+ children: [t13, /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Button, {
79368
+ size: "sm",
79369
+ variant: "outline",
79370
+ className: "border-destructive text-destructive",
79371
+ onClick: handleConfirmRemove,
79372
+ children: "Remove"
79373
+ })]
79374
+ });
79375
+ $2[22] = handleConfirmRemove;
79376
+ $2[23] = t14;
79377
+ } else {
79378
+ t14 = $2[23];
79379
+ }
79380
+ let t15;
79381
+ if ($2[24] !== t12 || $2[25] !== t14) {
79382
+ t15 = /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(DialogObject.Content, {
79383
+ children: [t10, t12, t14]
79384
+ });
79385
+ $2[24] = t12;
79386
+ $2[25] = t14;
79387
+ $2[26] = t15;
79388
+ } else {
79389
+ t15 = $2[26];
79390
+ }
79391
+ let t16;
79392
+ if ($2[27] !== confirmOpen || $2[28] !== t15) {
79393
+ t16 = /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DialogObject, {
79394
+ open: confirmOpen,
79395
+ onOpenChange: setConfirmOpen,
79396
+ children: t15
79397
+ });
79398
+ $2[27] = confirmOpen;
79399
+ $2[28] = t15;
79400
+ $2[29] = t16;
79401
+ } else {
79402
+ t16 = $2[29];
79403
+ }
79404
+ let t17;
79405
+ if ($2[30] !== t16 || $2[31] !== t5 || $2[32] !== t6 || $2[33] !== t8 || $2[34] !== t9) {
79406
+ t17 = /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", {
79264
79407
  className: "rounded border-2 border-destructive/50 bg-destructive/10 p-3",
79265
- children: [t1, t2, t4, t5]
79408
+ children: [t5, t6, t8, t9, t16]
79266
79409
  });
79267
- $2[9] = t2;
79268
- $2[10] = t4;
79269
- $2[11] = t5;
79270
- $2[12] = t6;
79410
+ $2[30] = t16;
79411
+ $2[31] = t5;
79412
+ $2[32] = t6;
79413
+ $2[33] = t8;
79414
+ $2[34] = t9;
79415
+ $2[35] = t17;
79271
79416
  } else {
79272
- t6 = $2[12];
79417
+ t17 = $2[35];
79273
79418
  }
79274
- return t6;
79419
+ return t17;
79275
79420
  };
79276
79421
 
79277
79422
  // src/side-panel/components/PluginCard.tsx
@@ -80219,7 +80364,7 @@ function useGroupTransitions(plugins, isFiltering) {
80219
80364
  return t8;
80220
80365
  }
80221
80366
  var PluginList = (t0) => {
80222
- const $2 = (0, import_compiler_runtime26.c)(28);
80367
+ const $2 = (0, import_compiler_runtime26.c)(30);
80223
80368
  const {
80224
80369
  plugins,
80225
80370
  failedPlugins,
@@ -80229,7 +80374,9 @@ var PluginList = (t0) => {
80229
80374
  onUpdate,
80230
80375
  onRemove,
80231
80376
  removingPlugins,
80232
- pluginErrors
80377
+ pluginErrors,
80378
+ onRemoveFailedPlugin,
80379
+ removingFailedPlugins
80233
80380
  } = t0;
80234
80381
  const filterLower = toolFilter.toLowerCase();
80235
80382
  const visiblePlugins = filterLower ? plugins.filter((p3) => (p3.tools ?? []).some((t11) => matchesTool(t11, filterLower))) : plugins;
@@ -80434,15 +80581,21 @@ var PluginList = (t0) => {
80434
80581
  }
80435
80582
  const renderCard = t7;
80436
80583
  let t8;
80437
- if ($2[23] !== visibleFailed) {
80584
+ if ($2[23] !== onRemoveFailedPlugin || $2[24] !== removingFailedPlugins || $2[25] !== visibleFailed) {
80438
80585
  t8 = visibleFailed.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", {
80439
80586
  className: "mb-3 space-y-2",
80440
- children: visibleFailed.map(_temp27)
80587
+ children: visibleFailed.map((fp) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(FailedPluginCard, {
80588
+ plugin: fp,
80589
+ onRemove: () => onRemoveFailedPlugin?.(fp.specifier),
80590
+ removing: removingFailedPlugins?.has(fp.specifier) ?? false
80591
+ }, fp.specifier))
80441
80592
  });
80442
- $2[23] = visibleFailed;
80443
- $2[24] = t8;
80593
+ $2[23] = onRemoveFailedPlugin;
80594
+ $2[24] = removingFailedPlugins;
80595
+ $2[25] = visibleFailed;
80596
+ $2[26] = t8;
80444
80597
  } else {
80445
- t8 = $2[24];
80598
+ t8 = $2[26];
80446
80599
  }
80447
80600
  const t9 = filterLower ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(AccordionComponent, {
80448
80601
  type: "multiple",
@@ -80467,25 +80620,20 @@ var PluginList = (t0) => {
80467
80620
  })]
80468
80621
  });
80469
80622
  let t10;
80470
- if ($2[25] !== t8 || $2[26] !== t9) {
80623
+ if ($2[27] !== t8 || $2[28] !== t9) {
80471
80624
  t10 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, {
80472
80625
  children: [t8, t9]
80473
80626
  });
80474
- $2[25] = t8;
80475
- $2[26] = t9;
80476
- $2[27] = t10;
80627
+ $2[27] = t8;
80628
+ $2[28] = t9;
80629
+ $2[29] = t10;
80477
80630
  } else {
80478
- t10 = $2[27];
80631
+ t10 = $2[29];
80479
80632
  }
80480
80633
  return t10;
80481
80634
  };
80482
80635
  function _temp10() {
80483
80636
  }
80484
- function _temp27(fp) {
80485
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(FailedPluginCard, {
80486
- plugin: fp
80487
- }, fp.specifier);
80488
- }
80489
80637
 
80490
80638
  // src/side-panel/components/retro/Input.tsx
80491
80639
  var import_compiler_runtime27 = __toESM(require_compiler_runtime(), 1);
@@ -81114,7 +81262,7 @@ var useServerNotifications = (t0) => {
81114
81262
  // src/side-panel/App.tsx
81115
81263
  var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1);
81116
81264
  var App = () => {
81117
- const $2 = (0, import_compiler_runtime31.c)(70);
81265
+ const $2 = (0, import_compiler_runtime31.c)(73);
81118
81266
  const [connected, setConnected] = (0, import_react23.useState)(false);
81119
81267
  const [disconnectReason, setDisconnectReason] = (0, import_react23.useState)();
81120
81268
  let t0;
@@ -81133,7 +81281,7 @@ var App = () => {
81133
81281
  t1 = $2[1];
81134
81282
  }
81135
81283
  const [failedPlugins, setFailedPlugins] = (0, import_react23.useState)(t1);
81136
- const [browserTools, setBrowserTools] = (0, import_react23.useState)(_temp28);
81284
+ const [browserTools, setBrowserTools] = (0, import_react23.useState)(_temp27);
81137
81285
  const [browserPermission, setBrowserPermission] = (0, import_react23.useState)("off");
81138
81286
  const [skipPermissions, setSkipPermissions2] = (0, import_react23.useState)(false);
81139
81287
  const [serverVersion, setServerVersion] = (0, import_react23.useState)(void 0);
@@ -81183,12 +81331,12 @@ var App = () => {
81183
81331
  const [removingPlugins, setRemovingPlugins] = (0, import_react23.useState)(t6);
81184
81332
  let t7;
81185
81333
  if ($2[7] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81186
- t7 = /* @__PURE__ */ new Map();
81334
+ t7 = /* @__PURE__ */ new Set();
81187
81335
  $2[7] = t7;
81188
81336
  } else {
81189
81337
  t7 = $2[7];
81190
81338
  }
81191
- const [installErrors, setInstallErrors] = (0, import_react23.useState)(t7);
81339
+ const [removingFailedPlugins, setRemovingFailedPlugins] = (0, import_react23.useState)(t7);
81192
81340
  let t8;
81193
81341
  if ($2[8] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81194
81342
  t8 = /* @__PURE__ */ new Map();
@@ -81196,9 +81344,7 @@ var App = () => {
81196
81344
  } else {
81197
81345
  t8 = $2[8];
81198
81346
  }
81199
- const [pluginErrors, setPluginErrors] = (0, import_react23.useState)(t8);
81200
- const [browserToolsOpen, setBrowserToolsOpen] = (0, import_react23.useState)(false);
81201
- const [browserToolsHydrated, setBrowserToolsHydrated] = (0, import_react23.useState)(false);
81347
+ const [installErrors, setInstallErrors] = (0, import_react23.useState)(t8);
81202
81348
  let t9;
81203
81349
  if ($2[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81204
81350
  t9 = /* @__PURE__ */ new Map();
@@ -81206,65 +81352,75 @@ var App = () => {
81206
81352
  } else {
81207
81353
  t9 = $2[9];
81208
81354
  }
81209
- const pluginErrorTimers = (0, import_react23.useRef)(t9);
81355
+ const [pluginErrors, setPluginErrors] = (0, import_react23.useState)(t9);
81356
+ const [browserToolsOpen, setBrowserToolsOpen] = (0, import_react23.useState)(false);
81357
+ const [browserToolsHydrated, setBrowserToolsHydrated] = (0, import_react23.useState)(false);
81358
+ let t10;
81359
+ if ($2[10] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81360
+ t10 = /* @__PURE__ */ new Map();
81361
+ $2[10] = t10;
81362
+ } else {
81363
+ t10 = $2[10];
81364
+ }
81365
+ const pluginErrorTimers = (0, import_react23.useRef)(t10);
81210
81366
  const npmSearchTimer = (0, import_react23.useRef)(void 0);
81211
81367
  const npmSearchCounter = (0, import_react23.useRef)(0);
81212
81368
  const connectedRef = (0, import_react23.useRef)(connected);
81213
81369
  const loadingRef = (0, import_react23.useRef)(loading);
81214
81370
  const pluginsRef = (0, import_react23.useRef)(plugins);
81215
- let t10;
81216
81371
  let t11;
81217
- if ($2[10] !== connected || $2[11] !== loading || $2[12] !== plugins) {
81218
- t10 = () => {
81372
+ let t12;
81373
+ if ($2[11] !== connected || $2[12] !== loading || $2[13] !== plugins) {
81374
+ t11 = () => {
81219
81375
  connectedRef.current = connected;
81220
81376
  loadingRef.current = loading;
81221
81377
  pluginsRef.current = plugins;
81222
81378
  };
81223
- t11 = [connected, loading, plugins];
81224
- $2[10] = connected;
81225
- $2[11] = loading;
81226
- $2[12] = plugins;
81227
- $2[13] = t10;
81379
+ t12 = [connected, loading, plugins];
81380
+ $2[11] = connected;
81381
+ $2[12] = loading;
81382
+ $2[13] = plugins;
81228
81383
  $2[14] = t11;
81384
+ $2[15] = t12;
81229
81385
  } else {
81230
- t10 = $2[13];
81231
81386
  t11 = $2[14];
81387
+ t12 = $2[15];
81232
81388
  }
81233
- (0, import_react23.useEffect)(t10, t11);
81234
- let t12;
81235
- if ($2[15] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81236
- t12 = {
81389
+ (0, import_react23.useEffect)(t11, t12);
81390
+ let t13;
81391
+ if ($2[16] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81392
+ t13 = {
81237
81393
  setPlugins,
81238
81394
  setActiveTools,
81239
81395
  setPendingConfirmations
81240
81396
  };
81241
- $2[15] = t12;
81397
+ $2[16] = t13;
81242
81398
  } else {
81243
- t12 = $2[15];
81399
+ t13 = $2[16];
81244
81400
  }
81245
81401
  const {
81246
81402
  handleNotification
81247
- } = useServerNotifications(t12);
81248
- let t13;
81403
+ } = useServerNotifications(t13);
81249
81404
  let t14;
81250
- if ($2[16] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81251
- t13 = () => () => {
81405
+ let t15;
81406
+ if ($2[17] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81407
+ t14 = () => () => {
81252
81408
  for (const timer of pluginErrorTimers.current.values()) {
81253
81409
  clearTimeout(timer);
81254
81410
  }
81255
81411
  };
81256
- t14 = [];
81257
- $2[16] = t13;
81412
+ t15 = [];
81258
81413
  $2[17] = t14;
81414
+ $2[18] = t15;
81259
81415
  } else {
81260
- t13 = $2[16];
81261
81416
  t14 = $2[17];
81417
+ t15 = $2[18];
81262
81418
  }
81263
- (0, import_react23.useEffect)(t13, t14);
81264
- let t15;
81419
+ (0, import_react23.useEffect)(t14, t15);
81265
81420
  let t16;
81266
- if ($2[18] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81267
- t15 = () => {
81421
+ let t17;
81422
+ if ($2[19] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81423
+ t16 = () => {
81268
81424
  chrome.storage.session.get("browserToolsOpen").then((result) => {
81269
81425
  const stored = result.browserToolsOpen;
81270
81426
  if (stored === true) {
@@ -81275,17 +81431,17 @@ var App = () => {
81275
81431
  setBrowserToolsHydrated(true);
81276
81432
  });
81277
81433
  };
81278
- t16 = [];
81279
- $2[18] = t15;
81434
+ t17 = [];
81280
81435
  $2[19] = t16;
81436
+ $2[20] = t17;
81281
81437
  } else {
81282
- t15 = $2[18];
81283
81438
  t16 = $2[19];
81439
+ t17 = $2[20];
81284
81440
  }
81285
- (0, import_react23.useEffect)(t15, t16);
81286
- let t17;
81287
- if ($2[20] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81288
- t17 = (pluginName, message) => {
81441
+ (0, import_react23.useEffect)(t16, t17);
81442
+ let t18;
81443
+ if ($2[21] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81444
+ t18 = (pluginName, message) => {
81289
81445
  const existing = pluginErrorTimers.current.get(pluginName);
81290
81446
  if (existing) {
81291
81447
  clearTimeout(existing);
@@ -81300,14 +81456,14 @@ var App = () => {
81300
81456
  pluginErrorTimers.current.delete(pluginName);
81301
81457
  }, ERROR_DISPLAY_DURATION_MS));
81302
81458
  };
81303
- $2[20] = t17;
81459
+ $2[21] = t18;
81304
81460
  } else {
81305
- t17 = $2[20];
81461
+ t18 = $2[21];
81306
81462
  }
81307
- const showPluginError = t17;
81308
- let t18;
81309
- if ($2[21] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81310
- t18 = (pluginName_0) => {
81463
+ const showPluginError = t18;
81464
+ let t19;
81465
+ if ($2[22] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81466
+ t19 = (pluginName_0) => {
81311
81467
  const existing_0 = pluginErrorTimers.current.get(pluginName_0);
81312
81468
  if (existing_0) {
81313
81469
  clearTimeout(existing_0);
@@ -81319,14 +81475,14 @@ var App = () => {
81319
81475
  return next_0;
81320
81476
  });
81321
81477
  };
81322
- $2[21] = t18;
81478
+ $2[22] = t19;
81323
81479
  } else {
81324
- t18 = $2[21];
81480
+ t19 = $2[22];
81325
81481
  }
81326
- const clearPluginError = t18;
81327
- let t19;
81328
- if ($2[22] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81329
- t19 = (query) => {
81482
+ const clearPluginError = t19;
81483
+ let t20;
81484
+ if ($2[23] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81485
+ t20 = (query) => {
81330
81486
  setSearchQuery(query);
81331
81487
  clearTimeout(npmSearchTimer.current);
81332
81488
  if (!query.trim()) {
@@ -81355,14 +81511,14 @@ var App = () => {
81355
81511
  });
81356
81512
  }, 400);
81357
81513
  };
81358
- $2[22] = t19;
81514
+ $2[23] = t20;
81359
81515
  } else {
81360
- t19 = $2[22];
81516
+ t20 = $2[23];
81361
81517
  }
81362
- const handleSearchChange = t19;
81363
- let t20;
81364
- if ($2[23] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81365
- t20 = (name) => {
81518
+ const handleSearchChange = t20;
81519
+ let t21;
81520
+ if ($2[24] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81521
+ t21 = (name) => {
81366
81522
  setInstallingPlugins((prev_2) => new Set(prev_2).add(name));
81367
81523
  setInstallErrors((prev_3) => {
81368
81524
  const next_1 = new Map(prev_3);
@@ -81385,14 +81541,14 @@ var App = () => {
81385
81541
  setInstallErrors((prev_6) => new Map(prev_6).set(name, err instanceof Error ? err.message : String(err)));
81386
81542
  });
81387
81543
  };
81388
- $2[23] = t20;
81544
+ $2[24] = t21;
81389
81545
  } else {
81390
- t20 = $2[23];
81546
+ t21 = $2[24];
81391
81547
  }
81392
- const handleInstall = t20;
81393
- let t21;
81394
- if ($2[24] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81395
- t21 = (pluginName_1) => {
81548
+ const handleInstall = t21;
81549
+ let t22;
81550
+ if ($2[25] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81551
+ t22 = (pluginName_1) => {
81396
81552
  clearPluginError(pluginName_1);
81397
81553
  setRemovingPlugins((prev_7) => new Set(prev_7).add(pluginName_1));
81398
81554
  removePlugin(pluginName_1).then(() => {
@@ -81410,28 +81566,51 @@ var App = () => {
81410
81566
  showPluginError(pluginName_1, err_0 instanceof Error ? err_0.message : String(err_0));
81411
81567
  });
81412
81568
  };
81413
- $2[24] = t21;
81569
+ $2[25] = t22;
81414
81570
  } else {
81415
- t21 = $2[24];
81571
+ t22 = $2[25];
81416
81572
  }
81417
- const handleRemove = t21;
81418
- let t22;
81419
- if ($2[25] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81420
- t22 = (pluginName_2) => {
81573
+ const handleRemove = t22;
81574
+ let t23;
81575
+ if ($2[26] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81576
+ t23 = (specifier) => {
81577
+ setRemovingFailedPlugins((prev_10) => /* @__PURE__ */ new Set([...prev_10, specifier]));
81578
+ removeFailedPlugin(specifier).then(() => {
81579
+ setRemovingFailedPlugins((prev_11) => {
81580
+ const next_6 = new Set(prev_11);
81581
+ next_6.delete(specifier);
81582
+ return next_6;
81583
+ });
81584
+ }).catch(() => {
81585
+ setRemovingFailedPlugins((prev_12) => {
81586
+ const next_7 = new Set(prev_12);
81587
+ next_7.delete(specifier);
81588
+ return next_7;
81589
+ });
81590
+ });
81591
+ };
81592
+ $2[26] = t23;
81593
+ } else {
81594
+ t23 = $2[26];
81595
+ }
81596
+ const handleRemoveFailedPlugin = t23;
81597
+ let t24;
81598
+ if ($2[27] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81599
+ t24 = (pluginName_2) => {
81421
81600
  clearPluginError(pluginName_2);
81422
81601
  updatePlugin(pluginName_2).catch((err_1) => {
81423
81602
  showPluginError(pluginName_2, err_1 instanceof Error ? err_1.message : String(err_1));
81424
81603
  });
81425
81604
  };
81426
- $2[25] = t22;
81605
+ $2[27] = t24;
81427
81606
  } else {
81428
- t22 = $2[25];
81607
+ t24 = $2[27];
81429
81608
  }
81430
- const handleUpdate = t22;
81431
- let t23;
81432
- let t24;
81433
- if ($2[26] !== handleNotification) {
81434
- t23 = () => {
81609
+ const handleUpdate = t24;
81610
+ let t25;
81611
+ let t26;
81612
+ if ($2[28] !== handleNotification) {
81613
+ t25 = () => {
81435
81614
  const applyFullState = (result_1) => {
81436
81615
  setConnected(result_1.connected);
81437
81616
  setDisconnectReason(result_1.disconnectReason);
@@ -81456,14 +81635,14 @@ var App = () => {
81456
81635
  setBrowserPermission(result_1.browserPermission ?? "off");
81457
81636
  setSkipPermissions2(result_1.skipPermissions ?? false);
81458
81637
  setServerVersion(result_1.serverVersion);
81459
- setActiveTools((prev_10) => {
81460
- const next_6 = /* @__PURE__ */ new Set();
81461
- for (const key of prev_10) {
81638
+ setActiveTools((prev_13) => {
81639
+ const next_8 = /* @__PURE__ */ new Set();
81640
+ for (const key of prev_13) {
81462
81641
  if (key.startsWith("browser:") || result_1.plugins.some((p3) => key.startsWith(`${p3.name}:`))) {
81463
- next_6.add(key);
81642
+ next_8.add(key);
81464
81643
  }
81465
81644
  }
81466
- return next_6;
81645
+ return next_8;
81467
81646
  });
81468
81647
  for (const c2 of result_1.pendingConfirmations ?? []) {
81469
81648
  handleNotification({
@@ -81521,6 +81700,7 @@ var App = () => {
81521
81700
  setNpmSearchError(false);
81522
81701
  setInstallingPlugins(/* @__PURE__ */ new Set());
81523
81702
  setRemovingPlugins(/* @__PURE__ */ new Set());
81703
+ setRemovingFailedPlugins(/* @__PURE__ */ new Set());
81524
81704
  setInstallErrors(/* @__PURE__ */ new Map());
81525
81705
  for (const timer_0 of pluginErrorTimers.current.values()) {
81526
81706
  clearTimeout(timer_0);
@@ -81556,44 +81736,44 @@ var App = () => {
81556
81736
  chrome.runtime.onMessage.removeListener(listener);
81557
81737
  };
81558
81738
  };
81559
- t24 = [handleNotification];
81560
- $2[26] = handleNotification;
81561
- $2[27] = t23;
81562
- $2[28] = t24;
81739
+ t26 = [handleNotification];
81740
+ $2[28] = handleNotification;
81741
+ $2[29] = t25;
81742
+ $2[30] = t26;
81563
81743
  } else {
81564
- t23 = $2[27];
81565
- t24 = $2[28];
81744
+ t25 = $2[29];
81745
+ t26 = $2[30];
81566
81746
  }
81567
- (0, import_react23.useEffect)(t23, t24);
81568
- let t25;
81569
- if ($2[29] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81570
- t25 = (id, decision, alwaysAllow) => {
81747
+ (0, import_react23.useEffect)(t25, t26);
81748
+ let t27;
81749
+ if ($2[31] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81750
+ t27 = (id, decision, alwaysAllow) => {
81571
81751
  sendConfirmationResponse(id, decision, alwaysAllow);
81572
- setPendingConfirmations((prev_11) => prev_11.filter((c_0) => c_0.id !== id));
81752
+ setPendingConfirmations((prev_14) => prev_14.filter((c_0) => c_0.id !== id));
81573
81753
  };
81574
- $2[29] = t25;
81754
+ $2[31] = t27;
81575
81755
  } else {
81576
- t25 = $2[29];
81756
+ t27 = $2[31];
81577
81757
  }
81578
- const handleConfirmationRespond = t25;
81758
+ const handleConfirmationRespond = t27;
81579
81759
  const hasContent = plugins.length > 0 || failedPlugins.length > 0 || browserTools.length > 0;
81580
81760
  const showPlugins = !loading && connected && (hasContent || !!searchQuery);
81581
81761
  const showSearchBar = connected && !loading;
81582
- let t26;
81583
- if ($2[30] !== connected || $2[31] !== pendingConfirmations) {
81584
- t26 = connected && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ConfirmationDialog, {
81762
+ let t28;
81763
+ if ($2[32] !== connected || $2[33] !== pendingConfirmations) {
81764
+ t28 = connected && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ConfirmationDialog, {
81585
81765
  confirmations: pendingConfirmations,
81586
81766
  onRespond: handleConfirmationRespond
81587
81767
  });
81588
- $2[30] = connected;
81589
- $2[31] = pendingConfirmations;
81590
- $2[32] = t26;
81768
+ $2[32] = connected;
81769
+ $2[33] = pendingConfirmations;
81770
+ $2[34] = t28;
81591
81771
  } else {
81592
- t26 = $2[32];
81772
+ t28 = $2[34];
81593
81773
  }
81594
- let t27;
81595
- if ($2[33] !== skipPermissions) {
81596
- t27 = skipPermissions && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", {
81774
+ let t29;
81775
+ if ($2[35] !== skipPermissions) {
81776
+ t29 = skipPermissions && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", {
81597
81777
  className: "shrink-0 border-destructive border-b-2 bg-destructive/15 px-4 py-1.5",
81598
81778
  children: [/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", {
81599
81779
  className: "flex items-center gap-1.5",
@@ -81616,14 +81796,14 @@ var App = () => {
81616
81796
  children: "Restore approvals"
81617
81797
  })]
81618
81798
  });
81619
- $2[33] = skipPermissions;
81620
- $2[34] = t27;
81799
+ $2[35] = skipPermissions;
81800
+ $2[36] = t29;
81621
81801
  } else {
81622
- t27 = $2[34];
81802
+ t29 = $2[36];
81623
81803
  }
81624
- let t28;
81625
- if ($2[35] !== searchQuery || $2[36] !== showSearchBar) {
81626
- t28 = showSearchBar && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", {
81804
+ let t30;
81805
+ if ($2[37] !== searchQuery || $2[38] !== showSearchBar) {
81806
+ t30 = showSearchBar && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", {
81627
81807
  className: "shrink-0 px-4 pt-4 pb-2",
81628
81808
  children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", {
81629
81809
  className: "relative",
@@ -81645,35 +81825,35 @@ var App = () => {
81645
81825
  })]
81646
81826
  })
81647
81827
  });
81648
- $2[35] = searchQuery;
81649
- $2[36] = showSearchBar;
81650
- $2[37] = t28;
81828
+ $2[37] = searchQuery;
81829
+ $2[38] = showSearchBar;
81830
+ $2[39] = t30;
81651
81831
  } else {
81652
- t28 = $2[37];
81832
+ t30 = $2[39];
81653
81833
  }
81654
- let t29;
81655
- let t30;
81656
- if ($2[38] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81657
- t29 = {
81834
+ let t31;
81835
+ let t32;
81836
+ if ($2[40] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81837
+ t31 = {
81658
81838
  height: 0
81659
81839
  };
81660
- t30 = {
81840
+ t32 = {
81661
81841
  scrollbars: {
81662
81842
  theme: "os-theme-retro",
81663
81843
  autoHide: "scroll",
81664
81844
  autoHideDelay: 600
81665
81845
  }
81666
81846
  };
81667
- $2[38] = t29;
81668
- $2[39] = t30;
81847
+ $2[40] = t31;
81848
+ $2[41] = t32;
81669
81849
  } else {
81670
- t29 = $2[38];
81671
- t30 = $2[39];
81850
+ t31 = $2[40];
81851
+ t32 = $2[41];
81672
81852
  }
81673
- const t31 = `px-4 pb-4 ${showSearchBar ? "pt-2" : "pt-4"} ${showPlugins ? "" : "flex min-h-full items-center justify-center"}`;
81674
- let t32;
81675
- if ($2[40] !== activeTools || $2[41] !== browserPermission || $2[42] !== browserTools || $2[43] !== browserToolsHydrated || $2[44] !== browserToolsOpen || $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] !== npmSearchError || $2[54] !== npmSearching || $2[55] !== pluginErrors || $2[56] !== plugins || $2[57] !== removingPlugins || $2[58] !== searchQuery || $2[59] !== serverVersion) {
81676
- t32 = loading ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(LoadingState, {}) : !connected ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(DisconnectedState, {
81853
+ const t33 = `px-4 pb-4 ${showSearchBar ? "pt-2" : "pt-4"} ${showPlugins ? "" : "flex min-h-full items-center justify-center"}`;
81854
+ let t34;
81855
+ if ($2[42] !== activeTools || $2[43] !== browserPermission || $2[44] !== browserTools || $2[45] !== browserToolsHydrated || $2[46] !== browserToolsOpen || $2[47] !== connected || $2[48] !== disconnectReason || $2[49] !== failedPlugins || $2[50] !== hasContent || $2[51] !== installErrors || $2[52] !== installingPlugins || $2[53] !== loading || $2[54] !== npmResults || $2[55] !== npmSearchError || $2[56] !== npmSearching || $2[57] !== pluginErrors || $2[58] !== plugins || $2[59] !== removingFailedPlugins || $2[60] !== removingPlugins || $2[61] !== searchQuery || $2[62] !== serverVersion) {
81856
+ t34 = loading ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(LoadingState, {}) : !connected ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(DisconnectedState, {
81677
81857
  reason: disconnectReason
81678
81858
  }) : searchQuery ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SearchResults, {
81679
81859
  plugins,
@@ -81725,7 +81905,9 @@ var App = () => {
81725
81905
  onUpdate: handleUpdate,
81726
81906
  onRemove: handleRemove,
81727
81907
  removingPlugins,
81728
- pluginErrors
81908
+ pluginErrors,
81909
+ onRemoveFailedPlugin: handleRemoveFailedPlugin,
81910
+ removingFailedPlugins
81729
81911
  }), plugins.length === 0 && failedPlugins.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(EmptyComponent, {
81730
81912
  className: "border-muted",
81731
81913
  role: "status",
@@ -81745,71 +81927,72 @@ var App = () => {
81745
81927
  })
81746
81928
  })]
81747
81929
  }) : null;
81748
- $2[40] = activeTools;
81749
- $2[41] = browserPermission;
81750
- $2[42] = browserTools;
81751
- $2[43] = browserToolsHydrated;
81752
- $2[44] = browserToolsOpen;
81753
- $2[45] = connected;
81754
- $2[46] = disconnectReason;
81755
- $2[47] = failedPlugins;
81756
- $2[48] = hasContent;
81757
- $2[49] = installErrors;
81758
- $2[50] = installingPlugins;
81759
- $2[51] = loading;
81760
- $2[52] = npmResults;
81761
- $2[53] = npmSearchError;
81762
- $2[54] = npmSearching;
81763
- $2[55] = pluginErrors;
81764
- $2[56] = plugins;
81765
- $2[57] = removingPlugins;
81766
- $2[58] = searchQuery;
81767
- $2[59] = serverVersion;
81768
- $2[60] = t32;
81930
+ $2[42] = activeTools;
81931
+ $2[43] = browserPermission;
81932
+ $2[44] = browserTools;
81933
+ $2[45] = browserToolsHydrated;
81934
+ $2[46] = browserToolsOpen;
81935
+ $2[47] = connected;
81936
+ $2[48] = disconnectReason;
81937
+ $2[49] = failedPlugins;
81938
+ $2[50] = hasContent;
81939
+ $2[51] = installErrors;
81940
+ $2[52] = installingPlugins;
81941
+ $2[53] = loading;
81942
+ $2[54] = npmResults;
81943
+ $2[55] = npmSearchError;
81944
+ $2[56] = npmSearching;
81945
+ $2[57] = pluginErrors;
81946
+ $2[58] = plugins;
81947
+ $2[59] = removingFailedPlugins;
81948
+ $2[60] = removingPlugins;
81949
+ $2[61] = searchQuery;
81950
+ $2[62] = serverVersion;
81951
+ $2[63] = t34;
81769
81952
  } else {
81770
- t32 = $2[60];
81953
+ t34 = $2[63];
81771
81954
  }
81772
- let t33;
81773
- if ($2[61] !== t31 || $2[62] !== t32) {
81774
- t33 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(g2, {
81955
+ let t35;
81956
+ if ($2[64] !== t33 || $2[65] !== t34) {
81957
+ t35 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(g2, {
81775
81958
  className: "flex-1",
81776
- style: t29,
81777
- options: t30,
81959
+ style: t31,
81960
+ options: t32,
81778
81961
  children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("main", {
81779
- className: t31,
81780
- children: t32
81962
+ className: t33,
81963
+ children: t34
81781
81964
  })
81782
81965
  });
81783
- $2[61] = t31;
81784
- $2[62] = t32;
81785
- $2[63] = t33;
81966
+ $2[64] = t33;
81967
+ $2[65] = t34;
81968
+ $2[66] = t35;
81786
81969
  } else {
81787
- t33 = $2[63];
81970
+ t35 = $2[66];
81788
81971
  }
81789
- let t34;
81790
- if ($2[64] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81791
- t34 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Footer, {});
81792
- $2[64] = t34;
81972
+ let t36;
81973
+ if ($2[67] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
81974
+ t36 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Footer, {});
81975
+ $2[67] = t36;
81793
81976
  } else {
81794
- t34 = $2[64];
81977
+ t36 = $2[67];
81795
81978
  }
81796
- let t35;
81797
- if ($2[65] !== t26 || $2[66] !== t27 || $2[67] !== t28 || $2[68] !== t33) {
81798
- t35 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TooltipObject.Provider, {
81979
+ let t37;
81980
+ if ($2[68] !== t28 || $2[69] !== t29 || $2[70] !== t30 || $2[71] !== t35) {
81981
+ t37 = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TooltipObject.Provider, {
81799
81982
  children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", {
81800
81983
  className: "flex h-screen flex-col overflow-hidden text-foreground",
81801
- children: [t26, t27, t28, t33, t34]
81984
+ children: [t28, t29, t30, t35, t36]
81802
81985
  })
81803
81986
  });
81804
- $2[65] = t26;
81805
- $2[66] = t27;
81806
- $2[67] = t28;
81807
- $2[68] = t33;
81808
- $2[69] = t35;
81987
+ $2[68] = t28;
81988
+ $2[69] = t29;
81989
+ $2[70] = t30;
81990
+ $2[71] = t35;
81991
+ $2[72] = t37;
81809
81992
  } else {
81810
- t35 = $2[69];
81993
+ t37 = $2[72];
81811
81994
  }
81812
- return t35;
81995
+ return t37;
81813
81996
  };
81814
81997
  function _temp13(t2) {
81815
81998
  return {
@@ -81817,7 +82000,7 @@ function _temp13(t2) {
81817
82000
  permission: "auto"
81818
82001
  };
81819
82002
  }
81820
- function _temp28() {
82003
+ function _temp27() {
81821
82004
  return BROWSER_TOOLS_CATALOG.map(_temp13);
81822
82005
  }
81823
82006
  function _temp36(t_0) {