@zumer/snapdom 1.9.13 → 2.0.0-dev.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 +239 -7
- package/dist/snapdom.js +635 -223
- package/dist/snapdom.min.js +7 -7
- package/dist/snapdom.min.mjs +7 -7
- package/dist/snapdom.mjs +604 -219
- package/package.json +1 -1
- package/types/snapdom.d.ts +269 -176
package/package.json
CHANGED
package/types/snapdom.d.ts
CHANGED
|
@@ -1,265 +1,358 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* snapDOM – ultra-fast DOM-to-image capture
|
|
3
|
-
* TypeScript definitions (v1.9.
|
|
3
|
+
* TypeScript definitions (v1.9.14)
|
|
4
4
|
*
|
|
5
5
|
* Notes:
|
|
6
6
|
* - Style compression is internal (no public option).
|
|
7
7
|
* - Icon fonts are always embedded; `embedFonts` controls non-icon fonts only.
|
|
8
|
+
* - This file preserves backward compatibility with earlier 1.9.x defs.
|
|
8
9
|
*/
|
|
9
10
|
|
|
11
|
+
/* =========================
|
|
12
|
+
* Basic MIME / type aliases
|
|
13
|
+
* ========================= */
|
|
14
|
+
|
|
10
15
|
export type RasterMime = "png" | "jpg" | "jpeg" | "webp";
|
|
11
16
|
export type BlobType = "svg" | RasterMime;
|
|
12
17
|
|
|
13
18
|
export type IconFontMatcher = string | RegExp;
|
|
14
19
|
export type CachePolicy = "disabled" | "full" | "auto" | "soft";
|
|
15
20
|
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
/* =========================
|
|
22
|
+
* Font & proxy declarations
|
|
23
|
+
* ========================= */
|
|
18
24
|
|
|
19
|
-
export interface
|
|
20
|
-
/** CSS font-family name (e.g. "Inter"). */
|
|
25
|
+
export interface LocalFont {
|
|
21
26
|
family: string;
|
|
22
|
-
|
|
23
|
-
src: string;
|
|
24
|
-
/** CSS font-weight value (e.g. 400, "bold"). */
|
|
27
|
+
src: string; // URL or data: URL
|
|
25
28
|
weight?: string | number;
|
|
26
|
-
/** CSS font-style value (e.g. "normal", "italic"). */
|
|
27
29
|
style?: string;
|
|
28
|
-
/** CSS font-stretch as percentage (e.g. 100 for normal). */
|
|
29
|
-
stretchPct?: number;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
export interface
|
|
33
|
-
/**
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
export interface ExcludeFonts {
|
|
33
|
+
/** Case-insensitive family names to skip (non-icon only). */
|
|
34
|
+
families?: string[];
|
|
35
|
+
/** Host substrings to skip (e.g., "fonts.gstatic.com"). */
|
|
36
|
+
domains?: string[];
|
|
37
|
+
/** Unicode-range subset tags to skip (e.g., "cyrillic-ext"). */
|
|
38
|
+
subsets?: string[];
|
|
39
|
+
}
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
*/
|
|
43
|
-
fast?: boolean;
|
|
41
|
+
/* =========================
|
|
42
|
+
* Capture options
|
|
43
|
+
* ========================= */
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
export interface SnapdomOptions {
|
|
46
|
+
/** Fast path: skip small idle delays where safe. */
|
|
47
|
+
fast?: boolean;
|
|
48
|
+
/** Output scale multiplier. Takes precedence over width/height. */
|
|
49
49
|
scale?: number;
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Device pixel ratio to use for raster exports.
|
|
53
|
-
* Default: `window.devicePixelRatio` at capture time.
|
|
54
|
-
*/
|
|
50
|
+
/** Device pixel ratio to use for rasterization (defaults to `devicePixelRatio`). */
|
|
55
51
|
dpr?: number;
|
|
56
|
-
|
|
57
|
-
/** Target width for the exported image. Ignored if `scale` is provided. */
|
|
52
|
+
/** Target width of the export (keeps aspect if only one dimension is provided). */
|
|
58
53
|
width?: number;
|
|
59
|
-
|
|
60
|
-
/** Target height for the exported image. Ignored if `scale` is provided. */
|
|
54
|
+
/** Target height of the export (keeps aspect if only one dimension is provided). */
|
|
61
55
|
height?: number;
|
|
62
56
|
|
|
63
|
-
/**
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
*/
|
|
67
|
-
backgroundColor?: string | null;
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Quality for JPG/WebP (0..1).
|
|
71
|
-
* Default: 0.92
|
|
72
|
-
*/
|
|
57
|
+
/** Background fallback color (used esp. for JPEG). Default "#fff". */
|
|
58
|
+
backgroundColor?: string;
|
|
59
|
+
/** Quality for JPEG/WebP (0..1). Default 1. */
|
|
73
60
|
quality?: number;
|
|
74
61
|
|
|
75
|
-
/**
|
|
76
|
-
* Proxy base URL used as a fallback for CORS-restricted images/fonts.
|
|
77
|
-
* Example: "https://corsproxy.io/?url="
|
|
78
|
-
*/
|
|
62
|
+
/** Cross-origin proxy prefix (used as a fallback when CORS blocks). */
|
|
79
63
|
useProxy?: string;
|
|
80
64
|
|
|
81
|
-
/**
|
|
65
|
+
/** Default Blob type for toBlob() when unspecified. */
|
|
82
66
|
type?: BlobType;
|
|
83
67
|
|
|
84
|
-
/**
|
|
85
|
-
* Preferred export format used by convenience methods / download.
|
|
86
|
-
* Default: "png"
|
|
87
|
-
*/
|
|
88
|
-
format?: BlobType;
|
|
89
|
-
|
|
90
|
-
/** CSS selectors removed from the cloned subtree before processing. */
|
|
68
|
+
/** CSS selector list to filter nodes. */
|
|
91
69
|
exclude?: string[];
|
|
70
|
+
/** How to apply `exclude` ("hide" keeps layout via visibility:hidden; "remove" drops nodes). Default "hide". */
|
|
71
|
+
excludeMode?: "hide" | "remove";
|
|
92
72
|
|
|
93
73
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*/
|
|
97
|
-
excludeMode?: ExcludeMode;
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Advanced node filter; return false to exclude a node during traversal.
|
|
101
|
-
* Applied to the cloned subtree.
|
|
74
|
+
* Custom predicate: return true to keep node, false to exclude.
|
|
75
|
+
* Runs in document order; pairs with `filterMode`.
|
|
102
76
|
*/
|
|
103
77
|
filter?: (el: Element) => boolean;
|
|
78
|
+
/** How to apply `filter` ("hide" or "remove"). Default "hide". */
|
|
79
|
+
filterMode?: "hide" | "remove";
|
|
104
80
|
|
|
81
|
+
/** Straighten the root: remove translate/rotate, keep scale/skew. */
|
|
82
|
+
straighten?: boolean;
|
|
105
83
|
/**
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*/
|
|
109
|
-
filterMode?: FilterMode;
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Whether to synthesize placeholders for broken images, etc.
|
|
113
|
-
* Default: true
|
|
84
|
+
* Do not expand root bbox for shadows/blur/outline; also strip shadows/outline
|
|
85
|
+
* from the cloned root to get a tight capture box.
|
|
114
86
|
*/
|
|
115
|
-
|
|
87
|
+
noShadows?: boolean;
|
|
116
88
|
|
|
117
|
-
/**
|
|
118
|
-
* Inline non-icon fonts used within the captured subtree.
|
|
119
|
-
* Icon fonts are always embedded.
|
|
120
|
-
* Default: false
|
|
121
|
-
*/
|
|
89
|
+
/** Inline non-icon fonts actually used within the subtree. */
|
|
122
90
|
embedFonts?: boolean;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
*/
|
|
127
|
-
localFonts?: LocalFontDescriptor[];
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Extra icon font family matchers (by name or regex).
|
|
131
|
-
*/
|
|
91
|
+
/** Provide fonts explicitly to avoid remote discovery. */
|
|
92
|
+
localFonts?: LocalFont[];
|
|
93
|
+
/** Additional matchers for icon font families (strings or regex). */
|
|
132
94
|
iconFonts?: IconFontMatcher | IconFontMatcher[];
|
|
95
|
+
/** Skip specific non-icon fonts (by family/domain/subset). */
|
|
96
|
+
excludeFonts?: ExcludeFonts;
|
|
133
97
|
|
|
134
98
|
/**
|
|
135
|
-
*
|
|
136
|
-
|
|
137
|
-
excludeFonts?: IconFontMatcher[];
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Fallback image source when an <img> fails to load.
|
|
141
|
-
* - String: use as-is.
|
|
142
|
-
* - Callback: receives measured width/height and original src, returns a URL string.
|
|
99
|
+
* Fallback image when <img> fails to load.
|
|
100
|
+
* Can be a fixed URL or a callback that receives measured dimensions.
|
|
143
101
|
*/
|
|
144
102
|
fallbackURL?:
|
|
145
103
|
| string
|
|
146
|
-
| ((
|
|
147
|
-
args: {
|
|
148
|
-
width?: number;
|
|
149
|
-
height?: number;
|
|
150
|
-
src?: string;
|
|
151
|
-
element: HTMLImageElement;
|
|
152
|
-
}
|
|
153
|
-
) => string | Promise<string>);
|
|
104
|
+
| ((dims: { width?: number; height?: number }) => string);
|
|
154
105
|
|
|
155
|
-
/**
|
|
156
|
-
* Cache policy applied at capture start.
|
|
157
|
-
* Default: "soft"
|
|
158
|
-
*/
|
|
106
|
+
/** Cache policy for resources and style maps. Default "soft". */
|
|
159
107
|
cache?: CachePolicy;
|
|
160
108
|
|
|
161
|
-
/**
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
109
|
+
/** Show placeholders when resources are missing. Default true. */
|
|
110
|
+
placeholders?: boolean;
|
|
111
|
+
|
|
112
|
+
/** Arbitrary plugin configuration at call-site (see PluginUse). */
|
|
113
|
+
plugins?: PluginUse[];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* =========================
|
|
117
|
+
* Capture context (hook state)
|
|
118
|
+
* ========================= */
|
|
119
|
+
|
|
120
|
+
export interface CaptureContext extends SnapdomOptions {
|
|
121
|
+
/** Input element being captured. */
|
|
122
|
+
element: Element;
|
|
123
|
+
|
|
124
|
+
/** Cloned root (detached), available after `beforeClone`/`afterClone`. */
|
|
125
|
+
clone?: HTMLElement | SVGElement | null;
|
|
126
|
+
|
|
127
|
+
/** Internal style/class caches (opaque to user). */
|
|
128
|
+
classCSS?: string;
|
|
129
|
+
styleCache?: unknown;
|
|
130
|
+
fontsCSS?: string;
|
|
131
|
+
baseCSS?: string;
|
|
132
|
+
|
|
133
|
+
/** Serialized artifacts, available after render. */
|
|
134
|
+
svgString?: string;
|
|
135
|
+
dataURL?: string;
|
|
136
|
+
|
|
137
|
+
/** Current export info during beforeExport/afterExport. */
|
|
138
|
+
export?: {
|
|
139
|
+
/** Export key (e.g., "png", "jpeg", "svg", or any custom key). */
|
|
140
|
+
type: string;
|
|
141
|
+
/** Options passed to the exporter. */
|
|
142
|
+
options?: any;
|
|
143
|
+
/** Canonical SVG data URL of this capture. */
|
|
144
|
+
url: string;
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/* =========================
|
|
149
|
+
* Exporter signatures
|
|
150
|
+
* ========================= */
|
|
151
|
+
|
|
152
|
+
export type Exporter = (ctx: CaptureContext, opts?: any) => Promise<any>;
|
|
153
|
+
|
|
154
|
+
/** Map returned by `defineExports`: keys are exposed on the result (e.g., `pdf` → `result.toPdf()` as well as `result['pdf']()`). */
|
|
155
|
+
export type ExportMap = Record<string, Exporter>;
|
|
156
|
+
|
|
157
|
+
/* =========================
|
|
158
|
+
* Plugin system
|
|
159
|
+
* ========================= */
|
|
160
|
+
|
|
161
|
+
export interface SnapdomPlugin {
|
|
162
|
+
/** Unique name for de-dupe/overrides. */
|
|
163
|
+
name: string;
|
|
166
164
|
|
|
165
|
+
/** Hook order follows registration order. All hooks may be async. */
|
|
166
|
+
beforeSnap?(context: CaptureContext): void | Promise<void>;
|
|
167
|
+
beforeClone?(context: CaptureContext): void | Promise<void>;
|
|
168
|
+
afterClone?(context: CaptureContext): void | Promise<void>;
|
|
169
|
+
beforeRender?(context: CaptureContext): void | Promise<void>;
|
|
170
|
+
afterRender?(context: CaptureContext): void | Promise<void>;
|
|
171
|
+
|
|
172
|
+
/** Runs before EACH export. */
|
|
173
|
+
beforeExport?(context: CaptureContext): void | Promise<void>;
|
|
167
174
|
/**
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* Default: false
|
|
175
|
+
* Runs after EACH export; returning a value will be chained to the next plugin
|
|
176
|
+
* (transform pipeline). If undefined is returned, the prior result is preserved.
|
|
171
177
|
*/
|
|
172
|
-
|
|
178
|
+
afterExport?(context: CaptureContext, result: any): any | Promise<any>;
|
|
173
179
|
|
|
174
180
|
/**
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
* Default: false
|
|
181
|
+
* Provide custom exporters (e.g., { pdf: async (ctx, opts) => Blob }).
|
|
182
|
+
* Keys are exposed on the capture result as helpers (toPdf()) and as index access (result['pdf']()).
|
|
178
183
|
*/
|
|
179
|
-
|
|
184
|
+
defineExports?(context: CaptureContext): ExportMap | Promise<ExportMap>;
|
|
185
|
+
|
|
186
|
+
/** Runs ONCE after the FIRST successful export of this capture (good for cleanup). */
|
|
187
|
+
afterSnap?(context: CaptureContext): void | Promise<void>;
|
|
180
188
|
}
|
|
181
189
|
|
|
190
|
+
export type PluginFactory = (options?: any) => SnapdomPlugin;
|
|
191
|
+
/** You can pass a plugin instance, a factory, or a tuple with options. */
|
|
192
|
+
export type PluginUse =
|
|
193
|
+
| SnapdomPlugin
|
|
194
|
+
| PluginFactory
|
|
195
|
+
| [PluginFactory, any]
|
|
196
|
+
| { plugin: PluginFactory; options?: any };
|
|
182
197
|
|
|
183
|
-
|
|
184
|
-
|
|
198
|
+
/* =========================
|
|
199
|
+
* Capture result API
|
|
200
|
+
* ========================= */
|
|
201
|
+
|
|
202
|
+
export interface DownloadOptions {
|
|
203
|
+
filename?: string;
|
|
204
|
+
/** Override default blob type for this download. */
|
|
185
205
|
type?: BlobType;
|
|
186
|
-
/**
|
|
206
|
+
/** Quality hint for raster formats. */
|
|
187
207
|
quality?: number;
|
|
188
|
-
/**
|
|
189
|
-
|
|
208
|
+
/** Target width/height for this export. */
|
|
209
|
+
width?: number;
|
|
210
|
+
height?: number;
|
|
190
211
|
}
|
|
191
212
|
|
|
192
|
-
export interface
|
|
193
|
-
|
|
194
|
-
format?: "svg" | RasterMime;
|
|
195
|
-
/** Base filename without extension. Default: "snapDOM". */
|
|
196
|
-
filename?: string;
|
|
197
|
-
/** Background override for lossy formats. */
|
|
198
|
-
backgroundColor?: string | null;
|
|
199
|
-
/** JPG/WebP quality (0..1). Default: 0.92. */
|
|
213
|
+
export interface BlobOptions {
|
|
214
|
+
type?: BlobType;
|
|
200
215
|
quality?: number;
|
|
216
|
+
width?: number;
|
|
217
|
+
height?: number;
|
|
201
218
|
}
|
|
202
219
|
|
|
203
220
|
export interface CaptureResult {
|
|
204
|
-
/**
|
|
221
|
+
/** Canonical data URL of the SVG snapshot (when available). */
|
|
205
222
|
url: string;
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* @deprecated Use `toSvg()` for an <img> that renders the SVG snapshot.
|
|
226
|
+
* Historical alias kept for compatibility.
|
|
227
|
+
*/
|
|
228
|
+
toImg(): Promise<HTMLImageElement>;
|
|
229
|
+
|
|
230
|
+
/** Returns an HTMLImageElement that renders the SVG snapshot. */
|
|
231
|
+
toSvg(options?: Partial<SnapdomOptions>): Promise<HTMLImageElement>;
|
|
232
|
+
|
|
233
|
+
/** Returns a Canvas with the rasterized snapshot. */
|
|
234
|
+
toCanvas(options?: Partial<SnapdomOptions>): Promise<HTMLCanvasElement>;
|
|
235
|
+
|
|
236
|
+
/** Returns a Blob of the chosen type (svg/png/jpeg/webp). */
|
|
237
|
+
toBlob(options?: BlobOptions & Partial<SnapdomOptions>): Promise<Blob>;
|
|
238
|
+
|
|
239
|
+
/** Convenience raster exports returning an HTMLImageElement. */
|
|
240
|
+
toPng(options?: Partial<SnapdomOptions>): Promise<HTMLImageElement>;
|
|
241
|
+
toJpeg(options?: Partial<SnapdomOptions>): Promise<HTMLImageElement>;
|
|
242
|
+
/** Alias for `toJpeg()`. */
|
|
243
|
+
toJpg(options?: Partial<SnapdomOptions>): Promise<HTMLImageElement>;
|
|
244
|
+
toWebp(options?: Partial<SnapdomOptions>): Promise<HTMLImageElement>;
|
|
245
|
+
|
|
246
|
+
/** Trigger a client-side download of the snapshot using current/default settings. */
|
|
247
|
+
download(options?: DownloadOptions & Partial<SnapdomOptions>): Promise<void>;
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Custom exporters exposed by plugins:
|
|
251
|
+
* - As helpers: a plugin returning { pdf: (...) => ... } also enables result.toPdf(...)
|
|
252
|
+
* - As index access: result["pdf"](...)
|
|
253
|
+
*
|
|
254
|
+
* Since keys are not known ahead of time, we allow index access.
|
|
255
|
+
*/
|
|
256
|
+
[key: string]: any;
|
|
224
257
|
}
|
|
225
258
|
|
|
259
|
+
/* =========================
|
|
260
|
+
* Main callable & static helpers
|
|
261
|
+
* ========================= */
|
|
262
|
+
|
|
263
|
+
/** Overload: main callable returns a reusable exporter object for the element. */
|
|
264
|
+
export declare function snapdom(
|
|
265
|
+
element: Element,
|
|
266
|
+
options?: SnapdomOptions
|
|
267
|
+
): Promise<CaptureResult>;
|
|
268
|
+
|
|
226
269
|
/**
|
|
227
|
-
*
|
|
270
|
+
* Global plugin registration (chainable).
|
|
271
|
+
* - De-duplicates by `name`.
|
|
272
|
+
* - Execution order = registration order.
|
|
273
|
+
* - Per-capture plugins run before globals and override by `name`.
|
|
228
274
|
*/
|
|
229
|
-
export declare function snapdom(el: Element, options?: CaptureOptions): Promise<CaptureResult>;
|
|
230
|
-
|
|
231
275
|
export declare namespace snapdom {
|
|
232
|
-
function
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
function
|
|
238
|
-
|
|
239
|
-
|
|
276
|
+
function plugins(...defs: PluginUse[]): typeof snapdom;
|
|
277
|
+
|
|
278
|
+
/** Shortcut helpers that run a one-off capture+export. */
|
|
279
|
+
|
|
280
|
+
/** @deprecated Returns an SVG <img>; prefer `toSvg`. */
|
|
281
|
+
function toImg(
|
|
282
|
+
element: Element,
|
|
283
|
+
options?: SnapdomOptions
|
|
284
|
+
): Promise<HTMLImageElement>;
|
|
285
|
+
|
|
286
|
+
function toSvg(
|
|
287
|
+
element: Element,
|
|
288
|
+
options?: SnapdomOptions
|
|
289
|
+
): Promise<HTMLImageElement>;
|
|
290
|
+
|
|
291
|
+
function toCanvas(
|
|
292
|
+
element: Element,
|
|
293
|
+
options?: SnapdomOptions
|
|
294
|
+
): Promise<HTMLCanvasElement>;
|
|
295
|
+
|
|
296
|
+
function toBlob(
|
|
297
|
+
element: Element,
|
|
298
|
+
options?: SnapdomOptions & BlobOptions
|
|
299
|
+
): Promise<Blob>;
|
|
300
|
+
|
|
301
|
+
function toPng(
|
|
302
|
+
element: Element,
|
|
303
|
+
options?: SnapdomOptions
|
|
304
|
+
): Promise<HTMLImageElement>;
|
|
305
|
+
|
|
306
|
+
function toJpeg(
|
|
307
|
+
element: Element,
|
|
308
|
+
options?: SnapdomOptions
|
|
309
|
+
): Promise<HTMLImageElement>;
|
|
310
|
+
|
|
311
|
+
/** Alias for `toJpeg`. */
|
|
312
|
+
function toJpg(
|
|
313
|
+
element: Element,
|
|
314
|
+
options?: SnapdomOptions
|
|
315
|
+
): Promise<HTMLImageElement>;
|
|
316
|
+
|
|
317
|
+
function toWebp(
|
|
318
|
+
element: Element,
|
|
319
|
+
options?: SnapdomOptions
|
|
320
|
+
): Promise<HTMLImageElement>;
|
|
321
|
+
|
|
322
|
+
function download(
|
|
323
|
+
element: Element,
|
|
324
|
+
options?: SnapdomOptions & DownloadOptions
|
|
325
|
+
): Promise<void>;
|
|
240
326
|
}
|
|
241
327
|
|
|
242
|
-
|
|
243
|
-
*
|
|
244
|
-
*/
|
|
328
|
+
/* =========================
|
|
329
|
+
* preCache helper
|
|
330
|
+
* ========================= */
|
|
331
|
+
|
|
245
332
|
export interface PreCacheOptions {
|
|
246
|
-
/**
|
|
333
|
+
/** Root to scan (defaults to `document`). */
|
|
334
|
+
root?: Element | Document;
|
|
335
|
+
/** Try to embed non-icon fonts used under root (see also localFonts). */
|
|
247
336
|
embedFonts?: boolean;
|
|
248
|
-
/**
|
|
249
|
-
localFonts?:
|
|
250
|
-
/**
|
|
337
|
+
/** Provide fonts explicitly to avoid remote discovery. */
|
|
338
|
+
localFonts?: LocalFont[];
|
|
339
|
+
/** Additional matchers for icon fonts (strings or regex). */
|
|
340
|
+
iconFonts?: IconFontMatcher | IconFontMatcher[];
|
|
341
|
+
/** Cross-origin proxy prefix (as in SnapdomOptions.useProxy). */
|
|
251
342
|
useProxy?: string;
|
|
252
|
-
/**
|
|
253
|
-
|
|
343
|
+
/** Cache policy for this preload operation. */
|
|
344
|
+
cache?: CachePolicy;
|
|
345
|
+
|
|
346
|
+
/** Back-compat fields (no-ops if present) */
|
|
254
347
|
/**
|
|
255
|
-
*
|
|
256
|
-
* Note: for `preCache` the option name in runtime is `cacheOpt`.
|
|
348
|
+
* @deprecated Use `cache` instead.
|
|
257
349
|
*/
|
|
258
350
|
cacheOpt?: CachePolicy;
|
|
259
351
|
}
|
|
260
352
|
|
|
261
353
|
/**
|
|
262
|
-
* Preload resources
|
|
354
|
+
* Preload external resources for a subtree to avoid first-capture stalls.
|
|
355
|
+
* Uses the same discovery heuristics as the main capture path.
|
|
263
356
|
*/
|
|
264
357
|
export declare function preCache(
|
|
265
358
|
root?: Element | Document,
|