zakeke-configurator-react 0.0.69 → 0.0.70

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.
@@ -115,7 +115,7 @@ export declare class ZakekeEnvironment {
115
115
  hasExplodedMode: () => boolean;
116
116
  setBackgroundColor: (color: string, alpha: number) => void;
117
117
  getCurrentSelection: () => PlatformAttributeSelection[];
118
- getScreenshot: (width?: number, height?: number, backgroundColor?: string | null) => Promise<string>;
118
+ getScreenshot: (width?: number, height?: number, backgroundColor?: string | null, padding?: number) => Promise<string>;
119
119
  private fireItemsChange;
120
120
  isAreaVisible(areaId: number): boolean;
121
121
  removeItem: (guid: string) => Promise<void>;
@@ -143,7 +143,7 @@ export declare class ZakekeEnvironment {
143
143
  findObjectByName(name: string): BABYLON.AbstractMesh | null | undefined;
144
144
  getPDF: () => Promise<string>;
145
145
  private rewriteShareUrl;
146
- getOnlineScreenshot: (width: number, height: number, backgroundColor?: string | undefined) => Promise<string>;
146
+ getOnlineScreenshot: (width: number, height: number, backgroundColor?: string | undefined, padding?: number) => Promise<string>;
147
147
  private buildModelViewerUrl;
148
148
  isSceneArEnabled: () => boolean;
149
149
  private getPregeneratedARUrl;
@@ -29,7 +29,7 @@ export interface ProviderValue {
29
29
  loadComposition: (id: string) => Promise<void>;
30
30
  addToCart: (additionalProperties: Record<string, any>) => Promise<void>;
31
31
  getPDF: () => Promise<string>;
32
- getOnlineScreenshot: (width: number, height: number, backgroundColor?: string) => Promise<string>;
32
+ getOnlineScreenshot: (width: number, height: number, backgroundColor?: string, padding?: number) => Promise<string>;
33
33
  setCamera: (id: string, onlyAngleOfView?: boolean, animate?: boolean) => void;
34
34
  setCameraByName: (name: string, onlyAngleOfView?: boolean, animate?: boolean) => void;
35
35
  setCameraZoomEnabled: (enabled: boolean) => void;
package/dist/index.js CHANGED
@@ -14508,7 +14508,8 @@ var SceneHelper = /** @class */ (function () {
14508
14508
  __webpack_require__.r(__webpack_exports__);
14509
14509
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScenePreviewData", function() { return ScenePreviewData; });
14510
14510
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScenesPreview", function() { return ScenesPreview; });
14511
- /* harmony import */ var _SceneHelper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SceneHelper */ "../../3D/src/Components/SceneHelper.ts");
14511
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../.. */ "../../3D/src/index.ts");
14512
+ /* harmony import */ var _SceneHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../SceneHelper */ "../../3D/src/Components/SceneHelper.ts");
14512
14513
  var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
14513
14514
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14514
14515
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -14546,6 +14547,7 @@ var __generator = (undefined && undefined.__generator) || function (thisArg, bod
14546
14547
  }
14547
14548
  };
14548
14549
 
14550
+
14549
14551
  var ScenePreviewData = /** @class */ (function () {
14550
14552
  function ScenePreviewData() {
14551
14553
  }
@@ -14590,7 +14592,7 @@ var ScenePreviewMaker = /** @class */ (function () {
14590
14592
  this.disposeHostingScene();
14591
14593
  this.disposeLocalEngine();
14592
14594
  };
14593
- ScenePreviewMaker.prototype.getLocalEngine = function () {
14595
+ ScenePreviewMaker.prototype.createLocalEngine = function () {
14594
14596
  var _a, _b;
14595
14597
  if (!this._localEngine) {
14596
14598
  var localCanvas = document.createElement('canvas');
@@ -14601,6 +14603,7 @@ var ScenePreviewMaker = /** @class */ (function () {
14601
14603
  this._localEngine.setSize(localCanvas.width, localCanvas.height);
14602
14604
  this._localEngine.displayLoadingUI = function () { return null; };
14603
14605
  this._localEngine.hideLoadingUI = function () { return null; };
14606
+ document.body.appendChild(localCanvas);
14604
14607
  }
14605
14608
  return this._localEngine;
14606
14609
  };
@@ -14618,16 +14621,16 @@ var ScenePreviewMaker = /** @class */ (function () {
14618
14621
  scene_1 = new BABYLON.Scene(this._localEngine);
14619
14622
  (_a = this._localEngine) === null || _a === void 0 ? void 0 : _a.runRenderLoop(function () { return scene_1.render(); });
14620
14623
  if (!scene_1) return [3 /*break*/, 2];
14621
- helper_1 = new _SceneHelper__WEBPACK_IMPORTED_MODULE_0__["SceneHelper"](scene_1);
14624
+ helper_1 = new _SceneHelper__WEBPACK_IMPORTED_MODULE_1__["SceneHelper"](scene_1);
14622
14625
  return [4 /*yield*/, new Promise(function (resolve) {
14623
14626
  BABYLON.SceneLoader.Append(rootUrl, "data:" + serializedScene, scene_1, function () { return __awaiter(_this, void 0, void 0, function () {
14624
- var arcCamera, _a;
14625
- var _b, _c;
14626
- return __generator(this, function (_d) {
14627
- switch (_d.label) {
14627
+ var arcCamera, _i, _a, meshId, ourMesh, _b;
14628
+ var _c, _d;
14629
+ return __generator(this, function (_e) {
14630
+ switch (_e.label) {
14628
14631
  case 0: return [4 /*yield*/, scene_1.whenReadyAsync()];
14629
14632
  case 1:
14630
- _d.sent();
14633
+ _e.sent();
14631
14634
  if (this._options.camera) {
14632
14635
  arcCamera = scene_1.activeCamera;
14633
14636
  arcCamera.alpha = this._options.camera.alpha;
@@ -14636,11 +14639,45 @@ var ScenePreviewMaker = /** @class */ (function () {
14636
14639
  helper_1.setupCamera();
14637
14640
  helper_1.setupLights();
14638
14641
  helper_1.adjustCamera(undefined, true, true, false);
14639
- scene_1.render();
14640
- _a = container;
14641
- return [4 /*yield*/, helper_1.takeContentScreenshotAsync((_b = this._options.width) !== null && _b !== void 0 ? _b : 1024, (_c = this._options.height) !== null && _c !== void 0 ? _c : 1024)];
14642
+ if (!(this._options.meshesWithCustomizationIds && this._options.zkDesign && this._options.zkModel && this._options.zkScene)) return [3 /*break*/, 7];
14643
+ _i = 0, _a = this._options.meshesWithCustomizationIds;
14644
+ _e.label = 2;
14642
14645
  case 2:
14643
- _a.previewFile = _d.sent();
14646
+ if (!(_i < _a.length)) return [3 /*break*/, 5];
14647
+ meshId = _a[_i];
14648
+ ourMesh = scene_1.getMeshByID(meshId);
14649
+ if (!ourMesh) return [3 /*break*/, 4];
14650
+ // Remove serialized clone mesh
14651
+ if (ourMesh.metadata.iscanvasMesh) {
14652
+ ourMesh.dispose();
14653
+ return [3 /*break*/, 4];
14654
+ }
14655
+ // Hide base mesh (TODO: Check where is made in normal sceneviewer)
14656
+ ourMesh.isVisible = false;
14657
+ return [4 /*yield*/, ___WEBPACK_IMPORTED_MODULE_0__["MeshDesignManager"].createMeshDesignManagerAsync(scene_1, this._options.zkScene, ourMesh, ourMesh.subMeshes[0], this._options.zkModel, this._options.zkDesign, true)];
14658
+ case 3:
14659
+ _e.sent();
14660
+ _e.label = 4;
14661
+ case 4:
14662
+ _i++;
14663
+ return [3 /*break*/, 2];
14664
+ case 5:
14665
+ // Sleep
14666
+ return [4 /*yield*/, new Promise(function (resolve) {
14667
+ setTimeout(function () {
14668
+ resolve();
14669
+ }, 1000);
14670
+ })];
14671
+ case 6:
14672
+ // Sleep
14673
+ _e.sent();
14674
+ scene_1.render();
14675
+ _e.label = 7;
14676
+ case 7:
14677
+ _b = container;
14678
+ return [4 /*yield*/, helper_1.takeContentScreenshotAsync((_c = this._options.width) !== null && _c !== void 0 ? _c : 1024, (_d = this._options.height) !== null && _d !== void 0 ? _d : 1024)];
14679
+ case 8:
14680
+ _b.previewFile = _e.sent();
14644
14681
  resolve();
14645
14682
  return [2 /*return*/];
14646
14683
  }
@@ -14661,7 +14698,7 @@ var ScenePreviewMaker = /** @class */ (function () {
14661
14698
  return __generator(this, function (_a) {
14662
14699
  switch (_a.label) {
14663
14700
  case 0:
14664
- this.getLocalEngine();
14701
+ this.createLocalEngine();
14665
14702
  container = new ScenePreviewData();
14666
14703
  return [4 /*yield*/, this.createScenePreviewFileAsync(this._rootUrl, this._scene, container)];
14667
14704
  case 1:
@@ -16320,7 +16357,7 @@ var Utils = /** @class */ (function () {
16320
16357
  return null;
16321
16358
  };
16322
16359
  /** Draw an image from data uri on a width * height canvas, create canvas inside method and return the data uri of canvas */
16323
- Utils.resizeImageFromDataUri = function (dataUrl, width, height) {
16360
+ Utils.resizeImageFromDataUri = function (dataUrl, width, height, padding) {
16324
16361
  return new Promise(function (resolve) {
16325
16362
  var img = new Image();
16326
16363
  img.crossOrigin = "anonymous";
@@ -16335,7 +16372,7 @@ var Utils = /** @class */ (function () {
16335
16372
  var ratio = Math.min(width / img.width, height / img.height);
16336
16373
  var newImageWidth = img.width * ratio;
16337
16374
  var newImageHeight = img.height * ratio;
16338
- context.drawImage(img, 0, 0, img.width, img.height, (width - newImageWidth) / 2, (height - newImageHeight) / 2, newImageWidth, newImageHeight);
16375
+ context.drawImage(img, 0, 0, img.width, img.height, (width - newImageWidth + padding) / 2, (height - newImageHeight + padding) / 2, newImageWidth - padding, newImageHeight - padding);
16339
16376
  var dataUrl_1 = canvas.toDataURL();
16340
16377
  resolve(dataUrl_1);
16341
16378
  }
@@ -26073,13 +26110,14 @@ var SceneViewer = /** @class */ (function () {
26073
26110
  });
26074
26111
  });
26075
26112
  };
26076
- SceneViewer.prototype.getSceneContentScreenshotAsync = function (width, height) {
26113
+ SceneViewer.prototype.getSceneContentScreenshotAsync = function (width, height, padding, zkDesign) {
26114
+ if (padding === void 0) { padding = 0; }
26077
26115
  return __awaiter(this, void 0, void 0, function () {
26078
- var data, image;
26116
+ var canvasMeshesOriginalMeshesIds, data, image;
26079
26117
  return __generator(this, function (_a) {
26080
26118
  switch (_a.label) {
26081
26119
  case 0:
26082
- if (!this._sceneHelper || !this.scene)
26120
+ if (!this._sceneHelper || !this.scene || !this.zkModel || !this.zkScene)
26083
26121
  return [2 /*return*/, null];
26084
26122
  this.preSceneContentScreenshot();
26085
26123
  if (this._environmentManager) {
@@ -26087,13 +26125,18 @@ var SceneViewer = /** @class */ (function () {
26087
26125
  this._environmentManager = null;
26088
26126
  }
26089
26127
  this.setRenderingNeeded();
26128
+ canvasMeshesOriginalMeshesIds = this.scene.meshes.filter(function (x) { var _a; return (_a = x.metadata) === null || _a === void 0 ? void 0 : _a.iscanvasMesh; }).map(function (x) { return x.metadata.originalMeshID; });
26090
26129
  return [4 /*yield*/, _Components_ScenePreview_ScenePreview__WEBPACK_IMPORTED_MODULE_13__["ScenesPreview"].getPreviewsAsync(this.scene, this._zkScene.get("rootUrl"), {
26091
26130
  width: 1024,
26092
26131
  height: 1024,
26093
26132
  camera: {
26094
26133
  alpha: this.scene.activeCamera.alpha,
26095
26134
  beta: this.scene.activeCamera.beta,
26096
- }
26135
+ },
26136
+ zkScene: this._zkScene,
26137
+ zkModel: this._zkModel,
26138
+ zkDesign: zkDesign,
26139
+ meshesWithCustomizationIds: canvasMeshesOriginalMeshesIds,
26097
26140
  })];
26098
26141
  case 1:
26099
26142
  data = _a.sent();
@@ -26102,7 +26145,7 @@ var SceneViewer = /** @class */ (function () {
26102
26145
  image = _a.sent();
26103
26146
  if (!image)
26104
26147
  throw new Error('Failed cropping image.');
26105
- return [4 /*yield*/, _Helpers_utils__WEBPACK_IMPORTED_MODULE_7__["Utils"].resizeImageFromDataUri(image, width, height)];
26148
+ return [4 /*yield*/, _Helpers_utils__WEBPACK_IMPORTED_MODULE_7__["Utils"].resizeImageFromDataUri(image, width, height, padding)];
26106
26149
  case 3:
26107
26150
  // Place on a fixed size canvas
26108
26151
  image = _a.sent();
@@ -42496,15 +42539,16 @@ var ZakekeEnvironment = /** @class */ (function () {
42496
42539
  this.getCurrentSelection = function () {
42497
42540
  return lodash__WEBPACK_IMPORTED_MODULE_0___default.a.cloneDeep(_this.platformAttributesSelection);
42498
42541
  };
42499
- this.getScreenshot = function (width, height, backgroundColor) {
42542
+ this.getScreenshot = function (width, height, backgroundColor, padding) {
42500
42543
  if (width === void 0) { width = 1024; }
42501
42544
  if (height === void 0) { height = 1024; }
42502
42545
  if (backgroundColor === void 0) { backgroundColor = null; }
42546
+ if (padding === void 0) { padding = 0; }
42503
42547
  return __awaiter(_this, void 0, void 0, function () {
42504
42548
  var url;
42505
42549
  return __generator(this, function (_a) {
42506
42550
  switch (_a.label) {
42507
- case 0: return [4 /*yield*/, this.viewer.getSceneContentScreenshotAsync(width, height)];
42551
+ case 0: return [4 /*yield*/, this.viewer.getSceneContentScreenshotAsync(width, height, padding, this.zkCurrentTemplate)];
42508
42552
  case 1:
42509
42553
  url = _a.sent();
42510
42554
  if (!url)
@@ -42530,7 +42574,9 @@ var ZakekeEnvironment = /** @class */ (function () {
42530
42574
  case 2:
42531
42575
  _a.sent();
42532
42576
  _a.label = 3;
42533
- case 3: return [2 /*return*/, url];
42577
+ case 3:
42578
+ console.log({ url: url });
42579
+ return [2 /*return*/, url];
42534
42580
  }
42535
42581
  });
42536
42582
  });
@@ -42811,21 +42857,24 @@ var ZakekeEnvironment = /** @class */ (function () {
42811
42857
  }
42812
42858
  return url;
42813
42859
  };
42814
- this.getOnlineScreenshot = function (width, height, backgroundColor) { return __awaiter(_this, void 0, void 0, function () {
42815
- var preview, url;
42816
- return __generator(this, function (_a) {
42817
- switch (_a.label) {
42818
- case 0: return [4 /*yield*/, this.getScreenshot(width, height, backgroundColor)];
42819
- case 1:
42820
- preview = _a.sent();
42821
- return [4 /*yield*/, _api__WEBPACK_IMPORTED_MODULE_7__["axiosApi"].post(Zakeke.config.baseApiUrl + "designs/save-share-preview", { preview: preview })];
42822
- case 2:
42823
- url = (_a.sent()).data.url;
42824
- url = this.rewriteShareUrl(url);
42825
- return [2 /*return*/, url];
42826
- }
42860
+ this.getOnlineScreenshot = function (width, height, backgroundColor, padding) {
42861
+ if (padding === void 0) { padding = 30; }
42862
+ return __awaiter(_this, void 0, void 0, function () {
42863
+ var preview, url;
42864
+ return __generator(this, function (_a) {
42865
+ switch (_a.label) {
42866
+ case 0: return [4 /*yield*/, this.getScreenshot(width, height, backgroundColor, padding)];
42867
+ case 1:
42868
+ preview = _a.sent();
42869
+ return [4 /*yield*/, _api__WEBPACK_IMPORTED_MODULE_7__["axiosApi"].post(Zakeke.config.baseApiUrl + "designs/save-share-preview", { preview: preview })];
42870
+ case 2:
42871
+ url = (_a.sent()).data.url;
42872
+ url = this.rewriteShareUrl(url);
42873
+ return [2 /*return*/, url];
42874
+ }
42875
+ });
42827
42876
  });
42828
- }); };
42877
+ };
42829
42878
  // AR - Augmented Reality
42830
42879
  this.buildModelViewerUrl = function (fileInfos) {
42831
42880
  var url = Zakeke.config.baseUrl + "ModelViewer";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zakeke-configurator-react",
3
- "version": "0.0.69",
3
+ "version": "0.0.70",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/declarations/composer/Module/src/index.d.ts",