@unicom-cloud/utils 0.1.24 → 0.1.25
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/case-name/index.js +1 -1
- package/caseName.js +1 -1
- package/class-name/index.js +1 -1
- package/className.js +1 -1
- package/clipboard-copy/index.js +1 -1
- package/clipboardCopy.js +1 -1
- package/constant/address.js +1 -1
- package/constant/chineseCharacters.js +1 -1
- package/constant/constellations.js +1 -1
- package/constant/domain.js +1 -1
- package/constant/emoji.js +1 -1
- package/constant/identity.js +1 -1
- package/constant/index.js +1 -1
- package/constant/keyboardCode.js +1 -1
- package/constant/licensePlate.js +1 -1
- package/constant/name.js +1 -1
- package/constant/platform.js +1 -1
- package/constant/protocol.js +1 -1
- package/constant/ui.js +1 -1
- package/constant.js +1 -1
- package/content-disposition/index.js +1 -1
- package/contentDisposition.js +1 -1
- package/cookie/index.js +1 -1
- package/cookie/src/index.js +1 -1
- package/cookie.js +1 -1
- package/date/convertTime.js +1 -1
- package/date/convertToDuration.js +1 -1
- package/date/index.js +1 -1
- package/date.js +1 -1
- package/decimal/decimal.js +22 -22
- package/decimal/index.js +1 -1
- package/decimal.js +1 -1
- package/dom-helpers/activeElement.js +1 -1
- package/dom-helpers/addClass.js +1 -1
- package/dom-helpers/addEventListener.js +1 -1
- package/dom-helpers/animate.js +1 -1
- package/dom-helpers/animationFrame.js +1 -1
- package/dom-helpers/attribute.js +1 -1
- package/dom-helpers/camelize.js +1 -1
- package/dom-helpers/camelizeStyle.js +1 -1
- package/dom-helpers/canUseDOM.js +1 -1
- package/dom-helpers/childElements.js +1 -1
- package/dom-helpers/childNodes.js +1 -1
- package/dom-helpers/clear.js +1 -1
- package/dom-helpers/closest.js +1 -1
- package/dom-helpers/collectElements.js +1 -1
- package/dom-helpers/collectSiblings.js +1 -1
- package/dom-helpers/contains.js +1 -1
- package/dom-helpers/css.js +1 -1
- package/dom-helpers/filterEventHandler.js +1 -1
- package/dom-helpers/getComputedStyle.js +1 -1
- package/dom-helpers/getScrollAccessor.js +1 -1
- package/dom-helpers/hasClass.js +1 -1
- package/dom-helpers/height.js +1 -1
- package/dom-helpers/hyphenate.js +1 -1
- package/dom-helpers/hyphenateStyle.js +1 -1
- package/dom-helpers/index.js +1 -1
- package/dom-helpers/insertAfter.js +1 -1
- package/dom-helpers/isDocument.js +1 -1
- package/dom-helpers/isInput.js +1 -1
- package/dom-helpers/isTransform.js +1 -1
- package/dom-helpers/isVisible.js +1 -1
- package/dom-helpers/isWindow.js +1 -1
- package/dom-helpers/listen.js +1 -1
- package/dom-helpers/matches.js +1 -1
- package/dom-helpers/nextUntil.js +1 -1
- package/dom-helpers/offset.js +1 -1
- package/dom-helpers/offsetParent.js +1 -1
- package/dom-helpers/ownerDocument.js +1 -1
- package/dom-helpers/ownerWindow.js +1 -1
- package/dom-helpers/parents.js +1 -1
- package/dom-helpers/position.js +1 -1
- package/dom-helpers/prepend.js +1 -1
- package/dom-helpers/querySelectorAll.js +1 -1
- package/dom-helpers/reflow.js +1 -1
- package/dom-helpers/remove.js +1 -1
- package/dom-helpers/removeClass.js +1 -1
- package/dom-helpers/removeEventListener.js +1 -1
- package/dom-helpers/scrollLeft.js +1 -1
- package/dom-helpers/scrollParent.js +1 -1
- package/dom-helpers/scrollTo.js +1 -1
- package/dom-helpers/scrollTop.js +1 -1
- package/dom-helpers/scrollbarSize.js +1 -1
- package/dom-helpers/siblings.js +1 -1
- package/dom-helpers/text.js +1 -1
- package/dom-helpers/toggleClass.js +1 -1
- package/dom-helpers/transitionEnd.js +1 -1
- package/dom-helpers/triggerEvent.js +1 -1
- package/dom-helpers/types.js +5 -1
- package/dom-helpers/width.js +1 -1
- package/domHelpers.js +1 -1
- package/emitter/index.js +1 -1
- package/emitter/src/index.js +1 -1
- package/emitter.js +1 -1
- package/file/fileToURL.js +1 -1
- package/file/index.js +1 -1
- package/file/saveAs.js +1 -1
- package/file.js +1 -1
- package/idb/index.js +1 -1
- package/idb.js +1 -1
- package/index.js +1 -1
- package/invariant/index.js +1 -1
- package/invariant.js +1 -1
- package/is/index.js +1 -1
- package/is.js +1 -1
- package/js-cookie/index.js +1 -1
- package/js-cookie/src/api.js +1 -1
- package/js-cookie/src/assign.js +1 -1
- package/js-cookie/src/converter.js +1 -1
- package/jsCookie.js +1 -1
- package/lunar/index.js +1 -1
- package/lunar/lib/Holiday.js +1 -1
- package/lunar/lib/HolidayUtil.js +1 -1
- package/lunar/lib/I18n.js +1 -1
- package/lunar/lib/JieQi.js +1 -1
- package/lunar/lib/Lunar.js +1 -1
- package/lunar/lib/LunarMonth.js +1 -1
- package/lunar/lib/LunarTime.js +1 -1
- package/lunar/lib/LunarUtil.js +1 -1
- package/lunar/lib/LunarYear.js +1 -1
- package/lunar/lib/ShouXingUtil.js +1 -1
- package/lunar/lib/Solar.js +1 -1
- package/lunar/lib/SolarHalfYear.js +1 -1
- package/lunar/lib/SolarMonth.js +1 -1
- package/lunar/lib/SolarSeason.js +1 -1
- package/lunar/lib/SolarUtil.js +1 -1
- package/lunar/lib/SolarWeek.js +1 -1
- package/lunar/lib/SolarYear.js +1 -1
- package/lunar/lib/index.js +1 -1
- package/lunar.js +1 -1
- package/math/index.js +1 -1
- package/math.js +1 -1
- package/md5/index.js +1 -1
- package/md5.js +1 -1
- package/mock/MockWebSocket.js +1 -1
- package/mock/MockXMLHttpRequest.js +1 -1
- package/mock/index.js +1 -1
- package/mock.js +1 -1
- package/normalize-wheel/ExecutionEnvironment.js +1 -1
- package/normalize-wheel/UserAgent_DEPRECATED.js +1 -1
- package/normalize-wheel/index.js +1 -1
- package/normalize-wheel/isEventSupported.js +10 -14
- package/normalizeWheel.js +1 -1
- package/number-to-chinese/index.js +1 -1
- package/numberToChinese.js +1 -1
- package/nzh/cn.js +1 -1
- package/nzh/hk.js +1 -1
- package/nzh/index.js +1 -1
- package/nzh/nzh.js +1 -1
- package/nzh/src/autoGet.js +1 -1
- package/nzh/src/index.js +1 -1
- package/nzh/src/langs/cn_b.js +1 -1
- package/nzh/src/langs/cn_s.js +1 -1
- package/nzh/src/langs/hk_b.js +1 -1
- package/nzh/src/langs/hk_s.js +1 -1
- package/nzh/src/utils.js +1 -1
- package/nzh.js +1 -1
- package/object-keys-sort/index.js +1 -1
- package/objectKeysSort.js +1 -1
- package/package.json +1 -1
- package/pinyin/index.js +1 -1
- package/pinyin/simplified.js +1 -1
- package/pinyin/src/core.js +1 -1
- package/pinyin/src/simplified.js +1 -1
- package/pinyin/src/simplified_dict.js +1 -1
- package/pinyin/src/traditional.js +1 -1
- package/pinyin/src/traditional_dict.js +1 -1
- package/pinyin/traditional.js +1 -1
- package/pinyin.js +1 -1
- package/query-string/base.js +1 -1
- package/query-string/index.js +1 -1
- package/query-string/splitOnFirst.js +1 -1
- package/queryString.js +1 -1
- package/random/address.js +1 -1
- package/random/constellation.js +1 -1
- package/random/image.js +1 -1
- package/random/index.js +1 -1
- package/random/licensePlate.js +1 -1
- package/random/name.js +1 -1
- package/random/number.js +1 -1
- package/random/text.js +1 -1
- package/random/time.js +1 -1
- package/random/web.js +1 -1
- package/random.js +1 -1
- package/screenfull/index.js +1 -1
- package/screenfull.js +1 -1
- package/sleep/index.js +1 -1
- package/sleep.js +1 -1
- package/snapdom/index.js +1 -1
- package/snapdom/src/api/preCache.js +51 -49
- package/snapdom/src/api/snapdom.js +171 -67
- package/snapdom/src/core/cache.js +2 -2
- package/snapdom/src/core/capture.js +249 -234
- package/snapdom/src/core/clone.js +151 -120
- package/snapdom/src/core/context.js +10 -8
- package/snapdom/src/core/plugins.js +69 -0
- package/snapdom/src/core/prepare.js +2 -2
- package/snapdom/src/exporters/download.js +1 -1
- package/snapdom/src/exporters/toBlob.js +1 -1
- package/snapdom/src/exporters/toCanvas.js +40 -40
- package/snapdom/src/exporters/toImg.js +1 -1
- package/snapdom/src/modules/CSSVar.js +66 -40
- package/snapdom/src/modules/background.js +39 -23
- package/snapdom/src/modules/changeCSS.js +1 -1
- package/snapdom/src/modules/counter.js +100 -86
- package/snapdom/src/modules/fonts.js +4 -4
- package/snapdom/src/modules/iconFonts.js +98 -14
- package/snapdom/src/modules/images.js +1 -1
- package/snapdom/src/modules/lineClamp.js +1 -1
- package/snapdom/src/modules/pseudo.js +147 -138
- package/snapdom/src/modules/rasterize.js +1 -1
- package/snapdom/src/modules/snapFetch.js +1 -1
- package/snapdom/src/modules/styles.js +1 -1
- package/snapdom/src/modules/svgDefs.js +86 -39
- package/snapdom/src/utils/browser.js +1 -1
- package/snapdom/src/utils/css.js +1 -1
- package/snapdom/src/utils/helpers.js +1 -1
- package/snapdom/src/utils/image.js +1 -1
- package/snapdom/types/snapdom.d.ts +253 -184
- package/snapdom.js +1 -1
- package/tinycolor/index.js +1 -1
- package/tinycolor/src/conversion.js +1 -1
- package/tinycolor/src/css-color-names.js +1 -1
- package/tinycolor/src/format-input.js +1 -1
- package/tinycolor/src/from-ratio.js +1 -1
- package/tinycolor/src/index.js +1 -1
- package/tinycolor/src/random.js +1 -1
- package/tinycolor/src/readability.js +1 -1
- package/tinycolor/src/to-ms-filter.js +1 -1
- package/tinycolor/src/utils.js +1 -1
- package/tinycolor.js +1 -1
- package/tree/index.js +1 -1
- package/tree/search/index.js +1 -1
- package/tree.js +1 -1
- package/tween/index.js +8 -0
- package/tween/src/easing.js +62 -0
- package/tween/src/tween.js +46 -0
- package/tween.js +8 -0
- package/types/dom-helpers/types.d.ts +2 -0
- package/types/normalize-wheel/index.d.ts +1 -1
- package/types/snapdom/src/api/snapdom.d.ts +4 -0
- package/types/snapdom/src/core/capture.d.ts +4 -18
- package/types/snapdom/src/core/context.d.ts +4 -4
- package/types/snapdom/src/core/exporters.d.ts +33 -0
- package/types/snapdom/src/core/plugins.d.ts +59 -0
- package/types/snapdom/src/modules/CSSVar.d.ts +3 -7
- package/types/snapdom/src/modules/iconFonts.d.ts +34 -0
- package/types/snapdom/src/modules/svgDefs.d.ts +9 -15
- package/types/tween/index.d.ts +1 -0
- package/types/tween/src/easing.d.ts +22 -0
- package/types/tween/src/index.d.ts +3 -0
- package/types/tween/src/tween.d.ts +22 -0
- package/types/validate/index.d.ts +3 -0
- package/types/validate/src/index.d.ts +39 -0
- package/types/validate/src/interface.d.ts +53 -0
- package/types/validate/src/locale/en-US.d.ts +47 -0
- package/types/validate/src/locale/zh-CN.d.ts +47 -0
- package/types/validate/src/message.d.ts +2 -0
- package/types/validate/src/rules/array.d.ts +12 -0
- package/types/validate/src/rules/base.d.ts +25 -0
- package/types/validate/src/rules/boolean.d.ts +8 -0
- package/types/validate/src/rules/custom.d.ts +7 -0
- package/types/validate/src/rules/number.d.ts +12 -0
- package/types/validate/src/rules/object.d.ts +9 -0
- package/types/validate/src/rules/string.d.ts +12 -0
- package/types/validate/src/rules/type.d.ts +9 -0
- package/types/validate/src/utils.d.ts +3 -0
- package/ui-color/compareColorByRange.js +1 -1
- package/ui-color/index.js +1 -1
- package/uiColor.js +1 -1
- package/url-toolkit/index.js +1 -1
- package/url-toolkit/src/url-toolkit.js +1 -1
- package/urlToolkit.js +1 -1
- package/validate/index.js +28 -0
- package/validate/src/index.js +106 -0
- package/validate/src/locale/en-US.js +50 -0
- package/validate/src/locale/zh-CN.js +50 -0
- package/validate/src/message.js +5 -0
- package/validate/src/rules/array.js +73 -0
- package/validate/src/rules/base.js +69 -0
- package/validate/src/rules/boolean.js +29 -0
- package/validate/src/rules/custom.js +26 -0
- package/validate/src/rules/number.js +54 -0
- package/validate/src/rules/object.js +39 -0
- package/validate/src/rules/string.js +54 -0
- package/validate/src/rules/type.js +35 -0
- package/validate/src/utils.js +8 -0
- package/validate.js +28 -0
- package/version/index.js +1 -1
- package/version.js +1 -1
|
@@ -1,289 +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
|
+
/** outerTransforms the root: remove translate/rotate, keep scale/skew. */
|
|
82
|
+
outerTransforms?: boolean;
|
|
105
83
|
/**
|
|
106
|
-
*
|
|
107
|
-
*
|
|
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.
|
|
108
86
|
*/
|
|
109
|
-
|
|
87
|
+
outerShadows?: boolean;
|
|
110
88
|
|
|
111
|
-
/**
|
|
112
|
-
* Whether to synthesize placeholders for broken images, etc.
|
|
113
|
-
* Default: true
|
|
114
|
-
*/
|
|
115
|
-
placeholders?: boolean;
|
|
116
|
-
|
|
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
|
-
width?: number;
|
|
148
|
-
height?: number;
|
|
149
|
-
src?: string;
|
|
150
|
-
element: HTMLImageElement;
|
|
151
|
-
}) => string | Promise<string>);
|
|
104
|
+
| ((dims: { width?: number; height?: number }) => string);
|
|
152
105
|
|
|
153
|
-
/**
|
|
154
|
-
* Cache policy applied at capture start.
|
|
155
|
-
* Default: "soft"
|
|
156
|
-
*/
|
|
106
|
+
/** Cache policy for resources and style maps. Default "soft". */
|
|
157
107
|
cache?: CachePolicy;
|
|
158
108
|
|
|
159
|
-
/**
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|
+
}
|
|
164
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;
|
|
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>;
|
|
165
174
|
/**
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
* 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.
|
|
169
177
|
*/
|
|
170
|
-
|
|
178
|
+
afterExport?(context: CaptureContext, result: any): any | Promise<any>;
|
|
171
179
|
|
|
172
180
|
/**
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
* 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']()).
|
|
176
183
|
*/
|
|
177
|
-
|
|
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>;
|
|
178
188
|
}
|
|
179
189
|
|
|
180
|
-
export
|
|
181
|
-
|
|
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 };
|
|
197
|
+
|
|
198
|
+
/* =========================
|
|
199
|
+
* Capture result API
|
|
200
|
+
* ========================= */
|
|
201
|
+
|
|
202
|
+
export interface DownloadOptions {
|
|
203
|
+
filename?: string;
|
|
204
|
+
/** Override default blob type for this download. */
|
|
182
205
|
type?: BlobType;
|
|
183
|
-
/**
|
|
206
|
+
/** Quality hint for raster formats. */
|
|
184
207
|
quality?: number;
|
|
185
|
-
/**
|
|
186
|
-
|
|
208
|
+
/** Target width/height for this export. */
|
|
209
|
+
width?: number;
|
|
210
|
+
height?: number;
|
|
187
211
|
}
|
|
188
212
|
|
|
189
|
-
export interface
|
|
190
|
-
|
|
191
|
-
format?: 'svg' | RasterMime;
|
|
192
|
-
/** Base filename without extension. Default: "snapDOM". */
|
|
193
|
-
filename?: string;
|
|
194
|
-
/** Background override for lossy formats. */
|
|
195
|
-
backgroundColor?: string | null;
|
|
196
|
-
/** JPG/WebP quality (0..1). Default: 0.92. */
|
|
213
|
+
export interface BlobOptions {
|
|
214
|
+
type?: BlobType;
|
|
197
215
|
quality?: number;
|
|
216
|
+
width?: number;
|
|
217
|
+
height?: number;
|
|
198
218
|
}
|
|
199
219
|
|
|
200
220
|
export interface CaptureResult {
|
|
201
|
-
/**
|
|
221
|
+
/** Canonical data URL of the SVG snapshot (when available). */
|
|
202
222
|
url: string;
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
|
|
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;
|
|
221
257
|
}
|
|
222
258
|
|
|
223
|
-
|
|
224
|
-
*
|
|
225
|
-
*/
|
|
259
|
+
/* =========================
|
|
260
|
+
* Main callable & static helpers
|
|
261
|
+
* ========================= */
|
|
262
|
+
|
|
263
|
+
/** Overload: main callable returns a reusable exporter object for the element. */
|
|
226
264
|
export declare function snapdom(
|
|
227
|
-
|
|
228
|
-
options?:
|
|
265
|
+
element: Element,
|
|
266
|
+
options?: SnapdomOptions,
|
|
229
267
|
): Promise<CaptureResult>;
|
|
230
268
|
|
|
269
|
+
/**
|
|
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`.
|
|
274
|
+
*/
|
|
231
275
|
export declare namespace snapdom {
|
|
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`. */
|
|
232
281
|
function toImg(
|
|
233
|
-
|
|
234
|
-
options?:
|
|
282
|
+
element: Element,
|
|
283
|
+
options?: SnapdomOptions,
|
|
235
284
|
): Promise<HTMLImageElement>;
|
|
285
|
+
|
|
236
286
|
function toSvg(
|
|
237
|
-
|
|
238
|
-
options?:
|
|
287
|
+
element: Element,
|
|
288
|
+
options?: SnapdomOptions,
|
|
239
289
|
): Promise<HTMLImageElement>;
|
|
290
|
+
|
|
240
291
|
function toCanvas(
|
|
241
|
-
|
|
242
|
-
options?:
|
|
292
|
+
element: Element,
|
|
293
|
+
options?: SnapdomOptions,
|
|
243
294
|
): Promise<HTMLCanvasElement>;
|
|
295
|
+
|
|
244
296
|
function toBlob(
|
|
245
|
-
|
|
246
|
-
options?:
|
|
297
|
+
element: Element,
|
|
298
|
+
options?: SnapdomOptions & BlobOptions,
|
|
247
299
|
): Promise<Blob>;
|
|
300
|
+
|
|
248
301
|
function toPng(
|
|
249
|
-
|
|
250
|
-
options?:
|
|
302
|
+
element: Element,
|
|
303
|
+
options?: SnapdomOptions,
|
|
304
|
+
): Promise<HTMLImageElement>;
|
|
305
|
+
|
|
306
|
+
function toJpeg(
|
|
307
|
+
element: Element,
|
|
308
|
+
options?: SnapdomOptions,
|
|
251
309
|
): Promise<HTMLImageElement>;
|
|
310
|
+
|
|
311
|
+
/** Alias for `toJpeg`. */
|
|
252
312
|
function toJpg(
|
|
253
|
-
|
|
254
|
-
options?:
|
|
313
|
+
element: Element,
|
|
314
|
+
options?: SnapdomOptions,
|
|
255
315
|
): Promise<HTMLImageElement>;
|
|
316
|
+
|
|
256
317
|
function toWebp(
|
|
257
|
-
|
|
258
|
-
options?:
|
|
318
|
+
element: Element,
|
|
319
|
+
options?: SnapdomOptions,
|
|
259
320
|
): Promise<HTMLImageElement>;
|
|
321
|
+
|
|
260
322
|
function download(
|
|
261
|
-
|
|
262
|
-
options?:
|
|
323
|
+
element: Element,
|
|
324
|
+
options?: SnapdomOptions & DownloadOptions,
|
|
263
325
|
): Promise<void>;
|
|
264
326
|
}
|
|
265
327
|
|
|
266
|
-
|
|
267
|
-
*
|
|
268
|
-
*/
|
|
328
|
+
/* =========================
|
|
329
|
+
* preCache helper
|
|
330
|
+
* ========================= */
|
|
331
|
+
|
|
269
332
|
export interface PreCacheOptions {
|
|
270
|
-
/**
|
|
333
|
+
/** Root to scan (defaults to `document`). */
|
|
334
|
+
root?: Element | Document;
|
|
335
|
+
/** Try to embed non-icon fonts used under root (see also localFonts). */
|
|
271
336
|
embedFonts?: boolean;
|
|
272
|
-
/**
|
|
273
|
-
localFonts?:
|
|
274
|
-
/**
|
|
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). */
|
|
275
342
|
useProxy?: string;
|
|
276
|
-
/**
|
|
277
|
-
|
|
343
|
+
/** Cache policy for this preload operation. */
|
|
344
|
+
cache?: CachePolicy;
|
|
345
|
+
|
|
346
|
+
/** Back-compat fields (no-ops if present) */
|
|
278
347
|
/**
|
|
279
|
-
*
|
|
280
|
-
* Note: for `preCache` the option name in runtime is `cacheOpt`.
|
|
348
|
+
* @deprecated Use `cache` instead.
|
|
281
349
|
*/
|
|
282
350
|
cacheOpt?: CachePolicy;
|
|
283
351
|
}
|
|
284
352
|
|
|
285
353
|
/**
|
|
286
|
-
* 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.
|
|
287
356
|
*/
|
|
288
357
|
export declare function preCache(
|
|
289
358
|
root?: Element | Document,
|
package/snapdom.js
CHANGED
package/tinycolor/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 2025-
|
|
1
|
+
/* 2025-11-03 10:27:31 */
|
|
2
2
|
import { cmykToRgb as e, convertDecimalToHex as t, convertHexToDecimal as a, hslToRgb as n, hsvToRgb as b, numberInputToObject as m, parseIntFromHex as T, rgbToCmyk as i, rgbToHex as g, rgbToHsl as p, rgbToHsv as l, rgbToRgb as s, rgbaToArgbHex as x, rgbaToHex as c } from "./src/conversion.js";
|
|
3
3
|
import { names as f } from "./src/css-color-names.js";
|
|
4
4
|
import { inputToRGB as u, isValidCSSUnit as H, stringInputToObject as y } from "./src/format-input.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 2025-
|
|
1
|
+
/* 2025-11-03 10:27:31 */
|
|
2
2
|
import { rgbToRgb as S, hsvToRgb as v, hslToRgb as E, cmykToRgb as F, convertHexToDecimal as A, parseIntFromHex as s } from "./conversion.js";
|
|
3
3
|
import { names as R } from "./css-color-names.js";
|
|
4
4
|
import { convertToPercentage as g, boundAlpha as T } from "./utils.js";
|
package/tinycolor/src/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 2025-
|
|
1
|
+
/* 2025-11-03 10:27:31 */
|
|
2
2
|
import { numberInputToObject as d, rgbToHsv as g, rgbToHsl as u, rgbToHex as b, rgbaToHex as m, rgbToCmyk as c } from "./conversion.js";
|
|
3
3
|
import { names as $ } from "./css-color-names.js";
|
|
4
4
|
import { inputToRGB as f } from "./format-input.js";
|
package/tinycolor/src/random.js
CHANGED
package/tinycolor/src/utils.js
CHANGED
package/tinycolor.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 2025-
|
|
1
|
+
/* 2025-11-03 10:27:31 */
|
|
2
2
|
import { cmykToRgb as e, convertDecimalToHex as t, convertHexToDecimal as a, hslToRgb as n, hsvToRgb as b, numberInputToObject as m, parseIntFromHex as T, rgbToCmyk as i, rgbToHex as g, rgbToHsl as p, rgbToHsv as l, rgbToRgb as s, rgbaToArgbHex as x, rgbaToHex as c } from "./tinycolor/src/conversion.js";
|
|
3
3
|
import { names as f } from "./tinycolor/src/css-color-names.js";
|
|
4
4
|
import { inputToRGB as u, isValidCSSUnit as H, stringInputToObject as y } from "./tinycolor/src/format-input.js";
|
package/tree/index.js
CHANGED
package/tree/search/index.js
CHANGED
package/tree.js
CHANGED