survey-pdf 2.4.1 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/survey.pdf.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - SurveyJS PDF library v2.4.1
2
+ * surveyjs - SurveyJS PDF library v2.5.0
3
3
  * Copyright (c) 2015-2025 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: SEE LICENSE IN LICENSE
5
5
  */
@@ -1392,10 +1392,10 @@ function __spreadArray(to, from, pack) {
1392
1392
 
1393
1393
  /***/ }),
1394
1394
 
1395
- /***/ "./src/entries/pdf.ts":
1396
- /*!****************************!*\
1397
- !*** ./src/entries/pdf.ts ***!
1398
- \****************************/
1395
+ /***/ "./src/entries/pdf-base.ts":
1396
+ /*!*********************************!*\
1397
+ !*** ./src/entries/pdf-base.ts ***!
1398
+ \*********************************/
1399
1399
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1400
1400
 
1401
1401
  "use strict";
@@ -1558,7 +1558,7 @@ __webpack_require__.r(__webpack_exports__);
1558
1558
 
1559
1559
 
1560
1560
 
1561
- (0,survey_core__WEBPACK_IMPORTED_MODULE_50__.checkLibraryVersion)("".concat("2.4.1"), 'survey-pdf');
1561
+ (0,survey_core__WEBPACK_IMPORTED_MODULE_50__.checkLibraryVersion)("".concat("2.5.0"), 'survey-pdf');
1562
1562
 
1563
1563
 
1564
1564
  /***/ }),
@@ -2763,7 +2763,7 @@ var FlatImagePicker = /** @class */ (function (_super) {
2763
2763
  switch (_a.label) {
2764
2764
  case 0:
2765
2765
  pageAvailableWidth = _helper_survey__WEBPACK_IMPORTED_MODULE_7__.SurveyHelper.getPageAvailableWidth(this.controller);
2766
- return [4 /*yield*/, _helper_survey__WEBPACK_IMPORTED_MODULE_7__.SurveyHelper.createImageFlat(point, this.question, this.controller, { link: item.imageLink, width: pageAvailableWidth, height: pageAvailableWidth / _helper_survey__WEBPACK_IMPORTED_MODULE_7__.SurveyHelper.IMAGEPICKER_RATIO })];
2766
+ return [4 /*yield*/, _helper_survey__WEBPACK_IMPORTED_MODULE_7__.SurveyHelper.createImageFlat(point, this.question, this.controller, { link: item.imageLink, width: pageAvailableWidth, height: pageAvailableWidth / _helper_survey__WEBPACK_IMPORTED_MODULE_7__.SurveyHelper.IMAGEPICKER_RATIO, objectFit: this.question.imageFit })];
2767
2767
  case 1:
2768
2768
  imageFlat = _a.sent();
2769
2769
  compositeFlat = new _pdf_render_pdf_composite__WEBPACK_IMPORTED_MODULE_6__.CompositeBrick(imageFlat);
@@ -5140,7 +5140,7 @@ __webpack_require__.r(__webpack_exports__);
5140
5140
  /* harmony import */ var _pdf_render_pdf_rowline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../pdf_render/pdf_rowline */ "./src/pdf_render/pdf_rowline.ts");
5141
5141
  /* harmony import */ var _helper_survey__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../helper_survey */ "./src/helper_survey.ts");
5142
5142
  /* harmony import */ var _event_handler_adorners__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../event_handler/adorners */ "./src/event_handler/adorners.ts");
5143
- /* harmony import */ var _entries_pdf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../entries/pdf */ "./src/entries/pdf.ts");
5143
+ /* harmony import */ var _entries_pdf_base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../entries/pdf-base */ "./src/entries/pdf-base.ts");
5144
5144
 
5145
5145
 
5146
5146
 
