source: imaps-frontend/node_modules/html2canvas/dist/lib/render/background.js@ 79a0317

main
Last change on this file since 79a0317 was 79a0317, checked in by stefan toskovski <stefantoska84@…>, 3 days ago

F4 Finalna Verzija

  • Property mode set to 100644
File size: 11.3 KB
Line 
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.calculateBackgroundRepeatPath = exports.getBackgroundValueForIndex = exports.calculateBackgroundSize = exports.isAuto = exports.calculateBackgroundRendering = exports.calculateBackgroundPaintingArea = exports.calculateBackgroundPositioningArea = void 0;
4var background_size_1 = require("../css/property-descriptors/background-size");
5var vector_1 = require("./vector");
6var length_percentage_1 = require("../css/types/length-percentage");
7var parser_1 = require("../css/syntax/parser");
8var box_sizing_1 = require("./box-sizing");
9var calculateBackgroundPositioningArea = function (backgroundOrigin, element) {
10 if (backgroundOrigin === 0 /* BORDER_BOX */) {
11 return element.bounds;
12 }
13 if (backgroundOrigin === 2 /* CONTENT_BOX */) {
14 return box_sizing_1.contentBox(element);
15 }
16 return box_sizing_1.paddingBox(element);
17};
18exports.calculateBackgroundPositioningArea = calculateBackgroundPositioningArea;
19var calculateBackgroundPaintingArea = function (backgroundClip, element) {
20 if (backgroundClip === 0 /* BORDER_BOX */) {
21 return element.bounds;
22 }
23 if (backgroundClip === 2 /* CONTENT_BOX */) {
24 return box_sizing_1.contentBox(element);
25 }
26 return box_sizing_1.paddingBox(element);
27};
28exports.calculateBackgroundPaintingArea = calculateBackgroundPaintingArea;
29var calculateBackgroundRendering = function (container, index, intrinsicSize) {
30 var backgroundPositioningArea = exports.calculateBackgroundPositioningArea(exports.getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);
31 var backgroundPaintingArea = exports.calculateBackgroundPaintingArea(exports.getBackgroundValueForIndex(container.styles.backgroundClip, index), container);
32 var backgroundImageSize = exports.calculateBackgroundSize(exports.getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);
33 var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];
34 var position = length_percentage_1.getAbsoluteValueForTuple(exports.getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);
35 var path = exports.calculateBackgroundRepeatPath(exports.getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);
36 var offsetX = Math.round(backgroundPositioningArea.left + position[0]);
37 var offsetY = Math.round(backgroundPositioningArea.top + position[1]);
38 return [path, offsetX, offsetY, sizeWidth, sizeHeight];
39};
40exports.calculateBackgroundRendering = calculateBackgroundRendering;
41var isAuto = function (token) { return parser_1.isIdentToken(token) && token.value === background_size_1.BACKGROUND_SIZE.AUTO; };
42exports.isAuto = isAuto;
43var hasIntrinsicValue = function (value) { return typeof value === 'number'; };
44var calculateBackgroundSize = function (size, _a, bounds) {
45 var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];
46 var first = size[0], second = size[1];
47 if (!first) {
48 return [0, 0];
49 }
50 if (length_percentage_1.isLengthPercentage(first) && second && length_percentage_1.isLengthPercentage(second)) {
51 return [length_percentage_1.getAbsoluteValue(first, bounds.width), length_percentage_1.getAbsoluteValue(second, bounds.height)];
52 }
53 var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);
54 if (parser_1.isIdentToken(first) && (first.value === background_size_1.BACKGROUND_SIZE.CONTAIN || first.value === background_size_1.BACKGROUND_SIZE.COVER)) {
55 if (hasIntrinsicValue(intrinsicProportion)) {
56 var targetRatio = bounds.width / bounds.height;
57 return targetRatio < intrinsicProportion !== (first.value === background_size_1.BACKGROUND_SIZE.COVER)
58 ? [bounds.width, bounds.width / intrinsicProportion]
59 : [bounds.height * intrinsicProportion, bounds.height];
60 }
61 return [bounds.width, bounds.height];
62 }
63 var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);
64 var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);
65 var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;
66 // If the background-size is auto or auto auto:
67 if (exports.isAuto(first) && (!second || exports.isAuto(second))) {
68 // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.
69 if (hasIntrinsicWidth && hasIntrinsicHeight) {
70 return [intrinsicWidth, intrinsicHeight];
71 }
72 // If the image has no intrinsic dimensions and has no intrinsic proportions,
73 // it's rendered at the size of the background positioning area.
74 if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {
75 return [bounds.width, bounds.height];
76 }
77 // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.
78 // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.
79 // The other dimension is computed using the specified dimension and the intrinsic proportions.
80 if (hasIntrinsicDimensions && hasIntrinsicProportion) {
81 var width_1 = hasIntrinsicWidth
82 ? intrinsicWidth
83 : intrinsicHeight * intrinsicProportion;
84 var height_1 = hasIntrinsicHeight
85 ? intrinsicHeight
86 : intrinsicWidth / intrinsicProportion;
87 return [width_1, height_1];
88 }
89 // If the image has only one intrinsic dimension but has no intrinsic proportions,
90 // it's rendered using the specified dimension and the other dimension of the background positioning area.
91 var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;
92 var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;
93 return [width_2, height_2];
94 }
95 // If the image has intrinsic proportions, it's stretched to the specified dimension.
96 // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.
97 if (hasIntrinsicProportion) {
98 var width_3 = 0;
99 var height_3 = 0;
100 if (length_percentage_1.isLengthPercentage(first)) {
101 width_3 = length_percentage_1.getAbsoluteValue(first, bounds.width);
102 }
103 else if (length_percentage_1.isLengthPercentage(second)) {
104 height_3 = length_percentage_1.getAbsoluteValue(second, bounds.height);
105 }
106 if (exports.isAuto(first)) {
107 width_3 = height_3 * intrinsicProportion;
108 }
109 else if (!second || exports.isAuto(second)) {
110 height_3 = width_3 / intrinsicProportion;
111 }
112 return [width_3, height_3];
113 }
114 // If the image has no intrinsic proportions, it's stretched to the specified dimension.
115 // The unspecified dimension is computed using the image's corresponding intrinsic dimension,
116 // if there is one. If there is no such intrinsic dimension,
117 // it becomes the corresponding dimension of the background positioning area.
118 var width = null;
119 var height = null;
120 if (length_percentage_1.isLengthPercentage(first)) {
121 width = length_percentage_1.getAbsoluteValue(first, bounds.width);
122 }
123 else if (second && length_percentage_1.isLengthPercentage(second)) {
124 height = length_percentage_1.getAbsoluteValue(second, bounds.height);
125 }
126 if (width !== null && (!second || exports.isAuto(second))) {
127 height =
128 hasIntrinsicWidth && hasIntrinsicHeight
129 ? (width / intrinsicWidth) * intrinsicHeight
130 : bounds.height;
131 }
132 if (height !== null && exports.isAuto(first)) {
133 width =
134 hasIntrinsicWidth && hasIntrinsicHeight
135 ? (height / intrinsicHeight) * intrinsicWidth
136 : bounds.width;
137 }
138 if (width !== null && height !== null) {
139 return [width, height];
140 }
141 throw new Error("Unable to calculate background-size for element");
142};
143exports.calculateBackgroundSize = calculateBackgroundSize;
144var getBackgroundValueForIndex = function (values, index) {
145 var value = values[index];
146 if (typeof value === 'undefined') {
147 return values[0];
148 }
149 return value;
150};
151exports.getBackgroundValueForIndex = getBackgroundValueForIndex;
152var calculateBackgroundRepeatPath = function (repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {
153 var x = _a[0], y = _a[1];
154 var width = _b[0], height = _b[1];
155 switch (repeat) {
156 case 2 /* REPEAT_X */:
157 return [
158 new vector_1.Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),
159 new vector_1.Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),
160 new vector_1.Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),
161 new vector_1.Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))
162 ];
163 case 3 /* REPEAT_Y */:
164 return [
165 new vector_1.Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),
166 new vector_1.Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),
167 new vector_1.Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),
168 new vector_1.Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))
169 ];
170 case 1 /* NO_REPEAT */:
171 return [
172 new vector_1.Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)),
173 new vector_1.Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)),
174 new vector_1.Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)),
175 new vector_1.Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y + height))
176 ];
177 default:
178 return [
179 new vector_1.Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),
180 new vector_1.Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),
181 new vector_1.Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),
182 new vector_1.Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))
183 ];
184 }
185};
186exports.calculateBackgroundRepeatPath = calculateBackgroundRepeatPath;
187//# sourceMappingURL=background.js.map
Note: See TracBrowser for help on using the repository browser.