html2canvas-pro 1.6.0 → 1.6.2
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/dist/html2canvas-pro.esm.js +2509 -3036
- package/dist/html2canvas-pro.esm.js.map +1 -1
- package/dist/html2canvas-pro.js +2517 -3040
- package/dist/html2canvas-pro.js.map +1 -1
- package/dist/html2canvas-pro.min.js +6 -2
- package/dist/lib/__tests__/index.js +57 -122
- package/dist/lib/__tests__/index.js.map +1 -1
- package/dist/lib/core/__mocks__/cache-storage.js +2 -5
- package/dist/lib/core/__mocks__/cache-storage.js.map +1 -1
- package/dist/lib/core/__mocks__/context.js +7 -10
- package/dist/lib/core/__mocks__/context.js.map +1 -1
- package/dist/lib/core/__mocks__/logger.js +9 -17
- package/dist/lib/core/__mocks__/logger.js.map +1 -1
- package/dist/lib/core/__tests__/cache-storage.js +153 -351
- package/dist/lib/core/__tests__/cache-storage.js.map +1 -1
- package/dist/lib/core/__tests__/logger.js +12 -13
- package/dist/lib/core/__tests__/logger.js.map +1 -1
- package/dist/lib/core/bitwise.js +1 -1
- package/dist/lib/core/bitwise.js.map +1 -1
- package/dist/lib/core/cache-storage.js +92 -155
- package/dist/lib/core/cache-storage.js.map +1 -1
- package/dist/lib/core/context.js +8 -10
- package/dist/lib/core/context.js.map +1 -1
- package/dist/lib/core/debugger.js +5 -5
- package/dist/lib/core/debugger.js.map +1 -1
- package/dist/lib/core/features.js +65 -68
- package/dist/lib/core/features.js.map +1 -1
- package/dist/lib/core/logger.js +21 -56
- package/dist/lib/core/logger.js.map +1 -1
- package/dist/lib/css/index.js +98 -103
- package/dist/lib/css/index.js.map +1 -1
- package/dist/lib/css/layout/__mocks__/bounds.js +1 -1
- package/dist/lib/css/layout/__mocks__/bounds.js.map +1 -1
- package/dist/lib/css/layout/bounds.js +20 -21
- package/dist/lib/css/layout/bounds.js.map +1 -1
- package/dist/lib/css/layout/text.js +50 -58
- package/dist/lib/css/layout/text.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/background-tests.js +24 -29
- package/dist/lib/css/property-descriptors/__tests__/background-tests.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/font-family.js +14 -20
- package/dist/lib/css/property-descriptors/__tests__/font-family.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/paint-order.js +61 -83
- package/dist/lib/css/property-descriptors/__tests__/paint-order.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/text-shadow.js +75 -87
- package/dist/lib/css/property-descriptors/__tests__/text-shadow.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/transform-tests.js +9 -13
- package/dist/lib/css/property-descriptors/__tests__/transform-tests.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-clip.js +3 -3
- package/dist/lib/css/property-descriptors/background-clip.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-color.js +1 -1
- package/dist/lib/css/property-descriptors/background-image.js +6 -6
- package/dist/lib/css/property-descriptors/background-image.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-origin.js +3 -3
- package/dist/lib/css/property-descriptors/background-origin.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-position.js +6 -6
- package/dist/lib/css/property-descriptors/background-position.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-repeat.js +7 -9
- package/dist/lib/css/property-descriptors/background-repeat.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-size.js +5 -7
- package/dist/lib/css/property-descriptors/background-size.js.map +1 -1
- package/dist/lib/css/property-descriptors/border-color.js +3 -3
- package/dist/lib/css/property-descriptors/border-color.js.map +1 -1
- package/dist/lib/css/property-descriptors/border-radius.js +5 -7
- package/dist/lib/css/property-descriptors/border-radius.js.map +1 -1
- package/dist/lib/css/property-descriptors/border-style.js +4 -4
- package/dist/lib/css/property-descriptors/border-style.js.map +1 -1
- package/dist/lib/css/property-descriptors/border-width.js +5 -5
- package/dist/lib/css/property-descriptors/border-width.js.map +1 -1
- package/dist/lib/css/property-descriptors/box-shadow.js +10 -10
- package/dist/lib/css/property-descriptors/box-shadow.js.map +1 -1
- package/dist/lib/css/property-descriptors/color.js +1 -1
- package/dist/lib/css/property-descriptors/content.js +2 -2
- package/dist/lib/css/property-descriptors/content.js.map +1 -1
- package/dist/lib/css/property-descriptors/counter-increment.js +10 -10
- package/dist/lib/css/property-descriptors/counter-increment.js.map +1 -1
- package/dist/lib/css/property-descriptors/counter-reset.js +9 -9
- package/dist/lib/css/property-descriptors/counter-reset.js.map +1 -1
- package/dist/lib/css/property-descriptors/direction.js +1 -1
- package/dist/lib/css/property-descriptors/direction.js.map +1 -1
- package/dist/lib/css/property-descriptors/display.js +4 -4
- package/dist/lib/css/property-descriptors/display.js.map +1 -1
- package/dist/lib/css/property-descriptors/duration.js +4 -4
- package/dist/lib/css/property-descriptors/duration.js.map +1 -1
- package/dist/lib/css/property-descriptors/float.js +1 -1
- package/dist/lib/css/property-descriptors/float.js.map +1 -1
- package/dist/lib/css/property-descriptors/font-family.js +6 -6
- package/dist/lib/css/property-descriptors/font-family.js.map +1 -1
- package/dist/lib/css/property-descriptors/font-size.js +1 -1
- package/dist/lib/css/property-descriptors/font-style.js +1 -1
- package/dist/lib/css/property-descriptors/font-style.js.map +1 -1
- package/dist/lib/css/property-descriptors/font-variant.js +3 -3
- package/dist/lib/css/property-descriptors/font-variant.js.map +1 -1
- package/dist/lib/css/property-descriptors/font-weight.js +2 -2
- package/dist/lib/css/property-descriptors/font-weight.js.map +1 -1
- package/dist/lib/css/property-descriptors/letter-spacing.js +1 -1
- package/dist/lib/css/property-descriptors/letter-spacing.js.map +1 -1
- package/dist/lib/css/property-descriptors/line-break.js +1 -1
- package/dist/lib/css/property-descriptors/line-break.js.map +1 -1
- package/dist/lib/css/property-descriptors/line-height.js +3 -3
- package/dist/lib/css/property-descriptors/line-height.js.map +1 -1
- package/dist/lib/css/property-descriptors/list-style-image.js +2 -2
- package/dist/lib/css/property-descriptors/list-style-image.js.map +1 -1
- package/dist/lib/css/property-descriptors/list-style-position.js +1 -1
- package/dist/lib/css/property-descriptors/list-style-position.js.map +1 -1
- package/dist/lib/css/property-descriptors/list-style-type.js +1 -1
- package/dist/lib/css/property-descriptors/list-style-type.js.map +1 -1
- package/dist/lib/css/property-descriptors/margin.js +3 -3
- package/dist/lib/css/property-descriptors/margin.js.map +1 -1
- package/dist/lib/css/property-descriptors/object-fit.js +4 -4
- package/dist/lib/css/property-descriptors/object-fit.js.map +1 -1
- package/dist/lib/css/property-descriptors/opacity.js +2 -2
- package/dist/lib/css/property-descriptors/opacity.js.map +1 -1
- package/dist/lib/css/property-descriptors/overflow-wrap.js +1 -1
- package/dist/lib/css/property-descriptors/overflow-wrap.js.map +1 -1
- package/dist/lib/css/property-descriptors/overflow.js +3 -3
- package/dist/lib/css/property-descriptors/overflow.js.map +1 -1
- package/dist/lib/css/property-descriptors/padding.js +3 -3
- package/dist/lib/css/property-descriptors/padding.js.map +1 -1
- package/dist/lib/css/property-descriptors/paint-order.js +6 -6
- package/dist/lib/css/property-descriptors/paint-order.js.map +1 -1
- package/dist/lib/css/property-descriptors/position.js +1 -1
- package/dist/lib/css/property-descriptors/position.js.map +1 -1
- package/dist/lib/css/property-descriptors/quotes.js +11 -11
- package/dist/lib/css/property-descriptors/quotes.js.map +1 -1
- package/dist/lib/css/property-descriptors/rotate.js +3 -3
- package/dist/lib/css/property-descriptors/rotate.js.map +1 -1
- package/dist/lib/css/property-descriptors/text-align.js +1 -1
- package/dist/lib/css/property-descriptors/text-align.js.map +1 -1
- package/dist/lib/css/property-descriptors/text-decoration-color.js +1 -1
- package/dist/lib/css/property-descriptors/text-decoration-line.js +4 -4
- package/dist/lib/css/property-descriptors/text-decoration-line.js.map +1 -1
- package/dist/lib/css/property-descriptors/text-shadow.js +10 -10
- package/dist/lib/css/property-descriptors/text-shadow.js.map +1 -1
- package/dist/lib/css/property-descriptors/text-transform.js +1 -1
- package/dist/lib/css/property-descriptors/text-transform.js.map +1 -1
- package/dist/lib/css/property-descriptors/transform-origin.js +6 -6
- package/dist/lib/css/property-descriptors/transform-origin.js.map +1 -1
- package/dist/lib/css/property-descriptors/transform.js +15 -15
- package/dist/lib/css/property-descriptors/transform.js.map +1 -1
- package/dist/lib/css/property-descriptors/visibility.js +1 -1
- package/dist/lib/css/property-descriptors/visibility.js.map +1 -1
- package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js +1 -1
- package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js +3 -3
- package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js.map +1 -1
- package/dist/lib/css/property-descriptors/word-break.js +1 -1
- package/dist/lib/css/property-descriptors/word-break.js.map +1 -1
- package/dist/lib/css/property-descriptors/z-index.js +3 -3
- package/dist/lib/css/property-descriptors/z-index.js.map +1 -1
- package/dist/lib/css/syntax/__tests__/tokernizer-tests.js +17 -25
- package/dist/lib/css/syntax/__tests__/tokernizer-tests.js.map +1 -1
- package/dist/lib/css/syntax/parser.js +50 -55
- package/dist/lib/css/syntax/parser.js.map +1 -1
- package/dist/lib/css/syntax/tokenizer.js +205 -214
- package/dist/lib/css/syntax/tokenizer.js.map +1 -1
- package/dist/lib/css/types/__tests__/color-tests.js +103 -167
- package/dist/lib/css/types/__tests__/color-tests.js.map +1 -1
- package/dist/lib/css/types/__tests__/image-tests.js +192 -217
- package/dist/lib/css/types/__tests__/image-tests.js.map +1 -1
- package/dist/lib/css/types/angle.js +13 -13
- package/dist/lib/css/types/angle.js.map +1 -1
- package/dist/lib/css/types/color-spaces/a98.js +18 -22
- package/dist/lib/css/types/color-spaces/a98.js.map +1 -1
- package/dist/lib/css/types/color-spaces/p3.js +17 -22
- package/dist/lib/css/types/color-spaces/p3.js.map +1 -1
- package/dist/lib/css/types/color-spaces/pro-photo.js +17 -21
- package/dist/lib/css/types/color-spaces/pro-photo.js.map +1 -1
- package/dist/lib/css/types/color-spaces/rec2020.js +15 -19
- package/dist/lib/css/types/color-spaces/rec2020.js.map +1 -1
- package/dist/lib/css/types/color-spaces/srgb.js +17 -23
- package/dist/lib/css/types/color-spaces/srgb.js.map +1 -1
- package/dist/lib/css/types/color-utilities.js +80 -103
- package/dist/lib/css/types/color-utilities.js.map +1 -1
- package/dist/lib/css/types/color.js +72 -66
- package/dist/lib/css/types/color.js.map +1 -1
- package/dist/lib/css/types/functions/-prefix-linear-gradient.js +11 -11
- package/dist/lib/css/types/functions/-prefix-linear-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/-prefix-radial-gradient.js +16 -16
- package/dist/lib/css/types/functions/-prefix-radial-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/-webkit-gradient.js +26 -26
- package/dist/lib/css/types/functions/-webkit-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/__tests__/radial-gradient.js +57 -65
- package/dist/lib/css/types/functions/__tests__/radial-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/counter.js +59 -65
- package/dist/lib/css/types/functions/counter.js.map +1 -1
- package/dist/lib/css/types/functions/gradient.js +51 -52
- package/dist/lib/css/types/functions/gradient.js.map +1 -1
- package/dist/lib/css/types/functions/linear-gradient.js +10 -10
- package/dist/lib/css/types/functions/linear-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/radial-gradient.js +17 -17
- package/dist/lib/css/types/functions/radial-gradient.js.map +1 -1
- package/dist/lib/css/types/image.js +14 -14
- package/dist/lib/css/types/image.js.map +1 -1
- package/dist/lib/css/types/length-percentage.js +19 -27
- package/dist/lib/css/types/length-percentage.js.map +1 -1
- package/dist/lib/css/types/length.js +1 -3
- package/dist/lib/css/types/length.js.map +1 -1
- package/dist/lib/css/types/time.js +2 -2
- package/dist/lib/css/types/time.js.map +1 -1
- package/dist/lib/dom/__mocks__/document-cloner.js +7 -8
- package/dist/lib/dom/__mocks__/document-cloner.js.map +1 -1
- package/dist/lib/dom/document-cloner.js +195 -219
- package/dist/lib/dom/document-cloner.js.map +1 -1
- package/dist/lib/dom/element-container.js +8 -9
- package/dist/lib/dom/element-container.js.map +1 -1
- package/dist/lib/dom/elements/li-element-container.js +6 -24
- package/dist/lib/dom/elements/li-element-container.js.map +1 -1
- package/dist/lib/dom/elements/ol-element-container.js +7 -25
- package/dist/lib/dom/elements/ol-element-container.js.map +1 -1
- package/dist/lib/dom/elements/select-element-container.js +7 -25
- package/dist/lib/dom/elements/select-element-container.js.map +1 -1
- package/dist/lib/dom/elements/textarea-element-container.js +6 -24
- package/dist/lib/dom/elements/textarea-element-container.js.map +1 -1
- package/dist/lib/dom/node-parser.js +42 -46
- package/dist/lib/dom/node-parser.js.map +1 -1
- package/dist/lib/dom/replaced-elements/canvas-element-container.js +8 -26
- package/dist/lib/dom/replaced-elements/canvas-element-container.js.map +1 -1
- package/dist/lib/dom/replaced-elements/iframe-element-container.js +17 -35
- package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +1 -1
- package/dist/lib/dom/replaced-elements/image-element-container.js +9 -27
- package/dist/lib/dom/replaced-elements/image-element-container.js.map +1 -1
- package/dist/lib/dom/replaced-elements/input-element-container.js +47 -59
- package/dist/lib/dom/replaced-elements/input-element-container.js.map +1 -1
- package/dist/lib/dom/replaced-elements/svg-element-container.js +14 -32
- package/dist/lib/dom/replaced-elements/svg-element-container.js.map +1 -1
- package/dist/lib/dom/text-container.js +7 -8
- package/dist/lib/dom/text-container.js.map +1 -1
- package/dist/lib/index.js +101 -156
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/invariant.js +1 -1
- package/dist/lib/invariant.js.map +1 -1
- package/dist/lib/render/background.js +44 -47
- package/dist/lib/render/background.js.map +1 -1
- package/dist/lib/render/bezier-curve.js +18 -19
- package/dist/lib/render/bezier-curve.js.map +1 -1
- package/dist/lib/render/border.js +9 -9
- package/dist/lib/render/border.js.map +1 -1
- package/dist/lib/render/bound-curves.js +35 -36
- package/dist/lib/render/bound-curves.js.map +1 -1
- package/dist/lib/render/box-sizing.js +11 -11
- package/dist/lib/render/box-sizing.js.map +1 -1
- package/dist/lib/render/canvas/canvas-renderer.js +639 -918
- package/dist/lib/render/canvas/canvas-renderer.js.map +1 -1
- package/dist/lib/render/canvas/foreignobject-renderer.js +35 -101
- package/dist/lib/render/canvas/foreignobject-renderer.js.map +1 -1
- package/dist/lib/render/effects.js +12 -17
- package/dist/lib/render/effects.js.map +1 -1
- package/dist/lib/render/font-metrics.js +17 -18
- package/dist/lib/render/font-metrics.js.map +1 -1
- package/dist/lib/render/path.js +4 -4
- package/dist/lib/render/path.js.map +1 -1
- package/dist/lib/render/renderer.js +3 -4
- package/dist/lib/render/renderer.js.map +1 -1
- package/dist/lib/render/stacking-context.js +71 -73
- package/dist/lib/render/stacking-context.js.map +1 -1
- package/dist/lib/render/vector.js +6 -7
- package/dist/lib/render/vector.js.map +1 -1
- package/dist/types/dom/replaced-elements/input-element-container.d.ts +2 -0
- package/dist/types/index.d.ts +1 -0
- package/eslint.config.js +35 -0
- package/jest.config.cjs +5 -0
- package/karma.conf.cjs +295 -0
- package/package.json +32 -20
package/dist/lib/index.js
CHANGED
|
@@ -1,173 +1,118 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
3
|
+
exports.html2canvas = void 0;
|
|
4
|
+
const bounds_1 = require("./css/layout/bounds");
|
|
5
|
+
const color_1 = require("./css/types/color");
|
|
6
|
+
const color_utilities_1 = require("./css/types/color-utilities");
|
|
7
|
+
const document_cloner_1 = require("./dom/document-cloner");
|
|
8
|
+
const node_parser_1 = require("./dom/node-parser");
|
|
9
|
+
const cache_storage_1 = require("./core/cache-storage");
|
|
10
|
+
const canvas_renderer_1 = require("./render/canvas/canvas-renderer");
|
|
11
|
+
const foreignobject_renderer_1 = require("./render/canvas/foreignobject-renderer");
|
|
12
|
+
const context_1 = require("./core/context");
|
|
13
|
+
const html2canvas = (element, options = {}) => {
|
|
61
14
|
return renderElement(element, options);
|
|
62
15
|
};
|
|
16
|
+
exports.html2canvas = html2canvas;
|
|
63
17
|
exports.default = html2canvas;
|
|
64
18
|
if (typeof window !== 'undefined') {
|
|
65
19
|
cache_storage_1.CacheStorage.setContext(window);
|
|
66
20
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
case 4:
|
|
148
|
-
canvas = _u.sent();
|
|
149
|
-
_u.label = 5;
|
|
150
|
-
case 5:
|
|
151
|
-
if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) {
|
|
152
|
-
if (!document_cloner_1.DocumentCloner.destroy(container)) {
|
|
153
|
-
context.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore");
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
context.logger.debug("Finished rendering");
|
|
157
|
-
return [2 /*return*/, canvas];
|
|
21
|
+
const renderElement = async (element, opts) => {
|
|
22
|
+
if (!element || typeof element !== 'object') {
|
|
23
|
+
return Promise.reject('Invalid element provided as first argument');
|
|
24
|
+
}
|
|
25
|
+
const ownerDocument = element.ownerDocument;
|
|
26
|
+
if (!ownerDocument) {
|
|
27
|
+
throw new Error(`Element is not attached to a Document`);
|
|
28
|
+
}
|
|
29
|
+
const defaultView = ownerDocument.defaultView;
|
|
30
|
+
if (!defaultView) {
|
|
31
|
+
throw new Error(`Document is not attached to a Window`);
|
|
32
|
+
}
|
|
33
|
+
const resourceOptions = {
|
|
34
|
+
allowTaint: opts.allowTaint ?? false,
|
|
35
|
+
imageTimeout: opts.imageTimeout ?? 15000,
|
|
36
|
+
proxy: opts.proxy,
|
|
37
|
+
useCORS: opts.useCORS ?? false,
|
|
38
|
+
customIsSameOrigin: opts.customIsSameOrigin
|
|
39
|
+
};
|
|
40
|
+
const contextOptions = {
|
|
41
|
+
logging: opts.logging ?? true,
|
|
42
|
+
cache: opts.cache,
|
|
43
|
+
...resourceOptions
|
|
44
|
+
};
|
|
45
|
+
const windowOptions = {
|
|
46
|
+
windowWidth: opts.windowWidth ?? defaultView.innerWidth,
|
|
47
|
+
windowHeight: opts.windowHeight ?? defaultView.innerHeight,
|
|
48
|
+
scrollX: opts.scrollX ?? defaultView.pageXOffset,
|
|
49
|
+
scrollY: opts.scrollY ?? defaultView.pageYOffset
|
|
50
|
+
};
|
|
51
|
+
const windowBounds = new bounds_1.Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);
|
|
52
|
+
const context = new context_1.Context(contextOptions, windowBounds);
|
|
53
|
+
const foreignObjectRendering = opts.foreignObjectRendering ?? false;
|
|
54
|
+
const cloneOptions = {
|
|
55
|
+
allowTaint: opts.allowTaint ?? false,
|
|
56
|
+
onclone: opts.onclone,
|
|
57
|
+
ignoreElements: opts.ignoreElements,
|
|
58
|
+
inlineImages: foreignObjectRendering,
|
|
59
|
+
copyStyles: foreignObjectRendering
|
|
60
|
+
};
|
|
61
|
+
context.logger.debug(`Starting document clone with size ${windowBounds.width}x${windowBounds.height} scrolled to ${-windowBounds.left},${-windowBounds.top}`);
|
|
62
|
+
const documentCloner = new document_cloner_1.DocumentCloner(context, element, cloneOptions);
|
|
63
|
+
const clonedElement = documentCloner.clonedReferenceElement;
|
|
64
|
+
if (!clonedElement) {
|
|
65
|
+
return Promise.reject(`Unable to find element in cloned iframe`);
|
|
66
|
+
}
|
|
67
|
+
const container = await documentCloner.toIFrame(ownerDocument, windowBounds);
|
|
68
|
+
const { width, height, left, top } = (0, node_parser_1.isBodyElement)(clonedElement) || (0, node_parser_1.isHTMLElement)(clonedElement)
|
|
69
|
+
? (0, bounds_1.parseDocumentSize)(clonedElement.ownerDocument)
|
|
70
|
+
: (0, bounds_1.parseBounds)(context, clonedElement);
|
|
71
|
+
const backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);
|
|
72
|
+
const renderOptions = {
|
|
73
|
+
canvas: opts.canvas,
|
|
74
|
+
backgroundColor,
|
|
75
|
+
scale: opts.scale ?? defaultView.devicePixelRatio ?? 1,
|
|
76
|
+
x: (opts.x ?? 0) + left,
|
|
77
|
+
y: (opts.y ?? 0) + top,
|
|
78
|
+
width: opts.width ?? Math.ceil(width),
|
|
79
|
+
height: opts.height ?? Math.ceil(height)
|
|
80
|
+
};
|
|
81
|
+
let canvas;
|
|
82
|
+
if (foreignObjectRendering) {
|
|
83
|
+
context.logger.debug(`Document cloned, using foreign object rendering`);
|
|
84
|
+
const renderer = new foreignobject_renderer_1.ForeignObjectRenderer(context, renderOptions);
|
|
85
|
+
canvas = await renderer.render(clonedElement);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
context.logger.debug(`Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`);
|
|
89
|
+
context.logger.debug(`Starting DOM parsing`);
|
|
90
|
+
const root = (0, node_parser_1.parseTree)(context, clonedElement);
|
|
91
|
+
if (backgroundColor === root.styles.backgroundColor) {
|
|
92
|
+
root.styles.backgroundColor = color_1.COLORS.TRANSPARENT;
|
|
93
|
+
}
|
|
94
|
+
context.logger.debug(`Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`);
|
|
95
|
+
const renderer = new canvas_renderer_1.CanvasRenderer(context, renderOptions);
|
|
96
|
+
canvas = await renderer.render(root);
|
|
97
|
+
}
|
|
98
|
+
if (opts.removeContainer ?? true) {
|
|
99
|
+
if (!document_cloner_1.DocumentCloner.destroy(container)) {
|
|
100
|
+
context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);
|
|
158
101
|
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
102
|
+
}
|
|
103
|
+
context.logger.debug(`Finished rendering`);
|
|
104
|
+
return canvas;
|
|
105
|
+
};
|
|
106
|
+
const parseBackgroundColor = (context, element, backgroundColorOverride) => {
|
|
107
|
+
const ownerDocument = element.ownerDocument;
|
|
163
108
|
// http://www.w3.org/TR/css3-background/#special-backgrounds
|
|
164
|
-
|
|
109
|
+
const documentBackgroundColor = ownerDocument.documentElement
|
|
165
110
|
? (0, color_1.parseColor)(context, getComputedStyle(ownerDocument.documentElement).backgroundColor)
|
|
166
111
|
: color_1.COLORS.TRANSPARENT;
|
|
167
|
-
|
|
112
|
+
const bodyBackgroundColor = ownerDocument.body
|
|
168
113
|
? (0, color_1.parseColor)(context, getComputedStyle(ownerDocument.body).backgroundColor)
|
|
169
114
|
: color_1.COLORS.TRANSPARENT;
|
|
170
|
-
|
|
115
|
+
const defaultBackgroundColor = typeof backgroundColorOverride === 'string'
|
|
171
116
|
? (0, color_1.parseColor)(context, backgroundColorOverride)
|
|
172
117
|
: backgroundColorOverride === null
|
|
173
118
|
? color_1.COLORS.TRANSPARENT
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/invariant.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invariant.js","sourceRoot":"","sources":["../../src/invariant.ts"],"names":[],"mappings":";;;AAAO,
|
|
1
|
+
{"version":3,"file":"invariant.js","sourceRoot":"","sources":["../../src/invariant.ts"],"names":[],"mappings":";;;AAAO,MAAM,SAAS,GAAG,CAAC,SAAkB,EAAE,KAAa,EAAQ,EAAE;IACjE,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;AACL,CAAC,CAAC;AAJW,QAAA,SAAS,aAIpB"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.calculateBackgroundRepeatPath = exports.getBackgroundValueForIndex = exports.calculateBackgroundSize = exports.isAuto = exports.calculateBackgroundRendering = exports.calculateBackgroundPaintingArea = exports.calculateBackgroundPositioningArea = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
const background_size_1 = require("../css/property-descriptors/background-size");
|
|
5
|
+
const vector_1 = require("./vector");
|
|
6
|
+
const length_percentage_1 = require("../css/types/length-percentage");
|
|
7
|
+
const parser_1 = require("../css/syntax/parser");
|
|
8
|
+
const box_sizing_1 = require("./box-sizing");
|
|
9
|
+
const calculateBackgroundPositioningArea = (backgroundOrigin, element) => {
|
|
10
10
|
if (backgroundOrigin === 0 /* BACKGROUND_ORIGIN.BORDER_BOX */) {
|
|
11
11
|
return element.bounds;
|
|
12
12
|
}
|
|
@@ -16,7 +16,7 @@ var calculateBackgroundPositioningArea = function (backgroundOrigin, element) {
|
|
|
16
16
|
return (0, box_sizing_1.paddingBox)(element);
|
|
17
17
|
};
|
|
18
18
|
exports.calculateBackgroundPositioningArea = calculateBackgroundPositioningArea;
|
|
19
|
-
|
|
19
|
+
const calculateBackgroundPaintingArea = (backgroundClip, element) => {
|
|
20
20
|
if (backgroundClip === 0 /* BACKGROUND_CLIP.BORDER_BOX */) {
|
|
21
21
|
return element.bounds;
|
|
22
22
|
}
|
|
@@ -26,45 +26,44 @@ var calculateBackgroundPaintingArea = function (backgroundClip, element) {
|
|
|
26
26
|
return (0, box_sizing_1.paddingBox)(element);
|
|
27
27
|
};
|
|
28
28
|
exports.calculateBackgroundPaintingArea = calculateBackgroundPaintingArea;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
const calculateBackgroundRendering = (container, index, intrinsicSize) => {
|
|
30
|
+
const backgroundPositioningArea = (0, exports.calculateBackgroundPositioningArea)((0, exports.getBackgroundValueForIndex)(container.styles.backgroundOrigin, index), container);
|
|
31
|
+
const backgroundPaintingArea = (0, exports.calculateBackgroundPaintingArea)((0, exports.getBackgroundValueForIndex)(container.styles.backgroundClip, index), container);
|
|
32
|
+
const backgroundImageSize = (0, exports.calculateBackgroundSize)((0, exports.getBackgroundValueForIndex)(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);
|
|
33
|
+
let [sizeWidth, sizeHeight] = backgroundImageSize;
|
|
34
|
+
const position = (0, length_percentage_1.getAbsoluteValueForTuple)((0, exports.getBackgroundValueForIndex)(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);
|
|
35
|
+
const path = (0, exports.calculateBackgroundRepeatPath)((0, exports.getBackgroundValueForIndex)(container.styles.backgroundRepeat, index), position, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);
|
|
36
|
+
const offsetX = Math.round(backgroundPositioningArea.left + position[0]);
|
|
37
|
+
const offsetY = Math.round(backgroundPositioningArea.top + position[1]);
|
|
38
38
|
sizeWidth = Math.max(1, sizeWidth);
|
|
39
39
|
sizeHeight = Math.max(1, sizeHeight);
|
|
40
40
|
return [path, offsetX, offsetY, sizeWidth, sizeHeight];
|
|
41
41
|
};
|
|
42
42
|
exports.calculateBackgroundRendering = calculateBackgroundRendering;
|
|
43
|
-
|
|
43
|
+
const isAuto = (token) => (0, parser_1.isIdentToken)(token) && token.value === background_size_1.BACKGROUND_SIZE.AUTO;
|
|
44
44
|
exports.isAuto = isAuto;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
var first = size[0], second = size[1];
|
|
45
|
+
const hasIntrinsicValue = (value) => typeof value === 'number';
|
|
46
|
+
const calculateBackgroundSize = (size, [intrinsicWidth, intrinsicHeight, intrinsicProportion], bounds) => {
|
|
47
|
+
const [first, second] = size;
|
|
49
48
|
if (!first) {
|
|
50
49
|
return [0, 0];
|
|
51
50
|
}
|
|
52
51
|
if ((0, length_percentage_1.isLengthPercentage)(first) && second && (0, length_percentage_1.isLengthPercentage)(second)) {
|
|
53
52
|
return [(0, length_percentage_1.getAbsoluteValue)(first, bounds.width), (0, length_percentage_1.getAbsoluteValue)(second, bounds.height)];
|
|
54
53
|
}
|
|
55
|
-
|
|
54
|
+
const hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);
|
|
56
55
|
if ((0, parser_1.isIdentToken)(first) && (first.value === background_size_1.BACKGROUND_SIZE.CONTAIN || first.value === background_size_1.BACKGROUND_SIZE.COVER)) {
|
|
57
56
|
if (hasIntrinsicValue(intrinsicProportion)) {
|
|
58
|
-
|
|
57
|
+
const targetRatio = bounds.width / bounds.height;
|
|
59
58
|
return targetRatio < intrinsicProportion !== (first.value === background_size_1.BACKGROUND_SIZE.COVER)
|
|
60
59
|
? [bounds.width, bounds.width / intrinsicProportion]
|
|
61
60
|
: [bounds.height * intrinsicProportion, bounds.height];
|
|
62
61
|
}
|
|
63
62
|
return [bounds.width, bounds.height];
|
|
64
63
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
const hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);
|
|
65
|
+
const hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);
|
|
66
|
+
const hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;
|
|
68
67
|
// If the background-size is auto or auto auto:
|
|
69
68
|
if ((0, exports.isAuto)(first) && (!second || (0, exports.isAuto)(second))) {
|
|
70
69
|
// If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.
|
|
@@ -80,45 +79,45 @@ var calculateBackgroundSize = function (size, _a, bounds) {
|
|
|
80
79
|
// If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.
|
|
81
80
|
// The other dimension is computed using the specified dimension and the intrinsic proportions.
|
|
82
81
|
if (hasIntrinsicDimensions && hasIntrinsicProportion) {
|
|
83
|
-
|
|
82
|
+
const width = hasIntrinsicWidth
|
|
84
83
|
? intrinsicWidth
|
|
85
84
|
: intrinsicHeight * intrinsicProportion;
|
|
86
|
-
|
|
85
|
+
const height = hasIntrinsicHeight
|
|
87
86
|
? intrinsicHeight
|
|
88
87
|
: intrinsicWidth / intrinsicProportion;
|
|
89
|
-
return [
|
|
88
|
+
return [width, height];
|
|
90
89
|
}
|
|
91
90
|
// If the image has only one intrinsic dimension but has no intrinsic proportions,
|
|
92
91
|
// it's rendered using the specified dimension and the other dimension of the background positioning area.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return [
|
|
92
|
+
const width = hasIntrinsicWidth ? intrinsicWidth : bounds.width;
|
|
93
|
+
const height = hasIntrinsicHeight ? intrinsicHeight : bounds.height;
|
|
94
|
+
return [width, height];
|
|
96
95
|
}
|
|
97
96
|
// If the image has intrinsic proportions, it's stretched to the specified dimension.
|
|
98
97
|
// The unspecified dimension is computed using the specified dimension and the intrinsic proportions.
|
|
99
98
|
if (hasIntrinsicProportion) {
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
let width = 0;
|
|
100
|
+
let height = 0;
|
|
102
101
|
if ((0, length_percentage_1.isLengthPercentage)(first)) {
|
|
103
|
-
|
|
102
|
+
width = (0, length_percentage_1.getAbsoluteValue)(first, bounds.width);
|
|
104
103
|
}
|
|
105
104
|
else if ((0, length_percentage_1.isLengthPercentage)(second)) {
|
|
106
|
-
|
|
105
|
+
height = (0, length_percentage_1.getAbsoluteValue)(second, bounds.height);
|
|
107
106
|
}
|
|
108
107
|
if ((0, exports.isAuto)(first)) {
|
|
109
|
-
|
|
108
|
+
width = height * intrinsicProportion;
|
|
110
109
|
}
|
|
111
110
|
else if (!second || (0, exports.isAuto)(second)) {
|
|
112
|
-
|
|
111
|
+
height = width / intrinsicProportion;
|
|
113
112
|
}
|
|
114
|
-
return [
|
|
113
|
+
return [width, height];
|
|
115
114
|
}
|
|
116
115
|
// If the image has no intrinsic proportions, it's stretched to the specified dimension.
|
|
117
116
|
// The unspecified dimension is computed using the image's corresponding intrinsic dimension,
|
|
118
117
|
// if there is one. If there is no such intrinsic dimension,
|
|
119
118
|
// it becomes the corresponding dimension of the background positioning area.
|
|
120
|
-
|
|
121
|
-
|
|
119
|
+
let width = null;
|
|
120
|
+
let height = null;
|
|
122
121
|
if ((0, length_percentage_1.isLengthPercentage)(first)) {
|
|
123
122
|
width = (0, length_percentage_1.getAbsoluteValue)(first, bounds.width);
|
|
124
123
|
}
|
|
@@ -140,20 +139,18 @@ var calculateBackgroundSize = function (size, _a, bounds) {
|
|
|
140
139
|
if (width !== null && height !== null) {
|
|
141
140
|
return [width, height];
|
|
142
141
|
}
|
|
143
|
-
throw new Error(
|
|
142
|
+
throw new Error(`Unable to calculate background-size for element`);
|
|
144
143
|
};
|
|
145
144
|
exports.calculateBackgroundSize = calculateBackgroundSize;
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
const getBackgroundValueForIndex = (values, index) => {
|
|
146
|
+
const value = values[index];
|
|
148
147
|
if (typeof value === 'undefined') {
|
|
149
148
|
return values[0];
|
|
150
149
|
}
|
|
151
150
|
return value;
|
|
152
151
|
};
|
|
153
152
|
exports.getBackgroundValueForIndex = getBackgroundValueForIndex;
|
|
154
|
-
|
|
155
|
-
var x = _a[0], y = _a[1];
|
|
156
|
-
var width = _b[0], height = _b[1];
|
|
153
|
+
const calculateBackgroundRepeatPath = (repeat, [x, y], [width, height], backgroundPositioningArea, backgroundPaintingArea) => {
|
|
157
154
|
switch (repeat) {
|
|
158
155
|
case 2 /* BACKGROUND_REPEAT.REPEAT_X */:
|
|
159
156
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background.js","sourceRoot":"","sources":["../../../src/render/background.ts"],"names":[],"mappings":";;;AAGA
|
|
1
|
+
{"version":3,"file":"background.js","sourceRoot":"","sources":["../../../src/render/background.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isBezierCurve = exports.BezierCurve = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const vector_1 = require("./vector");
|
|
5
|
+
const lerp = (a, b, t) => {
|
|
6
6
|
return new vector_1.Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);
|
|
7
7
|
};
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
class BezierCurve {
|
|
9
|
+
constructor(start, startControl, endControl, end) {
|
|
10
10
|
this.type = 1 /* PathType.BEZIER_CURVE */;
|
|
11
11
|
this.start = start;
|
|
12
12
|
this.startControl = startControl;
|
|
13
13
|
this.endControl = endControl;
|
|
14
14
|
this.end = end;
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
subdivide(t, firstHalf) {
|
|
17
|
+
const ab = lerp(this.start, this.startControl, t);
|
|
18
|
+
const bc = lerp(this.startControl, this.endControl, t);
|
|
19
|
+
const cd = lerp(this.endControl, this.end, t);
|
|
20
|
+
const abbc = lerp(ab, bc, t);
|
|
21
|
+
const bccd = lerp(bc, cd, t);
|
|
22
|
+
const dest = lerp(abbc, bccd, t);
|
|
23
23
|
return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);
|
|
24
|
-
}
|
|
25
|
-
|
|
24
|
+
}
|
|
25
|
+
add(deltaX, deltaY) {
|
|
26
26
|
return new BezierCurve(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));
|
|
27
|
-
}
|
|
28
|
-
|
|
27
|
+
}
|
|
28
|
+
reverse() {
|
|
29
29
|
return new BezierCurve(this.end, this.endControl, this.startControl, this.start);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
}());
|
|
30
|
+
}
|
|
31
|
+
}
|
|
33
32
|
exports.BezierCurve = BezierCurve;
|
|
34
|
-
|
|
33
|
+
const isBezierCurve = (path) => path.type === 1 /* PathType.BEZIER_CURVE */;
|
|
35
34
|
exports.isBezierCurve = isBezierCurve;
|
|
36
35
|
//# sourceMappingURL=bezier-curve.js.map
|