@vacantthinker/firefox-addon-framework-easy 2026.622.802 → 2026.622.1923

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.
@@ -43,6 +43,13 @@ export declare function ctJsPresetSleep(preset: keyof typeof SLEEP_RANGES): Prom
43
43
  * @returns {string} Normalized string representation of numbers, or "unknown".
44
44
  */
45
45
  export declare function ctJsExtractVideoQualityFromText(text: string): string;
46
+ /**
47
+ * Executes a provided function once the entire page (including all dependent
48
+ * resources such as stylesheets and images) is fully loaded.
49
+ * If the page is already fully loaded, it executes immediately.
50
+ * * @param fn - The function to execute. Can be synchronous or asynchronous.
51
+ */
52
+ export declare function ctJsExecuteOnComplete(fn: () => void | Promise<void>): Promise<void>;
46
53
  /**
47
54
  * Executes a provided function once the DOM is ready.
48
55
  * If the DOM is already ready, it executes immediately.
@@ -50,6 +57,7 @@ export declare function ctJsExtractVideoQualityFromText(text: string): string;
50
57
  * function.
51
58
  */
52
59
  export declare function ctJsExecuteOnReady(fn: () => void | Promise<void>): Promise<void>;
60
+ export declare function ctJsElementScrollIntoViewSmoothEnd(targetElement: HTMLElement): Promise<void>;
53
61
  export declare function ctJsOpenPage(url: string): Promise<void>;
54
62
  export declare function ctJsRemoveDomainCache(domain: string): Promise<void>;