@@ -5169,7 +5169,7 @@ var FlatSurvey = /** @class */ (function () {
5169
5169
  case 1:
5170
5170
  _b.apply(_a, _c.concat([_d.sent()]));
5171
5171
  controller.popMargins();
5172
- adornersOptions = new _event_handler_adorners__WEBPACK_IMPORTED_MODULE_5__.AdornersPanelOptions(point, panelFlats, panel, controller, _entries_pdf__WEBPACK_IMPORTED_MODULE_6__.FlatRepository.getInstance(), _entries_pdf__WEBPACK_IMPORTED_MODULE_6__);
5172
+ adornersOptions = new _event_handler_adorners__WEBPACK_IMPORTED_MODULE_5__.AdornersPanelOptions(point, panelFlats, panel, controller, _entries_pdf_base__WEBPACK_IMPORTED_MODULE_6__.FlatRepository.getInstance(), _entries_pdf_base__WEBPACK_IMPORTED_MODULE_6__);
5173
5173
  return [4 /*yield*/, survey.onRenderPanel.fire(survey, adornersOptions)];
5174
5174
  case 2:
5175
5175
  _d.sent();
@@ -5440,7 +5440,7 @@ var FlatSurvey = /** @class */ (function () {
5440
5440
  return [4 /*yield*/, this.generateFlatsPagePanel(survey, controller, survey.visiblePages[i], point)];
5441
5441
  case 13:
5442
5442
  _b.apply(_a, _c.concat([_e.sent()]));
5443
- adornersOptions = new _event_handler_adorners__WEBPACK_IMPORTED_MODULE_5__.AdornersPageOptions(point, pageFlats, survey.visiblePages[i], controller, _entries_pdf__WEBPACK_IMPORTED_MODULE_6__.FlatRepository.getInstance(), _entries_pdf__WEBPACK_IMPORTED_MODULE_6__);
5443
+ adornersOptions = new _event_handler_adorners__WEBPACK_IMPORTED_MODULE_5__.AdornersPageOptions(point, pageFlats, survey.visiblePages[i], controller, _entries_pdf_base__WEBPACK_IMPORTED_MODULE_6__.FlatRepository.getInstance(), _entries_pdf_base__WEBPACK_IMPORTED_MODULE_6__);
5444
5444
  return [4 /*yield*/, survey.onRenderPage.fire(survey, adornersOptions)];
5445
5445
  case 14:
5446
5446
  _e.sent();
@@ -5550,7 +5550,7 @@ __webpack_require__.r(__webpack_exports__);
5550
5550
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./src/entries/helpers.ts");
5551
5551
  /* harmony import */ var survey_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! survey-core */ "survey-core");
5552
5552
  /* harmony import */ var survey_core__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(survey_core__WEBPACK_IMPORTED_MODULE_1__);
5553
- /* harmony import */ var _entries_pdf__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./entries/pdf */ "./src/entries/pdf.ts");
5553
+ /* harmony import */ var _entries_pdf_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./entries/pdf-base */ "./src/entries/pdf-base.ts");
5554
5554
  /* harmony import */ var _doc_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./doc_controller */ "./src/doc_controller.ts");
5555
5555
  /* harmony import */ var _flat_layout_flat_repository__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flat_layout/flat_repository */ "./src/flat_layout/flat_repository.ts");
5556
5556
  /* harmony import */ var _pdf_render_pdf_text__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pdf_render/pdf_text */ "./src/pdf_render/pdf_text.ts");
@@ -5565,6 +5565,8 @@ __webpack_require__.r(__webpack_exports__);
5565
5565
  /* harmony import */ var _pdf_render_pdf_composite__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./pdf_render/pdf_composite */ "./src/pdf_render/pdf_composite.ts");
5566
5566
  /* harmony import */ var _event_handler_adorners__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./event_handler/adorners */ "./src/event_handler/adorners.ts");
5567
5567
  /* harmony import */ var _pdf_render_pdf_textfield__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./pdf_render/pdf_textfield */ "./src/pdf_render/pdf_textfield.ts");
5568
+ /* harmony import */ var _utils_image__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./utils/image */ "./src/utils/image/index.ts");
5569
+
5568
5570
 
5569
5571
 
5570
5572
 
@@ -6066,109 +6068,28 @@ var SurveyHelper = /** @class */ (function () {
6066
6068
  enumerable: false,
6067
6069
  configurable: true
6068
6070
  });
