blixify-ui-web 0.4.207 → 0.4.209

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.
Files changed (30) hide show
  1. package/lib/components/action/button/index.d.ts +1 -0
  2. package/lib/components/action/button/index.d.ts.map +1 -1
  3. package/lib/components/action/button/index.js +18 -2
  4. package/lib/components/action/button/index.js.map +1 -1
  5. package/lib/components/action/textButton/index.d.ts +1 -0
  6. package/lib/components/action/textButton/index.d.ts.map +1 -1
  7. package/lib/components/action/textButton/index.js +18 -2
  8. package/lib/components/action/textButton/index.js.map +1 -1
  9. package/lib/components/data/dataTemplate/dataStateModel.d.ts +18 -0
  10. package/lib/components/data/dataTemplate/dataStateModel.d.ts.map +1 -1
  11. package/lib/components/data/dataTemplate/dataStateModel.js.map +1 -1
  12. package/lib/components/data/dataTemplate/index.d.ts.map +1 -1
  13. package/lib/components/data/dataTemplate/index.js +447 -115
  14. package/lib/components/data/dataTemplate/index.js.map +1 -1
  15. package/lib/components/data/dataTemplate/model.d.ts +2 -0
  16. package/lib/components/data/dataTemplate/model.d.ts.map +1 -1
  17. package/lib/components/data/listModule.d.ts.map +1 -1
  18. package/lib/components/data/listModule.js +14 -2
  19. package/lib/components/data/listModule.js.map +1 -1
  20. package/lib/components/data/updateModule.d.ts.map +1 -1
  21. package/lib/components/data/updateModule.js +249 -11
  22. package/lib/components/data/updateModule.js.map +1 -1
  23. package/lib/components/data/utils.d.ts.map +1 -1
  24. package/lib/components/data/utils.js +3 -0
  25. package/lib/components/data/utils.js.map +1 -1
  26. package/lib/components/input/canvas/index.d.ts +19 -2
  27. package/lib/components/input/canvas/index.d.ts.map +1 -1
  28. package/lib/components/input/canvas/index.js +258 -61
  29. package/lib/components/input/canvas/index.js.map +1 -1
  30. package/package.json +1 -1
@@ -272,55 +272,56 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
272
272
  var _85 = (0, react_1.useState)(((_f = props.devSettings.currentUser) === null || _f === void 0 ? void 0 : _f.userEmail) || ""), exportCSVEmail = _85[0], setExportCSVEmail = _85[1];
273
273
  var _86 = (0, react_1.useState)(((_h = (_g = props.organise) === null || _g === void 0 ? void 0 : _g.exportSettings) === null || _h === void 0 ? void 0 : _h.defaultExportPDFName) || ""), exportPDFTitle = _86[0], setExportPDFTitle = _86[1];
274
274
  var _87 = (0, react_1.useState)(false), exportPDFLoading = _87[0], setExportPDFLoading = _87[1];
275
- var _88 = (0, react_1.useState)((_l = (_k = (_j = props.organise) === null || _j === void 0 ? void 0 : _j.exportSettings) === null || _k === void 0 ? void 0 : _k.sumColumnId) !== null && _l !== void 0 ? _l : []), exportSumAttributeIds = _88[0], setExportSumAttributeIds = _88[1];
276
- var _89 = (0, react_1.useState)([]), importTableData = _89[0], setImportTableData = _89[1];
277
- var _90 = (0, react_1.useState)([]), queryList = _90[0], setQueryList = _90[1];
278
- var _91 = (0, react_1.useState)(undefined), allQueryList = _91[0], setAllQueryList = _91[1];
279
- var _92 = (0, react_1.useState)(-1), queryIndex = _92[0], setQueryIndex = _92[1];
280
- var _93 = (0, react_1.useState)((_m = props.organise) === null || _m === void 0 ? void 0 : _m.groupBy), groupId = _93[0], setGroupId = _93[1];
281
- var _94 = (0, react_1.useState)(""), readTabSection = _94[0], setReadTabSection = _94[1];
282
- var _95 = (0, react_1.useState)(false), readFloatingNav = _95[0], setReadFloatingNav = _95[1];
275
+ var _88 = (0, react_1.useState)(false), exportReadPDFLoading = _88[0], setExportReadPDFLoading = _88[1];
276
+ var _89 = (0, react_1.useState)((_l = (_k = (_j = props.organise) === null || _j === void 0 ? void 0 : _j.exportSettings) === null || _k === void 0 ? void 0 : _k.sumColumnId) !== null && _l !== void 0 ? _l : []), exportSumAttributeIds = _89[0], setExportSumAttributeIds = _89[1];
277
+ var _90 = (0, react_1.useState)([]), importTableData = _90[0], setImportTableData = _90[1];
278
+ var _91 = (0, react_1.useState)([]), queryList = _91[0], setQueryList = _91[1];
279
+ var _92 = (0, react_1.useState)(undefined), allQueryList = _92[0], setAllQueryList = _92[1];
280
+ var _93 = (0, react_1.useState)(-1), queryIndex = _93[0], setQueryIndex = _93[1];
281
+ var _94 = (0, react_1.useState)((_m = props.organise) === null || _m === void 0 ? void 0 : _m.groupBy), groupId = _94[0], setGroupId = _94[1];
282
+ var _95 = (0, react_1.useState)(""), readTabSection = _95[0], setReadTabSection = _95[1];
283
+ var _96 = (0, react_1.useState)(false), readFloatingNav = _96[0], setReadFloatingNav = _96[1];
283
284
  var readTabSectionRefs = (0, react_1.useRef)({});
284
285
  //INFO : Used by Read
285
286
  //INFO : Used by Update
