html2canvas-pro 1.6.7 → 2.0.1
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 +1 -0
- package/demo/image-smoothing-demo.html +256 -0
- package/demo/refactoring-test.html +602 -0
- package/dist/html2canvas-pro.esm.js +3391 -1491
- package/dist/html2canvas-pro.esm.js.map +1 -1
- package/dist/html2canvas-pro.js +3394 -1490
- package/dist/html2canvas-pro.js.map +1 -1
- package/dist/html2canvas-pro.min.js +5 -4
- package/dist/lib/__tests__/index.js +8 -2
- package/dist/lib/__tests__/index.js.map +1 -1
- package/dist/lib/config.js +72 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/core/__tests__/cache-storage.js +6 -3
- package/dist/lib/core/__tests__/cache-storage.js.map +1 -1
- package/dist/lib/core/__tests__/cache-storage.test.js +158 -0
- package/dist/lib/core/__tests__/cache-storage.test.js.map +1 -0
- package/dist/lib/core/__tests__/validator.js +296 -0
- package/dist/lib/core/__tests__/validator.js.map +1 -0
- package/dist/lib/core/cache-storage.js +130 -11
- package/dist/lib/core/cache-storage.js.map +1 -1
- package/dist/lib/core/context.js +5 -2
- package/dist/lib/core/context.js.map +1 -1
- package/dist/lib/core/debugger.js +3 -0
- package/dist/lib/core/debugger.js.map +1 -1
- package/dist/lib/core/origin-checker.js +54 -0
- package/dist/lib/core/origin-checker.js.map +1 -0
- package/dist/lib/core/performance-monitor.js +208 -0
- package/dist/lib/core/performance-monitor.js.map +1 -0
- package/dist/lib/core/validator.js +501 -0
- package/dist/lib/core/validator.js.map +1 -0
- package/dist/lib/css/index.js +4 -0
- package/dist/lib/css/index.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/background-tests.js +7 -1
- package/dist/lib/css/property-descriptors/__tests__/background-tests.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js +273 -0
- package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js.map +1 -0
- package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js +142 -0
- package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js.map +1 -0
- package/dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js +167 -0
- package/dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js.map +1 -0
- package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js +61 -0
- package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js.map +1 -0
- package/dist/lib/css/property-descriptors/clip-path.js +190 -0
- package/dist/lib/css/property-descriptors/clip-path.js.map +1 -0
- package/dist/lib/css/property-descriptors/image-rendering.js +34 -0
- package/dist/lib/css/property-descriptors/image-rendering.js.map +1 -0
- package/dist/lib/css/types/__tests__/image-tests.js +7 -1
- package/dist/lib/css/types/__tests__/image-tests.js.map +1 -1
- package/dist/lib/css/types/color-math.js +26 -0
- package/dist/lib/css/types/color-math.js.map +1 -0
- package/dist/lib/css/types/color-spaces/srgb.js +6 -6
- package/dist/lib/css/types/color-spaces/srgb.js.map +1 -1
- package/dist/lib/css/types/color-utilities.js +13 -22
- package/dist/lib/css/types/color-utilities.js.map +1 -1
- package/dist/lib/dom/__tests__/dom-normalizer.test.js +113 -0
- package/dist/lib/dom/__tests__/dom-normalizer.test.js.map +1 -0
- package/dist/lib/dom/__tests__/element-container.test.js +109 -0
- package/dist/lib/dom/__tests__/element-container.test.js.map +1 -0
- package/dist/lib/dom/document-cloner.js +3 -3
- package/dist/lib/dom/document-cloner.js.map +1 -1
- package/dist/lib/dom/dom-normalizer.js +116 -0
- package/dist/lib/dom/dom-normalizer.js.map +1 -0
- package/dist/lib/dom/element-container.js +32 -15
- package/dist/lib/dom/element-container.js.map +1 -1
- package/dist/lib/dom/node-parser.js +16 -20
- package/dist/lib/dom/node-parser.js.map +1 -1
- package/dist/lib/dom/node-type-guards.js +44 -0
- package/dist/lib/dom/node-type-guards.js.map +1 -0
- package/dist/lib/dom/replaced-elements/iframe-element-container.js +5 -4
- package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +1 -1
- package/dist/lib/index.js +148 -41
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/render/canvas/__tests__/background-renderer.test.js +65 -0
- package/dist/lib/render/canvas/__tests__/background-renderer.test.js.map +1 -0
- package/dist/lib/render/canvas/__tests__/border-renderer.test.js +23 -0
- package/dist/lib/render/canvas/__tests__/border-renderer.test.js.map +1 -0
- package/dist/lib/render/canvas/__tests__/effects-renderer.test.js +30 -0
- package/dist/lib/render/canvas/__tests__/effects-renderer.test.js.map +1 -0
- package/dist/lib/render/canvas/__tests__/text-renderer.test.js +310 -0
- package/dist/lib/render/canvas/__tests__/text-renderer.test.js.map +1 -0
- package/dist/lib/render/canvas/background-renderer.js +222 -0
- package/dist/lib/render/canvas/background-renderer.js.map +1 -0
- package/dist/lib/render/canvas/border-renderer.js +185 -0
- package/dist/lib/render/canvas/border-renderer.js.map +1 -0
- package/dist/lib/render/canvas/canvas-renderer.js +61 -689
- package/dist/lib/render/canvas/canvas-renderer.js.map +1 -1
- package/dist/lib/render/canvas/effects-renderer.js +94 -0
- package/dist/lib/render/canvas/effects-renderer.js.map +1 -0
- package/dist/lib/render/canvas/text-renderer.js +575 -0
- package/dist/lib/render/canvas/text-renderer.js.map +1 -0
- package/dist/lib/render/effects.js +17 -1
- package/dist/lib/render/effects.js.map +1 -1
- package/dist/lib/render/renderer-interface.js +3 -0
- package/dist/lib/render/renderer-interface.js.map +1 -0
- package/dist/lib/render/stacking-context.js +131 -0
- package/dist/lib/render/stacking-context.js.map +1 -1
- package/dist/types/config.d.ts +54 -0
- package/dist/types/core/__tests__/cache-storage.test.d.ts +1 -0
- package/dist/types/core/__tests__/validator.d.ts +1 -0
- package/dist/types/core/cache-storage.d.ts +42 -1
- package/dist/types/core/context.d.ts +5 -1
- package/dist/types/core/origin-checker.d.ts +33 -0
- package/dist/types/core/performance-monitor.d.ts +131 -0
- package/dist/types/core/validator.d.ts +132 -0
- package/dist/types/css/index.d.ts +4 -0
- package/dist/types/css/property-descriptors/__tests__/clip-path.test.d.ts +1 -0
- package/dist/types/css/property-descriptors/__tests__/image-rendering-integration.test.d.ts +1 -0
- package/dist/types/css/property-descriptors/__tests__/image-rendering-performance.test.d.ts +1 -0
- package/dist/types/css/property-descriptors/__tests__/image-rendering.test.d.ts +1 -0
- package/dist/types/css/property-descriptors/clip-path.d.ts +62 -0
- package/dist/types/css/property-descriptors/image-rendering.d.ts +8 -0
- package/dist/types/css/types/color-math.d.ts +12 -0
- package/dist/types/css/types/color-utilities.d.ts +2 -3
- package/dist/types/dom/__tests__/dom-normalizer.test.d.ts +1 -0
- package/dist/types/dom/__tests__/element-container.test.d.ts +1 -0
- package/dist/types/dom/dom-normalizer.d.ts +62 -0
- package/dist/types/dom/element-container.d.ts +20 -1
- package/dist/types/dom/node-parser.d.ts +2 -7
- package/dist/types/dom/node-type-guards.d.ts +33 -0
- package/dist/types/dom/replaced-elements/iframe-element-container.d.ts +4 -1
- package/dist/types/index.d.ts +48 -3
- package/dist/types/render/canvas/__tests__/background-renderer.test.d.ts +1 -0
- package/dist/types/render/canvas/__tests__/border-renderer.test.d.ts +1 -0
- package/dist/types/render/canvas/__tests__/effects-renderer.test.d.ts +1 -0
- package/dist/types/render/canvas/__tests__/text-renderer.test.d.ts +1 -0
- package/dist/types/render/canvas/background-renderer.d.ts +87 -0
- package/dist/types/render/canvas/border-renderer.d.ts +67 -0
- package/dist/types/render/canvas/canvas-renderer.d.ts +19 -23
- package/dist/types/render/canvas/effects-renderer.d.ts +65 -0
- package/dist/types/render/canvas/text-renderer.d.ts +75 -0
- package/dist/types/render/effects.d.ts +15 -1
- package/dist/types/render/renderer-interface.d.ts +26 -0
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/render/effects.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/render/effects.ts"],"names":[],"mappings":";;;AAoBA,MAAa,eAAe;IAIxB,YACa,OAAe,EACf,OAAe,EACf,MAAc;QAFd,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAQ;QANlB,SAAI,gCAAoC;QACxC,WAAM,GAAW,sEAAsD,CAAC;IAM9E,CAAC;CACP;AATD,0CASC;AAED,MAAa,UAAU;IAGnB,YACa,IAAY,EACZ,MAAoB;QADpB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAc;QAJxB,SAAI,2BAA+B;IAKzC,CAAC;CACP;AAPD,gCAOC;AAED,MAAa,aAAa;IAItB,YAAqB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAH3B,SAAI,8BAAkC;QACtC,WAAM,GAAW,sEAAsD,CAAC;IAE1C,CAAC;CAC3C;AALD,sCAKC;AAED;;;;;GAKG;AACH,MAAa,cAAc;IAIvB,YAAqB,SAAkD;QAAlD,cAAS,GAAT,SAAS,CAAyC;QAH9D,SAAI,gCAAoC;QACxC,WAAM,GAAW,sEAAsD,CAAC;IAEP,CAAC;CAC9E;AALD,wCAKC;AAEM,MAAM,iBAAiB,GAAG,CAAC,MAAsB,EAA6B,EAAE,CACnF,MAAM,CAAC,IAAI,iCAAyB,CAAC;AAD5B,QAAA,iBAAiB,qBACW;AAClC,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAwB,EAAE,CAAC,MAAM,CAAC,IAAI,4BAAoB,CAAC;AAAjG,QAAA,YAAY,gBAAqF;AACvG,MAAM,eAAe,GAAG,CAAC,MAAsB,EAA2B,EAAE,CAAC,MAAM,CAAC,IAAI,+BAAuB,CAAC;AAA1G,QAAA,eAAe,mBAA2F;AAChH,MAAM,gBAAgB,GAAG,CAAC,MAAsB,EAA4B,EAAE,CACjF,MAAM,CAAC,IAAI,iCAAyB,CAAC;AAD5B,QAAA,gBAAgB,oBACY"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer-interface.js","sourceRoot":"","sources":["../../../src/render/renderer-interface.ts"],"names":[],"mappings":""}
|
|
@@ -61,6 +61,12 @@ class ElementPaint {
|
|
|
61
61
|
this.effects.push(new effects_1.ClipEffect(paddingBox, 4 /* EffectTarget.CONTENT */));
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
+
if (this.container.styles.clipPath.type !== 0 /* CLIP_PATH_TYPE.NONE */) {
|
|
65
|
+
const clipPathEffect = buildClipPathEffect(this.container.styles.clipPath, this.container.bounds);
|
|
66
|
+
if (clipPathEffect) {
|
|
67
|
+
this.effects.push(clipPathEffect);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
64
70
|
}
|
|
65
71
|
getEffects(target) {
|
|
66
72
|
let inFlow = [2 /* POSITION.ABSOLUTE */, 3 /* POSITION.FIXED */].indexOf(this.container.styles.position) === -1;
|
|
@@ -88,6 +94,131 @@ class ElementPaint {
|
|
|
88
94
|
}
|
|
89
95
|
}
|
|
90
96
|
exports.ElementPaint = ElementPaint;
|
|
97
|
+
/**
|
|
98
|
+
* Resolve a `closest-side` or `farthest-side` shape-radius keyword to pixels
|
|
99
|
+
* for a single axis. Used by both `circle()` (per-axis) and `ellipse()`.
|
|
100
|
+
*
|
|
101
|
+
* @param r - The ShapeRadius (keyword or length-percentage).
|
|
102
|
+
* @param center - Absolute center coordinate on this axis (cx or cy).
|
|
103
|
+
* @param start - Absolute start of the reference box on this axis.
|
|
104
|
+
* @param end - Absolute end of the reference box on this axis.
|
|
105
|
+
* @param dimRef - Reference dimension for resolving a length-percentage value.
|
|
106
|
+
*/
|
|
107
|
+
const resolveAxisRadius = (r, center, start, end, dimRef) => {
|
|
108
|
+
if (r === 'closest-side')
|
|
109
|
+
return Math.min(center - start, end - center);
|
|
110
|
+
if (r === 'farthest-side')
|
|
111
|
+
return Math.max(center - start, end - center);
|
|
112
|
+
return (0, length_percentage_1.getAbsoluteValue)(r, dimRef);
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Convert a parsed ClipPathValue + element bounds into a ClipPathEffect whose
|
|
116
|
+
* `applyClip` callback draws the clip shape directly onto the canvas context.
|
|
117
|
+
*
|
|
118
|
+
* All coordinates are computed in page-absolute space at construction time so
|
|
119
|
+
* the callback itself is allocation-free and executes synchronously.
|
|
120
|
+
*/
|
|
121
|
+
const buildClipPathEffect = (clipPath, bounds) => {
|
|
122
|
+
const { left: bLeft, top: bTop, width: bWidth, height: bHeight } = bounds;
|
|
123
|
+
switch (clipPath.type) {
|
|
124
|
+
case 1 /* CLIP_PATH_TYPE.INSET */: {
|
|
125
|
+
const iLeft = (0, length_percentage_1.getAbsoluteValue)(clipPath.left, bWidth);
|
|
126
|
+
const iTop = (0, length_percentage_1.getAbsoluteValue)(clipPath.top, bHeight);
|
|
127
|
+
const x = bLeft + iLeft;
|
|
128
|
+
const y = bTop + iTop;
|
|
129
|
+
// Clamp to zero: per CSS spec, overlapping insets produce an empty shape.
|
|
130
|
+
const w = Math.max(0, bWidth - iLeft - (0, length_percentage_1.getAbsoluteValue)(clipPath.right, bWidth));
|
|
131
|
+
const h = Math.max(0, bHeight - iTop - (0, length_percentage_1.getAbsoluteValue)(clipPath.bottom, bHeight));
|
|
132
|
+
return new effects_1.ClipPathEffect((ctx) => {
|
|
133
|
+
ctx.beginPath();
|
|
134
|
+
ctx.rect(x, y, w, h);
|
|
135
|
+
ctx.clip();
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
case 2 /* CLIP_PATH_TYPE.CIRCLE */: {
|
|
139
|
+
const cx = bLeft + (0, length_percentage_1.getAbsoluteValue)(clipPath.cx, bWidth);
|
|
140
|
+
const cy = bTop + (0, length_percentage_1.getAbsoluteValue)(clipPath.cy, bHeight);
|
|
141
|
+
let r;
|
|
142
|
+
if (clipPath.radius === 'closest-side') {
|
|
143
|
+
r = Math.min(cx - bLeft, cy - bTop, bLeft + bWidth - cx, bTop + bHeight - cy);
|
|
144
|
+
}
|
|
145
|
+
else if (clipPath.radius === 'farthest-side') {
|
|
146
|
+
r = Math.max(cx - bLeft, cy - bTop, bLeft + bWidth - cx, bTop + bHeight - cy);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// Per CSS spec, percentage is relative to sqrt(w² + h²) / sqrt(2).
|
|
150
|
+
r = (0, length_percentage_1.getAbsoluteValue)(clipPath.radius, Math.sqrt(bWidth * bWidth + bHeight * bHeight) / Math.SQRT2);
|
|
151
|
+
}
|
|
152
|
+
return new effects_1.ClipPathEffect((ctx) => {
|
|
153
|
+
ctx.beginPath();
|
|
154
|
+
ctx.arc(cx, cy, Math.max(0, r), 0, Math.PI * 2);
|
|
155
|
+
ctx.clip();
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
case 3 /* CLIP_PATH_TYPE.ELLIPSE */: {
|
|
159
|
+
const cx = bLeft + (0, length_percentage_1.getAbsoluteValue)(clipPath.cx, bWidth);
|
|
160
|
+
const cy = bTop + (0, length_percentage_1.getAbsoluteValue)(clipPath.cy, bHeight);
|
|
161
|
+
const rx = resolveAxisRadius(clipPath.rx, cx, bLeft, bLeft + bWidth, bWidth);
|
|
162
|
+
const ry = resolveAxisRadius(clipPath.ry, cy, bTop, bTop + bHeight, bHeight);
|
|
163
|
+
return new effects_1.ClipPathEffect((ctx) => {
|
|
164
|
+
ctx.beginPath();
|
|
165
|
+
ctx.ellipse(cx, cy, Math.max(0, rx), Math.max(0, ry), 0, 0, Math.PI * 2);
|
|
166
|
+
ctx.clip();
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
case 4 /* CLIP_PATH_TYPE.POLYGON */: {
|
|
170
|
+
// Pre-compute all vertices in page-absolute coordinates.
|
|
171
|
+
const absPoints = clipPath.points.map(([px, py]) => [bLeft + (0, length_percentage_1.getAbsoluteValue)(px, bWidth), bTop + (0, length_percentage_1.getAbsoluteValue)(py, bHeight)]);
|
|
172
|
+
return new effects_1.ClipPathEffect((ctx) => {
|
|
173
|
+
ctx.beginPath();
|
|
174
|
+
if (absPoints.length > 0) {
|
|
175
|
+
ctx.moveTo(absPoints[0][0], absPoints[0][1]);
|
|
176
|
+
for (let i = 1; i < absPoints.length; i++) {
|
|
177
|
+
ctx.lineTo(absPoints[i][0], absPoints[i][1]);
|
|
178
|
+
}
|
|
179
|
+
ctx.closePath();
|
|
180
|
+
}
|
|
181
|
+
// Calling clip() with an empty path (zero points) is intentional:
|
|
182
|
+
// it clips the entire region to nothing, which is the correct
|
|
183
|
+
// behaviour for a degenerate polygon() per the CSS spec.
|
|
184
|
+
ctx.clip();
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
case 5 /* CLIP_PATH_TYPE.PATH */: {
|
|
188
|
+
// path() coordinates are in the element's local space (0,0 = element top-left).
|
|
189
|
+
// We temporarily translate the canvas origin to the element's position, clip
|
|
190
|
+
// with the Path2D, then restore only the transform matrix (not the clipping
|
|
191
|
+
// region) via setTransform so the clip persists for the enclosing
|
|
192
|
+
// ctx.save() / ctx.restore() pair managed by EffectsRenderer.
|
|
193
|
+
//
|
|
194
|
+
// When the element also has a CSS transform, that transform was already applied
|
|
195
|
+
// by a preceding TransformEffect, so the path coordinates end up correctly in
|
|
196
|
+
// the element's transformed local space — matching browser behaviour.
|
|
197
|
+
const { d } = clipPath;
|
|
198
|
+
return new effects_1.ClipPathEffect((ctx) => {
|
|
199
|
+
try {
|
|
200
|
+
const savedTransform = ctx.getTransform();
|
|
201
|
+
ctx.translate(bLeft, bTop);
|
|
202
|
+
ctx.clip(new Path2D(d));
|
|
203
|
+
ctx.setTransform(savedTransform);
|
|
204
|
+
}
|
|
205
|
+
catch (_e) {
|
|
206
|
+
// Path2D or getTransform/setTransform not supported in this environment.
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
case 0 /* CLIP_PATH_TYPE.NONE */:
|
|
211
|
+
return null;
|
|
212
|
+
default: {
|
|
213
|
+
// Exhaustiveness guard: if a new CLIP_PATH_TYPE is added in the future
|
|
214
|
+
// without a corresponding case above, TypeScript will raise a compile-time
|
|
215
|
+
// error here rather than silently falling through.
|
|
216
|
+
const _exhaustive = clipPath;
|
|
217
|
+
void _exhaustive;
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
};
|
|
91
222
|
const parseStackTree = (parent, stackingContext, realStackingContext, listItems) => {
|
|
92
223
|
parent.container.elements.forEach((child) => {
|
|
93
224
|
const treatAsRealStackingContext = (0, bitwise_1.contains)(child.flags, 4 /* FLAGS.CREATES_REAL_STACKING_CONTEXT */);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stacking-context.js","sourceRoot":"","sources":["../../../src/render/stacking-context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stacking-context.js","sourceRoot":"","sources":["../../../src/render/stacking-context.ts"],"names":[],"mappings":";;;AACA,6CAA2C;AAC3C,iDAA8F;AAC9F,uCAQmB;AAGnB,iCAAmC;AAEnC,+EAA0E;AAC1E,+EAA0E;AAC1E,4DAAmE;AAEnE,sEAAkE;AAIlE,MAAa,eAAe;IAUxB,YAAY,SAAuB;QAC/B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,sCAAsC,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;IACvC,CAAC;CACJ;AApBD,0CAoBC;AAED,MAAa,YAAY;IAKrB,YACa,SAA2B,EAC3B,MAA2B;QAD3B,cAAS,GAAT,SAAS,CAAkB;QAC3B,WAAM,GAAN,MAAM,CAAqB;QAN/B,YAAO,GAAqB,EAAE,CAAC;QAQpC,IAAI,CAAC,MAAM,GAAG,IAAI,0BAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,uBAAa,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,GAAG,IAAA,oCAAgB,EAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtG,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,IAAA,oCAAgB,EAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtG,mCAAmC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;YAC3C,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,YAAY,GAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,yBAAe,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,GAAG,IAAA,oCAAgB,EAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtG,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,IAAA,oCAAgB,EAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtG,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,yBAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,6BAAqB,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG,IAAA,qCAAsB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,IAAA,sCAAuB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAExD,IAAI,IAAA,gBAAS,EAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,oBAAU,CAAC,SAAS,EAAE,sEAAsD,CAAC,CAAC,CAAC;YACzG,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,oBAAU,CAAC,SAAS,0CAAkC,CAAC,CAAC;gBAC9E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,oBAAU,CAAC,UAAU,+BAAuB,CAAC,CAAC;YACxE,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gCAAwB,EAAE,CAAC;YAC9D,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAClG,IAAI,cAAc,EAAE,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACtC,CAAC;QACL,CAAC;IACL,CAAC;IAED,UAAU,CAAC,MAAoB;QAC3B,IAAI,MAAM,GAAG,mDAAmC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAChG,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,OAAO,MAAM,EAAE,CAAC;YACZ,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAA,sBAAY,EAAC,MAAM,CAAC,CAAC,CAAC;YACjF,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,4BAAoB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnF,MAAM,GAAG,mDAAmC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9F,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,6BAAqB,EAAE,CAAC;oBACzD,MAAM,SAAS,GAAG,IAAA,qCAAsB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACxD,MAAM,UAAU,GAAG,IAAA,sCAAuB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC1D,IAAI,CAAC,IAAA,gBAAS,EAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC;wBACpC,OAAO,CAAC,OAAO,CACX,IAAI,oBAAU,CAAC,UAAU,EAAE,sEAAsD,CAAC,CACrF,CAAC;oBACN,CAAC;gBACL,CAAC;gBACD,OAAO,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,kBAAQ,EAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvE,CAAC;CACJ;AAlFD,oCAkFC;AAED;;;;;;;;;GASG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAc,EAAE,MAAc,EAAE,KAAa,EAAE,GAAW,EAAE,MAAc,EAAU,EAAE;IAC7G,IAAI,CAAC,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC;IACxE,IAAI,CAAC,KAAK,eAAe;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC;IACzE,OAAO,IAAA,oCAAgB,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,CAAC,QAAuB,EAAE,MAAc,EAAyB,EAAE;IAC3F,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAE1E,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpB,iCAAyB,CAAC,CAAC,CAAC;YACxB,MAAM,KAAK,GAAG,IAAA,oCAAgB,EAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,IAAA,oCAAgB,EAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;YACxB,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;YACtB,0EAA0E;YAC1E,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,IAAA,oCAAgB,EAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YACjF,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,IAAA,oCAAgB,EAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;YACnF,OAAO,IAAI,wBAAc,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9B,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrB,GAAG,CAAC,IAAI,EAAE,CAAC;YACf,CAAC,CAAC,CAAC;QACP,CAAC;QAED,kCAA0B,CAAC,CAAC,CAAC;YACzB,MAAM,EAAE,GAAG,KAAK,GAAG,IAAA,oCAAgB,EAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACzD,MAAM,EAAE,GAAG,IAAI,GAAG,IAAA,oCAAgB,EAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACzD,IAAI,CAAS,CAAC;YACd,IAAI,QAAQ,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;gBACrC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,EAAE,EAAE,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;YAClF,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;gBAC7C,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,EAAE,EAAE,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;YAClF,CAAC;iBAAM,CAAC;gBACJ,mEAAmE;gBACnE,CAAC,GAAG,IAAA,oCAAgB,EAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YACvG,CAAC;YACD,OAAO,IAAI,wBAAc,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9B,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChB,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAChD,GAAG,CAAC,IAAI,EAAE,CAAC;YACf,CAAC,CAAC,CAAC;QACP,CAAC;QAED,mCAA2B,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,KAAK,GAAG,IAAA,oCAAgB,EAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACzD,MAAM,EAAE,GAAG,IAAI,GAAG,IAAA,oCAAgB,EAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7E,MAAM,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7E,OAAO,IAAI,wBAAc,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9B,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChB,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzE,GAAG,CAAC,IAAI,EAAE,CAAC;YACf,CAAC,CAAC,CAAC;QACP,CAAC;QAED,mCAA2B,CAAC,CAAC,CAAC;YAC1B,yDAAyD;YACzD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CACjC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CACT,CAAC,KAAK,GAAG,IAAA,oCAAgB,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,GAAG,IAAA,oCAAgB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAqB,CACvG,CAAC;YACF,OAAO,IAAI,wBAAc,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9B,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACxC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjD,CAAC;oBACD,GAAG,CAAC,SAAS,EAAE,CAAC;gBACpB,CAAC;gBACD,kEAAkE;gBAClE,8DAA8D;gBAC9D,yDAAyD;gBACzD,GAAG,CAAC,IAAI,EAAE,CAAC;YACf,CAAC,CAAC,CAAC;QACP,CAAC;QAED,gCAAwB,CAAC,CAAC,CAAC;YACvB,gFAAgF;YAChF,6EAA6E;YAC7E,4EAA4E;YAC5E,kEAAkE;YAClE,8DAA8D;YAC9D,EAAE;YACF,gFAAgF;YAChF,8EAA8E;YAC9E,sEAAsE;YACtE,MAAM,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC;YACvB,OAAO,IAAI,wBAAc,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9B,IAAI,CAAC;oBACD,MAAM,cAAc,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;oBAC1C,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAC3B,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxB,GAAG,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBACrC,CAAC;gBAAC,OAAO,EAAE,EAAE,CAAC;oBACV,yEAAyE;gBAC7E,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAED;YACI,OAAO,IAAI,CAAC;QAEhB,OAAO,CAAC,CAAC,CAAC;YACN,uEAAuE;YACvE,2EAA2E;YAC3E,mDAAmD;YACnD,MAAM,WAAW,GAAU,QAAQ,CAAC;YACpC,KAAK,WAAW,CAAC;YACjB,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACnB,MAAoB,EACpB,eAAgC,EAChC,mBAAoC,EACpC,SAAyB,EAC3B,EAAE;IACA,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACxC,MAAM,0BAA0B,GAAG,IAAA,kBAAQ,EAAC,KAAK,CAAC,KAAK,8CAAsC,CAAC;QAC9F,MAAM,sBAAsB,GAAG,IAAA,kBAAQ,EAAC,KAAK,CAAC,KAAK,yCAAiC,CAAC;QACrF,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,IAAA,kBAAQ,EAAC,KAAK,CAAC,MAAM,CAAC,OAAO,+BAAoB,EAAE,CAAC;YACpD,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,kBAAQ,EAAC,KAAK,CAAC,KAAK,8BAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAEnF,IAAI,0BAA0B,IAAI,sBAAsB,EAAE,CAAC;YACvD,MAAM,WAAW,GACb,0BAA0B,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC;YAEtG,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC;YAElD,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;gBAC1F,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;gBACxC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACZ,IAAI,KAAK,GAAG,CAAC,CAAC;oBAEd,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;wBAC3C,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;4BACxD,KAAK,GAAG,CAAC,CAAC;4BACV,OAAO,KAAK,CAAC;wBACjB,CAAC;6BAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;4BACnB,OAAO,IAAI,CAAC;wBAChB,CAAC;wBAED,OAAO,KAAK,CAAC;oBACjB,CAAC,CAAC,CAAC;oBACH,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gBACvD,CAAC;qBAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACnB,IAAI,KAAK,GAAG,CAAC,CAAC;oBACd,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;wBAC3C,IAAI,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;4BACzD,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;4BACd,OAAO,KAAK,CAAC;wBACjB,CAAC;6BAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;4BACnB,OAAO,IAAI,CAAC;wBAChB,CAAC;wBAED,OAAO,KAAK,CAAC;oBACjB,CAAC,CAAC,CAAC;oBACH,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACJ,WAAW,CAAC,sCAAsC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnE,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;oBAC5B,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACJ,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;YAED,cAAc,CACV,cAAc,EACd,KAAK,EACL,0BAA0B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,EACxD,cAAc,CACjB,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;gBAC/B,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACJ,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACxD,CAAC;YAED,cAAc,CAAC,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,IAAA,kBAAQ,EAAC,KAAK,CAAC,KAAK,8BAAsB,EAAE,CAAC;YAC7C,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,KAAuB,EAAE,QAAwB,EAAE,EAAE;IAC3E,IAAI,SAAS,GAAG,KAAK,YAAY,yCAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,KAAK,YAAY,yCAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzB,IACI,IAAI,CAAC,SAAS,YAAY,yCAAkB;YAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,QAAQ;YACxC,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,EAC5B,CAAC;YACC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAA,2BAAiB,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAEzF,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;AACL,CAAC,CAAC;AAEK,MAAM,qBAAqB,GAAG,CAAC,SAA2B,EAAmB,EAAE;IAClF,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACtD,gBAAgB,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAPW,QAAA,qBAAqB,yBAOhC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Cache } from './core/cache-storage';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration options for Html2Canvas
|
|
4
|
+
*
|
|
5
|
+
* This class manages global configuration without using module-level static variables.
|
|
6
|
+
* Each html2canvas invocation can have its own configuration instance.
|
|
7
|
+
*/
|
|
8
|
+
export interface ConfigOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Window object to use for DOM operations
|
|
11
|
+
*/
|
|
12
|
+
window?: Window;
|
|
13
|
+
/**
|
|
14
|
+
* CSP nonce for inline styles
|
|
15
|
+
* See: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
|
|
16
|
+
*/
|
|
17
|
+
cspNonce?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Cache instance to reuse across multiple calls
|
|
20
|
+
* Useful for avoiding redundant image loads
|
|
21
|
+
*/
|
|
22
|
+
cache?: Cache;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Html2Canvas Configuration
|
|
26
|
+
*
|
|
27
|
+
* Manages configuration state for html2canvas rendering.
|
|
28
|
+
* Eliminates the need for global static variables.
|
|
29
|
+
*/
|
|
30
|
+
export declare class Html2CanvasConfig {
|
|
31
|
+
readonly window: Window;
|
|
32
|
+
readonly cspNonce?: string;
|
|
33
|
+
readonly cache?: Cache;
|
|
34
|
+
constructor(options?: ConfigOptions);
|
|
35
|
+
/**
|
|
36
|
+
* Create configuration from an element
|
|
37
|
+
* Extracts window from element's owner document
|
|
38
|
+
*/
|
|
39
|
+
static fromElement(element: HTMLElement, options?: Partial<ConfigOptions>): Html2CanvasConfig;
|
|
40
|
+
/**
|
|
41
|
+
* Clone configuration with override options
|
|
42
|
+
*/
|
|
43
|
+
clone(options?: Partial<ConfigOptions>): Html2CanvasConfig;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Set default configuration
|
|
47
|
+
* @deprecated Pass configuration directly to html2canvas instead
|
|
48
|
+
*/
|
|
49
|
+
export declare function setDefaultConfig(config: Html2CanvasConfig): void;
|
|
50
|
+
/**
|
|
51
|
+
* Get default configuration
|
|
52
|
+
* @deprecated Pass configuration directly to html2canvas instead
|
|
53
|
+
*/
|
|
54
|
+
export declare function getDefaultConfig(): Html2CanvasConfig | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,9 +1,26 @@
|
|
|
1
1
|
import { Context } from './context';
|
|
2
|
+
/**
|
|
3
|
+
* CacheStorage (Deprecated static methods)
|
|
4
|
+
*
|
|
5
|
+
* @deprecated The static methods of CacheStorage are deprecated.
|
|
6
|
+
* Use OriginChecker class instead for instance-based origin checking.
|
|
7
|
+
*
|
|
8
|
+
* For backward compatibility, these methods remain but should not be used in new code.
|
|
9
|
+
*/
|
|
2
10
|
export declare class CacheStorage {
|
|
3
11
|
private static _link?;
|
|
4
12
|
private static _origin;
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated Use OriginChecker.getOrigin() instead
|
|
15
|
+
*/
|
|
5
16
|
static getOrigin(url: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated Use OriginChecker.isSameOrigin() instead
|
|
19
|
+
*/
|
|
6
20
|
static isSameOrigin(src: string): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* @deprecated No longer needed. OriginChecker is created per Context.
|
|
23
|
+
*/
|
|
7
24
|
static setContext(window: Window): void;
|
|
8
25
|
}
|
|
9
26
|
export interface ResourceOptions {
|
|
@@ -12,14 +29,38 @@ export interface ResourceOptions {
|
|
|
12
29
|
allowTaint: boolean;
|
|
13
30
|
proxy?: string;
|
|
14
31
|
customIsSameOrigin?: (this: void, src: string, oldFn: (src: string) => boolean) => boolean | Promise<boolean>;
|
|
32
|
+
maxCacheSize?: number;
|
|
15
33
|
}
|
|
16
34
|
export declare class Cache {
|
|
17
35
|
private readonly context;
|
|
18
36
|
private readonly _options;
|
|
19
37
|
private readonly _cache;
|
|
38
|
+
private readonly maxSize;
|
|
39
|
+
private readonly _pendingOperations;
|
|
20
40
|
constructor(context: Context, _options: ResourceOptions);
|
|
21
41
|
addImage(src: string): Promise<void>;
|
|
22
|
-
|
|
42
|
+
private _addImageInternal;
|
|
43
|
+
match(src: string): Promise<any> | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Set a value in cache with LRU eviction
|
|
46
|
+
*/
|
|
47
|
+
private set;
|
|
48
|
+
/**
|
|
49
|
+
* Evict least recently used entry
|
|
50
|
+
*/
|
|
51
|
+
private evictLRU;
|
|
52
|
+
/**
|
|
53
|
+
* Get cache size
|
|
54
|
+
*/
|
|
55
|
+
size(): number;
|
|
56
|
+
/**
|
|
57
|
+
* Get max cache size
|
|
58
|
+
*/
|
|
59
|
+
getMaxSize(): number;
|
|
60
|
+
/**
|
|
61
|
+
* Clear all cache entries
|
|
62
|
+
*/
|
|
63
|
+
clear(): void;
|
|
23
64
|
private loadImage;
|
|
24
65
|
private has;
|
|
25
66
|
keys(): Promise<string[]>;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Logger } from './logger';
|
|
2
2
|
import { Cache, ResourceOptions } from './cache-storage';
|
|
3
3
|
import { Bounds } from '../css/layout/bounds';
|
|
4
|
+
import { OriginChecker } from './origin-checker';
|
|
5
|
+
import { Html2CanvasConfig } from '../config';
|
|
4
6
|
export type ContextOptions = {
|
|
5
7
|
logging: boolean;
|
|
6
8
|
cache?: Cache;
|
|
@@ -10,6 +12,8 @@ export declare class Context {
|
|
|
10
12
|
private readonly instanceName;
|
|
11
13
|
readonly logger: Logger;
|
|
12
14
|
readonly cache: Cache;
|
|
15
|
+
readonly originChecker: OriginChecker;
|
|
16
|
+
readonly config: Html2CanvasConfig;
|
|
13
17
|
private static instanceCount;
|
|
14
|
-
constructor(options: ContextOptions, windowBounds: Bounds);
|
|
18
|
+
constructor(options: ContextOptions, windowBounds: Bounds, config: Html2CanvasConfig);
|
|
15
19
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Origin Checker
|
|
3
|
+
*
|
|
4
|
+
* Provides origin checking functionality without global static state.
|
|
5
|
+
* Each instance maintains its own anchor element and origin reference.
|
|
6
|
+
*
|
|
7
|
+
* Replaces the static methods in CacheStorage with instance-based approach.
|
|
8
|
+
*/
|
|
9
|
+
export declare class OriginChecker {
|
|
10
|
+
private readonly link;
|
|
11
|
+
private readonly origin;
|
|
12
|
+
constructor(window: Window);
|
|
13
|
+
/**
|
|
14
|
+
* Get the origin (protocol + hostname + port) of a URL
|
|
15
|
+
*
|
|
16
|
+
* @param url - URL to parse
|
|
17
|
+
* @returns Origin string (e.g., "https://example.com:8080")
|
|
18
|
+
*/
|
|
19
|
+
getOrigin(url: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Check if a URL is from the same origin as the context
|
|
22
|
+
*
|
|
23
|
+
* @param src - URL to check
|
|
24
|
+
* @returns true if same origin, false otherwise
|
|
25
|
+
*/
|
|
26
|
+
isSameOrigin(src: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Get the current context origin
|
|
29
|
+
*
|
|
30
|
+
* @returns The origin of the context window
|
|
31
|
+
*/
|
|
32
|
+
getContextOrigin(): string;
|
|
33
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { Context } from './context';
|
|
2
|
+
/**
|
|
3
|
+
* Performance Metric
|
|
4
|
+
*
|
|
5
|
+
* Represents a single performance measurement
|
|
6
|
+
*/
|
|
7
|
+
export interface PerformanceMetric {
|
|
8
|
+
name: string;
|
|
9
|
+
startTime: number;
|
|
10
|
+
endTime?: number;
|
|
11
|
+
duration?: number;
|
|
12
|
+
metadata?: Record<string, any>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Performance Summary
|
|
16
|
+
*
|
|
17
|
+
* Aggregated performance data
|
|
18
|
+
*/
|
|
19
|
+
export interface PerformanceSummary {
|
|
20
|
+
totalDuration: number;
|
|
21
|
+
metrics: PerformanceMetric[];
|
|
22
|
+
breakdown: Array<{
|
|
23
|
+
name: string;
|
|
24
|
+
duration: number;
|
|
25
|
+
percentage: string;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Performance Monitor
|
|
30
|
+
*
|
|
31
|
+
* Tracks performance metrics throughout the rendering pipeline.
|
|
32
|
+
* Provides insights into where time is spent during rendering.
|
|
33
|
+
*
|
|
34
|
+
* Usage:
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const monitor = new PerformanceMonitor(context);
|
|
37
|
+
*
|
|
38
|
+
* monitor.start('clone');
|
|
39
|
+
* await cloneDocument();
|
|
40
|
+
* monitor.end('clone');
|
|
41
|
+
*
|
|
42
|
+
* const summary = monitor.getSummary();
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare class PerformanceMonitor {
|
|
46
|
+
private readonly context;
|
|
47
|
+
private readonly activeMetrics;
|
|
48
|
+
private readonly completedMetrics;
|
|
49
|
+
private readonly enabled;
|
|
50
|
+
private readonly getTime;
|
|
51
|
+
constructor(context: Context | null, enabled?: boolean);
|
|
52
|
+
/**
|
|
53
|
+
* Start measuring a performance metric
|
|
54
|
+
*
|
|
55
|
+
* @param name - Unique name for this metric
|
|
56
|
+
* @param metadata - Optional metadata to attach
|
|
57
|
+
*/
|
|
58
|
+
start(name: string, metadata?: Record<string, any>): void;
|
|
59
|
+
/**
|
|
60
|
+
* End measuring a performance metric
|
|
61
|
+
*
|
|
62
|
+
* @param name - Name of the metric to end
|
|
63
|
+
* @returns The completed metric, or undefined if not found
|
|
64
|
+
*/
|
|
65
|
+
end(name: string): PerformanceMetric | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Measure a synchronous function
|
|
68
|
+
*
|
|
69
|
+
* @param name - Name for this measurement
|
|
70
|
+
* @param fn - Function to measure
|
|
71
|
+
* @param metadata - Optional metadata
|
|
72
|
+
* @returns The function's return value
|
|
73
|
+
*/
|
|
74
|
+
measure<T>(name: string, fn: () => T, metadata?: Record<string, any>): T;
|
|
75
|
+
/**
|
|
76
|
+
* Measure an asynchronous function
|
|
77
|
+
*
|
|
78
|
+
* @param name - Name for this measurement
|
|
79
|
+
* @param fn - Async function to measure
|
|
80
|
+
* @param metadata - Optional metadata
|
|
81
|
+
* @returns Promise resolving to the function's return value
|
|
82
|
+
*/
|
|
83
|
+
measureAsync<T>(name: string, fn: () => Promise<T>, metadata?: Record<string, any>): Promise<T>;
|
|
84
|
+
/**
|
|
85
|
+
* Get all completed metrics
|
|
86
|
+
*
|
|
87
|
+
* @returns Array of completed performance metrics
|
|
88
|
+
*/
|
|
89
|
+
getMetrics(): PerformanceMetric[];
|
|
90
|
+
/**
|
|
91
|
+
* Get a specific metric by name
|
|
92
|
+
*
|
|
93
|
+
* @param name - Metric name
|
|
94
|
+
* @returns The metric, or undefined if not found
|
|
95
|
+
*/
|
|
96
|
+
getMetric(name: string): PerformanceMetric | undefined;
|
|
97
|
+
/**
|
|
98
|
+
* Get performance summary
|
|
99
|
+
*
|
|
100
|
+
* @returns Aggregated performance data
|
|
101
|
+
*/
|
|
102
|
+
getSummary(): PerformanceSummary;
|
|
103
|
+
/**
|
|
104
|
+
* Log performance summary to console
|
|
105
|
+
*/
|
|
106
|
+
logSummary(): void;
|
|
107
|
+
/**
|
|
108
|
+
* Clear all metrics
|
|
109
|
+
*/
|
|
110
|
+
clear(): void;
|
|
111
|
+
/**
|
|
112
|
+
* Check if monitoring is enabled
|
|
113
|
+
*/
|
|
114
|
+
isEnabled(): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Get active (uncompleted) metrics
|
|
117
|
+
* Useful for debugging leaked measurements
|
|
118
|
+
*/
|
|
119
|
+
getActiveMetrics(): string[];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Create a no-op performance monitor for production
|
|
123
|
+
* Has minimal overhead when disabled
|
|
124
|
+
*/
|
|
125
|
+
export declare class NoOpPerformanceMonitor extends PerformanceMonitor {
|
|
126
|
+
constructor();
|
|
127
|
+
start(): void;
|
|
128
|
+
end(): undefined;
|
|
129
|
+
measure<T>(_name: string, fn: () => T): T;
|
|
130
|
+
measureAsync<T>(_name: string, fn: () => Promise<T>): Promise<T>;
|
|
131
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input Validator
|
|
3
|
+
*
|
|
4
|
+
* Provides validation and sanitization for user inputs to prevent security vulnerabilities
|
|
5
|
+
* including SSRF, XSS, and injection attacks.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Validation result
|
|
9
|
+
*/
|
|
10
|
+
export interface ValidationResult {
|
|
11
|
+
valid: boolean;
|
|
12
|
+
error?: string;
|
|
13
|
+
sanitized?: any;
|
|
14
|
+
/**
|
|
15
|
+
* Indicates if runtime validation is recommended
|
|
16
|
+
* (e.g., for proxy URLs to prevent DNS rebinding attacks)
|
|
17
|
+
*/
|
|
18
|
+
requiresRuntimeCheck?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Validator configuration
|
|
22
|
+
*/
|
|
23
|
+
export interface ValidatorConfig {
|
|
24
|
+
/**
|
|
25
|
+
* Allowed proxy domains for SSRF prevention
|
|
26
|
+
* If empty, no domain restrictions
|
|
27
|
+
*/
|
|
28
|
+
allowedProxyDomains?: string[];
|
|
29
|
+
/**
|
|
30
|
+
* Allow localhost/127.0.0.1 as proxy URL. Only set for development or test (e.g. Karma reftests).
|
|
31
|
+
* @default false
|
|
32
|
+
*/
|
|
33
|
+
allowLocalhostProxy?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Maximum allowed image timeout in milliseconds
|
|
36
|
+
*/
|
|
37
|
+
maxImageTimeout?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Whether to allow data URLs
|
|
40
|
+
*/
|
|
41
|
+
allowDataUrls?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Custom validation function
|
|
44
|
+
*/
|
|
45
|
+
customValidator?: (value: any, type: string) => ValidationResult;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Input Validator
|
|
49
|
+
*
|
|
50
|
+
* Validates and sanitizes user inputs for security and correctness.
|
|
51
|
+
*/
|
|
52
|
+
export declare class Validator {
|
|
53
|
+
private readonly config;
|
|
54
|
+
constructor(config?: ValidatorConfig);
|
|
55
|
+
/**
|
|
56
|
+
* Validate a URL
|
|
57
|
+
*
|
|
58
|
+
* @param url - URL to validate
|
|
59
|
+
* @param context - Context for validation (e.g., 'proxy', 'image')
|
|
60
|
+
* @returns Validation result
|
|
61
|
+
*/
|
|
62
|
+
validateUrl(url: string, context?: 'proxy' | 'image' | 'general'): ValidationResult;
|
|
63
|
+
/**
|
|
64
|
+
* Check if a hostname is a private IP address
|
|
65
|
+
*/
|
|
66
|
+
private isPrivateIP;
|
|
67
|
+
/**
|
|
68
|
+
* Check if an IPv6 address is private or special
|
|
69
|
+
* Handles compressed IPv6 addresses (e.g., ::1, fc00::1)
|
|
70
|
+
*/
|
|
71
|
+
private isPrivateIPv6;
|
|
72
|
+
/**
|
|
73
|
+
* Expand compressed IPv6 address to full form
|
|
74
|
+
* e.g., "::1" -> "0000:0000:0000:0000:0000:0000:0000:0001"
|
|
75
|
+
*/
|
|
76
|
+
private expandIPv6;
|
|
77
|
+
/**
|
|
78
|
+
* Fallback prefix matching for IPv6 when expansion fails
|
|
79
|
+
*/
|
|
80
|
+
private isPrivateIPv6Prefix;
|
|
81
|
+
/**
|
|
82
|
+
* Validate CSP nonce
|
|
83
|
+
*
|
|
84
|
+
* @param nonce - CSP nonce to validate
|
|
85
|
+
* @returns Validation result
|
|
86
|
+
*/
|
|
87
|
+
validateCspNonce(nonce: string): ValidationResult;
|
|
88
|
+
/**
|
|
89
|
+
* Validate image timeout
|
|
90
|
+
*
|
|
91
|
+
* @param timeout - Timeout in milliseconds
|
|
92
|
+
* @returns Validation result
|
|
93
|
+
*/
|
|
94
|
+
validateImageTimeout(timeout: number): ValidationResult;
|
|
95
|
+
/**
|
|
96
|
+
* Validate window dimensions
|
|
97
|
+
*
|
|
98
|
+
* @param width - Window width
|
|
99
|
+
* @param height - Window height
|
|
100
|
+
* @returns Validation result
|
|
101
|
+
*/
|
|
102
|
+
validateDimensions(width: number, height: number): ValidationResult;
|
|
103
|
+
/**
|
|
104
|
+
* Validate scale factor
|
|
105
|
+
*
|
|
106
|
+
* @param scale - Scale factor
|
|
107
|
+
* @returns Validation result
|
|
108
|
+
*/
|
|
109
|
+
validateScale(scale: number): ValidationResult;
|
|
110
|
+
/**
|
|
111
|
+
* Validate HTML element
|
|
112
|
+
*
|
|
113
|
+
* @param element - Element to validate
|
|
114
|
+
* @returns Validation result
|
|
115
|
+
*/
|
|
116
|
+
validateElement(element: any): ValidationResult;
|
|
117
|
+
/**
|
|
118
|
+
* Validate entire options object
|
|
119
|
+
*
|
|
120
|
+
* @param options - Options to validate
|
|
121
|
+
* @returns Validation result with all errors
|
|
122
|
+
*/
|
|
123
|
+
validateOptions(options: any): ValidationResult;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Create a default validator instance
|
|
127
|
+
*/
|
|
128
|
+
export declare function createDefaultValidator(config?: ValidatorConfig): Validator;
|
|
129
|
+
/**
|
|
130
|
+
* Create a strict validator with security-focused settings
|
|
131
|
+
*/
|
|
132
|
+
export declare function createStrictValidator(allowedProxyDomains: string[]): Validator;
|