@extenshi/mcp 0.18.0 → 0.20.0
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/README.md +5 -3
- package/dist/bff.d.ts +10 -0
- package/dist/bff.d.ts.map +1 -1
- package/dist/bff.js +1 -0
- package/dist/bff.js.map +1 -1
- package/dist/development-guide.d.ts +23 -23
- package/dist/development-guide.d.ts.map +1 -1
- package/dist/development-guide.js +7 -3
- package/dist/development-guide.js.map +1 -1
- package/dist/pin-guide-kit.d.ts +94 -0
- package/dist/pin-guide-kit.d.ts.map +1 -0
- package/dist/pin-guide-kit.js +341 -0
- package/dist/pin-guide-kit.js.map +1 -0
- package/dist/pin-guide-strings.d.ts +67 -0
- package/dist/pin-guide-strings.d.ts.map +1 -0
- package/dist/pin-guide-strings.js +349 -0
- package/dist/pin-guide-strings.js.map +1 -0
- package/dist/pin-guide-tool.d.ts +32 -0
- package/dist/pin-guide-tool.d.ts.map +1 -0
- package/dist/pin-guide-tool.js +132 -0
- package/dist/pin-guide-tool.js.map +1 -0
- package/dist/pin-guide.d.ts +102 -0
- package/dist/pin-guide.d.ts.map +1 -0
- package/dist/pin-guide.js +448 -0
- package/dist/pin-guide.js.map +1 -0
- package/dist/tools.d.ts +2 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +107 -10
- package/dist/tools.js.map +1 -1
- package/dist/uninstall-form-tools.d.ts +1 -0
- package/dist/uninstall-form-tools.d.ts.map +1 -1
- package/dist/uninstall-form-tools.js +33 -0
- package/dist/uninstall-form-tools.js.map +1 -1
- package/dist/welcome-agent-brief.d.ts.map +1 -1
- package/dist/welcome-agent-brief.js +5 -0
- package/dist/welcome-agent-brief.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"development-guide.js","sourceRoot":"","sources":["../src/development-guide.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"development-guide.js","sourceRoot":"","sources":["../src/development-guide.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pin guide kit — the pin guide packaged for a welcome page that ships INSIDE
|
|
3
|
+
* the extension (`welcome/welcome.html` opened from `runtime.onInstalled`).
|
|
4
|
+
*
|
|
5
|
+
* The hosted welcome page draws the icon and the numbered badges as HTML
|
|
6
|
+
* overlays on top of the illustration. An in-extension page has no such
|
|
7
|
+
* renderer, works offline and runs under the extension CSP (no inline scripts),
|
|
8
|
+
* so the kit "flattens" each step instead: the icon becomes an `<image>` and the
|
|
9
|
+
* badge a circle + number INSIDE the SVG. What comes out is plain markup and
|
|
10
|
+
* files an agent drops into the extension:
|
|
11
|
+
*
|
|
12
|
+
* - `html` — one `<section data-pin-guide-browser>` per browser, captions
|
|
13
|
+
* in English marked with `data-i18n` keys. No scripts, no
|
|
14
|
+
* event handlers, no inline styles: the extension CSP passes it.
|
|
15
|
+
* - `css` — optional layout, plus the light/dark switch for `theme: 'auto'`.
|
|
16
|
+
* - `script` — an ES module for a separate file: pick the user's browser,
|
|
17
|
+
* apply `chrome.i18n` captions, and read whether the icon is
|
|
18
|
+
* already pinned (`action.getUserSettings().isOnToolbar`).
|
|
19
|
+
* - `messages` — the captions in every requested language, in `chrome.i18n`
|
|
20
|
+
* `messages.json` shape, ready to merge into `_locales`.
|
|
21
|
+
* - `steps` — the flattened SVGs one by one, for `<img>` use.
|
|
22
|
+
*
|
|
23
|
+
* Same copy rules as ./pin-guide.ts: copied into @extenshi/mcp and
|
|
24
|
+
* @extenshi/cli, see the header of ./pin-guide-strings.ts.
|
|
25
|
+
*/
|
|
26
|
+
import { type PinGuideBrowser } from './pin-guide.js';
|
|
27
|
+
import { type PinGuideLocale } from './pin-guide-strings.js';
|
|
28
|
+
export declare const PIN_GUIDE_BROWSERS: readonly PinGuideBrowser[];
|
|
29
|
+
export type PinGuideKitTheme = 'light' | 'dark' | 'auto';
|
|
30
|
+
export interface PinGuideKitInput {
|
|
31
|
+
extensionName: string;
|
|
32
|
+
/** Default: all three. */
|
|
33
|
+
browsers?: readonly string[];
|
|
34
|
+
/** BCP 47 tags; default: every supported locale. Unsupported tags are an error. */
|
|
35
|
+
locales?: readonly string[];
|
|
36
|
+
accentColor?: string;
|
|
37
|
+
/** `auto` emits a light and a dark copy of every step and lets CSS pick. Default `light`. */
|
|
38
|
+
theme?: PinGuideKitTheme;
|
|
39
|
+
/**
|
|
40
|
+
* Where the illustrations load the icon from: a path inside the extension
|
|
41
|
+
* package relative to the page (`../icons/icon-48.png`), or a
|
|
42
|
+
* `data:image/png|jpeg|webp|svg+xml;base64,…` URI. Absent → a neutral tile.
|
|
43
|
+
*/
|
|
44
|
+
iconHref?: string | null;
|
|
45
|
+
/** Prefix of the `chrome.i18n` message names. Default `pinGuide`. */
|
|
46
|
+
keyPrefix?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface PinGuideKitStep {
|
|
49
|
+
n: number;
|
|
50
|
+
/** The flattened SVG, light theme (or dark when `theme: 'dark'`). */
|
|
51
|
+
svg: string;
|
|
52
|
+
/** The dark copy, only with `theme: 'auto'`. */
|
|
53
|
+
svgDark: string | null;
|
|
54
|
+
/** Message names of this step's captions; `body` is null for step 2. */
|
|
55
|
+
keys: {
|
|
56
|
+
title: string;
|
|
57
|
+
body: string | null;
|
|
58
|
+
alt: string;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export interface PinGuideKitMessage {
|
|
62
|
+
message: string;
|
|
63
|
+
description: string;
|
|
64
|
+
}
|
|
65
|
+
export interface PinGuideKit {
|
|
66
|
+
extensionName: string;
|
|
67
|
+
browsers: PinGuideBrowser[];
|
|
68
|
+
locales: PinGuideLocale[];
|
|
69
|
+
theme: PinGuideKitTheme;
|
|
70
|
+
steps: Partial<Record<PinGuideBrowser, PinGuideKitStep[]>>;
|
|
71
|
+
html: string;
|
|
72
|
+
css: string;
|
|
73
|
+
script: string;
|
|
74
|
+
/** Keyed by BCP 47 tag (`pt-BR`); `chromeLocaleDir` gives the `_locales` folder name. */
|
|
75
|
+
messages: Partial<Record<PinGuideLocale, Record<string, PinGuideKitMessage>>>;
|
|
76
|
+
}
|
|
77
|
+
export declare class PinGuideKitError extends Error {
|
|
78
|
+
}
|
|
79
|
+
/** `_locales` folder name for a BCP 47 tag: `pt-BR` → `pt_BR`. */
|
|
80
|
+
export declare function chromeLocaleDir(locale: PinGuideLocale): string;
|
|
81
|
+
/**
|
|
82
|
+
* Build the kit. Throws `PinGuideKitError` on input it cannot honour — an
|
|
83
|
+
* unknown browser or language, an unsafe icon reference, a bad key prefix —
|
|
84
|
+
* rather than producing something subtly wrong.
|
|
85
|
+
*/
|
|
86
|
+
export declare function buildPinGuideKit(input: PinGuideKitInput): PinGuideKit;
|
|
87
|
+
/**
|
|
88
|
+
* Shipped as a separate file next to the page: the extension CSP forbids
|
|
89
|
+
* inline scripts. Plain ES2020, no build step, works in Chrome, Edge and
|
|
90
|
+
* Firefox. `chrome` and `browser` are both probed because Firefox exposes
|
|
91
|
+
* `getBrowserInfo` only on `browser`.
|
|
92
|
+
*/
|
|
93
|
+
export declare const PIN_GUIDE_SCRIPT = "// Pin guide helpers \u2014 generated by Extenshi. Load with <script type=\"module\">.\n\nconst ext = globalThis.browser ?? globalThis.chrome\n\n/** 'chrome' | 'edge' | 'firefox' \u2014 which pin guide this user needs. */\nexport async function detectPinGuideBrowser() {\n try {\n const info = await globalThis.browser?.runtime?.getBrowserInfo?.()\n if (info && /firefox/i.test(info.name)) return 'firefox'\n } catch {}\n const nav = globalThis.navigator ?? {}\n if (/\\bFirefox\\//.test(nav.userAgent ?? '')) return 'firefox'\n const brands = nav.userAgentData?.brands ?? []\n if (brands.some((b) => /Microsoft Edge/i.test(b.brand)) || /\\bEdg\\//.test(nav.userAgent ?? '')) return 'edge'\n return 'chrome'\n}\n\n/** Show only the detected browser's section. Returns the browser it picked. */\nexport async function showPinGuide(root = document) {\n const browser = await detectPinGuideBrowser()\n const sections = [...root.querySelectorAll('[data-pin-guide-browser]')]\n if (sections.some((s) => s.dataset.pinGuideBrowser === browser)) {\n for (const s of sections) s.hidden = s.dataset.pinGuideBrowser !== browser\n }\n return browser\n}\n\n/** Replace the English captions with chrome.i18n messages where the extension has them. */\nexport function applyPinGuideMessages(root = document) {\n const i18n = ext?.i18n\n if (typeof i18n?.getMessage !== 'function') return\n for (const el of root.querySelectorAll('.xpg [data-i18n]')) {\n const text = i18n.getMessage(el.dataset.i18n)\n if (text) el.textContent = text\n }\n for (const el of root.querySelectorAll('.xpg [data-i18n-aria-label]')) {\n const text = i18n.getMessage(el.dataset.i18nAriaLabel)\n if (text) el.setAttribute('aria-label', text)\n }\n}\n\n/**\n * true / false when the browser can tell (action.getUserSettings: Chrome 91+,\n * Edge 91+, Firefox 116+), null when it cannot \u2014 then show the guide anyway.\n */\nexport async function isPinnedToToolbar() {\n const action = ext?.action ?? ext?.browserAction\n if (typeof action?.getUserSettings !== 'function') return null\n try {\n const settings = await action.getUserSettings()\n return typeof settings?.isOnToolbar === 'boolean' ? settings.isOnToolbar : null\n } catch {\n return null\n }\n}\n\n/**\n * Call back with the pinned state now and whenever it may have changed: on\n * action.onUserSettingsChanged where it exists (Chrome 130+, Firefox 142+), and\n * whenever the page regains focus or becomes visible \u2014 the user pins in the\n * toolbar, outside the page. Returns a function that stops listening.\n */\nexport function onPinnedChange(callback) {\n let last\n const check = async () => {\n const value = await isPinnedToToolbar()\n if (value !== last) {\n last = value\n callback(value)\n }\n }\n const onVisible = () => {\n if (document.visibilityState === 'visible') check()\n }\n const changed = (ext?.action ?? ext?.browserAction)?.onUserSettingsChanged\n changed?.addListener?.(check)\n globalThis.addEventListener('focus', check)\n document.addEventListener('visibilitychange', onVisible)\n check()\n return () => {\n changed?.removeListener?.(check)\n globalThis.removeEventListener('focus', check)\n document.removeEventListener('visibilitychange', onVisible)\n }\n}\n";
|
|
94
|
+
//# sourceMappingURL=pin-guide-kit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pin-guide-kit.d.ts","sourceRoot":"","sources":["../src/pin-guide-kit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAKN,KAAK,eAAe,EACpB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAqB,KAAK,cAAc,EAAkB,MAAM,wBAAwB,CAAA;AAE/F,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAAkC,CAAA;AAE3F,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAExD,MAAM,WAAW,gBAAgB;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B,mFAAmF;IACnF,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6FAA6F;IAC7F,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC/B,CAAC,EAAE,MAAM,CAAA;IACT,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAA;IACX,gDAAgD;IAChD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,wEAAwE;IACxE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACzD;AAED,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,KAAK,EAAE,gBAAgB,CAAA;IACvB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,eAAe,EAAE,CAAC,CAAC,CAAA;IAC1D,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,yFAAyF;IACzF,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAA;CAC7E;AAED,qBAAa,gBAAiB,SAAQ,KAAK;CAAG;AAQ9C,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAE9D;AA+GD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CA4GrE;AAsBD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,uvGAqF5B,CAAA"}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pin guide kit — the pin guide packaged for a welcome page that ships INSIDE
|
|
3
|
+
* the extension (`welcome/welcome.html` opened from `runtime.onInstalled`).
|
|
4
|
+
*
|
|
5
|
+
* The hosted welcome page draws the icon and the numbered badges as HTML
|
|
6
|
+
* overlays on top of the illustration. An in-extension page has no such
|
|
7
|
+
* renderer, works offline and runs under the extension CSP (no inline scripts),
|
|
8
|
+
* so the kit "flattens" each step instead: the icon becomes an `<image>` and the
|
|
9
|
+
* badge a circle + number INSIDE the SVG. What comes out is plain markup and
|
|
10
|
+
* files an agent drops into the extension:
|
|
11
|
+
*
|
|
12
|
+
* - `html` — one `<section data-pin-guide-browser>` per browser, captions
|
|
13
|
+
* in English marked with `data-i18n` keys. No scripts, no
|
|
14
|
+
* event handlers, no inline styles: the extension CSP passes it.
|
|
15
|
+
* - `css` — optional layout, plus the light/dark switch for `theme: 'auto'`.
|
|
16
|
+
* - `script` — an ES module for a separate file: pick the user's browser,
|
|
17
|
+
* apply `chrome.i18n` captions, and read whether the icon is
|
|
18
|
+
* already pinned (`action.getUserSettings().isOnToolbar`).
|
|
19
|
+
* - `messages` — the captions in every requested language, in `chrome.i18n`
|
|
20
|
+
* `messages.json` shape, ready to merge into `_locales`.
|
|
21
|
+
* - `steps` — the flattened SVGs one by one, for `<img>` use.
|
|
22
|
+
*
|
|
23
|
+
* Same copy rules as ./pin-guide.ts: copied into @extenshi/mcp and
|
|
24
|
+
* @extenshi/cli, see the header of ./pin-guide-strings.ts.
|
|
25
|
+
*/
|
|
26
|
+
import { buildPinGuideBlocks, PIN_GUIDE_BROWSER_LABELS, PIN_GUIDE_DEFAULT_ACCENT, } from './pin-guide.js';
|
|
27
|
+
import { PIN_GUIDE_LOCALES, pinGuideLocale } from './pin-guide-strings.js';
|
|
28
|
+
export const PIN_GUIDE_BROWSERS = ['chrome', 'edge', 'firefox'];
|
|
29
|
+
export class PinGuideKitError extends Error {
|
|
30
|
+
}
|
|
31
|
+
const ICON_DATA_URI = /^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/;
|
|
32
|
+
/** A relative path inside the package: no scheme, no `//` host, no characters that end an attribute. */
|
|
33
|
+
const ICON_RELATIVE = /^(?![a-zA-Z][a-zA-Z0-9+.-]*:)(?!\/\/)[A-Za-z0-9._~\-/@%+]+$/;
|
|
34
|
+
/** `chrome.i18n` message names are ASCII letters, digits and underscores. */
|
|
35
|
+
const KEY_PREFIX = /^[A-Za-z][A-Za-z0-9_]{0,39}$/;
|
|
36
|
+
/** `_locales` folder name for a BCP 47 tag: `pt-BR` → `pt_BR`. */
|
|
37
|
+
export function chromeLocaleDir(locale) {
|
|
38
|
+
return locale.replace('-', '_');
|
|
39
|
+
}
|
|
40
|
+
function escAttr(s) {
|
|
41
|
+
return s
|
|
42
|
+
.replaceAll('&', '&')
|
|
43
|
+
.replaceAll('<', '<')
|
|
44
|
+
.replaceAll('>', '>')
|
|
45
|
+
.replaceAll('"', '"')
|
|
46
|
+
.replaceAll("'", ''');
|
|
47
|
+
}
|
|
48
|
+
function escText(s) {
|
|
49
|
+
return s.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>');
|
|
50
|
+
}
|
|
51
|
+
function num(n) {
|
|
52
|
+
return String(Math.round(n * 1000) / 1000);
|
|
53
|
+
}
|
|
54
|
+
/** `$` starts a placeholder in `chrome.i18n`; a literal one is written `$$`. */
|
|
55
|
+
function i18nMessage(s) {
|
|
56
|
+
return s.replaceAll('$', '$$$$');
|
|
57
|
+
}
|
|
58
|
+
function resolveBrowsers(list) {
|
|
59
|
+
if (!list || list.length === 0)
|
|
60
|
+
return [...PIN_GUIDE_BROWSERS];
|
|
61
|
+
const out = [];
|
|
62
|
+
for (const raw of list) {
|
|
63
|
+
const b = raw.trim().toLowerCase();
|
|
64
|
+
if (!PIN_GUIDE_BROWSERS.includes(b)) {
|
|
65
|
+
throw new PinGuideKitError(`Unknown browser "${raw}". Use: ${PIN_GUIDE_BROWSERS.join(', ')}.`);
|
|
66
|
+
}
|
|
67
|
+
if (!out.includes(b))
|
|
68
|
+
out.push(b);
|
|
69
|
+
}
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
function resolveLocales(list) {
|
|
73
|
+
if (!list || list.length === 0)
|
|
74
|
+
return [...PIN_GUIDE_LOCALES];
|
|
75
|
+
const out = [];
|
|
76
|
+
for (const raw of list) {
|
|
77
|
+
const l = pinGuideLocale(raw);
|
|
78
|
+
// pinGuideLocale falls back to English; asking for e.g. Polish and silently
|
|
79
|
+
// getting English captions would read as a translated kit that is not.
|
|
80
|
+
if (l === 'en' && !/^en\b/i.test(raw.trim())) {
|
|
81
|
+
throw new PinGuideKitError(`No pin guide captions for "${raw}". Supported: ${PIN_GUIDE_LOCALES.join(', ')}.`);
|
|
82
|
+
}
|
|
83
|
+
if (!out.includes(l))
|
|
84
|
+
out.push(l);
|
|
85
|
+
}
|
|
86
|
+
// English is the fallback text inside the HTML, so it is always present.
|
|
87
|
+
if (!out.includes('en'))
|
|
88
|
+
out.unshift('en');
|
|
89
|
+
return out;
|
|
90
|
+
}
|
|
91
|
+
function resolveIconHref(href) {
|
|
92
|
+
const h = href?.trim();
|
|
93
|
+
if (!h)
|
|
94
|
+
return null;
|
|
95
|
+
if (ICON_DATA_URI.test(h) || ICON_RELATIVE.test(h))
|
|
96
|
+
return h;
|
|
97
|
+
throw new PinGuideKitError('iconHref must be a path inside the extension package (e.g. ../icons/icon-48.png) or a ' +
|
|
98
|
+
'data:image/png|jpeg|webp|svg+xml;base64 URI. Remote URLs are refused: the page has to work offline.');
|
|
99
|
+
}
|
|
100
|
+
function capitalize(s) {
|
|
101
|
+
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Burn the icon and the numbered badge into a step's SVG. Geometry comes from
|
|
105
|
+
* the block's own overlay/marker percentages, so the flattened picture is the
|
|
106
|
+
* hosted one pixel for pixel. The badge matches the hosted marker: a 28 px
|
|
107
|
+
* accent disc with a bold white number, at a 640-unit-wide frame.
|
|
108
|
+
*/
|
|
109
|
+
function flatten(block, iconHref, accent) {
|
|
110
|
+
const svg = block.media.svg;
|
|
111
|
+
const box = /viewBox="0 0 (\d+(?:\.\d+)?) (\d+(?:\.\d+)?)"/.exec(svg);
|
|
112
|
+
if (!box)
|
|
113
|
+
throw new PinGuideKitError(`Step ${block.id} has no viewBox`);
|
|
114
|
+
const w = Number(box[1]);
|
|
115
|
+
const h = Number(box[2]);
|
|
116
|
+
const parts = [];
|
|
117
|
+
const icon = block.media.icon;
|
|
118
|
+
if (icon && iconHref) {
|
|
119
|
+
const size = (icon.size / 100) * w;
|
|
120
|
+
const x = (icon.x / 100) * w - size / 2;
|
|
121
|
+
const y = (icon.y / 100) * h - size / 2;
|
|
122
|
+
parts.push(`<image href="${escAttr(iconHref)}" x="${num(x)}" y="${num(y)}" width="${num(size)}" height="${num(size)}" preserveAspectRatio="xMidYMid meet"/>`);
|
|
123
|
+
}
|
|
124
|
+
for (const m of block.media.annotations) {
|
|
125
|
+
const cx = (m.x / 100) * w;
|
|
126
|
+
const cy = (m.y / 100) * h;
|
|
127
|
+
parts.push(`<circle cx="${num(cx)}" cy="${num(cy)}" r="14" fill="${accent}"/>`, `<text x="${num(cx)}" y="${num(cy)}" text-anchor="middle" dominant-baseline="central" font-family="system-ui, sans-serif" font-size="13" font-weight="700" fill="#ffffff">${m.n}</text>`);
|
|
128
|
+
}
|
|
129
|
+
return svg.replace(/<\/svg>$/, `${parts.join('')}</svg>`);
|
|
130
|
+
}
|
|
131
|
+
/** Put the accessible name on an inline copy; standalone files get it from `<img alt>`. */
|
|
132
|
+
function inlineSvg(svg, alt, altKey, cls) {
|
|
133
|
+
return svg.replace('<svg ', `<svg class="${cls}" aria-label="${escAttr(alt)}" data-i18n-aria-label="${altKey}" `);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Build the kit. Throws `PinGuideKitError` on input it cannot honour — an
|
|
137
|
+
* unknown browser or language, an unsafe icon reference, a bad key prefix —
|
|
138
|
+
* rather than producing something subtly wrong.
|
|
139
|
+
*/
|
|
140
|
+
export function buildPinGuideKit(input) {
|
|
141
|
+
const browsers = resolveBrowsers(input.browsers);
|
|
142
|
+
const locales = resolveLocales(input.locales);
|
|
143
|
+
const iconHref = resolveIconHref(input.iconHref);
|
|
144
|
+
const theme = input.theme ?? 'light';
|
|
145
|
+
const prefix = input.keyPrefix?.trim() || 'pinGuide';
|
|
146
|
+
if (!KEY_PREFIX.test(prefix)) {
|
|
147
|
+
throw new PinGuideKitError('keyPrefix must start with a letter and use only A-Z, a-z, 0-9 and _ (≤ 40 chars).');
|
|
148
|
+
}
|
|
149
|
+
const accent = input.accentColor && /^#[0-9a-fA-F]{3,8}$/.test(input.accentColor)
|
|
150
|
+
? input.accentColor
|
|
151
|
+
: PIN_GUIDE_DEFAULT_ACCENT;
|
|
152
|
+
const extensionName = input.extensionName.trim() || 'Your extension';
|
|
153
|
+
const blocksFor = (browser, t, locale) => buildPinGuideBlocks({
|
|
154
|
+
extensionName,
|
|
155
|
+
browser,
|
|
156
|
+
accentColor: accent,
|
|
157
|
+
theme: t,
|
|
158
|
+
// The overlay URL is only geometry here; flatten() writes the real href.
|
|
159
|
+
iconUrl: iconHref ? 'icon' : null,
|
|
160
|
+
locale,
|
|
161
|
+
});
|
|
162
|
+
const steps = {};
|
|
163
|
+
const messages = {};
|
|
164
|
+
const sections = [];
|
|
165
|
+
for (const [bi, browser] of browsers.entries()) {
|
|
166
|
+
const label = PIN_GUIDE_BROWSER_LABELS[browser];
|
|
167
|
+
const base = theme === 'dark' ? 'dark' : 'light';
|
|
168
|
+
const en = blocksFor(browser, base, 'en');
|
|
169
|
+
const dark = theme === 'auto' ? blocksFor(browser, 'dark', 'en') : null;
|
|
170
|
+
const key = (n, field) => `${prefix}${capitalize(browser)}${n}${field}`;
|
|
171
|
+
const browserSteps = en.map((block, i) => {
|
|
172
|
+
const n = i + 1;
|
|
173
|
+
return {
|
|
174
|
+
n,
|
|
175
|
+
svg: flatten(block, iconHref, accent),
|
|
176
|
+
svgDark: dark?.[i] ? flatten(dark[i], iconHref, accent) : null,
|
|
177
|
+
keys: {
|
|
178
|
+
title: key(n, 'Title'),
|
|
179
|
+
body: block.body === null ? null : key(n, 'Body'),
|
|
180
|
+
alt: key(n, 'Alt'),
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
});
|
|
184
|
+
steps[browser] = browserSteps;
|
|
185
|
+
for (const locale of locales) {
|
|
186
|
+
const localized = locale === 'en' ? en : blocksFor(browser, base, locale);
|
|
187
|
+
const out = messages[locale] ?? {};
|
|
188
|
+
messages[locale] = out;
|
|
189
|
+
for (const [i, block] of localized.entries()) {
|
|
190
|
+
const s = browserSteps[i];
|
|
191
|
+
if (!s)
|
|
192
|
+
continue;
|
|
193
|
+
const where = `${label} pin guide, step ${s.n}`;
|
|
194
|
+
out[s.keys.title] = { message: i18nMessage(block.title), description: `${where}: title` };
|
|
195
|
+
if (s.keys.body && block.body !== null) {
|
|
196
|
+
out[s.keys.body] = { message: i18nMessage(block.body), description: `${where}: body` };
|
|
197
|
+
}
|
|
198
|
+
out[s.keys.alt] = {
|
|
199
|
+
message: i18nMessage(block.media.alt),
|
|
200
|
+
description: `${where}: alt text of the illustration`,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
const items = en
|
|
205
|
+
.map((block, i) => {
|
|
206
|
+
const s = browserSteps[i];
|
|
207
|
+
if (!s)
|
|
208
|
+
return '';
|
|
209
|
+
const pictures = theme === 'auto' && s.svgDark
|
|
210
|
+
? inlineSvg(s.svg, block.media.alt, s.keys.alt, 'xpg-svg xpg-svg-light') +
|
|
211
|
+
inlineSvg(s.svgDark, block.media.alt, s.keys.alt, 'xpg-svg xpg-svg-dark')
|
|
212
|
+
: inlineSvg(s.svg, block.media.alt, s.keys.alt, 'xpg-svg');
|
|
213
|
+
const body = s.keys.body && block.body !== null
|
|
214
|
+
? `<p class="xpg-body" data-i18n="${s.keys.body}">${escText(block.body)}</p>`
|
|
215
|
+
: '';
|
|
216
|
+
return `<li class="xpg-step">${pictures}<p class="xpg-title" data-i18n="${s.keys.title}">${escText(block.title)}</p>${body}</li>`;
|
|
217
|
+
})
|
|
218
|
+
.join('\n');
|
|
219
|
+
// The first browser stays visible without the script, so a page whose
|
|
220
|
+
// module failed to load still shows a guide rather than nothing.
|
|
221
|
+
const hidden = bi === 0 ? '' : ' hidden';
|
|
222
|
+
sections.push(`<section class="xpg" data-pin-guide-browser="${browser}"${hidden}>\n<ol class="xpg-steps">\n${items}\n</ol>\n</section>`);
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
extensionName,
|
|
226
|
+
browsers,
|
|
227
|
+
locales,
|
|
228
|
+
theme,
|
|
229
|
+
steps,
|
|
230
|
+
html: `${sections.join('\n')}\n`,
|
|
231
|
+
css: pinGuideCss(theme),
|
|
232
|
+
script: PIN_GUIDE_SCRIPT,
|
|
233
|
+
messages,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
function pinGuideCss(theme) {
|
|
237
|
+
const lines = [
|
|
238
|
+
'/* Pin guide — generated by Extenshi. Layout only; restyle freely. */',
|
|
239
|
+
'.xpg-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 24px; }',
|
|
240
|
+
'.xpg-svg { display: block; width: 100%; height: auto; }',
|
|
241
|
+
'.xpg-title { margin: 10px 0 0; font-weight: 600; }',
|
|
242
|
+
'.xpg-body { margin: 4px 0 0; opacity: 0.8; }',
|
|
243
|
+
];
|
|
244
|
+
if (theme === 'auto') {
|
|
245
|
+
lines.push('.xpg-svg-dark { display: none; }', '@media (prefers-color-scheme: dark) {', ' .xpg-svg-light { display: none; }', ' .xpg-svg-dark { display: block; }', '}');
|
|
246
|
+
}
|
|
247
|
+
return `${lines.join('\n')}\n`;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Shipped as a separate file next to the page: the extension CSP forbids
|
|
251
|
+
* inline scripts. Plain ES2020, no build step, works in Chrome, Edge and
|
|
252
|
+
* Firefox. `chrome` and `browser` are both probed because Firefox exposes
|
|
253
|
+
* `getBrowserInfo` only on `browser`.
|
|
254
|
+
*/
|
|
255
|
+
export const PIN_GUIDE_SCRIPT = `// Pin guide helpers — generated by Extenshi. Load with <script type="module">.
|
|
256
|
+
|
|
257
|
+
const ext = globalThis.browser ?? globalThis.chrome
|
|
258
|
+
|
|
259
|
+
/** 'chrome' | 'edge' | 'firefox' — which pin guide this user needs. */
|
|
260
|
+
export async function detectPinGuideBrowser() {
|
|
261
|
+
try {
|
|
262
|
+
const info = await globalThis.browser?.runtime?.getBrowserInfo?.()
|
|
263
|
+
if (info && /firefox/i.test(info.name)) return 'firefox'
|
|
264
|
+
} catch {}
|
|
265
|
+
const nav = globalThis.navigator ?? {}
|
|
266
|
+
if (/\\bFirefox\\//.test(nav.userAgent ?? '')) return 'firefox'
|
|
267
|
+
const brands = nav.userAgentData?.brands ?? []
|
|
268
|
+
if (brands.some((b) => /Microsoft Edge/i.test(b.brand)) || /\\bEdg\\//.test(nav.userAgent ?? '')) return 'edge'
|
|
269
|
+
return 'chrome'
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/** Show only the detected browser's section. Returns the browser it picked. */
|
|
273
|
+
export async function showPinGuide(root = document) {
|
|
274
|
+
const browser = await detectPinGuideBrowser()
|
|
275
|
+
const sections = [...root.querySelectorAll('[data-pin-guide-browser]')]
|
|
276
|
+
if (sections.some((s) => s.dataset.pinGuideBrowser === browser)) {
|
|
277
|
+
for (const s of sections) s.hidden = s.dataset.pinGuideBrowser !== browser
|
|
278
|
+
}
|
|
279
|
+
return browser
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/** Replace the English captions with chrome.i18n messages where the extension has them. */
|
|
283
|
+
export function applyPinGuideMessages(root = document) {
|
|
284
|
+
const i18n = ext?.i18n
|
|
285
|
+
if (typeof i18n?.getMessage !== 'function') return
|
|
286
|
+
for (const el of root.querySelectorAll('.xpg [data-i18n]')) {
|
|
287
|
+
const text = i18n.getMessage(el.dataset.i18n)
|
|
288
|
+
if (text) el.textContent = text
|
|
289
|
+
}
|
|
290
|
+
for (const el of root.querySelectorAll('.xpg [data-i18n-aria-label]')) {
|
|
291
|
+
const text = i18n.getMessage(el.dataset.i18nAriaLabel)
|
|
292
|
+
if (text) el.setAttribute('aria-label', text)
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* true / false when the browser can tell (action.getUserSettings: Chrome 91+,
|
|
298
|
+
* Edge 91+, Firefox 116+), null when it cannot — then show the guide anyway.
|
|
299
|
+
*/
|
|
300
|
+
export async function isPinnedToToolbar() {
|
|
301
|
+
const action = ext?.action ?? ext?.browserAction
|
|
302
|
+
if (typeof action?.getUserSettings !== 'function') return null
|
|
303
|
+
try {
|
|
304
|
+
const settings = await action.getUserSettings()
|
|
305
|
+
return typeof settings?.isOnToolbar === 'boolean' ? settings.isOnToolbar : null
|
|
306
|
+
} catch {
|
|
307
|
+
return null
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Call back with the pinned state now and whenever it may have changed: on
|
|
313
|
+
* action.onUserSettingsChanged where it exists (Chrome 130+, Firefox 142+), and
|
|
314
|
+
* whenever the page regains focus or becomes visible — the user pins in the
|
|
315
|
+
* toolbar, outside the page. Returns a function that stops listening.
|
|
316
|
+
*/
|
|
317
|
+
export function onPinnedChange(callback) {
|
|
318
|
+
let last
|
|
319
|
+
const check = async () => {
|
|
320
|
+
const value = await isPinnedToToolbar()
|
|
321
|
+
if (value !== last) {
|
|
322
|
+
last = value
|
|
323
|
+
callback(value)
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
const onVisible = () => {
|
|
327
|
+
if (document.visibilityState === 'visible') check()
|
|
328
|
+
}
|
|
329
|
+
const changed = (ext?.action ?? ext?.browserAction)?.onUserSettingsChanged
|
|
330
|
+
changed?.addListener?.(check)
|
|
331
|
+
globalThis.addEventListener('focus', check)
|
|
332
|
+
document.addEventListener('visibilitychange', onVisible)
|
|
333
|
+
check()
|
|
334
|
+
return () => {
|
|
335
|
+
changed?.removeListener?.(check)
|
|
336
|
+
globalThis.removeEventListener('focus', check)
|
|
337
|
+
document.removeEventListener('visibilitychange', onVisible)
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
`;
|
|
341
|
+
//# sourceMappingURL=pin-guide-kit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pin-guide-kit.js","sourceRoot":"","sources":["../src/pin-guide-kit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EACN,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GAGxB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,iBAAiB,EAAuB,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE/F,MAAM,CAAC,MAAM,kBAAkB,GAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;AAmD3F,MAAM,OAAO,gBAAiB,SAAQ,KAAK;CAAG;AAE9C,MAAM,aAAa,GAAG,sEAAsE,CAAA;AAC5F,wGAAwG;AACxG,MAAM,aAAa,GAAG,6DAA6D,CAAA;AACnF,6EAA6E;AAC7E,MAAM,UAAU,GAAG,8BAA8B,CAAA;AAEjD,kEAAkE;AAClE,MAAM,UAAU,eAAe,CAAC,MAAsB;IACrD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC;SACN,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAC3B,CAAC;AAED,SAAS,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;AAClF,CAAC;AAED,SAAS,GAAG,CAAC,CAAS;IACrB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;AAC3C,CAAC;AAED,gFAAgF;AAChF,SAAS,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;AACjC,CAAC;AAED,SAAS,eAAe,CAAC,IAAmC;IAC3D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,kBAAkB,CAAC,CAAA;IAC9D,MAAM,GAAG,GAAsB,EAAE,CAAA;IACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAClC,IAAI,CAAE,kBAAwC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,gBAAgB,CAAC,oBAAoB,GAAG,WAAW,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC/F,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAoB,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAoB,CAAC,CAAA;IACxE,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,SAAS,cAAc,CAAC,IAAmC;IAC1D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,iBAAiB,CAAC,CAAA;IAC7D,MAAM,GAAG,GAAqB,EAAE,CAAA;IAChC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;QAC7B,4EAA4E;QAC5E,uEAAuE;QACvE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,gBAAgB,CACzB,8BAA8B,GAAG,iBAAiB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACjF,CAAA;QACF,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAClC,CAAC;IACD,yEAAyE;IACzE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,OAAO,GAAG,CAAA;AACX,CAAC;AAED,SAAS,eAAe,CAAC,IAA+B;IACvD,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,CAAA;IACtB,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnB,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAA;IAC5D,MAAM,IAAI,gBAAgB,CACzB,wFAAwF;QACvF,qGAAqG,CACtG,CAAA;AACF,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC9C,CAAC;AAED;;;;;GAKG;AACH,SAAS,OAAO,CAAC,KAAoB,EAAE,QAAuB,EAAE,MAAc;IAC7E,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAA;IAC3B,MAAM,GAAG,GAAG,+CAA+C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACrE,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,gBAAgB,CAAC,QAAQ,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAA;IACvE,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAA;IAC7B,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAClC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;QACvC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;QACvC,KAAK,CAAC,IAAI,CACT,gBAAgB,OAAO,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,yCAAyC,CACjJ,CAAA;IACF,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1B,KAAK,CAAC,IAAI,CACT,eAAe,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,kBAAkB,MAAM,KAAK,EACnE,YAAY,GAAG,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,0IAA0I,CAAC,CAAC,CAAC,SAAS,CACxL,CAAA;IACF,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;AAC1D,CAAC;AAED,2FAA2F;AAC3F,SAAS,SAAS,CAAC,GAAW,EAAE,GAAW,EAAE,MAAc,EAAE,GAAW;IACvE,OAAO,GAAG,CAAC,OAAO,CACjB,OAAO,EACP,eAAe,GAAG,iBAAiB,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,IAAI,CACpF,CAAA;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAuB;IACvD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAChD,MAAM,KAAK,GAAqB,KAAK,CAAC,KAAK,IAAI,OAAO,CAAA;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,UAAU,CAAA;IACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,gBAAgB,CACzB,mFAAmF,CACnF,CAAA;IACF,CAAC;IACD,MAAM,MAAM,GACX,KAAK,CAAC,WAAW,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QACjE,CAAC,CAAC,KAAK,CAAC,WAAW;QACnB,CAAC,CAAC,wBAAwB,CAAA;IAC5B,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,gBAAgB,CAAA;IAEpE,MAAM,SAAS,GAAG,CAAC,OAAwB,EAAE,CAAmB,EAAE,MAAsB,EAAE,EAAE,CAC3F,mBAAmB,CAAC;QACnB,aAAa;QACb,OAAO;QACP,WAAW,EAAE,MAAM;QACnB,KAAK,EAAE,CAAC;QACR,yEAAyE;QACzE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QACjC,MAAM;KACN,CAAC,CAAA;IAEH,MAAM,KAAK,GAAyB,EAAE,CAAA;IACtC,MAAM,QAAQ,GAA4B,EAAE,CAAA;IAC5C,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,IAAI,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;QAChD,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QACzC,MAAM,IAAI,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACvE,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,KAAa,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAA;QAEvF,MAAM,YAAY,GAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3D,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACf,OAAO;gBACN,CAAC;gBACD,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;gBACrC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC9D,IAAI,EAAE;oBACL,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;oBACjD,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;iBAClB;aACD,CAAA;QACF,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,OAAO,CAAC,GAAG,YAAY,CAAA;QAE7B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YACzE,MAAM,GAAG,GAAuC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YACtE,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAA;YACtB,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC9C,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;gBACzB,IAAI,CAAC,CAAC;oBAAE,SAAQ;gBAChB,MAAM,KAAK,GAAG,GAAG,KAAK,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC/C,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,KAAK,SAAS,EAAE,CAAA;gBACzF,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBACxC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,KAAK,QAAQ,EAAE,CAAA;gBACvF,CAAC;gBACD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;oBACjB,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;oBACrC,WAAW,EAAE,GAAG,KAAK,gCAAgC;iBACrD,CAAA;YACF,CAAC;QACF,CAAC;QAED,MAAM,KAAK,GAAG,EAAE;aACd,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACjB,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;YACzB,IAAI,CAAC,CAAC;gBAAE,OAAO,EAAE,CAAA;YACjB,MAAM,QAAQ,GACb,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO;gBAC5B,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC;oBACvE,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC;gBAC1E,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;YAC5D,MAAM,IAAI,GACT,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;gBACjC,CAAC,CAAC,kCAAkC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM;gBAC7E,CAAC,CAAC,EAAE,CAAA;YACN,OAAO,wBAAwB,QAAQ,mCAAmC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,CAAA;QAClI,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,sEAAsE;QACtE,iEAAiE;QACjE,MAAM,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACxC,QAAQ,CAAC,IAAI,CACZ,gDAAgD,OAAO,IAAI,MAAM,8BAA8B,KAAK,qBAAqB,CACzH,CAAA;IACF,CAAC;IAED,OAAO;QACN,aAAa;QACb,QAAQ;QACR,OAAO;QACP,KAAK;QACL,KAAK;QACL,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAChC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;QACvB,MAAM,EAAE,gBAAgB;QACxB,QAAQ;KACR,CAAA;AACF,CAAC;AAED,SAAS,WAAW,CAAC,KAAuB;IAC3C,MAAM,KAAK,GAAG;QACb,uEAAuE;QACvE,mFAAmF;QACnF,yDAAyD;QACzD,oDAAoD;QACpD,8CAA8C;KAC9C,CAAA;IACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CACT,kCAAkC,EAClC,uCAAuC,EACvC,qCAAqC,EACrC,qCAAqC,EACrC,GAAG,CACH,CAAA;IACF,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqF/B,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pin guide captions — the step titles, bodies and alt text of the "find the
|
|
3
|
+
* extension and pin it" sequence, in every language our end-user pages ship in.
|
|
4
|
+
*
|
|
5
|
+
* SELF-CONTAINED ON PURPOSE — no imports, so it can be copied verbatim into the
|
|
6
|
+
* published `@extenshi/mcp` and `@extenshi/cli` packages, which cannot depend on
|
|
7
|
+
* unpublished workspace packages (same constraint as welcome-agent-brief.ts).
|
|
8
|
+
*
|
|
9
|
+
* SINGLE SOURCE, THREE COPIES. The three pin-guide files (pin-guide.ts,
|
|
10
|
+
* pin-guide-strings.ts, pin-guide-kit.ts) live canonically in shared-types and
|
|
11
|
+
* are copied into tools/extenshi-mcp/src and tools/extenshi-cli/src with their
|
|
12
|
+
* `shared-types/` import specifiers rewritten to `./` — otherwise identical.
|
|
13
|
+
* After editing any of them, run from the repo root:
|
|
14
|
+
* for f in pin-guide pin-guide-strings pin-guide-kit; do for d in tools/extenshi-mcp/src tools/extenshi-cli/src; do
|
|
15
|
+
* sed "s#from 'shared-types\/#from './#" shared-types/$f.ts > $d/$f.ts
|
|
16
|
+
* done; done
|
|
17
|
+
* Sync tests in both packages fail CI on drift.
|
|
18
|
+
*
|
|
19
|
+
* The English text is the text the hosted welcome pages have always rendered,
|
|
20
|
+
* byte for byte — `buildPinGuideBlocks` without a locale must not change.
|
|
21
|
+
*
|
|
22
|
+
* Naming the browser's own controls is the part that has to be right: a guide
|
|
23
|
+
* that tells the user to click a menu item their browser does not have is
|
|
24
|
+
* worse than no guide. So a control is quoted only where we hold the browser's
|
|
25
|
+
* actual string for that language:
|
|
26
|
+
* - Firefox "Pin to Toolbar" — from Mozilla's localization repository
|
|
27
|
+
* (mozilla-l10n/firefox-l10n, browser/browser/unifiedExtensions.ftl,
|
|
28
|
+
* `unified-extensions-context-menu-pin-to-toolbar`, checked 2026-11-04).
|
|
29
|
+
* - Edge "Show in toolbar" — Edge is closed source, so outside English the
|
|
30
|
+
* eye is described by what it does, never quoted.
|
|
31
|
+
* - Chrome — the control is a pushpin glyph with no visible label.
|
|
32
|
+
*/
|
|
33
|
+
/** Same list as END_USER_LOCALES (shared-types/end-user-locale.ts), pinned by a test. */
|
|
34
|
+
export declare const PIN_GUIDE_LOCALES: readonly ["en", "es", "pt-BR", "fr", "de", "it", "ru", "ja", "ko", "zh-CN", "ar"];
|
|
35
|
+
export type PinGuideLocale = (typeof PIN_GUIDE_LOCALES)[number];
|
|
36
|
+
type PerBrowser = Record<'chrome' | 'edge' | 'firefox', string>;
|
|
37
|
+
/**
|
|
38
|
+
* Templates take two placeholders: `{name}` (the extension's display name) and
|
|
39
|
+
* `{browser}` (Chrome / Edge / Firefox). Fill them with `pinGuideText`.
|
|
40
|
+
*/
|
|
41
|
+
export interface PinGuideStrings {
|
|
42
|
+
step1Title: string;
|
|
43
|
+
step1Body: string;
|
|
44
|
+
step1Alt: string;
|
|
45
|
+
step2Title: string;
|
|
46
|
+
step2Alt: string;
|
|
47
|
+
/** Step 3 is the toggle, which is the one control that differs per browser. */
|
|
48
|
+
step3Title: PerBrowser;
|
|
49
|
+
step3Body: PerBrowser;
|
|
50
|
+
step3Alt: PerBrowser;
|
|
51
|
+
step4Title: string;
|
|
52
|
+
step4Body: string;
|
|
53
|
+
step4Alt: string;
|
|
54
|
+
}
|
|
55
|
+
export declare const PIN_GUIDE_STRINGS: Record<PinGuideLocale, PinGuideStrings>;
|
|
56
|
+
/** Resolve a BCP 47 tag (`pt_BR`, `zh-cn`, `fr-CA`) to a supported locale, else English. */
|
|
57
|
+
export declare function pinGuideLocale(tag: string | null | undefined): PinGuideLocale;
|
|
58
|
+
/**
|
|
59
|
+
* Fill `{name}` and `{browser}` in one pass, so a name that itself contains
|
|
60
|
+
* `{browser}` is printed literally rather than substituted twice.
|
|
61
|
+
*/
|
|
62
|
+
export declare function pinGuideText(template: string, vars: {
|
|
63
|
+
name: string;
|
|
64
|
+
browser: string;
|
|
65
|
+
}): string;
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=pin-guide-strings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pin-guide-strings.d.ts","sourceRoot":"","sources":["../src/pin-guide-strings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,yFAAyF;AACzF,eAAO,MAAM,iBAAiB,mFAYpB,CAAA;AACV,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D,KAAK,UAAU,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,CAAA;AAE/D;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,+EAA+E;IAC/E,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,UAAU,CAAA;IACrB,QAAQ,EAAE,UAAU,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CAChB;AAID,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,cAAc,EAAE,eAAe,CAqSrE,CAAA;AAED,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,CAU7E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE9F"}
|