286
- var _96 = (0, react_1.useState)(false), modalVisible = _96[0], setModalVisible = _96[1];
287
- var _97 = (0, react_1.useState)(false), deleteModal = _97[0], setDeleteModal = _97[1];
288
- var _98 = (0, react_1.useState)(false), excelModal = _98[0], setExcelModal = _98[1];
289
- var _99 = (0, react_1.useState)(false), exportExcel = _99[0], setExportExcel = _99[1];
290
- var _100 = (0, react_1.useState)(""), exportType = _100[0], setExportType = _100[1];
291
- var _101 = (0, react_1.useState)(false), exportQR = _101[0], setExportQR = _101[1];
292
- var _102 = (0, react_1.useState)(function () {
287
+ var _97 = (0, react_1.useState)(false), modalVisible = _97[0], setModalVisible = _97[1];
288
+ var _98 = (0, react_1.useState)(false), deleteModal = _98[0], setDeleteModal = _98[1];
289
+ var _99 = (0, react_1.useState)(false), excelModal = _99[0], setExcelModal = _99[1];
290
+ var _100 = (0, react_1.useState)(false), exportExcel = _100[0], setExportExcel = _100[1];
291
+ var _101 = (0, react_1.useState)(""), exportType = _101[0], setExportType = _101[1];
292
+ var _102 = (0, react_1.useState)(false), exportQR = _102[0], setExportQR = _102[1];
293
+ var _103 = (0, react_1.useState)(function () {
293
294
  var _a, _b;
294
295
  var firstTabId = (_b = (_a = structure.find(function (item) { return item.tabId; })) === null || _a === void 0 ? void 0 : _a.tabId) !== null && _b !== void 0 ? _b : "";
295
296
  return firstTabId;
296
- }), activeTab = _102[0], setActiveTab = _102[1];
297
- var _103 = (0, react_1.useState)(false), signatureSigning = _103[0], setSignatureSigning = _103[1];
298
- var _104 = (0, react_1.useState)({}), selectedData = _104[0], setSelectedData = _104[1];
299
- var _105 = (0, react_1.useState)(""), selectedObjectStructureId = _105[0], setSelectedObjectStructureId = _105[1];
300
- var _106 = (0, react_1.useState)(""), selectedObjectId = _106[0], setSelectedObjectId = _106[1];
301
- var _107 = (0, react_1.useState)(""), selectedListAddressId = _107[0], setSelectedListAddressId = _107[1];
302
- var _108 = (0, react_1.useState)(-1), selectedListAddressIndex = _108[0], setSelectedListAddressIndex = _108[1];
303
- var _109 = (0, react_1.useState)({
297
+ }), activeTab = _103[0], setActiveTab = _103[1];
298
+ var _104 = (0, react_1.useState)(false), signatureSigning = _104[0], setSignatureSigning = _104[1];
299
+ var _105 = (0, react_1.useState)({}), selectedData = _105[0], setSelectedData = _105[1];
300
+ var _106 = (0, react_1.useState)(""), selectedObjectStructureId = _106[0], setSelectedObjectStructureId = _106[1];
301
+ var _107 = (0, react_1.useState)(""), selectedObjectId = _107[0], setSelectedObjectId = _107[1];
302
+ var _108 = (0, react_1.useState)(""), selectedListAddressId = _108[0], setSelectedListAddressId = _108[1];
303
+ var _109 = (0, react_1.useState)(-1), selectedListAddressIndex = _109[0], setSelectedListAddressIndex = _109[1];
304
+ var _110 = (0, react_1.useState)({
304
305
  lat: 0,
305
306
  lng: 0,
306
307
  name: "",
307
- }), selectedListAddress = _109[0], setSelectedListAddress = _109[1];
308
- var _110 = (0, react_1.useState)({}), selectedObjectData = _110[0], setSelectedObjectData = _110[1];
309
- var _111 = (0, react_1.useState)(false), referenceLoading = _111[0], setReferenceLoading = _111[1];
310
- var _112 = (0, react_1.useState)({}), referencesOptions = _112[0], setReferencesOptions = _112[1];
311
- var _113 = (0, react_1.useState)({}), referencesDetails = _113[0], setReferencesDetails = _113[1];
312
- var _114 = (0, react_1.useState)({}), referenceDeleteTableData = _114[0], setReferenceDeleteTableData = _114[1];
313
- var _115 = (0, react_1.useState)(0), referenceDeleteIndex = _115[0], setReferenceDeleteIndex = _115[1];
314
- var _116 = (0, react_1.useState)({
308
+ }), selectedListAddress = _110[0], setSelectedListAddress = _110[1];
309
+ var _111 = (0, react_1.useState)({}), selectedObjectData = _111[0], setSelectedObjectData = _111[1];
310
+ var _112 = (0, react_1.useState)(false), referenceLoading = _112[0], setReferenceLoading = _112[1];
311
+ var _113 = (0, react_1.useState)({}), referencesOptions = _113[0], setReferencesOptions = _113[1];
312
+ var _114 = (0, react_1.useState)({}), referencesDetails = _114[0], setReferencesDetails = _114[1];
313
+ var _115 = (0, react_1.useState)({}), referenceDeleteTableData = _115[0], setReferenceDeleteTableData = _115[1];
314
+ var _116 = (0, react_1.useState)(0), referenceDeleteIndex = _116[0], setReferenceDeleteIndex = _116[1];
315
+ var _117 = (0, react_1.useState)({
315
316
  id: "",
316
317
  name: "",
317
318
  type: "string",
318
- }), referenceCreationModal = _116[0], setReferenceCreationModal = _116[1];
319
- var _117 = (0, react_1.useState)({}), referenceModelSchema = _117[0], setReferenceSchema = _117[1];
320
- var _118 = (0, react_1.useState)([]), kanbanChecked = _118[0], setKanbanChecked = _118[1];
319
+ }), referenceCreationModal = _117[0], setReferenceCreationModal = _117[1];
320
+ var _118 = (0, react_1.useState)({}), referenceModelSchema = _118[0], setReferenceSchema = _118[1];
321
+ var _119 = (0, react_1.useState)([]), kanbanChecked = _119[0], setKanbanChecked = _119[1];
321
322
  //INFO : Offline
322
- var _119 = (0, react_1.useState)(0), offlineDataLength = _119[0], setOfflineDataLength = _119[1];
323
- var _120 = (0, react_1.useState)(false), offlineModal = _120[0], setOfflineModal = _120[1];
323
+ var _120 = (0, react_1.useState)(0), offlineDataLength = _120[0], setOfflineDataLength = _120[1];
324
+ var _121 = (0, react_1.useState)(false), offlineModal = _121[0], setOfflineModal = _121[1];
324
325
  var previousType = (0, react_1.useRef)();
325
326
  var previousSelectedData = (0, react_1.useRef)();
326
327
  var formRef = (0, react_1.createRef)();
@@ -1341,23 +1342,53 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1341
1342
  //=====================================================================================
1342
1343
  var handleRemoveObjectListData = function () {
1343
1344
  var clonedSelectedData = (0, updateModule_1.handleClonedDataAttribute)(selectedData, structure, props.devSettings.server);
1345
+ var index = -1;
1344
1346
  if (selectedObjectId) {
1345
- var index = clonedSelectedData[selectedObjectStructureId].findIndex(function (eachData) { return eachData.id === selectedObjectId; });
1346
- if (index !== -1) {
1347
- clonedSelectedData[selectedObjectStructureId].splice(index, 1);
1348
- }
1347
+ index = clonedSelectedData[selectedObjectStructureId].findIndex(function (eachData) { return eachData.id === selectedObjectId; });
1348
+ }
1349
+ if (index === -1 && selectedObjectData) {
1350
+ index = clonedSelectedData[selectedObjectStructureId].findIndex(function (eachData) {
1351
+ return JSON.stringify(eachData) === JSON.stringify(selectedObjectData);
1352
+ });
1353
+ }
1354
+ if (index !== -1) {
1355
+ clonedSelectedData[selectedObjectStructureId].splice(index, 1);
1349
1356
  setSelectedObjectId("");
1350
1357
  setSelectedData(clonedSelectedData);
1351
1358
  handlePopUpModal(false);
1352
1359
  }
1353
1360
  };