6069
- SurveyHelper.getImageBase64 = function (imageLink) {
6071
+ SurveyHelper.createImageFlat = function (point, question, controller, options, applyImageFit) {
6070
6072
  return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function () {
6071
- var image;
6073
+ var imageUtils, imageInfo;
6072
6074
  return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__generator)(this, function (_a) {
6073
- image = new Image();
6074
- image.crossOrigin = 'anonymous';
6075
- return [2 /*return*/, new Promise(function (resolve) {
6076
- image.onload = function () {
6077
- var canvas = document.createElement('canvas');
6078
- var ctx = canvas.getContext('2d');
6079
- canvas.height = image.naturalHeight;
6080
- canvas.width = image.naturalWidth;
6081
- ctx.drawImage(image, 0, 0);
6082
- var dataUrl = canvas.toDataURL();
6083
- resolve(dataUrl);
6084
- };
6085
- image.onerror = function () {
6086
- resolve('');
6087
- };
6088
- image.src = imageLink;
6089
- })];
6090
- });
6091
- });
6092
- };
6093
- SurveyHelper.getImageLink = function (controller, imageOptions, applyImageFit) {
6094
- return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function () {
6095
- var ptToPx, url, _a, canvasHtml;
6096
- return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__generator)(this, function (_b) {
6097
- switch (_b.label) {
6075
+ switch (_a.label) {
6098
6076
  case 0:
6099
- ptToPx = 96.0 / 72.0;
6100
- if (!this.shouldConvertImageToPng) return [3 /*break*/, 2];
6101
- return [4 /*yield*/, SurveyHelper.getImageBase64(imageOptions.link)];
6077
+ imageUtils = (0,_utils_image__WEBPACK_IMPORTED_MODULE_17__.getImageUtils)();
6078
+ return [4 /*yield*/, imageUtils.getImageInfo(options.link)];
6102
6079
  case 1:
6103
- _a = _b.sent();
6104
- return [3 /*break*/, 3];
6080
+ imageInfo = _a.sent();
6081
+ if (!(applyImageFit !== null && applyImageFit !== void 0 ? applyImageFit : controller.applyImageFit)) return [3 /*break*/, 3];
6082
+ return [4 /*yield*/, imageUtils.applyImageFit(imageInfo, options.objectFit || 'fill', options.width, options.height)];
6105
6083
  case 2:
6106
- _a = imageOptions.link;
6107
- _b.label = 3;
6108
- case 3:
6109
- url = _a;
6110
- if (!(typeof XMLSerializer === 'function' && applyImageFit)) return [3 /*break*/, 5];
6111
- canvasHtml = "<div style='overflow: hidden; width: ".concat(imageOptions.width * ptToPx, "px; height: ").concat(imageOptions.height * ptToPx, "px;'>\n <img src='").concat(url, "' style='object-fit: ").concat(imageOptions.objectFit, "; width: 100%; height: 100%;'/>\n </div>");
6112
- return [4 /*yield*/, SurveyHelper.htmlToImage(canvasHtml, imageOptions.width, controller)];
6113
- case 4:
6114
- url = (_b.sent()).url;
6115
- _b.label = 5;
6116
- case 5: return [2 /*return*/, url];
6117
- }
6118
- });
6119
- });
6120
- };
6121
- SurveyHelper.createImageFlat = function (point, question, controller, imageOptions, applyImageFit) {
6122
- return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function () {
6123
- var newWidth, html, _a;
6124
- return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__generator)(this, function (_b) {
6125
- switch (_b.label) {
6126
- case 0:
6127
- if (!SurveyHelper.inBrowser) return [3 /*break*/, 2];
6128
- imageOptions.objectFit = !!question && !!question.imageFit ? question.imageFit : (imageOptions.objectFit || 'contain');
6129
- if (applyImageFit !== null && applyImageFit !== void 0 ? applyImageFit : controller.applyImageFit) {
6130
- if (imageOptions.width > controller.paperWidth - controller.margins.left - controller.margins.right) {
6131
- newWidth = controller.paperWidth - controller.margins.left - controller.margins.right;
6132
- imageOptions.height *= newWidth / imageOptions.width;
6133
- imageOptions.width = newWidth;
6134
- }
6135
- }
6136
- _a = "<img src='".concat;
6137
- return [4 /*yield*/, SurveyHelper.getImageLink(controller, imageOptions, applyImageFit !== null && applyImageFit !== void 0 ? applyImageFit : controller.applyImageFit)];
6138
- case 1:
6139
- html = _a.apply("<img src='", [_b.sent(), "' width='"]).concat(imageOptions.width, "' height='").concat(imageOptions.height, "'/>");
6140
- return [2 /*return*/, new _pdf_render_pdf_html__WEBPACK_IMPORTED_MODULE_10__.HTMLBrick(question, controller, this.createRect(point, imageOptions.width, imageOptions.height), html, true)];
6141
- case 2: return [2 /*return*/, new _pdf_render_pdf_image__WEBPACK_IMPORTED_MODULE_11__.ImageBrick(question, controller, imageOptions.link, point, imageOptions.width, imageOptions.height)];
6084
+ imageInfo = _a.sent();
6085
+ _a.label = 3;
6086
+ case 3: return [2 /*return*/, new _pdf_render_pdf_image__WEBPACK_IMPORTED_MODULE_11__.ImageBrick(question, controller, imageInfo.imageData, point, options.width, options.height, imageInfo.width, imageInfo.height, imageInfo.imageId)];
6142
6087
  }
6143
6088
  });
6144
6089
  });
6145
6090
  };
