tabnotes.ts (1787B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 type MozTabbrowserTab = EventTarget & { canonicalUrl: string }; 6 7 type CanonicalURLSource = "link" | "opengraph" | "jsonLd" | "fallback"; 8 type CanonicalURLSourceResults = { 9 [source in CanonicalURLSource]: string | null; 10 }; 11 12 interface CanonicalURLIdentifiedEvent { 13 type: "CanonicalURL:Identified"; 14 target: MozBrowser; 15 detail: { 16 canonicalUrl: string; 17 canonicalUrlSources: CanonicalURLSource[]; 18 }; 19 } 20 21 interface TabNoteRecord { 22 id: number; 23 canonicalUrl: string; 24 created: Temporal.Instant; 25 text: string; 26 } 27 28 interface TabNoteCreatedEvent extends CustomEvent { 29 type: "TabNote:Created"; 30 target: MozTabbrowserTab; 31 detail: { 32 note: TabNoteRecord; 33 telemetrySource?: TabNoteTelemetrySource; 34 }; 35 } 36 37 interface TabNoteEditedEvent extends CustomEvent { 38 type: "TabNote:Edited"; 39 target: MozTabbrowserTab; 40 detail: { 41 note: TabNoteRecord; 42 telemetrySource?: TabNoteTelemetrySource; 43 }; 44 } 45 46 interface TabNoteRemovedEvent extends CustomEvent { 47 type: "TabNote:Removed"; 48 target: MozTabbrowserTab; 49 detail: { 50 note: TabNoteRecord; 51 telemetrySource?: TabNoteTelemetrySource; 52 }; 53 } 54 55 type TabbrowserWebProgressListener< 56 ListenerName extends keyof nsIWebProgressListener, 57 F = nsIWebProgressListener[ListenerName], 58 > = F extends (...args: any) => any 59 ? (aBrowser: MozBrowser, ...rest: Parameters<F>) => ReturnType<F> 60 : never; 61 62 /** 63 * Constant values used to record the UI surface when a user interacted 64 * with tab notes. 65 */ 66 type TabNoteTelemetrySource = 67 | "context_menu" // tab context menu 68 | "hover_menu"; // tab hover preview panel