1354
1361
  var handleSubmitObjectDataType = function () {
1355
- var _a, _b;
1362
+ var _a, _b, _c;
1356
1363
  var clonedSelectedData = (0, updateModule_1.handleClonedDataAttribute)(selectedData, structure, props.devSettings.server, false, showId);
1357
1364
  var filterObjectModel = structure.find(function (eachModel) {
1358
1365
  return eachModel.id === selectedObjectStructureId;
1359
1366
  });
1360
1367
  var clonedSelectedObjectData = (0, updateModule_1.handleClonedDataAttribute)(selectedObjectData, (_a = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _a !== void 0 ? _a : [], props.devSettings.server, true, true);
1368
+ // Clean up canvas background images that were unselected or cleared
1369
+ // If a canvas has backgroundImage with _cleared flag, clear it when modal closes
1370
+ (_b = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) === null || _b === void 0 ? void 0 : _b.forEach(function (eachAttribute) {
1371
+ if (eachAttribute.type === "canvas" &&
1372
+ eachAttribute.enableImageUpload &&
1373
+ clonedSelectedObjectData[eachAttribute.id] &&
1374
+ !Array.isArray(clonedSelectedObjectData[eachAttribute.id]) &&
1375
+ clonedSelectedObjectData[eachAttribute.id].backgroundImage) {
1376
+ var bgImage = clonedSelectedObjectData[eachAttribute.id]
1377
+ .backgroundImage;
1378
+ // If it has _cleared flag and no token, it means it was cleared/unselected
1379
+ // Clear it when modal closes
1380
+ if (bgImage._cleared && !bgImage.token) {
1381
+ clonedSelectedObjectData[eachAttribute.id] = __assign(__assign({}, clonedSelectedObjectData[eachAttribute.id]), { backgroundImage: null });
1382
+ }
1383
+ else if (bgImage._cleared && bgImage.token) {
1384
+ // Has token but also _cleared flag - remove the flag (shouldn't happen, but safe)
1385
+ clonedSelectedObjectData[eachAttribute.id] = __assign(__assign({}, clonedSelectedObjectData[eachAttribute.id]), { backgroundImage: {
1386
+ fileName: bgImage.fileName,
1387
+ token: bgImage.token,
1388
+ } });
1389
+ }
1390
+ }
1391
+ });
1361
1392
  if (!clonedSelectedObjectData["id"]) {
1362
1393
  clonedSelectedObjectData["id"] = (0, uuid_1.v4)();
1363
1394
  }
@@ -1388,7 +1419,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1388
1419
  }
1389
1420
  else {
1390
1421
  //INFO: [UPDATE] Updating an object field
1391
- var clonedSelectedObjectData_1 = (0, updateModule_1.handleClonedDataAttribute)(selectedObjectData, (_b = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _b !== void 0 ? _b : [], props.devSettings.server, true);
1422
+ var clonedSelectedObjectData_1 = (0, updateModule_1.handleClonedDataAttribute)(selectedObjectData, (_c = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _c !== void 0 ? _c : [], props.devSettings.server, true);
1392
1423
  clonedSelectedData[selectedObjectStructureId] = clonedSelectedObjectData_1;
1393
1424
  setSelectedData(clonedSelectedData);
1394
1425
  }
@@ -1543,18 +1574,18 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1543
1574
  * Multi Image - imageColl/dataId/token${imageFileExtension} - Applies to the same to object & listObject
1544
1575
  */
1545
1576
  var handleParseImageField = function (dataId, selectedData, model, objectId, listObject) { return __awaiter(void 0, void 0, void 0, function () {
1546
- var uploadAsset_1, removeAsset_1, imageAttribute, multiImageAttribute, err_4;
1577
+ var uploadAsset_1, removeAsset_1, imageAttribute, multiImageAttribute, canvasAttribute, err_4;
1547
1578
  return __generator(this, function (_a) {
1548
1579
  switch (_a.label) {
1549
1580
  case 0:
1550
- _a.trys.push([0, 3, , 4]);
1581
+ _a.trys.push([0, 4, , 5]);
1551
1582
  uploadAsset_1 = function (eachImage, selectedField, listObjectId, multiple) { return __awaiter(void 0, void 0, void 0, function () {
1552
- var uploadedData_1, imageValue, imageCollectionName, imageParentId, responseData, err_5;
1553
- var _a, _b, _c;
1554
- return __generator(this, function (_d) {
1555
- switch (_d.label) {
1583
+ var uploadedData_1, imageValue, imageCollectionName, imageParentId, fileName, responseData, err_5;
1584
+ var _a, _b;
1585
+ return __generator(this, function (_c) {
1586
+ switch (_c.label) {
1556
1587
  case 0:
1557
- _d.trys.push([0, 9, , 10]);
1588
+ _c.trys.push([0, 9, , 10]);
1558
1589
  if (!(typeof selectedField === "string" &&
1559
1590
  eachImage.type !== "signature")) return [3 /*break*/, 1];
1560
1591
  return [2 /*return*/, selectedField];
@@ -1587,7 +1618,11 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1587
1618
  : "";
1588
1619
  fileName = eachImage.filePreserveName && originalFileName
1589
1620
  ? (eachImage.filePrefix || "") + originalFileName
1590
- : (0, uuid_1.v4)() + (eachImage.imageFileName || "");
1621
+ : eachImage.imageFileName
1622
+ ? (0, uuid_1.v4)() + eachImage.imageFileName
1623
+ : eachField.fileName instanceof File
1624
+ ? (0, uuid_1.v4)() + "-" + eachField.fileName.name
1625
+ : (0, uuid_1.v4)() + "-" + (originalFileName || "");
1591
1626
  return [4 /*yield*/, handleUploadAxios(handleUploadEndpoint(eachImage), imageParentId, imageCollectionName, fileName, eachField.fileName, (_c = devSettings.bucketName) !== null && _c !== void 0 ? _c : "")];
1592
1627
  case 1:
1593
1628
  responseData = _d.sent();
@@ -1601,7 +1636,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1601
1636
  });
1602
1637
  }); }))];
1603
1638
  case 2:
1604
- _d.sent();
1639
+ _c.sent();
1605
1640
  return [2 /*return*/, selectedField["data"].concat(uploadedData_1)];
1606
1641
  case 3: return [2 /*return*/, selectedField];
1607
1642
  case 4: return [3 /*break*/, 8];
@@ -1623,9 +1658,14 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1623
1658
  imageParentId += "/".concat(listObjectId);
1624
1659
  }
1625
1660
  if (!imageValue) return [3 /*break*/, 7];
1626
- return [4 /*yield*/, handleUploadAxios(handleUploadEndpoint(eachImage), imageParentId, imageCollectionName, (_b = eachImage.imageFileName) !== null && _b !== void 0 ? _b : "", imageValue, (_c = devSettings.bucketName) !== null && _c !== void 0 ? _c : "")];
1661
+ fileName = eachImage.imageFileName
1662
+ ? eachImage.imageFileName
1663
+ : imageValue instanceof File
1664
+ ? (0, uuid_1.v4)() + imageValue.name
1665
+ : "";
1666
+ return [4 /*yield*/, handleUploadAxios(handleUploadEndpoint(eachImage), imageParentId, imageCollectionName, fileName, imageValue, (_b = devSettings.bucketName) !== null && _b !== void 0 ? _b : "")];
1627
1667
  case 6:
1628
- responseData = _d.sent();
1668
+ responseData = _c.sent();
1629
1669
  if (responseData.data) {
1630
1670
  return [2 /*return*/, responseData.data.data];
1631
1671
  }
@@ -1635,7 +1675,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1635
1675
  case 7: return [2 /*return*/, ""];
1636
1676
  case 8: return [3 /*break*/, 10];
1637
1677
  case 9:
1638
- err_5 = _d.sent();
1678
+ err_5 = _c.sent();
1639
1679
  return [3 /*break*/, 10];
1640
1680
  case 10: return [2 /*return*/];
1641
1681
  }
@@ -1802,16 +1842,118 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1802
1842
  }); }))];
1803
1843
  case 2:
1804
1844
  _a.sent();
1805
- return [2 /*return*/, selectedData];
1845
+ canvasAttribute = model.filter(function (eachAttribute) {
1846
+ return (eachAttribute.type === "canvas" && eachAttribute.enableImageUpload);
1847
+ });
1848
+ return [4 /*yield*/, Promise.all(canvasAttribute.map(function (eachCanvas) { return __awaiter(void 0, void 0, void 0, function () {
1849
+ var canvasData, imageCollectionName, imageParentId, originalFileName, fileName, responseData, err_6;
1850
+ var _a, _b;
1851
+ return __generator(this, function (_c) {
1852
+ switch (_c.label) {
1853
+ case 0:
1854
+ if (!(listObject && objectId)) return [3 /*break*/, 3];
1855
+ if (!Array.isArray(selectedData[objectId])) return [3 /*break*/, 2];
1856
+ return [4 /*yield*/, Promise.all(selectedData[objectId].map(function (eachListItem, index) { return __awaiter(void 0, void 0, void 0, function () {
1857
+ var selectedObjectId, canvasData, imageCollectionName, imageParentId, originalFileName, fileName, responseData, err_7;
1858
+ var _a, _b, _c;
1859
+ return __generator(this, function (_d) {
1860
+ switch (_d.label) {
1861
+ case 0:
1862
+ selectedObjectId = (_a = eachListItem.id) !== null && _a !== void 0 ? _a : (0, uuid_1.v4)();
1863
+ canvasData = eachListItem[eachCanvas.id];
1864
+ if (!(canvasData &&
1865
+ !Array.isArray(canvasData) &&
1866
+ canvasData.backgroundImage &&
1867
+ canvasData.backgroundImage.file &&
1868
+ canvasData.backgroundImage.file instanceof File)) return [3 /*break*/, 4];
1869
+ imageCollectionName = (_b = eachCanvas.imageCollectionName) !== null && _b !== void 0 ? _b : "";
1870
+ if (objectId) {
1871
+ imageCollectionName += "/".concat(dataId);
1872
+ }
1873
+ imageParentId = "".concat(objectId, "/").concat(selectedObjectId, "/").concat(eachCanvas.id);
1874
+ originalFileName = canvasData.backgroundImage.fileName;
1875
+ fileName = eachCanvas.filePreserveName && originalFileName
1876
+ ? (eachCanvas.filePrefix || "") + originalFileName
1877
+ : (0, uuid_1.v4)() + (eachCanvas.imageFileName || ".png");
1878
+ _d.label = 1;
1879
+ case 1:
1880
+ _d.trys.push([1, 3, , 4]);
1881
+ return [4 /*yield*/, handleUploadAxios(handleUploadEndpoint(eachCanvas), imageParentId, imageCollectionName, fileName, canvasData.backgroundImage.file, (_c = devSettings.bucketName) !== null && _c !== void 0 ? _c : "")];
1882
+ case 2:
1883
+ responseData = _d.sent();
1884
+ if (responseData.data) {
1885
+ // Replace file with token
1886
+ selectedData[objectId][index][eachCanvas.id] = __assign(__assign({}, canvasData), { backgroundImage: {
1887
+ fileName: fileName,
1888
+ token: responseData.data.data,
1889
+ } });
1890
+ }
1891
+ return [3 /*break*/, 4];
1892
+ case 3:
1893
+ err_7 = _d.sent();
1894
+ return [3 /*break*/, 4];
1895
+ case 4: return [2 /*return*/, null];
1896
+ }
1897
+ });
1898
+ }); }))];
1899
+ case 1:
1900
+ _c.sent();
1901
+ _c.label = 2;
1902
+ case 2: return [3 /*break*/, 7];
1903
+ case 3:
1904
+ canvasData = selectedData[eachCanvas.id];
1905
+ if (!canvasData || Array.isArray(canvasData))
1906
+ return [2 /*return*/, null];
1907
+ if (!(canvasData.backgroundImage &&
1908
+ canvasData.backgroundImage.file &&
1909
+ canvasData.backgroundImage.file instanceof File)) return [3 /*break*/, 7];
1910
+ imageCollectionName = (_a = eachCanvas.imageCollectionName) !== null && _a !== void 0 ? _a : "";
1911
+ if (objectId) {
1912
+ imageCollectionName += "/".concat(dataId);
1913
+ }
1914
+ imageParentId = objectId ? objectId : dataId;
1915
+ if (listObject && objectId) {
1916
+ imageParentId += "/".concat(eachCanvas.id);
1917
+ }
1918
+ originalFileName = canvasData.backgroundImage.fileName;
1919
+ fileName = eachCanvas.filePreserveName && originalFileName
1920
+ ? (eachCanvas.filePrefix || "") + originalFileName
1921
+ : (0, uuid_1.v4)() + (eachCanvas.imageFileName || ".png");
1922
+ _c.label = 4;
1923
+ case 4:
1924
+ _c.trys.push([4, 6, , 7]);
1925
+ return [4 /*yield*/, handleUploadAxios(handleUploadEndpoint(eachCanvas), imageParentId + "/baseCanvas", imageCollectionName, fileName, canvasData.backgroundImage.file, (_b = devSettings.bucketName) !== null && _b !== void 0 ? _b : "")];
1926
+ case 5:
1927
+ responseData = _c.sent();
1928
+ if (responseData.data) {
1929
+ // Replace file with token
1930
+ selectedData[eachCanvas.id] = __assign(__assign({}, canvasData), { backgroundImage: {
1931
+ fileName: fileName,
1932
+ token: responseData.data.data,
1933
+ } });
1934
+ }
1935
+ return [3 /*break*/, 7];
1936
+ case 6:
1937
+ err_6 = _c.sent();
1938
+ console.error("[Canvas Upload] Upload error:", err_6);
1939
+ return [3 /*break*/, 7];
1940
+ case 7: return [2 /*return*/, null];
1941
+ }
1942
+ });
1943
+ }); }))];
1806
1944
  case 3:
1945
+ _a.sent();
1946
+ return [2 /*return*/, selectedData];
1947
+ case 4:
1807
1948
  err_4 = _a.sent();
1808
- return [3 /*break*/, 4];
1809
- case 4: return [2 /*return*/];
1949
+ console.error("[Canvas Upload] Error in handleParseImageField:", err_4);
1950
+ return [3 /*break*/, 5];
1951
+ case 5: return [2 /*return*/];
1810
1952
  }
1811
1953
  });
