@opentabs-dev/browser-extension 0.0.62 → 0.0.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/background-message-handlers.d.ts.map +1 -1
- package/dist/background-message-handlers.js +8 -2
- package/dist/background-message-handlers.js.map +1 -1
- package/dist/background.js +10 -69
- package/dist/extension-messages.d.ts +2 -0
- package/dist/extension-messages.d.ts.map +1 -1
- package/dist/message-router.d.ts.map +1 -1
- package/dist/message-router.js +2 -0
- package/dist/message-router.js.map +1 -1
- package/dist/offscreen/index.js +1 -1
- package/dist/offscreen/index.js.map +1 -1
- package/dist/side-panel/App.d.ts.map +1 -1
- package/dist/side-panel/App.js +3 -4
- package/dist/side-panel/App.js.map +1 -1
- package/dist/side-panel/bridge.d.ts +2 -2
- package/dist/side-panel/bridge.d.ts.map +1 -1
- package/dist/side-panel/bridge.js +7 -2
- package/dist/side-panel/bridge.js.map +1 -1
- package/dist/side-panel/components/BrowserToolsCard.d.ts +1 -2
- package/dist/side-panel/components/BrowserToolsCard.d.ts.map +1 -1
- package/dist/side-panel/components/BrowserToolsCard.js +4 -4
- package/dist/side-panel/components/BrowserToolsCard.js.map +1 -1
- package/dist/side-panel/components/PluginCard.d.ts +2 -2
- package/dist/side-panel/components/PluginCard.d.ts.map +1 -1
- package/dist/side-panel/components/PluginCard.js +31 -8
- package/dist/side-panel/components/PluginCard.js.map +1 -1
- package/dist/side-panel/components/PluginList.d.ts +2 -3
- package/dist/side-panel/components/PluginList.d.ts.map +1 -1
- package/dist/side-panel/components/PluginList.js +100 -2
- package/dist/side-panel/components/PluginList.js.map +1 -1
- package/dist/side-panel/components/SearchResults.d.ts +1 -2
- package/dist/side-panel/components/SearchResults.d.ts.map +1 -1
- package/dist/side-panel/components/SearchResults.js +2 -2
- package/dist/side-panel/components/SearchResults.js.map +1 -1
- package/dist/side-panel/group-transitions.d.ts +55 -0
- package/dist/side-panel/group-transitions.d.ts.map +1 -0
- package/dist/side-panel/group-transitions.js +84 -0
- package/dist/side-panel/group-transitions.js.map +1 -0
- package/dist/side-panel/side-panel.js +805 -486
- package/dist/side-panel/styles.css +1 -1
- package/manifest.json +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure logic for plugin readiness grouping and transition animations.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from PluginList so it can be tested without React rendering.
|
|
5
|
+
* The React hook in PluginList drives this state machine with timers.
|
|
6
|
+
*/
|
|
7
|
+
/** Duration for fade-in animation at the new position (ms) */
|
|
8
|
+
const FADE_IN_MS = 200;
|
|
9
|
+
/**
|
|
10
|
+
* Split plugins into ready and not-ready groups.
|
|
11
|
+
* A plugin is "ready" only when tabState === 'ready'.
|
|
12
|
+
* Both 'unavailable' and 'closed' are not-ready.
|
|
13
|
+
*/
|
|
14
|
+
function groupPlugins(plugins) {
|
|
15
|
+
const ready = [];
|
|
16
|
+
const notReady = [];
|
|
17
|
+
for (const p of plugins) {
|
|
18
|
+
if (p.tabState === 'ready') {
|
|
19
|
+
ready.push(p);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
notReady.push(p);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return { ready, notReady };
|
|
26
|
+
}
|
|
27
|
+
// ─── Change detection ────────────────────────────────────────────────────────
|
|
28
|
+
/**
|
|
29
|
+
* Detect which plugins changed readiness group between two snapshots.
|
|
30
|
+
* Returns the set of plugin names that crossed the ready/not-ready boundary.
|
|
31
|
+
*
|
|
32
|
+
* A plugin that was not present in the previous snapshot is treated as new
|
|
33
|
+
* (no transition). A plugin that disappeared is ignored.
|
|
34
|
+
*/
|
|
35
|
+
function detectGroupChanges(prev, current) {
|
|
36
|
+
const changed = new Set();
|
|
37
|
+
for (const plugin of current) {
|
|
38
|
+
const prevState = prev.get(plugin.name);
|
|
39
|
+
if (prevState === undefined)
|
|
40
|
+
continue; // new plugin — no transition
|
|
41
|
+
const wasReady = prevState === 'ready';
|
|
42
|
+
const isReady = plugin.tabState === 'ready';
|
|
43
|
+
if (wasReady !== isReady) {
|
|
44
|
+
changed.add(plugin.name);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return changed;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Build a snapshot map of plugin name → tabState for change detection.
|
|
51
|
+
*/
|
|
52
|
+
function buildStateSnapshot(plugins) {
|
|
53
|
+
return new Map(plugins.map(p => [p.name, p.tabState]));
|
|
54
|
+
}
|
|
55
|
+
// ─── Animation classes ───────────────────────────────────────────────────────
|
|
56
|
+
/**
|
|
57
|
+
* Resolve the CSS class for a plugin that is currently animating.
|
|
58
|
+
* Returns undefined if the plugin is not animating.
|
|
59
|
+
*
|
|
60
|
+
* - Ready group target: full opacity fade-in
|
|
61
|
+
* - Not-ready group target: reduced opacity (0.7) fade-in
|
|
62
|
+
*/
|
|
63
|
+
function getTransitionClass(pluginName, isReadyGroup, animating) {
|
|
64
|
+
if (!animating.has(pluginName))
|
|
65
|
+
return undefined;
|
|
66
|
+
return isReadyGroup ? 'animate-group-fade-in' : 'animate-group-fade-in-dim';
|
|
67
|
+
}
|
|
68
|
+
// ─── Accordion open state ────────────────────────────────────────────────────
|
|
69
|
+
/**
|
|
70
|
+
* Remove transitioning plugins from an accordion's open list.
|
|
71
|
+
* When a plugin changes groups, its expanded state must be reset
|
|
72
|
+
* so it arrives collapsed at its new position.
|
|
73
|
+
*
|
|
74
|
+
* Returns the original array (same reference) if nothing was removed,
|
|
75
|
+
* or a new filtered array if any items were removed.
|
|
76
|
+
*/
|
|
77
|
+
function collapseTransitioningItems(openItems, animating) {
|
|
78
|
+
if (animating.size === 0)
|
|
79
|
+
return openItems;
|
|
80
|
+
const filtered = openItems.filter(name => !animating.has(name));
|
|
81
|
+
return filtered.length === openItems.length ? openItems : filtered;
|
|
82
|
+
}
|
|
83
|
+
export { FADE_IN_MS, buildStateSnapshot, collapseTransitioningItems, detectGroupChanges, getTransitionClass, groupPlugins, };
|
|
84
|
+
//# sourceMappingURL=group-transitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-transitions.js","sourceRoot":"","sources":["../../src/side-panel/group-transitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,8DAA8D;AAC9D,MAAM,UAAU,GAAG,GAAG,CAAC;AAcvB;;;;GAIG;AACH,SAAS,YAAY,CAA4B,OAAqB;IACpE,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,MAAM,QAAQ,GAAQ,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED,gFAAgF;AAEhF;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,IAAmC,EAAE,OAAmC;IAClG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS,CAAC,6BAA6B;QACpE,MAAM,QAAQ,GAAG,SAAS,KAAK,OAAO,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC;QAC5C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAAmC;IAC7D,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,gFAAgF;AAEhF;;;;;;GAMG;AACH,SAAS,kBAAkB,CACzB,UAAkB,EAClB,YAAqB,EACrB,SAA8B;IAE9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACjD,OAAO,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,2BAA2B,CAAC;AAC9E,CAAC;AAED,gFAAgF;AAEhF;;;;;;;GAOG;AACH,SAAS,0BAA0B,CAAC,SAA4B,EAAE,SAA8B;IAC9F,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,SAAqB,CAAC;IACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAE,SAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnF,CAAC;AAED,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GACb,CAAC"}
|