6146
6091
  SurveyHelper.canPreviewImage = function (question, item, url) {
6147
6092
  return question.canPreviewImage(item);
6148
- // && await this.getImageSize(url) !== null;
6149
- };
6150
- SurveyHelper.getImageSize = function (url) {
6151
- return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function () {
6152
- return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__generator)(this, function (_a) {
6153
- switch (_a.label) {
6154
- case 0:
6155
- if (!!SurveyHelper.inBrowser) return [3 /*break*/, 2];
6156
- return [4 /*yield*/, new Promise(function (resolve) {
6157
- return resolve({ width: undefined, height: undefined });
6158
- })];
6159
- case 1: return [2 /*return*/, _a.sent()];
6160
- case 2: return [4 /*yield*/, new Promise(function (resolve) {
6161
- var image = new Image();
6162
- image.src = url;
6163
- image.onload = function () {
6164
- return resolve({ width: image.width, height: image.height });
6165
- };
6166
- image.onerror = function () { return resolve(null); };
6167
- })];
6168
- case 3: return [2 /*return*/, _a.sent()];
6169
- }
6170
- });
6171
- });
6172
6093
  };
6173
6094
  SurveyHelper.createRowlineFlat = function (point, controller, width, color) {
6174
6095
  var xRight = typeof width === 'undefined' ?
@@ -6369,7 +6290,7 @@ var SurveyHelper = /** @class */ (function () {
6369
6290
  return [4 /*yield*/, flatQuestion.generateFlats(point)];
6370
6291
  case 1:
6371
6292
  questionFlats = _a.sent();
6372
- adornersOptions = new _event_handler_adorners__WEBPACK_IMPORTED_MODULE_15__.AdornersOptions(point, questionFlats, question, controller, _flat_layout_flat_repository__WEBPACK_IMPORTED_MODULE_4__.FlatRepository.getInstance(), _entries_pdf__WEBPACK_IMPORTED_MODULE_2__);
6293
+ adornersOptions = new _event_handler_adorners__WEBPACK_IMPORTED_MODULE_15__.AdornersOptions(point, questionFlats, question, controller, _flat_layout_flat_repository__WEBPACK_IMPORTED_MODULE_4__.FlatRepository.getInstance(), _entries_pdf_base__WEBPACK_IMPORTED_MODULE_2__);
6373
6294
  if (question.customWidget && question.customWidget.isFit(question) &&
6374
6295
  question.customWidget.pdfRender) {
6375
6296
  survey.onRenderQuestion.unshift(question.customWidget.pdfRender);
@@ -6429,7 +6350,7 @@ var SurveyHelper = /** @class */ (function () {
6429
6350
  defaultWidthPt = defaultImageWidth && SurveyHelper.parseWidth(defaultImageWidth, SurveyHelper.getPageAvailableWidth(controller), 1, 'px');
6430
6351
  defaultHeightPt = defaultImageHeight && SurveyHelper.parseWidth(defaultImageHeight, SurveyHelper.getPageAvailableWidth(controller), 1, 'px');
6431
6352
  if (!(SurveyHelper.isSizeEmpty(imageWidth) || SurveyHelper.isHeightEmpty(imageHeight))) return [3 /*break*/, 2];
6432
- return [4 /*yield*/, SurveyHelper.getImageSize(imageLink)];
6353
+ return [4 /*yield*/, (0,_utils_image__WEBPACK_IMPORTED_MODULE_17__.getImageUtils)().getImageInfo(imageLink)];
6433
6354
  case 1:
6434
6355
  imageSize = _a.sent();
6435
6356
  if (!SurveyHelper.isSizeEmpty(imageWidth)) {
@@ -6452,6 +6373,9 @@ var SurveyHelper = /** @class */ (function () {
6452
6373
  });
6453
6374
  });
6454
6375
  };
6376
+ SurveyHelper.clear = function () {
6377
+ (0,_utils_image__WEBPACK_IMPORTED_MODULE_17__.getImageUtils)().clear();
6378
+ };
6455
6379
  SurveyHelper.EPSILON = 2.2204460492503130808472633361816e-15;
6456
6380
  SurveyHelper.TITLE_SURVEY_FONT_SIZE_SCALE = 1.7;
6457
6381
  SurveyHelper.TITLE_PAGE_FONT_SIZE_SCALE = 1.3;
@@ -6485,7 +6409,6 @@ var SurveyHelper = /** @class */ (function () {
6485
6409
  SurveyHelper.STANDARD_FONT = 'helvetica';
6486
6410
  SurveyHelper.CUSTOM_FONT_ENCODING = 'Identity-H';
6487
6411
  SurveyHelper.inBrowser = typeof Image === 'function';
6488
- SurveyHelper.shouldConvertImageToPng = true;
6489
6412
  return SurveyHelper;
6490
6413
  }());
6491
6414
 
@@ -11618,32 +11541,41 @@ __webpack_require__.r(__webpack_exports__);
11618
11541
 
11619
11542
  var ImageBrick = /** @class */ (function (_super) {
11620
11543
  (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(ImageBrick, _super);
11621
- function ImageBrick(question, controller, image, point, originalWidth, originalHeight) {
11544
+ function ImageBrick(question, controller, image, point, targetWidth, targetHeight, imageWidth, imageHeight, imageId) {
11622
11545
  var _this = _super.call(this, question, controller, {
11623
11546
  xLeft: point.xLeft,
11624
- xRight: point.xLeft + (originalWidth || 0),
11547
+ xRight: point.xLeft + (targetWidth || 0),
11625
11548
  yTop: point.yTop,
11626
- yBot: point.yTop + (originalHeight || 0)
11549
+ yBot: point.yTop + (targetHeight || 0)
11627
11550
  }) || this;
11628
11551
  _this.image = image;
11629
- _this.originalWidth = originalWidth;
11630
- _this.originalHeight = originalHeight;
11631
- _this.isPageBreak = _this.originalHeight === undefined;
11552
+ _this.targetWidth = targetWidth;
11553
+ _this.targetHeight = targetHeight;
11554
+ _this.imageWidth = imageWidth;
11555
+ _this.imageHeight = imageHeight;
11556
+ _this.imageId = imageId;
11557
+ _this.imageWidth = _this.imageWidth || _this.targetWidth;
11558
+ _this.imageHeight = _this.imageHeight || _this.targetHeight;
11559
+ _this.isPageBreak = _this.targetHeight === undefined;
11632
11560
  return _this;
11633
11561
  }
11634
11562
  ImageBrick.prototype.renderInteractive = function () {
11635
11563
  return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function () {
11564
+ var xLeft, yTop;
11636
11565
  var _this = this;
11637
11566
  return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__generator)(this, function (_a) {
11638
11567
  switch (_a.label) {
11639
- case 0: return [4 /*yield*/, new Promise(function (resolve) {
11640
- try {
11641
- _this.controller.doc.addImage(_this.image, 'PNG', _this.xLeft, _this.yTop, _this.originalWidth, _this.originalHeight);
11642
- }
11643
- finally {
11644
- resolve();
11645
- }
11646
- })];
11568
+ case 0:
11569
+ xLeft = this.targetWidth > this.imageWidth ? this.xLeft + (this.targetWidth - this.imageWidth) / 2 : this.xLeft;
11570
+ yTop = this.targetHeight > this.imageHeight ? this.yTop + (this.targetHeight - this.imageHeight) / 2 : this.yTop;
11571
+ return [4 /*yield*/, new Promise(function (resolve) {
11572
+ try {
11573
+ _this.controller.doc.addImage(_this.image, 'PNG', xLeft, yTop, Math.min(_this.imageWidth, _this.targetWidth), Math.min(_this.imageHeight, _this.targetHeight), _this.imageId, 'MEDIUM');
11574
+ }
11575
+ finally {
11576
+ resolve();
11577
+ }
11578
+ })];
11647
11579
  case 1:
11648
11580
  _a.sent();
11649
11581
  return [2 /*return*/];
@@ -12598,7 +12530,9 @@ var SurveyPDF = /** @class */ (function (_super) {
12598
12530
  case 7:
12599
12531
  i++;
12600
12532
  return [3 /*break*/, 3];
12601
- case 8: return [2 /*return*/];
12533
+ case 8:
12534
+ _helper_survey__WEBPACK_IMPORTED_MODULE_6__.SurveyHelper.clear();
12535
+ return [2 /*return*/];
12602
12536
  }
12603
12537
  });
12604
12538
  });
@@ -12668,6 +12602,211 @@ var SurveyPDF = /** @class */ (function (_super) {
12668
12602
 
12669
12603
 
12670
12604
 
12605
+ /***/ }),
12606
+
12607
+ /***/ "./src/utils/image/browser.ts":
12608
+ /*!************************************!*\
12609
+ !*** ./src/utils/image/browser.ts ***!
12610
+ \************************************/
12611
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
12612
+
12613
+ "use strict";
12614
+ __webpack_require__.r(__webpack_exports__);
12615
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12616
+ /* harmony export */ ImageUtils: () => (/* binding */ ImageUtils)
12617
+ /* harmony export */ });
12618
+ /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./src/entries/helpers.ts");
12619
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! . */ "./src/utils/image/index.ts");
12620
+
12621
+
12622
+ var ImageUtils = /** @class */ (function (_super) {
12623
+ (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(ImageUtils, _super);
12624
+ function ImageUtils() {
12625
+ return _super !== null && _super.apply(this, arguments) || this;
12626
+ }
12627
+ ImageUtils.prototype._getImageInfo = function (url) {
12628
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function () {
12629
+ var pxToPt, image, response;
12630
+ var _this = this;
12631
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__generator)(this, function (_a) {
12632
+ switch (_a.label) {
12633
+ case 0:
12634
+ pxToPt = 72.0 / 96.0;
12635
+ image = new Image();
12636
+ image.crossOrigin = 'anonymous';
12637
+ return [4 /*yield*/, new Promise(function (resolve, reject) {
12638
+ image.onload = function () {
12639
+ var canvas = document.createElement('canvas');
12640
+ var ctx = canvas.getContext('2d');
12641
+ canvas.height = image.naturalHeight;
12642
+ canvas.width = image.naturalWidth;
12643
+ ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(image, 0, 0);
12644
+ var dataUrl = canvas.toDataURL();
12645
+ resolve({ imageData: dataUrl, width: image.naturalWidth * pxToPt, height: image.naturalHeight * pxToPt, imageId: _this.getImageId() });
12646
+ };
12647
+ image.onerror = function () {
12648
+ reject();
12649
+ };
12650
+ image.src = url;
12651
+ })];
12652
+ case 1:
12653
+ response = _a.sent();
12654
+ return [2 /*return*/, response];
12655
+ }
12656
+ });
12657
+ });
12658
+ };
12659
+ ImageUtils.prototype.getCoverCanvasOptions = function (imageWidth, imageHeight, targetWidth, targetHeight) {
12660
+ var aspectRatio = imageWidth / imageHeight;
12661
+ var targetAspectRatio = targetWidth / targetHeight;
12662
+ var drawWidth, drawHeight;
12663
+ if (targetAspectRatio > aspectRatio) {
12664
+ drawWidth = targetWidth;
12665
+ drawHeight = targetWidth / aspectRatio;
12666
+ }
12667
+ else {
12668
+ drawHeight = targetHeight;
12669
+ drawWidth = targetHeight * aspectRatio;
12670
+ }
12671
+ return { canvasWidth: targetWidth, canvasHeight: targetHeight, imageX: (targetWidth - drawWidth) / 2, imageY: (targetHeight - drawHeight) / 2, imageWidth: drawWidth, imageHeight: drawHeight };
12672
+ };
12673
+ ImageUtils.prototype.applyImageFit = function (imageInfo, imageFit, targetWidth, targetHeight) {
12674
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function () {
12675
+ var image, canvasOptions, canvas, ctx, _a;
12676
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__generator)(this, function (_b) {
12677
+ switch (_b.label) {
12678
+ case 0:
12679
+ if (!(imageFit == 'cover')) return [3 /*break*/, 5];
12680
+ _b.label = 1;
12681
+ case 1:
12682
+ _b.trys.push([1, 3, , 4]);
12683
+ image = new Image();
12684
+ if (!imageInfo.width || !imageInfo.height || !imageInfo.imageData || !targetWidth || !targetHeight)
12685
+ return [2 /*return*/, imageInfo];
12686
+ image.src = imageInfo.imageData instanceof Uint8Array ? URL.createObjectURL(new Blob([imageInfo.imageData])) : imageInfo.imageData;
12687
+ return [4 /*yield*/, image.decode()];
12688
+ case 2:
12689
+ _b.sent();
12690
+ canvasOptions = this.getCoverCanvasOptions(imageInfo.width, imageInfo.height, targetWidth, targetHeight);
12691
+ canvas = document.createElement('canvas');
12692
+ ctx = canvas.getContext('2d');
12693
+ canvas.width = canvasOptions.canvasWidth;
12694
+ canvas.height = canvasOptions.canvasHeight;
12695
+ ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(image, canvasOptions.imageX, canvasOptions.imageY, canvasOptions.imageWidth, canvasOptions.imageHeight);
12696
+ return [2 /*return*/, { imageData: canvas.toDataURL(), width: targetWidth, height: targetHeight }];
12697
+ case 3:
12698
+ _a = _b.sent();
12699
+ return [2 /*return*/, imageInfo];
12700
+ case 4: return [3 /*break*/, 6];
12701
+ case 5: return [2 /*return*/, _super.prototype.applyImageFit.call(this, imageInfo, imageFit, targetWidth, targetHeight)];
12702
+ case 6: return [2 /*return*/];
12703
+ }
12704
+ });
12705
+ });
12706
+ };
12707
+ return ImageUtils;
12708
+ }(___WEBPACK_IMPORTED_MODULE_1__.BaseImageUtils));
12709
+
12710
+
12711
+
12712
+ /***/ }),
12713
+
12714
+ /***/ "./src/utils/image/index.ts":
12715
+ /*!**********************************!*\
12716
+ !*** ./src/utils/image/index.ts ***!
12717
+ \**********************************/
12718
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
12719
+
12720
+ "use strict";
12721
+ __webpack_require__.r(__webpack_exports__);
12722
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12723
+ /* harmony export */ BaseImageUtils: () => (/* binding */ BaseImageUtils),
12724
+ /* harmony export */ getImageUtils: () => (/* binding */ getImageUtils),
12725
+ /* harmony export */ registerImageUtils: () => (/* binding */ registerImageUtils)
12726
+ /* harmony export */ });
12727
+ /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./src/entries/helpers.ts");
12728
+
12729
+ var BaseImageUtils = /** @class */ (function () {
12730
+ function BaseImageUtils() {
12731
+ this.hash = {};
12732
+ this.imageId = 1;
12733
+ }
12734
+ BaseImageUtils.prototype.getImageId = function () {
12735
+ return "image_".concat(this.imageId++);
12736
+ };
12737
+ BaseImageUtils.prototype._getImageInfo = function (url) {
12738
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function () {
12739
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__generator)(this, function (_a) {
12740
+ return [2 /*return*/, { imageData: url, width: 0, height: 0, imageId: this.getImageId() }];
12741
+ });
12742
+ });
12743
+ };
12744
+ BaseImageUtils.prototype.getImageInfo = function (url) {
12745
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function () {
12746
+ var _a, _b, _c;
12747
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__generator)(this, function (_d) {
12748
+ switch (_d.label) {
12749
+ case 0:
12750
+ if (!!this.hash[url]) return [3 /*break*/, 4];
12751
+ _d.label = 1;
12752
+ case 1:
12753
+ _d.trys.push([1, 3, , 4]);
12754
+ _a = this.hash;
12755
+ _b = url;
12756
+ return [4 /*yield*/, this._getImageInfo(url)];
12757
+ case 2:
12758
+ _a[_b] = _d.sent();
12759
+ return [3 /*break*/, 4];
12760
+ case 3:
12761
+ _c = _d.sent();
12762
+ this.hash[url] = this.emptyImage;
12763
+ return [3 /*break*/, 4];
12764
+ case 4: return [2 /*return*/, this.hash[url]];
12765
+ }
12766
+ });
12767
+ });
12768
+ };
12769
+ BaseImageUtils.prototype.applyImageFit = function (imageInfo, imageFit, targetWidth, targetHeight) {
12770
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function () {
12771
+ var scale;
12772
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__generator)(this, function (_a) {
12773
+ if (imageFit == 'fill') {
12774
+ return [2 /*return*/, { imageData: imageInfo.imageData, imageId: imageInfo.imageId, width: targetWidth, height: targetHeight }];
12775
+ }
12776
+ if ((imageFit == 'contain' || imageFit == 'cover') && !!imageInfo.width && !!imageInfo.height && !!targetWidth && !!targetWidth) {
12777
+ scale = Math.min(targetWidth / imageInfo.width, targetHeight / imageInfo.height);
12778
+ return [2 /*return*/, { imageData: imageInfo.imageData, imageId: imageInfo.imageId, width: imageInfo.width * scale, height: imageInfo.height * scale }];
12779
+ }
12780
+ else {
12781
+ return [2 /*return*/, imageInfo];
12782
+ }
12783
+ return [2 /*return*/];
12784
+ });
12785
+ });
12786
+ };
12787
+ Object.defineProperty(BaseImageUtils.prototype, "emptyImage", {
12788
+ get: function () {
12789
+ return { imageData: '', width: 0, height: 0, imageId: 'image_0' };
12790
+ },
12791
+ enumerable: false,
12792
+ configurable: true
12793
+ });
12794
+ BaseImageUtils.prototype.clear = function () {
12795
+ this.hash = {};
12796
+ this.imageId = 1;
12797
+ };
12798
+ return BaseImageUtils;
12799
+ }());
12800
+
12801
+ var imageUtils = new BaseImageUtils();
12802
+ function getImageUtils() {
12803
+ return imageUtils;
12804
+ }
12805
+ function registerImageUtils(val) {
12806
+ imageUtils = val;
12807
+ }
12808
+
12809
+
12671
12810
  /***/ }),