1812
1954
  }); };
1813
1955
  var handleRemoveImageAxios = function (imageEndpoint, assetParentId, assetCollectionName, assetFileName, bucketName) { return __awaiter(void 0, void 0, void 0, function () {
1814
- var dataForm, err_6;
1956
+ var dataForm, err_8;
1815
1957
  var _a;
1816
1958
  return __generator(this, function (_b) {
1817
1959
  switch (_b.label) {
@@ -1833,14 +1975,14 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1833
1975
  _b.sent();
1834
1976
  return [3 /*break*/, 3];
1835
1977
  case 2:
1836
- err_6 = _b.sent();
1978
+ err_8 = _b.sent();
1837
1979
  return [3 /*break*/, 3];
1838
1980
  case 3: return [2 /*return*/];
1839
1981
  }
1840
1982
  });
1841
1983
  }); };
1842
1984
  var handleRemoveImage = function (bucketName) { return __awaiter(void 0, void 0, void 0, function () {
1843
- var data, uploadEndpoint, err_7;
1985
+ var data, uploadEndpoint, err_9;
1844
1986
  var _a, _b;
1845
1987
  return __generator(this, function (_c) {
1846
1988
  switch (_c.label) {
@@ -1864,7 +2006,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1864
2006
  _c.sent();
1865
2007
  return [3 /*break*/, 3];
1866
2008
  case 2:
1867
- err_7 = _c.sent();
2009
+ err_9 = _c.sent();
1868
2010
  return [3 /*break*/, 3];
1869
2011
  case 3: return [2 /*return*/];
1870
2012
  }
@@ -1886,7 +2028,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1886
2028
  setDeletePasscode(passcode);
1887
2029
  };
1888
2030
  var handleMultipleRemoveSelectedData = function () { return __awaiter(void 0, void 0, void 0, function () {
1889
- var passcodeMatch, offlineDataResp, offlineData, filteredData, ids, notReferenceId, query, responseData, responseData, data, uploadEndpoint, err_8;
2031
+ var passcodeMatch, offlineDataResp, offlineData, filteredData, ids, notReferenceId, query, responseData, responseData, data, uploadEndpoint, err_10;
1890
2032
  var _a, _b, _c, _d, _e;
1891
2033
  return __generator(this, function (_f) {
1892
2034
  switch (_f.label) {
@@ -1986,7 +2128,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1986
2128
  return [2 /*return*/];
1987
2129
  case 15: return [3 /*break*/, 17];
1988
2130
  case 16:
1989
- err_8 = _f.sent();
2131
+ err_10 = _f.sent();
1990
2132
  return [3 /*break*/, 17];
1991
2133
  case 17:
1992
2134
  setDeletePasscodeInput("");
@@ -1996,7 +2138,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1996
2138
  });
1997
2139
  }); };
1998
2140
  var handleRemoveSelectedData = function () { return __awaiter(void 0, void 0, void 0, function () {
1999
- var deletable, selectedId_1, deleteIds, res, offlineDataResp, offlineData, selectedIndex_2, err_9;
2141
+ var deletable, selectedId_1, deleteIds, res, offlineDataResp, offlineData, selectedIndex_2, err_11;
2000
2142
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
2001
2143
  return __generator(this, function (_k) {
2002
2144
  switch (_k.label) {
@@ -2065,7 +2207,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2065
2207
  _k.label = 12;
2066
2208
  case 12: return [3 /*break*/, 14];
2067
2209
  case 13:
2068
- err_9 = _k.sent();
2210
+ err_11 = _k.sent();
2069
2211
  setDeleteModal(false);
2070
2212
  setDeleteFeedId("");
2071
2213
  return [3 /*break*/, 14];
@@ -2078,7 +2220,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2078
2220
  });
2079
2221
  }); };
2080
2222
  var handleCheckDeleteReference = function (selectedData, multipleDelete) { return __awaiter(void 0, void 0, void 0, function () {
2081
- var existDataIds, existsData, handleFindReference_1, collectionIdList_1, columnIdList_1, collectionNameList_1, refStructureList_1, schemaQuery, schemaRes, spaceList, err_10;
2223
+ var existDataIds, existsData, handleFindReference_1, collectionIdList_1, columnIdList_1, collectionNameList_1, refStructureList_1, schemaQuery, schemaRes, spaceList, err_12;
2082
2224
  var _a, _b;
2083
2225
  return __generator(this, function (_c) {
2084
2226
  switch (_c.label) {
@@ -2283,7 +2425,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2283
2425
  _c.label = 9;
2284
2426
  case 9: return [3 /*break*/, 11];
2285
2427
  case 10:
2286
- err_10 = _c.sent();
2428
+ err_12 = _c.sent();
2287
2429
  return [3 /*break*/, 11];
2288
2430
  case 11:
2289
2431
  setReferenceDeleteTableData(existsData);
@@ -2296,7 +2438,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2296
2438
  });
2297
2439
  }); };
2298
2440
  var handleCloneSelectedData = function () { return __awaiter(void 0, void 0, void 0, function () {
2299
- var responseData, newDataList_1, res, err_11;
2441
+ var responseData, newDataList_1, res, err_13;
2300
2442
  return __generator(this, function (_a) {
2301
2443
  switch (_a.label) {
2302
2444
  case 0:
@@ -2333,7 +2475,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2333
2475
  _a.label = 3;
2334
2476
  case 3: return [3 /*break*/, 5];
2335
2477
  case 4:
2336
- err_11 = _a.sent();
2478
+ err_13 = _a.sent();
2337
2479
  return [3 /*break*/, 5];
2338
2480
  case 5:
2339
2481
  setLoading(false);
@@ -2342,7 +2484,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2342
2484
  });
2343
2485
  }); };
2344
2486
  var handleBatchDraftData = function () { return __awaiter(void 0, void 0, void 0, function () {
2345
- var res, err_12;
2487
+ var res, err_14;
2346
2488
  return __generator(this, function (_a) {
2347
2489
  switch (_a.label) {
2348
2490
  case 0:
@@ -2366,7 +2508,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2366
2508
  handleRefresh(false, true);
2367
2509
  return [3 /*break*/, 3];
2368
2510
  case 2:
2369
- err_12 = _a.sent();
2511
+ err_14 = _a.sent();
2370
2512
  return [3 /*break*/, 3];
2371
2513
  case 3:
2372
2514
  setLoading(false);
@@ -2375,7 +2517,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2375
2517
  });
2376
2518
  }); };
2377
2519
  var handleBatchUpdateData = function () { return __awaiter(void 0, void 0, void 0, function () {
2378
- var model_1, columnId_1, dataToSubmit_1, isFile, res, updateQuery, selectAllQuery, batchUpdateConfig, res, err_13;
2520
+ var model_1, columnId_1, dataToSubmit_1, isFile, res, updateQuery, selectAllQuery, batchUpdateConfig, res, err_15;
2379
2521
  return __generator(this, function (_a) {
2380
2522
  switch (_a.label) {
2381
2523
  case 0:
@@ -2457,12 +2599,12 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2457
2599
  _a.label = 6;
2458
2600
  case 6: return [3 /*break*/, 8];
2459
2601
  case 7:
2460
- err_13 = _a.sent();
2461
- if (err_13.response && err_13.response.status === 400) {
2602
+ err_15 = _a.sent();
2603
+ if (err_15.response && err_15.response.status === 400) {
2462
2604
  setNotification({
2463
2605
  type: false,
2464
2606
  title: "Error",
2465
- msg: err_13.response.data.err,
2607
+ msg: err_15.response.data.err,
2466
2608
  });
2467
2609
  }
2468
2610
  return [3 /*break*/, 8];
@@ -2473,7 +2615,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2473
2615
  });
2474
2616
  }); };
2475
2617
  var handleUploadOfflineData = function () { return __awaiter(void 0, void 0, void 0, function () {
2476
- var dataUploadedId, offlineDataResp, offlineData, offlineDataIds, updateDataRes, updateDataList, _loop_1, i, err_14, success, filteredData;
2618
+ var dataUploadedId, offlineDataResp, offlineData, offlineDataIds, updateDataRes, updateDataList, _loop_1, i, err_16, success, filteredData;
2477
2619
  var _a;
2478
2620
  return __generator(this, function (_b) {
2479
2621
  switch (_b.label) {
@@ -2538,7 +2680,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2538
2680
  return [3 /*break*/, 4];
2539
2681
  case 7: return [3 /*break*/, 9];
2540
2682
  case 8:
2541
- err_14 = _b.sent();
2683
+ err_16 = _b.sent();
2542
2684
  return [3 /*break*/, 9];
2543
2685
  case 9:
2544
2686
  success = dataUploadedId.length === offlineData.length;
@@ -2564,7 +2706,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2564
2706
  });
2565
2707
  }); };
2566
2708
  var handleSubmitData = function (type, rowId, columnId, data, offlineId, isOfflineUpdate, isDraft) { return __awaiter(void 0, void 0, void 0, function () {
2567
- var selectedId_2, id, createSelectedData_1, uniqueDataStructure, uniqueColumnId, res, offlineDataResp, offlineData, tempData, err_15, offlineDataResp, tempData, selectedIndex_3, offlineData, err_16, dataToSubmit, operationType, selectedIndex_4, dataId, err_17;
2709
+ var selectedId_2, id, createSelectedData_1, uniqueDataStructure, uniqueColumnId, res, offlineDataResp, offlineData, tempData, err_17, offlineDataResp, tempData, selectedIndex_3, offlineData, err_18, dataToSubmit, operationType, selectedIndex_4, dataId, err_19;
2568
2710
  var _a, _b;
2569
2711
  var _c, _d, _e, _f, _g, _h;
2570
2712
  return __generator(this, function (_j) {
@@ -2639,7 +2781,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2639
2781
  res = true;
2640
2782
  return [3 /*break*/, 8];
2641
2783
  case 7:
2642
- err_15 = _j.sent();
2784
+ err_17 = _j.sent();
2643
2785
  return [3 /*break*/, 8];
2644
2786
  case 8: return [3 /*break*/, 11];
2645
2787
  case 9: return [4 /*yield*/, writeServerQuery.call("create", {
@@ -2681,7 +2823,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2681
2823
  res = true;
2682
2824
  return [3 /*break*/, 17];
2683
2825
  case 16:
2684
- err_16 = _j.sent();
2826
+ err_18 = _j.sent();
2685
2827
  return [3 /*break*/, 17];
2686
2828
  case 17: return [3 /*break*/, 20];
2687
2829
  case 18:
@@ -2759,14 +2901,14 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2759
2901
  dataId = res ? id : "";
2760
2902
  return [2 /*return*/, dataId];
2761
2903
  case 31:
2762
- err_17 = _j.sent();
2763
- console.log("error", err_17);
2764
- if (err_17.response && err_17.response.status === 400) {
2765
- if (typeof ((_h = err_17.response.data) === null || _h === void 0 ? void 0 : _h.err) === "string")
2904
+ err_19 = _j.sent();
2905
+ console.log("error", err_19);
2906
+ if (err_19.response && err_19.response.status === 400) {
2907
+ if (typeof ((_h = err_19.response.data) === null || _h === void 0 ? void 0 : _h.err) === "string")
2766
2908
  setNotification({
2767
2909
  type: false,
2768
2910
  title: "Error",
2769
- msg: err_17.response.data.err,
2911
+ msg: err_19.response.data.err,
2770
2912
  });
2771
2913
  else
2772
2914
  setNotification({
@@ -2819,7 +2961,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2819
2961
  });
2820
2962
  }); };
2821
2963
  var handleSubmit = function (isDraft) { return __awaiter(void 0, void 0, void 0, function () {
2822
- var preComplete, res, err_18;
2964
+ var preComplete, res, err_20;
2823
2965
  var _a;
2824
2966
  var _b, _c, _d, _e, _f, _g, _h;
2825
2967
  return __generator(this, function (_j) {
@@ -2869,7 +3011,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2869
3011
  setLoading(false);
2870
3012
  return [3 /*break*/, 10];
2871
3013
  case 9:
2872
- err_18 = _j.sent();
3014
+ err_20 = _j.sent();
2873
3015
  setModalVisible(false);
2874
3016
  setLoading(false);
2875
3017
  return [3 /*break*/, 10];
@@ -3103,7 +3245,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
3103
3245
  handleUpdateChangeData(clonedData);
3104
3246
  };
3105
3247
  var handleOnChangeSelect = function (id, value) { return __awaiter(void 0, void 0, void 0, function () {
3106
- var _a, data, model, clonedData, refetchReference, currentSchema, allowedWatchedColumnTypes_1, watchedColumns, _i, watchedColumns_1, eachWatched, dependency, referenceRQ, valueRes, err_19;
3248
+ var _a, data, model, clonedData, refetchReference, currentSchema, allowedWatchedColumnTypes_1, watchedColumns, _i, watchedColumns_1, eachWatched, dependency, referenceRQ, valueRes, err_21;
3107
3249
  return __generator(this, function (_b) {
3108
3250
  switch (_b.label) {
3109
3251
  case 0:
@@ -3166,7 +3308,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
3166
3308
  return [3 /*break*/, 3];
3167
3309
  case 6: return [3 /*break*/, 8];
3168
3310
  case 7:
3169
- err_19 = _b.sent();
3311
+ err_21 = _b.sent();
3170
3312
  return [3 /*break*/, 8];
3171
3313
  case 8:
3172
3314
  clonedData[id] = value;
@@ -3244,7 +3386,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
3244
3386
  }
3245
3387
  };
3246
3388
  var handleStepCSV = function () { return __awaiter(void 0, void 0, void 0, function () {
3247
- var csvList_1, _loop_2, _i, _a, _b, eachKey, eachValue, valid_1, errorValue_1, excelFormData, updateFields, response, open_1, err_20;
3389
+ var csvList_1, _loop_2, _i, _a, _b, eachKey, eachValue, valid_1, errorValue_1, excelFormData, updateFields, response, open_1, err_22;
3248
3390
  var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
3249
3391
  return __generator(this, function (_p) {
3250
3392
  switch (_p.label) {
@@ -3392,12 +3534,12 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
3392
3534
  _p.label = 5;
3393
3535
  case 5: return [3 /*break*/, 7];
3394
3536
  case 6:
3395
- err_20 = _p.sent();
3537
+ err_22 = _p.sent();
3396
3538
  setLoading(false);
3397
3539
  setNotification({
3398
3540
  type: false,
3399
3541
  title: "Import Error",
3400
- msg: err_20.message,
3542
+ msg: err_22.message,
3401
3543
  });
3402
3544
  return [3 /*break*/, 7];
3403
3545
  case 7: return [2 /*return*/];
@@ -3405,7 +3547,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
3405
3547
  });
3406
3548
  }); };
3407
3549
  var handleExportCSVData = function (downloadLinkOnly, printOnly) { return __awaiter(void 0, void 0, void 0, function () {
3408
- var exportQueryList, baseUrl, apiEndpoint, reqData, res, dataList, csvDownloadLink, notificaitonMsg, err_21;
3550
+ var exportQueryList, baseUrl, apiEndpoint, reqData, res, dataList, csvDownloadLink, notificaitonMsg, err_23;
3409
3551
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
3410
3552
  return __generator(this, function (_1) {
3411
3553
  switch (_1.label) {
@@ -3479,7 +3621,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
3479
3621
  setExportCSVEmail((_0 = (_z = props.devSettings.currentUser) === null || _z === void 0 ? void 0 : _z.userEmail) !== null && _0 !== void 0 ? _0 : "");
3480
3622
  return [3 /*break*/, 6];
3481
3623
  case 5:
3482
- err_21 = _1.sent();
3624
+ err_23 = _1.sent();
3483
3625
  setNotification({
3484
3626
  type: true,
3485
3627
  title: "Export Failed",
@@ -3491,34 +3633,198 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
3491
3633
  }
3492
3634
  });
3493
3635
  }); };
3494
- var handleExportReadPDF = function () { return __awaiter(void 0, void 0, void 0, function () {
3495
- var canvas, pdf, pageWidth, pageHeight, margin, usableWidth, imgHeight, usableHeight, heightLeft, page, sourceY, sourceHeight, pageCanvas, ctx, pageData, err_22;
3636
+ var handleLoadImageAsDataURL = function (src, imageConfig) { return __awaiter(void 0, void 0, void 0, function () {
3496
3637
  return __generator(this, function (_a) {
3497
- switch (_a.label) {
3638
+ return [2 /*return*/, new Promise(function (resolve, reject) {
3639
+ if (src.startsWith("data:")) {
3640
+ resolve(src);
3641
+ return;
3642
+ }
3643
+ var targetWidth = imageConfig === null || imageConfig === void 0 ? void 0 : imageConfig.width;
3644
+ var targetHeight = imageConfig === null || imageConfig === void 0 ? void 0 : imageConfig.height;
3645
+ var img = new Image();
3646
+ img.onload = function () {
3647
+ try {
3648
+ var canvas = document.createElement("canvas");
3649
+ // Use provided dimensions or original image dimensions
3650
+ if (targetWidth && targetHeight) {
3651
+ canvas.width = targetWidth;
3652
+ canvas.height = targetHeight;
3653
+ }
3654
+ else {
3655
+ canvas.width = img.width;
3656
+ canvas.height = img.height;
3657
+ }
3658
+ var ctx = canvas.getContext("2d");
3659
+ if (targetWidth && targetHeight) {
3660
+ // Resize image to target dimensions
3661
+ ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(img, 0, 0, targetWidth, targetHeight);
3662
+ }
3663
+ else {
3664
+ ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(img, 0, 0);
3665
+ }
3666
+ resolve(canvas.toDataURL("image/png"));
3667
+ }
3668
+ catch (err) {
3669
+ reject(err);
3670
+ }
3671
+ };
3672
+ img.onerror = function () {
3673
+ reject(new Error("Failed to load image"));
3674
+ };
3675
+ img.src = src;
3676
+ })];
3677
+ });
3678
+ }); };
3679
+ var handleExportReadPDF = function () { return __awaiter(void 0, void 0, void 0, function () {
3680
+ var elementToExport, canvas, pdf, pageWidth, pageHeight, margin, headerConfig_1, headerHeight, imageDataURL, imageWidth_1, imageHeight_1, hasImage, hasText, img_1, err_24, textHeight, usableWidth, imgHeight, usableHeight, heightLeft, page, currentY, imgX, imgY, imgW, imgH, finalX, textY, textX, sourceY, sourceHeight, pageCanvas, ctx, pageData, pdfBlob, err_25;
3681
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
3682
+ return __generator(this, function (_p) {
3683
+ switch (_p.label) {
3498
3684
  case 0:
3499
3685
  if (!exportReadPDFRef.current)
3500
3686
  return [2 /*return*/];
3687
+ elementToExport = exportReadPDFRef.current;
3501
3688
  setModalVisible(true);
3502
3689
  setExportPDFLoading(true);
3503
- _a.label = 1;
3690
+ setExportReadPDFLoading(true);
3691
+ _p.label = 1;
3504
3692
  case 1:
3505
- _a.trys.push([1, 3, , 4]);
3506
- return [4 /*yield*/, (0, html2canvas_1.default)(exportReadPDFRef.current, {
3693
+ _p.trys.push([1, 12, 13, 14]);
3694
+ // Wait for DOM to update and hide floating navigation before capturing
3695
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 100); })];
3696
+ case 2:
3697
+ // Wait for DOM to update and hide floating navigation before capturing
3698
+ _p.sent();
3699
+ // Verify element is still in the DOM
3700
+ if (!document.contains(elementToExport)) {
3701
+ throw new Error("Export element is not in the DOM");
3702
+ }
3703
+ return [4 /*yield*/, (0, html2canvas_1.default)(elementToExport, {
3507
3704
  scale: 2,
3508
3705
  useCORS: true,
3509
3706
  })];
3510
- case 2:
3511
- canvas = _a.sent();
3707
+ case 3:
3708
+ canvas = _p.sent();
3512
3709
  pdf = new jspdf_1.default("p", "mm", "a4");
3513
3710
  pageWidth = pdf.internal.pageSize.getWidth();
3514
3711
  pageHeight = pdf.internal.pageSize.getHeight();
3515
3712
  margin = 5;
3713
+ headerConfig_1 = (_b = (_a = props.organise) === null || _a === void 0 ? void 0 : _a.exportSettings) === null || _b === void 0 ? void 0 : _b.exportReadPDFHeader;
3714
+ headerHeight = 0;
3715
+ imageDataURL = null;
3716
+ imageWidth_1 = 0;
3717
+ imageHeight_1 = 0;
3718
+ if (!headerConfig_1) return [3 /*break*/, 11];
3719
+ hasImage = !!((_c = headerConfig_1.image) === null || _c === void 0 ? void 0 : _c.src);
3720
+ hasText = !!((_d = headerConfig_1.text) === null || _d === void 0 ? void 0 : _d.value);
3721
+ if (!hasImage) return [3 /*break*/, 10];
3722
+ _p.label = 4;
3723
+ case 4:
3724
+ _p.trys.push([4, 9, , 10]);
3725
+ return [4 /*yield*/, handleLoadImageAsDataURL(headerConfig_1.image.src)];
3726
+ case 5:
3727
+ imageDataURL = _p.sent();
3728
+ if (!(!((_e = headerConfig_1.image) === null || _e === void 0 ? void 0 : _e.width) || !((_f = headerConfig_1.image) === null || _f === void 0 ? void 0 : _f.height))) return [3 /*break*/, 7];
3729
+ img_1 = new Image();
3730
+ img_1.src = imageDataURL;
3731
+ return [4 /*yield*/, new Promise(function (resolve) {
3732
+ img_1.onload = function () {
3733
+ var _a, _b, _c, _d;
3734
+ // Convert pixels to mm (assuming 96 DPI: 1mm = 3.779527559 pixels)
3735
+ var pixelsToMm = 3.779527559;
3736
+ imageWidth_1 =
3737
+ (_b = (_a = headerConfig_1.image) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : img_1.width / pixelsToMm;
3738
+ imageHeight_1 =
3739
+ (_d = (_c = headerConfig_1.image) === null || _c === void 0 ? void 0 : _c.height) !== null && _d !== void 0 ? _d : img_1.height / pixelsToMm;
3740
+ // Ensure minimum size
3741
+ if (imageWidth_1 < 10)
3742
+ imageWidth_1 = 30;
3743
+ if (imageHeight_1 < 5)
3744
+ imageHeight_1 = 10;
3745
+ resolve(null);
3746
+ };
3747
+ img_1.onerror = function () {
3748
+ var _a, _b, _c, _d;
3749
+ // Use defaults if image fails to load dimensions
3750
+ imageWidth_1 = (_b = (_a = headerConfig_1.image) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : 30;
3751
+ imageHeight_1 = (_d = (_c = headerConfig_1.image) === null || _c === void 0 ? void 0 : _c.height) !== null && _d !== void 0 ? _d : 10;
3752
+ resolve(null);
3753
+ };
3754
+ })];
3755
+ case 6:
3756
+ _p.sent();
3757
+ return [3 /*break*/, 8];
3758
+ case 7:
3759
+ imageWidth_1 = headerConfig_1.image.width;
3760
+ imageHeight_1 = headerConfig_1.image.height;
3761
+ _p.label = 8;
3762
+ case 8:
3763
+ headerHeight = imageHeight_1 + 2;
3764
+ return [3 /*break*/, 10];
3765
+ case 9:
3766
+ err_24 = _p.sent();
3767
+ console.error("Failed to load PDF header image:", err_24);
3768
+ console.error("Image source:", headerConfig_1.image.src);
3769
+ return [3 /*break*/, 10];
3770
+ case 10:
3771
+ if (hasText) {
3772
+ textHeight = hasImage ? 5 : 10;
3773
+ headerHeight += textHeight;
3774
+ }
3775
+ headerHeight = Math.max(headerHeight, 2);
3776
+ _p.label = 11;
3777
+ case 11:
3516
3778
  usableWidth = pageWidth - margin * 2;
3517
3779
  imgHeight = (canvas.height * usableWidth) / canvas.width;
3518
- usableHeight = pageHeight - margin * 2;
3780
+ usableHeight = pageHeight - margin * 2 - headerHeight;
3519
3781
  heightLeft = imgHeight;
3520
3782
  page = 0;
3521
3783
  while (heightLeft > 0) {
3784
+ if (headerConfig_1) {
3785
+ currentY = margin;
3786
+ // Only show image on first page
3787
+ if (page === 0 &&
3788
+ imageDataURL &&
3789
+ headerConfig_1.image &&
3790
+ imageWidth_1 > 0 &&
3791
+ imageHeight_1 > 0) {
3792
+ imgX = (_g = headerConfig_1.image.x) !== null && _g !== void 0 ? _g : margin;
3793
+ imgY = (_h = headerConfig_1.image.y) !== null && _h !== void 0 ? _h : currentY;
3794
+ imgW = imageWidth_1;
3795
+ imgH = imageHeight_1;
3796
+ finalX = imgX;
3797
+ if (headerConfig_1.image.alignment === "center") {
3798
+ finalX = (pageWidth - imgW) / 2;
3799
+ }
3800
+ else if (headerConfig_1.image.alignment === "right") {
3801
+ finalX = pageWidth - margin - imgW;
3802
+ }
3803
+ pdf.addImage(imageDataURL, "PNG", finalX, imgY, imgW, imgH);
3804
+ currentY = imgY + imgH + 2;
3805
+ }
3806
+ if (page === 0 && ((_j = headerConfig_1.text) === null || _j === void 0 ? void 0 : _j.value)) {
3807
+ pdf.setFontSize(12);
3808
+ pdf.setFont("helvetica", "bold");
3809
+ textY = (_k = headerConfig_1.text.y) !== null && _k !== void 0 ? _k : currentY + 3;
3810
+ textX = (_l = headerConfig_1.text.x) !== null && _l !== void 0 ? _l : margin;
3811
+ if (headerConfig_1.text.alignment === "center") {
3812
+ textX = pageWidth / 2;
3813
+ pdf.text(headerConfig_1.text.value, textX, textY, {
3814
+ align: "center",
3815
+ });
3816
+ }
3817
+ else if (headerConfig_1.text.alignment === "right") {
3818
+ textX = pageWidth - margin;
3819
+ pdf.text(headerConfig_1.text.value, textX, textY, {
3820
+ align: "right",
3821
+ });
3822
+ }
3823
+ else {
3824
+ pdf.text(headerConfig_1.text.value, textX, textY);
3825
+ }
3826
+ }
3827
+ }
3522
3828
  sourceY = page * usableHeight * (canvas.width / usableWidth);
3523
3829
  sourceHeight = usableHeight * (canvas.width / usableWidth);
3524
3830
  pageCanvas = document.createElement("canvas");
@@ -3527,31 +3833,40 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
3527
3833
  ctx = pageCanvas.getContext("2d");
3528
3834
  ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(canvas, 0, sourceY, canvas.width, sourceHeight, 0, 0, canvas.width, sourceHeight);
3529
3835
  pageData = pageCanvas.toDataURL("image/png");
3530
- pdf.addImage(pageData, "PNG", margin, margin, usableWidth, usableHeight, undefined, "FAST");
3836
+ pdf.addImage(pageData, "PNG", margin, margin + headerHeight, usableWidth, usableHeight, undefined, "FAST");
3531
3837
  heightLeft -= usableHeight;
3532
3838
  page++;
3533
3839
  if (heightLeft > 0)
3534
3840
  pdf.addPage();
3535
3841
  }
3536
- pdf.save("ExportReadPDF-".concat((0, moment_1.default)().format("YYYY-MM-DD-HH-mm-ss"), ".pdf"));
3842
+ if ((_o = (_m = props.organise) === null || _m === void 0 ? void 0 : _m.exportSettings) === null || _o === void 0 ? void 0 : _o.onExportReadPDFBlob) {
3843
+ pdfBlob = pdf.output("blob");
3844
+ props.organise.exportSettings.onExportReadPDFBlob(pdfBlob);
3845
+ }
3846
+ else {
3847
+ pdf.save("ExportReadPDF-".concat((0, moment_1.default)().format("YYYY-MM-DD-HH-mm-ss"), ".pdf"));
3848
+ }
3537
3849
  setNotification({
3538
3850
  type: true,
3539
3851
  title: "Success",
3540
3852
  msg: "PDF generated successfully",
3541
3853
  });
3542
- return [3 /*break*/, 4];
3543
- case 3:
3544
- err_22 = _a.sent();
3854
+ return [3 /*break*/, 14];
3855
+ case 12:
3856
+ err_25 = _p.sent();
3857
+ console.error("PDF export error:", err_25);
3545
3858
  setNotification({
3546
3859
  type: false,
3547
3860
  title: "Error",
3548
3861
  msg: "Failed to generate PDF",
3549
3862
  });
3550
- return [3 /*break*/, 4];
3551
- case 4:
3863
+ return [3 /*break*/, 14];
3864
+ case 13:
3552
3865
  setModalVisible(false);
3553
3866
  setExportPDFLoading(false);
3554
- return [2 /*return*/];
3867
+ setExportReadPDFLoading(false);
3868
+ return [7 /*endfinally*/];
3869
+ case 14: return [2 /*return*/];
3555
3870
  }
3556
3871
  });
3557
3872
  }); };
@@ -4085,10 +4400,26 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
4085
4400
  });
4086
4401
  var clonedSelectedData = (0, updateModule_1.handleClonedDataAttribute)(selectedData, structure, props.devSettings.server, false, remainId);
4087
4402
  isCanvas.map(function (eachCanvas) {
4088
- var _a;
4403
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
4089
4404
  canvasElement.push(react_1.default.createElement("div", { key: eachCanvas.id, className: "w-full my-6" },
4090
4405
  react_1.default.createElement("h3", { className: "text-lg font-medium text-gray-900 mb-4" }, eachCanvas.name),
4091
- react_1.default.createElement(canvas_1.Canvas, { label: eachCanvas.name, texts: (_a = clonedSelectedData[eachCanvas.id]) !== null && _a !== void 0 ? _a : [], backgroundImageUrl: eachCanvas.canvasImage, disabled: true })));
4406
+ react_1.default.createElement(canvas_1.Canvas, { label: eachCanvas.name, texts: eachCanvas.enableDraw || eachCanvas.enableImageUpload
4407
+ ? Array.isArray(clonedSelectedData[eachCanvas.id]) ||
4408
+ !clonedSelectedData[eachCanvas.id]
4409
+ ? (_a = clonedSelectedData[eachCanvas.id]) !== null && _a !== void 0 ? _a : []
4410
+ : (_b = clonedSelectedData[eachCanvas.id].texts) !== null && _b !== void 0 ? _b : []
4411
+ : Array.isArray(clonedSelectedData[eachCanvas.id])
4412
+ ? clonedSelectedData[eachCanvas.id]
4413
+ : (_d = (_c = clonedSelectedData[eachCanvas.id]) === null || _c === void 0 ? void 0 : _c.texts) !== null && _d !== void 0 ? _d : [], drawings: eachCanvas.enableDraw
4414
+ ? Array.isArray(clonedSelectedData[eachCanvas.id]) ||
4415
+ !clonedSelectedData[eachCanvas.id]
4416
+ ? []
4417
+ : (_e = clonedSelectedData[eachCanvas.id].drawings) !== null && _e !== void 0 ? _e : []
4418
+ : [], backgroundImageUrl: eachCanvas.enableImageUpload &&
4419
+ ((_g = (_f = clonedSelectedData[eachCanvas.id]) === null || _f === void 0 ? void 0 : _f.backgroundImage) === null || _g === void 0 ? void 0 : _g.token)
4420
+ ? // If backgroundImage has token, construct URL from token and fileName
4421
+ (0, blobModule_1.renderImageUrlFromPath)(devSettings.imageEndpoint, (_h = eachCanvas.imageCollectionName) !== null && _h !== void 0 ? _h : "", ((_j = props.id) !== null && _j !== void 0 ? _j : "") + "%2FbaseCanvas", clonedSelectedData[eachCanvas.id].backgroundImage.fileName, clonedSelectedData[eachCanvas.id].backgroundImage.token, devSettings.bucketName)
4422
+ : eachCanvas.canvasImage, readOnly: true })));
4092
4423
  return null;
4093
4424
  });
4094
4425
  return canvasElement;
@@ -5264,7 +5595,9 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
5264
5595
  }
5265
5596
  };
5266
5597
  var renderFloatingGroupNav = function () {
5267
- if (!showReadFloatingNav_1 || allTabSections_1.length === 0)
5598
+ if (!showReadFloatingNav_1 ||
5599
+ allTabSections_1.length === 0 ||
5600
+ exportReadPDFLoading)
5268
5601
  return null;
5269
5602
  return (react_1.default.createElement(react_1.default.Fragment, null,
5270
5603
  !readFloatingNav && (react_1.default.createElement("div", { className: "fixed bottom-24 right-2 p-2 flex flex-col gap-y-2 bg-white/10 backdrop-blur-md rounded-md text-right z-[100] sm:bottom-10 md:gap-y-4 max-h-[33vh] overflow-y-auto" }, allTabSections_1.map(function (tabKey, index) {
@@ -5860,7 +6193,6 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
5860
6193
  : undefined)),
5861
6194
  react_1.default.createElement("div", { className: "flex justify-end pt-8" },
5862
6195
  filterObjectModel.type === "listObject" &&
5863
- selectedObjectId &&
5864
6196
  props.type !== "read" && (react_1.default.createElement(button_1.Button, { className: "mr-5", text: "Delete", type: "danger", onClick: handleRemoveObjectListData })),
5865
6197
  react_1.default.createElement(button_1.Button, { text: "".concat(props.type === "read" ? "Close" : "Submit"), type: "normal", onClick: function () { return __awaiter(void 0, void 0, void 0, function () {
5866
6198
  var _a;