55
63
  export declare function ctJsOpenPageKeepOnlyOne(url: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ContentJs.d.ts","sourceRoot":"","sources":["../src/ContentJs.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,QAgBtF;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,MAAM,EAChB,aAAa,GAAE,MAAc,EAC7B,OAAO,GAAE,MAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAoDf;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvE;AAED,wBAAsB,wBAAwB,kBAE7C;AAED,wBAAsB,wBAAwB,kBAE7C;AAED,wBAAsB,wBAAwB,kBAE7C;AAED,wBAAsB,uBAAuB,kBAE5C;AAED,wBAAsB,sBAAsB,kBAE3C;AAED,QAAA,MAAM,YAAY;;;;;;CAqBR,CAAC;AAEX,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,OAAO,YAAY,iBAGtE;AAID;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpE;AAGD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBtF;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,iBAE7C;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,iBAEzD;AAED,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,MAAM,iBAExD;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAKnD;AAQD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAW,EAAE,SAAS,UAAO,QAgB/D;AAED,wBAAsB,YAAY,kBAIjC;AAED,wBAAsB,oBAAoB,kBAIzC;AAED,wBAAsB,mBAAmB,kBAIxC;AAED,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,iBAK3D;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,iBAK5D;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,iBAGtD;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAIxE;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,iBAIrD;AAED,wBAAsB,6BAA6B,CAAC,CAAC,SAAS;IAC5D,GAAG,EAAE,MAAM,CAAA;CACZ,EAAE,OAAO,EAAE,CAAC,iBAEZ"}
1
+ {"version":3,"file":"ContentJs.d.ts","sourceRoot":"","sources":["../src/ContentJs.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,QAgBtF;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,MAAM,EAChB,aAAa,GAAE,MAAc,EAC7B,OAAO,GAAE,MAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAoDf;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvE;AAED,wBAAsB,wBAAwB,kBAE7C;AAED,wBAAsB,wBAAwB,kBAE7C;AAED,wBAAsB,wBAAwB,kBAE7C;AAED,wBAAsB,uBAAuB,kBAE5C;AAED,wBAAsB,sBAAsB,kBAE3C;AAED,QAAA,MAAM,YAAY;;;;;;CAqBR,CAAC;AAEX,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,OAAO,YAAY,iBAGtE;AAID;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpE;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBzF;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBtF;AAED,wBAAsB,kCAAkC,CAAC,aAAa,EAAE,WAAW,iBAIlF;AAOD,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,iBAE7C;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,iBAEzD;AAED,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,MAAM,iBAExD;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAKnD;AAQD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAW,EAAE,SAAS,UAAO,QAgB/D;AAED,wBAAsB,YAAY,kBAIjC;AAED,wBAAsB,oBAAoB,kBAIzC;AAED,wBAAsB,mBAAmB,kBAIxC;AAED,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,iBAK3D;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,iBAK5D;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,iBAGtD;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAIxE;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,iBAIrD;AAED,wBAAsB,6BAA6B,CAAC,CAAC,SAAS;IAC5D,GAAG,EAAE,MAAM,CAAA;CACZ,EAAE,OAAO,EAAE,CAAC,iBAEZ"}
package/dist/ContentJs.js CHANGED
@@ -139,6 +139,29 @@ export function ctJsExtractVideoQualityFromText(text) {
139
139
  const num = parseInt(text, 10);
140
140
  return Number.isNaN(num) ? 'unknown' : num.toString();
141
141
  }
142
+ /**
143
+ * Executes a provided function once the entire page (including all dependent
144
+ * resources such as stylesheets and images) is fully loaded.
145
+ * If the page is already fully loaded, it executes immediately.
146
+ * * @param fn - The function to execute. Can be synchronous or asynchronous.
147
+ */
148
+ export async function ctJsExecuteOnComplete(fn) {
149
+ // 'complete' means the DOM is ready AND all external resources have finished
150
+ // loading
151
+ if (document.readyState === 'complete') {
152
+ await fn();
153
+ }
154
+ else {
155
+ // Wait for the window 'load' event, which fires after all resources are
156
+ // downloaded
157
+ await new Promise((resolve) => {
158
+ window.addEventListener('load', async () => {
159
+ await fn();
160
+ resolve();
161
+ }, { once: true });
162
+ });
163
+ }
164
+ }
142
165
  /**
143
166
  * Executes a provided function once the DOM is ready.
144
167
  * If the DOM is already ready, it executes immediately.
@@ -160,6 +183,15 @@ export async function ctJsExecuteOnReady(fn) {
160
183
  await fn();
161
184
  }
162
185
  }
186
+ export async function ctJsElementScrollIntoViewSmoothEnd(targetElement) {
187
+ targetElement.scrollIntoView({
188
+ behavior: 'smooth', block: 'end'
189
+ });
190
+ }
191
+ //===========================================================
192
+ //===========================================================
193
+ //===========================================================
194
+ //===========================================================
163
195
  export async function ctJsOpenPage(url) {
164
196
  await tabOpCreateActiveTrue({ url });
165
197
  }
@@ -1 +1 @@
1
- {"version":3,"file":"opTab.d.ts","sourceRoot":"","sources":["../src/opTab.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opTab.d.ts","sourceRoot":"","sources":["../src/opTab.ts"],"names":[],"mappings":"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"}
package/dist/opTab.js CHANGED
@@ -64,7 +64,6 @@ export async function tabOpCreateNear(options) {
64
64
  properties.openerTabId = previousTab.id;
65
65
  }
66
66
  catch {
67
- // Ignore if source tab is invalid
68
67
  }
69
68
  }
70
69
  return _create(properties);
@@ -97,11 +96,13 @@ export async function tabOpQueryDomain(domain) {
97
96
  // non-null assertions (!)
98
97
  return tabs.flatMap((tab) => {
99
98
  if (tab.id !== undefined && tab.url && serviceGetDomain(tab.url) === domain) {
100
- return [{
99
+ return [
100
+ {
101
101
  id: tab.id,
102
102
  url: tab.url,
103
103
  title: tab.title ?? ''
104
- }];
104
+ }
105
+ ];
105
106
  }
106
107
  return [];
107
108
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vacantthinker/firefox-addon-framework-easy",
3
- "version": "2026.0622.0802",
3
+ "version": "2026.0622.1923",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",