12672
12811
 
12673
12812
  /***/ "jspdf":
@@ -12772,12 +12911,79 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_survey_core__;
12772
12911
  /******/ })();
12773
12912
  /******/
12774
12913
  /************************************************************************/
12775
- /******/
12776
- /******/ // startup
12777
- /******/ // Load entry module and return exports
12778
- /******/ // This entry module is referenced by other modules so it can't be inlined
12779
- /******/ var __webpack_exports__ = __webpack_require__("./src/entries/pdf.ts");
12780
- /******/
12914
+ var __webpack_exports__ = {};
12915
+ // This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
12916
+ (() => {
12917
+ "use strict";
12918
+ /*!****************************!*\
12919
+ !*** ./src/entries/pdf.ts ***!
12920
+ \****************************/
12921
+ __webpack_require__.r(__webpack_exports__);
12922
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12923
+ /* harmony export */ BooleanItemBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.BooleanItemBrick),
12924
+ /* harmony export */ CheckItemBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.CheckItemBrick),
12925
+ /* harmony export */ CheckboxItemBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.CheckboxItemBrick),
12926
+ /* harmony export */ CompositeBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.CompositeBrick),
12927
+ /* harmony export */ CustomBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.CustomBrick),
12928
+ /* harmony export */ DocController: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.DocController),
12929
+ /* harmony export */ DocOptions: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.DocOptions),
12930
+ /* harmony export */ DrawCanvas: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.DrawCanvas),
12931
+ /* harmony export */ DropdownBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.DropdownBrick),
12932
+ /* harmony export */ EmptyBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.EmptyBrick),
12933
+ /* harmony export */ EventHandler: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.EventHandler),
12934
+ /* harmony export */ FlatBoolean: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatBoolean),
12935
+ /* harmony export */ FlatCheckbox: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatCheckbox),
12936
+ /* harmony export */ FlatComment: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatComment),
12937
+ /* harmony export */ FlatCustomModel: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatCustomModel),
12938
+ /* harmony export */ FlatDropdown: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatDropdown),
12939
+ /* harmony export */ FlatExpression: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatExpression),
12940
+ /* harmony export */ FlatFile: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatFile),
12941
+ /* harmony export */ FlatHTML: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatHTML),
12942
+ /* harmony export */ FlatImage: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatImage),
12943
+ /* harmony export */ FlatImagePicker: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatImagePicker),
12944
+ /* harmony export */ FlatMatrix: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatMatrix),
12945
+ /* harmony export */ FlatMatrixDynamic: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatMatrixDynamic),
12946
+ /* harmony export */ FlatMatrixMultiple: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatMatrixMultiple),
12947
+ /* harmony export */ FlatMultipleText: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatMultipleText),
12948
+ /* harmony export */ FlatPanelDynamic: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatPanelDynamic),
12949
+ /* harmony export */ FlatQuestion: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatQuestion),
12950
+ /* harmony export */ FlatQuestionDefault: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatQuestionDefault),
12951
+ /* harmony export */ FlatRadiogroup: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatRadiogroup),
12952
+ /* harmony export */ FlatRanking: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatRanking),
12953
+ /* harmony export */ FlatRating: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatRating),
12954
+ /* harmony export */ FlatRepository: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatRepository),
12955
+ /* harmony export */ FlatSelectBase: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatSelectBase),
12956
+ /* harmony export */ FlatSignaturePad: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatSignaturePad),
12957
+ /* harmony export */ FlatSlider: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatSlider),
12958
+ /* harmony export */ FlatSurvey: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatSurvey),
12959
+ /* harmony export */ FlatTextbox: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.FlatTextbox),
12960
+ /* harmony export */ HTMLBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.HTMLBrick),
12961
+ /* harmony export */ HorizontalAlign: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.HorizontalAlign),
12962
+ /* harmony export */ ImageBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.ImageBrick),
12963
+ /* harmony export */ LinkBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.LinkBrick),
12964
+ /* harmony export */ PagePacker: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.PagePacker),
12965
+ /* harmony export */ PdfBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.PdfBrick),
12966
+ /* harmony export */ RadioItemBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.RadioItemBrick),
12967
+ /* harmony export */ RankingItemBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.RankingItemBrick),
12968
+ /* harmony export */ RowlineBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.RowlineBrick),
12969
+ /* harmony export */ SurveyHelper: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.SurveyHelper),
12970
+ /* harmony export */ SurveyPDF: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.SurveyPDF),
12971
+ /* harmony export */ TextBoldBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.TextBoldBrick),
12972
+ /* harmony export */ TextBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.TextBrick),
12973
+ /* harmony export */ TextFieldBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.TextFieldBrick),
12974
+ /* harmony export */ TitlePanelBrick: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.TitlePanelBrick),
12975
+ /* harmony export */ VerticalAlign: () => (/* reexport safe */ _pdf_base__WEBPACK_IMPORTED_MODULE_0__.VerticalAlign)
12976
+ /* harmony export */ });
12977
+ /* harmony import */ var _pdf_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pdf-base */ "./src/entries/pdf-base.ts");
12978
+ /* harmony import */ var _utils_image__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/image */ "./src/utils/image/index.ts");
12979
+ /* harmony import */ var _utils_image_browser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/image/browser */ "./src/utils/image/browser.ts");
12980
+
12981
+
12982
+
12983
+ (0,_utils_image__WEBPACK_IMPORTED_MODULE_1__.registerImageUtils)(new _utils_image_browser__WEBPACK_IMPORTED_MODULE_2__.ImageUtils());
12984
+
12985
+ })();
12986
+
12781
12987
  /******/ return __webpack_exports__;
12782
12988
  /******/ })()
12783
12989
  ;