oa-componentbook 1.0.1-stage.4 → 1.0.1-stage.400

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 (157) hide show
  1. package/build/components/oa-component-accordion/Accordion.js +129 -40
  2. package/build/components/oa-component-accordion/styles.js +2 -2
  3. package/build/components/oa-component-button/CustomButton.js +24 -19
  4. package/build/components/oa-component-button/styles.js +1 -1
  5. package/build/components/oa-component-checkbox/CustomCheckBox.js +20 -17
  6. package/build/components/oa-component-checkbox/styles.js +1 -1
  7. package/build/components/oa-component-datepicker/CustomDatePicker.js +37 -26
  8. package/build/components/oa-component-drawer/CustomDrawer.js +2 -0
  9. package/build/components/oa-component-dropdown/CustomDropdown.js +16 -4
  10. package/build/components/oa-component-feedback-form/FeedbackForm.js +75 -0
  11. package/build/components/oa-component-feedback-tooltip/FeedbackTooltip.js +69 -0
  12. package/build/components/oa-component-icons/MaterialIcon.js +1 -1
  13. package/build/components/oa-component-info/CustomInfo.js +9 -4
  14. package/build/components/oa-component-info/styles.js +3 -3
  15. package/build/components/oa-component-modal/CustomModal.js +51 -46
  16. package/build/components/oa-component-modal/styles.js +3 -2
  17. package/build/components/oa-component-pagination/CustomPagination.js +111 -0
  18. package/build/components/oa-component-pagination/styles.js +12 -0
  19. package/build/components/oa-component-select/CustomSelect.js +116 -56
  20. package/build/components/oa-component-steps/CustomSteps.js +117 -0
  21. package/build/components/oa-component-steps/styles.js +12 -0
  22. package/build/components/oa-component-table/CustomTable.js +28 -5
  23. package/build/components/oa-component-table/CustomTableV1.js +610 -0
  24. package/build/components/oa-component-table/styles.js +1 -1
  25. package/build/components/oa-component-table/stylesV1.js +19 -0
  26. package/build/components/oa-component-tabs/CustomTabs.js +1 -1
  27. package/build/components/oa-component-tag/CustomTag.js +29 -11
  28. package/build/components/oa-component-tag/styles.js +30 -3
  29. package/build/components/oa-component-textarea/{TextArea.js → CustomTextArea.js} +4 -4
  30. package/build/components/oa-component-tooltip/CustomTooltip.js +8 -4
  31. package/build/components/oa-component-upload/CustomUpload.js +120 -40
  32. package/build/components/oa-component-viewer/CustomViewer.js +3 -1
  33. package/build/dev/oa-component-document-viewer/CustomDocumentViewer.js +367 -0
  34. package/build/dev/oa-component-document-viewer/styles.js +12 -0
  35. package/build/dev/oa-component-upload/CustomUpload.js +3 -0
  36. package/build/dev/oa-widget-document-modal/DocumentSideModal.js +166 -0
  37. package/build/dev/oa-widget-document-modal/styles.js +12 -0
  38. package/build/dev/oa-widget-document-side-drawer/DocumentSideDrawer.js +196 -0
  39. package/build/dev/oa-widget-document-side-drawer/styles.js +12 -0
  40. package/build/global-css/GlobalCss.js +2 -1
  41. package/build/global-css/GridLayout.js +1 -1
  42. package/build/global-css/commonStyles.js +11 -0
  43. package/build/images/Car.png +0 -0
  44. package/build/images/TwoWheeler.png +0 -0
  45. package/build/images/astronaut_emptystate.png +0 -0
  46. package/build/images/exportGrp01.png +0 -0
  47. package/build/images/exportGrp02.png +0 -0
  48. package/build/images/exportGrp03.png +0 -0
  49. package/build/images/oaChat.svg +5 -0
  50. package/build/images/outOfStock.png +0 -0
  51. package/build/index.js +131 -5
  52. package/build/layout/DetailDataLayout/DetailDataLayout.js +20 -0
  53. package/build/layout/DetailDataLayout/components/Form.js +22 -0
  54. package/build/layout/DetailDataLayout/components/Header.js +32 -0
  55. package/build/layout/DetailDataLayout/style.css +9 -0
  56. package/build/layout/DetailDataLayout/styles.js +12 -0
  57. package/build/layout/EntityOverviewLayout/EntityOverviewLayout.js +235 -0
  58. package/build/layout/EntityOverviewLayout/reducer/entityOverviewLayoutReducer.js +63 -0
  59. package/build/layout/EntityOverviewLayout/styles.js +13 -0
  60. package/build/layout/GenricLayOut/GenricLayOut.js +2314 -0
  61. package/build/layout/GenricLayOut/components/AppliedFilters.js +91 -0
  62. package/build/layout/GenricLayOut/components/CardList.js +34 -0
  63. package/build/layout/GenricLayOut/components/DropdownSearch.js +48 -0
  64. package/build/layout/GenricLayOut/components/Header.js +74 -0
  65. package/build/layout/GenricLayOut/components/Modal.js +93 -0
  66. package/build/layout/GenricLayOut/components/ProfileSection.js +87 -0
  67. package/build/layout/GenricLayOut/components/Search.js +51 -0
  68. package/build/layout/GenricLayOut/components/StaticFilter.css +73 -0
  69. package/build/layout/GenricLayOut/components/StaticFilter.js +37 -0
  70. package/build/layout/GenricLayOut/reducer/layoutReducer.js +294 -0
  71. package/build/layout/GenricLayOut/resolver/staticConfigResolver.js +98 -0
  72. package/build/layout/GenricLayOut/styles.js +30 -0
  73. package/build/layout/paymentAndConsent/CancelScreen.js +46 -0
  74. package/build/layout/paymentAndConsent/ConsentCard.js +68 -0
  75. package/build/layout/paymentAndConsent/DetailsCard.js +75 -0
  76. package/build/layout/paymentAndConsent/DetailsList.js +38 -0
  77. package/build/layout/paymentAndConsent/Header.js +33 -0
  78. package/build/layout/paymentAndConsent/InProgressScreen.js +46 -0
  79. package/build/layout/paymentAndConsent/Loader.js +21 -0
  80. package/build/layout/paymentAndConsent/Modal.js +28 -0
  81. package/build/layout/paymentAndConsent/PaymentAndConsent.js +22 -0
  82. package/build/layout/paymentAndConsent/PaymentCard.js +83 -0
  83. package/build/layout/paymentAndConsent/Section.js +34 -0
  84. package/build/layout/paymentAndConsent/SuccessScreen.js +46 -0
  85. package/build/layout/paymentAndConsent/TimeLineCard.js +28 -0
  86. package/build/layout/paymentAndConsent/TncList.js +32 -0
  87. package/build/layout/paymentAndConsent/style.js +12 -0
  88. package/build/utils/download-file.js +23 -0
  89. package/build/widgets/oa-form-widget/FormWidget.js +576 -0
  90. package/build/widgets/oa-form-widget/FormWidgetStyle.js +18 -0
  91. package/build/widgets/oa-widget-add-spare-part/AddSparePartCollapseWidget.js +80 -16
  92. package/build/widgets/oa-widget-add-spare-part/AddSparePartWidget.js +50 -7
  93. package/build/widgets/oa-widget-address/AddressWidget.js +12 -17
  94. package/build/widgets/oa-widget-approval/ApprovalWidget.js +19 -11
  95. package/build/widgets/oa-widget-approval/ApprovalWidgetNew.js +492 -0
  96. package/build/widgets/oa-widget-approval/styles.js +2 -2
  97. package/build/widgets/oa-widget-chat/ChatWidget.js +5 -5
  98. package/build/widgets/oa-widget-close-claim/CloseClaimWidget.js +17 -5
  99. package/build/widgets/oa-widget-collapsible-key-value/CollapsibleKeyValueWidget.js +396 -0
  100. package/build/widgets/oa-widget-collapsible-key-value/styles.js +16 -0
  101. package/build/widgets/oa-widget-content-panel/ContentPanel.js +82 -0
  102. package/build/widgets/oa-widget-content-panel/styles.js +12 -0
  103. package/build/widgets/oa-widget-customer-rating-card/CustomerRatingCard.js +5 -5
  104. package/build/widgets/oa-widget-detailcard/styles.js +1 -1
  105. package/build/widgets/oa-widget-document-upload/DocUploadWidget.js +6 -9
  106. package/build/widgets/oa-widget-dropdown-search-input/DropdownSearchInput.js +53 -19
  107. package/build/widgets/oa-widget-dropdown-search-input/styles.js +1 -1
  108. package/build/widgets/oa-widget-feedback/FeedbackWidget.js +83 -0
  109. package/build/widgets/oa-widget-feedback/styles.js +13 -0
  110. package/build/widgets/oa-widget-guide/GuideWidget.js +70 -0
  111. package/build/widgets/oa-widget-guide/GuideWidgetStyle.js +12 -0
  112. package/build/widgets/oa-widget-hub-automation-modal/HubAutomationDeleteBiker.js +24 -0
  113. package/build/widgets/oa-widget-hub-automation-modal/HubAutomationModal.js +34 -0
  114. package/build/widgets/oa-widget-hub-automation-modal/HubAutomationModalStyle.js +13 -0
  115. package/build/widgets/oa-widget-image-carousel/ImageCarouselWidget.js +256 -0
  116. package/build/widgets/oa-widget-image-carousel/styles.js +23 -0
  117. package/build/widgets/oa-widget-image-gallery/FullscreenViewer.js +169 -0
  118. package/build/widgets/oa-widget-image-gallery/ImageGallery.js +87 -0
  119. package/build/widgets/oa-widget-image-gallery/ThumbnailGrid.js +146 -0
  120. package/build/widgets/oa-widget-image-gallery/imageCache.js +15 -0
  121. package/build/widgets/oa-widget-image-gallery/imageGalleryStyle.js +16 -0
  122. package/build/widgets/oa-widget-item-info-card/InfoCardListWidget.js +60 -0
  123. package/build/widgets/oa-widget-item-info-card/ItemInfoCardWidget.js +77 -0
  124. package/build/widgets/oa-widget-item-info-card/styles.css +50 -0
  125. package/build/widgets/oa-widget-item-info-card/styles.js +14 -0
  126. package/build/widgets/oa-widget-key-value/KeyValueWidget.js +46 -12
  127. package/build/widgets/oa-widget-key-value/styles.js +1 -1
  128. package/build/widgets/oa-widget-kpi/KPICardWidget.js +86 -0
  129. package/build/widgets/oa-widget-kpi/styles.js +12 -0
  130. package/build/widgets/oa-widget-map-base-location/AddressDetails.js +21 -7
  131. package/build/widgets/oa-widget-map-base-location/AddressForm.js +32 -5
  132. package/build/widgets/oa-widget-map-base-location/MapBaseLocation.js +9 -3
  133. package/build/widgets/oa-widget-map-base-location/MapComponent.js +17 -2
  134. package/build/widgets/oa-widget-membershipcard/MembershipCard.js +14 -3
  135. package/build/widgets/oa-widget-membershipcard/styles.js +1 -1
  136. package/build/widgets/oa-widget-notes/NotesWidget.js +32 -30
  137. package/build/widgets/oa-widget-notes/styles.js +4 -3
  138. package/build/widgets/oa-widget-profile-data/ProfileDataWidget.js +117 -0
  139. package/build/widgets/oa-widget-profile-data/styles.js +13 -0
  140. package/build/widgets/oa-widget-progressive-steps/ProgressiveStepsWidget.js +362 -0
  141. package/build/widgets/oa-widget-progressive-steps/styles.js +12 -0
  142. package/build/widgets/oa-widget-reimbursement-breakup/ReimbursementBreakupWidget.js +18 -9
  143. package/build/widgets/oa-widget-reimbursement-breakup/styles.js +1 -1
  144. package/build/widgets/oa-widget-reupload-drawer/ReUploadDrawer.js +164 -0
  145. package/build/widgets/oa-widget-select-list-item-modal/SelectListItemModal.js +79 -0
  146. package/build/widgets/oa-widget-sidebar/SidebarWidget.js +175 -0
  147. package/build/widgets/oa-widget-sidebar/components/Header.js +33 -0
  148. package/build/widgets/oa-widget-sidebar/styles.js +13 -0
  149. package/build/widgets/oa-widget-spare-part/SparePartsWidget.js +57 -29
  150. package/build/widgets/oa-widget-track-shipment/TrackShipmentWidget.js +28 -6
  151. package/build/widgets/oa-widget-track-shipment-list/TrackShipmentWidgetList.js +103 -0
  152. package/build/widgets/oa-widget-track-shipment-list/fn.js +81 -0
  153. package/build/widgets/oa-widget-user-management/UserManagementWidget.js +352 -0
  154. package/build/widgets/oa-widget-user-management/styles.js +15 -0
  155. package/package.json +7 -2
  156. package/build/dev/oa-widget-track-shipment/TrackShipmentWidget.js +0 -195
  157. /package/build/{dev/oa-widget-track-shipment → widgets/oa-widget-track-shipment-list}/styles.js +0 -0
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.description.js");
4
+ require("core-js/modules/es.weak-map.js");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ require("core-js/modules/web.dom-collections.iterator.js");
10
+ require("core-js/modules/es.promise.js");
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+ var _antd = require("antd");
14
+ var _icons = require("@ant-design/icons");
15
+ var _TouchAppRounded = _interopRequireDefault(require("@material-ui/icons/TouchAppRounded"));
16
+ var _reactZoomPanPinch = require("react-zoom-pan-pinch");
17
+ var _Fullscreen = _interopRequireDefault(require("@material-ui/icons/Fullscreen"));
18
+ var _ArrowForwardRounded = _interopRequireDefault(require("@material-ui/icons/ArrowForwardRounded"));
19
+ var _ArrowBackRounded = _interopRequireDefault(require("@material-ui/icons/ArrowBackRounded"));
20
+ var _CustomButton = _interopRequireDefault(require("../../components/oa-component-button/CustomButton"));
21
+ var _CustomModal = _interopRequireDefault(require("../../components/oa-component-modal/CustomModal"));
22
+ var _styles = require("./styles");
23
+ var _MaterialIcon = _interopRequireDefault(require("../../components/oa-component-icons/MaterialIcon"));
24
+ var _CustomLoader = _interopRequireDefault(require("../../components/oa-component-loader/CustomLoader"));
25
+ var _CustomDrawer = _interopRequireDefault(require("../../components/oa-component-drawer/CustomDrawer"));
26
+ var _Typography = _interopRequireDefault(require("../../components/oa-component-typography/Typography"));
27
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
29
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
30
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
31
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
32
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
33
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
34
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
35
+ /**
36
+ * ImageCarouselWidget is a component that displays images in a carousel and allows zooming and switching between original and heatmap images.
37
+ * @param {object} props The props passed to the component
38
+ * @param {array} [props.images={}] An object with keys representing image types and values as arrays of images
39
+ * @param {boolean} [props.visible=false] Whether the modal is visible
40
+ * @param {function} [props.onClose] A function that is called when the modal is closed
41
+ * @returns {object} A React component
42
+ */
43
+ function ImageCarouselWidget(_ref) {
44
+ let {
45
+ images = [],
46
+ visible,
47
+ onClose,
48
+ headingSuffixText,
49
+ typeToNamemapping,
50
+ s3DownloadApiUrl,
51
+ initialImageType
52
+ } = _ref;
53
+ const [currentIndex, setCurrentIndex] = (0, _react.useState)(0);
54
+ const [showHeatmap, setShowHeatmap] = (0, _react.useState)(initialImageType === 'heatmap');
55
+ const [fullscreen, setFullscreen] = (0, _react.useState)(false);
56
+ const [imageUrls, setImageUrls] = (0, _react.useState)([]);
57
+ const [loading, setLoading] = (0, _react.useState)(false);
58
+ const carouselRef = _react.default.useRef(null);
59
+
60
+ // Fetch image URL by UUID
61
+ const fetchImageUrl = uuid => fetch("".concat(s3DownloadApiUrl).concat(uuid)).then(response => response.json()).then(data => {
62
+ var _data$data;
63
+ return data === null || data === void 0 || (_data$data = data.data) === null || _data$data === void 0 ? void 0 : _data$data.downloadUrl;
64
+ }) // Assuming the API response has `src` key for the image URL
65
+ .catch(error => {
66
+ console.error('Error fetching image URL:', error);
67
+ return ''; // Return an empty string if there's an error
68
+ });
69
+
70
+ // Fetch image URLs for all grouped images
71
+ (0, _react.useEffect)(() => {
72
+ const fetchImages = async () => {
73
+ setLoading(true);
74
+ const urls = await Promise.all(images.map(async img => {
75
+ const imageSrcUrl = await fetchImageUrl(showHeatmap ? img.heatmapDocId : img.originalDocId); // Fetch URL for the image
76
+ return _objectSpread(_objectSpread({}, img), showHeatmap ? {
77
+ heatmapImageUrl: imageSrcUrl
78
+ } : {
79
+ originalImageUrl: imageSrcUrl
80
+ });
81
+ }));
82
+ setImageUrls(urls);
83
+ setLoading(false);
84
+ };
85
+ fetchImages();
86
+ }, [images === null || images === void 0 ? void 0 : images.length]);
87
+
88
+ // Enter fullscreen for the whole document
89
+ const enterFullscreen = () => {
90
+ if (document.documentElement.requestFullscreen) {
91
+ document.documentElement.requestFullscreen();
92
+ } else if (document.documentElement.mozRequestFullScreen) {
93
+ // Firefox
94
+ document.documentElement.mozRequestFullScreen();
95
+ } else if (document.documentElement.webkitRequestFullscreen) {
96
+ // Chrome, Safari, Opera
97
+ document.documentElement.webkitRequestFullscreen();
98
+ } else if (document.documentElement.msRequestFullscreen) {
99
+ // IE/Edge
100
+ document.documentElement.msRequestFullscreen();
101
+ }
102
+ setFullscreen(true);
103
+ };
104
+
105
+ // Exit fullscreen
106
+ const exitFullscreen = () => {
107
+ if (document.exitFullscreen) {
108
+ document.exitFullscreen();
109
+ } else if (document.mozCancelFullScreen) {
110
+ // Firefox
111
+ document.mozCancelFullScreen();
112
+ } else if (document.webkitExitFullscreen) {
113
+ // Chrome, Safari and Opera
114
+ document.webkitExitFullscreen();
115
+ } else if (document.msExitFullscreen) {
116
+ // IE/Edge
117
+ document.msExitFullscreen();
118
+ }
119
+ setFullscreen(false);
120
+ };
121
+ const handleFullscreenToggle = () => {
122
+ if (fullscreen) {
123
+ exitFullscreen();
124
+ } else {
125
+ enterFullscreen();
126
+ }
127
+ };
128
+ const handleImageChange = newIndex => {
129
+ setCurrentIndex(newIndex);
130
+ };
131
+ const handleShowHeatmap = async () => {
132
+ const currentViewType = !showHeatmap; // Toggle the current view mode (show heatmap or not)
133
+ setLoading(true);
134
+
135
+ // Fetching URLs for all images based on the new view mode
136
+ const updatedImages = await Promise.all(imageUrls.map(async img => {
137
+ var _img$heatmapImageUrl, _img$originalImageUrl;
138
+ // Check if the image is already fetched
139
+ const isImageAlreadyFetched = currentViewType && ((_img$heatmapImageUrl = img.heatmapImageUrl) === null || _img$heatmapImageUrl === void 0 ? void 0 : _img$heatmapImageUrl.length) > 0 || !currentViewType && ((_img$originalImageUrl = img.originalImageUrl) === null || _img$originalImageUrl === void 0 ? void 0 : _img$originalImageUrl.length) > 0;
140
+ // Fetch the image URL only if it's not already fetched
141
+ if (!isImageAlreadyFetched) {
142
+ const imageSrcUrl = await fetchImageUrl(currentViewType ? img.heatmapDocId : img.originalDocId);
143
+ // Return the updated image object with the appropriate URL
144
+ return _objectSpread(_objectSpread({}, img), currentViewType ? {
145
+ heatmapImageUrl: imageSrcUrl
146
+ } : {
147
+ originalImageUrl: imageSrcUrl
148
+ });
149
+ }
150
+ // If image is already fetched, return it as is
151
+ return img;
152
+ }));
153
+
154
+ // Update state with the new image URLs
155
+ setImageUrls(updatedImages);
156
+ setLoading(false);
157
+ setShowHeatmap(currentViewType); // Toggle the view mode
158
+ };
159
+ const currentImage = imageUrls[currentIndex];
160
+
161
+ // Conditionally hide the buttons when on the first or last image
162
+ const isFirstImage = currentIndex === 0;
163
+ const isLastImage = currentIndex === imageUrls.length - 1;
164
+ return /*#__PURE__*/_react.default.createElement(_styles.ImageCarouselModalStyle, null, /*#__PURE__*/_react.default.createElement(_styles.GlobalStyleForImageCarousel, null), /*#__PURE__*/_react.default.createElement(_CustomModal.default, {
165
+ open: visible,
166
+ onCancel: onClose,
167
+ footer: null,
168
+ className: fullscreen ? 'fullscreenModal imageCarouselModalStyle' : 'imageCarouselModalStyle'
169
+ }, /*#__PURE__*/_react.default.createElement(_CustomLoader.default, {
170
+ spinning: loading
171
+ }, !fullscreen && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
172
+ className: "type-t2-700",
173
+ color: "primary-content"
174
+ }, typeToNamemapping && typeToNamemapping[currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType] ? typeToNamemapping[currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType] : currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType, ' ', headingSuffixText), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
175
+ className: "type-b3-400",
176
+ color: "negative"
177
+ }, currentImage === null || currentImage === void 0 ? void 0 : currentImage.rejectReason)), /*#__PURE__*/_react.default.createElement("div", {
178
+ className: "margin-top-24 margin-bottom-12"
179
+ }, /*#__PURE__*/_react.default.createElement(_CustomButton.default, {
180
+ onClick: handleShowHeatmap,
181
+ type: "text-only",
182
+ label: showHeatmap ? 'View Original Image' : 'View Heatmap Image'
183
+ })), /*#__PURE__*/_react.default.createElement(_styles.ImageCarouselModalStyle, null, /*#__PURE__*/_react.default.createElement(_antd.Carousel, {
184
+ ref: carouselRef,
185
+ afterChange: handleImageChange,
186
+ dots: true,
187
+ infinite: true
188
+ }, imageUrls.map(img => /*#__PURE__*/_react.default.createElement("div", {
189
+ className: "carouselItem",
190
+ key: img.imageType
191
+ }, /*#__PURE__*/_react.default.createElement("div", {
192
+ className: "imageCarouselIconZoom"
193
+ }, /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
194
+ icon: _Fullscreen.default,
195
+ onClick: handleFullscreenToggle
196
+ })), /*#__PURE__*/_react.default.createElement("img", {
197
+ src: showHeatmap ? img.heatmapImageUrl : img.originalImageUrl,
198
+ alt: img.imageType,
199
+ style: {
200
+ width: '100%',
201
+ objectFit: 'contain'
202
+ }
203
+ })))), window.innerWidth > 600 && /*#__PURE__*/_react.default.createElement(_styles.CarouselButtons, null, /*#__PURE__*/_react.default.createElement("div", {
204
+ className: "sliderArrowSection"
205
+ }, !isFirstImage && /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
206
+ color: "primary-content",
207
+ className: "leftArrow",
208
+ size: 24,
209
+ icon: _ArrowBackRounded.default,
210
+ onClick: () => carouselRef.current.prev()
211
+ }), !isLastImage && /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
212
+ color: "primary-content",
213
+ className: "rightArrow",
214
+ size: 24,
215
+ icon: _ArrowForwardRounded.default,
216
+ onClick: () => carouselRef.current.next()
217
+ }))))), fullscreen && /*#__PURE__*/_react.default.createElement(_styles.FullscreenZoom, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
218
+ className: "type-t2-700",
219
+ color: "primary-background"
220
+ }, typeToNamemapping && typeToNamemapping[currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType] ? typeToNamemapping[currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType] : currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType, ' ', headingSuffixText), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
221
+ className: "type-b3-400",
222
+ color: "primary-background"
223
+ }, currentImage === null || currentImage === void 0 ? void 0 : currentImage.rejectReason)), /*#__PURE__*/_react.default.createElement(_styles.CloseButtonStyle, null, /*#__PURE__*/_react.default.createElement(_icons.CloseOutlined, {
224
+ onClick: handleFullscreenToggle
225
+ })), /*#__PURE__*/_react.default.createElement(_styles.ZoomImgBox, null, /*#__PURE__*/_react.default.createElement(_reactZoomPanPinch.TransformWrapper, null, /*#__PURE__*/_react.default.createElement(_reactZoomPanPinch.TransformComponent, null, /*#__PURE__*/_react.default.createElement("img", {
226
+ src: showHeatmap ? currentImage === null || currentImage === void 0 ? void 0 : currentImage.heatmapImageUrl : currentImage === null || currentImage === void 0 ? void 0 : currentImage.originalImageUrl,
227
+ alt: currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType
228
+ })))), /*#__PURE__*/_react.default.createElement("div", {
229
+ className: "pinchZoom"
230
+ }, /*#__PURE__*/_react.default.createElement("div", {
231
+ className: "margin-right-16"
232
+ }, /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
233
+ icon: _TouchAppRounded.default,
234
+ size: 20,
235
+ color: "primary-background"
236
+ })), /*#__PURE__*/_react.default.createElement(_Typography.default, {
237
+ className: "type-b2-400",
238
+ color: "primary-background"
239
+ }, "Pinch in/out to zoom"))))));
240
+ }
241
+ ImageCarouselWidget.propTypes = {
242
+ images: _propTypes.default.array.isRequired,
243
+ visible: _propTypes.default.bool.isRequired,
244
+ onClose: _propTypes.default.func.isRequired,
245
+ headingSuffixText: _propTypes.default.string,
246
+ typeToNamemapping: _propTypes.default.object,
247
+ s3DownloadApiUrl: _propTypes.default.string,
248
+ initialImageType: _propTypes.default.string
249
+ };
250
+ ImageCarouselWidget.defaultProps = {
251
+ headingSuffixText: 'Damage',
252
+ typeToNamemapping: {},
253
+ s3DownloadApiUrl: '',
254
+ initialImageType: 'heatmap'
255
+ };
256
+ var _default = exports.default = ImageCarouselWidget;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.weak-map.js");
4
+ require("core-js/modules/web.dom-collections.iterator.js");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.ZoomImgBox = exports.PinchZoom = exports.ImageCarouselWidgetStyle = exports.ImageCarouselModalStyle = exports.GlobalStyleForImageCarousel = exports.FullscreenZoom = exports.CloseButtonStyle = exports.CarouselStyle = exports.CarouselButtons = void 0;
9
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
10
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
14
+ var _default = exports.default = {};
15
+ const ImageCarouselWidgetStyle = exports.ImageCarouselWidgetStyle = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\n\n\n"])));
16
+ const CarouselStyle = exports.CarouselStyle = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n\n"])));
17
+ const ZoomImgBox = exports.ZoomImgBox = _styledComponents.default.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n\nheight: calc(100vh - 150px);\n display: flex;\n align-items: center;\n justify-content: center; margin-bottom: 12px;\n\n"])));
18
+ const PinchZoom = exports.PinchZoom = _styledComponents.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: center;\n align-items: center;\n"])));
19
+ const CloseButtonStyle = exports.CloseButtonStyle = _styledComponents.default.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n background: #fff;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: -12px;\n right: 0;\n cursor: pointer\n"])));
20
+ const FullscreenZoom = exports.FullscreenZoom = _styledComponents.default.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n .pinchZoom{ \n display: flex;\n justify-content: center;\n align-items: center;\n\n .closeBtn{background: #fff;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: -12px;\n right: 0;\n cursor: pointer;\n}\n}\n"])));
21
+ const ImageCarouselModalStyle = exports.ImageCarouselModalStyle = _styledComponents.default.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n\n.ant-carousel{ background:#F6F6F6; max-width:550px; padding:24px 48px 56px 48px; border-radius:16px;}\n\n\n\n.ant-carousel .slick-dots li {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n margin-inline: 4px;\n padding: 0;\n text-align: center;\n text-indent: -999px;\n vertical-align: top;\n}\n\n.ant-carousel .slick-dots li button {\n width: 10px;\n height: 10px;\n background: #959595;\n border: 0;\n opacity: 1;\n border-radius: 50%;\n}\n\n.ant-carousel .slick-dots li.slick-active button {background: #014FC5 !important;}\n.carouselItem{ display: flex !important;\n align-items: center;\n justify-content: center;}\n\n\n @media only screen and (max-width: 600px) {\n .imageCarouselIconZoom{display:flex !important;}\n .ant-carousel{ background: no-repeat;\n max-width: none;\n padding: 0;\n border-radius: 0;}\n\n}\n\n\n\n.imageCarouselIconZoom{background: #fff; display: none;\n border-radius: 4px;\n width: 24px;\n height: 24px;\n justify-content: center;\n align-items: center; right: 8px;\n position: absolute;\n top: 8px; z-index:9;\n}\n.imageCarouselIconZoom svg{font-size:20px !important; margin-top:3px;}\n.imageCarouselIconZoom button{ height: auto;\n line-height: normal;}\n.carouselItem {position: relative;}\n.carouselItem img{border-radius:8px;}\n\n.ant-carousel .slick-dots-bottom { bottom: -30px;}\n.carouselItem{height:100%};\n.slick-slide > div{height:100%;}\n.fullscreenModal .ant-modal-close{display:none;}\n.closeBtn{background: #fff;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: -12px;\n right: 0;\n cursor: pointer;}\n\n .zoomImgBox{display:block;}\n\n"])));
22
+ const GlobalStyleForImageCarousel = exports.GlobalStyleForImageCarousel = (0, _styledComponents.createGlobalStyle)(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n\n.imageCarouselModalStyle .ant-modal-body{max-height: none; height:100%;}\n.fullscreenModal .ant-modal-content{background:#000;}\n.fullscreenModal .ant-modal-close{display:none;}\n.ant-modal{ width:auto !important;}\n\n\n@media only screen and (max-width: 600px) {\n .imageCarouselModalStyle .ant-modal-content {top: 0; border-radius: 0px;}\n .slick-slide{height:calc(100vh - 210px) !important; background:#000; border-radius:8px;}\n\n}\n"])));
23
+ const CarouselButtons = exports.CarouselButtons = _styledComponents.default.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n\n.sliderArrowSection{position: absolute;\n top: 57%;\n width: 100%;}\n\n .leftArrow {\n position: absolute;\n left: 6px;\n top: 0;\n}\n .rightArrow{position: absolute;\n right: 6px;\n top: 0;}\n\n\n"])));
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.weak-map.js");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ require("core-js/modules/web.dom-collections.iterator.js");
9
+ require("core-js/modules/es.regexp.exec.js");
10
+ require("core-js/modules/es.string.match.js");
11
+ require("core-js/modules/es.string.starts-with.js");
12
+ require("core-js/modules/es.promise.js");
13
+ var _react = _interopRequireWildcard(require("react"));
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+ var _reactZoomPanPinch = require("react-zoom-pan-pinch");
16
+ var _ArrowBackIosRounded = _interopRequireDefault(require("@material-ui/icons/ArrowBackIosRounded"));
17
+ var _ArrowForwardIosRounded = _interopRequireDefault(require("@material-ui/icons/ArrowForwardIosRounded"));
18
+ var _ArrowBackRounded = _interopRequireDefault(require("@material-ui/icons/ArrowBackRounded"));
19
+ var _CustomButton = _interopRequireDefault(require("../../components/oa-component-button/CustomButton"));
20
+ var _CustomLoader = _interopRequireDefault(require("../../components/oa-component-loader/CustomLoader"));
21
+ var _imageCache = require("./imageCache");
22
+ var _MaterialIcon = _interopRequireDefault(require("../../components/oa-component-icons/MaterialIcon"));
23
+ var _imageGalleryStyle = require("./imageGalleryStyle");
24
+ var _Typography = _interopRequireDefault(require("../../components/oa-component-typography/Typography"));
25
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
27
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
28
+ const styles = {
29
+ viewer: {
30
+ position: 'relative',
31
+ textAlign: 'center',
32
+ height: '100%',
33
+ width: '100%',
34
+ display: 'flex',
35
+ alignItems: 'center',
36
+ justifyContent: 'center'
37
+ }
38
+ };
39
+ function FullscreenViewer(_ref) {
40
+ var _images$currentIndex;
41
+ let {
42
+ images,
43
+ currentIndex,
44
+ onClose,
45
+ onNavigate,
46
+ downloadDocumentId,
47
+ allowIndividualDownload,
48
+ fetchImage
49
+ } = _ref;
50
+ const [loaded, setLoaded] = (0, _react.useState)(false);
51
+ const [resolvedSrc, setResolvedSrc] = (0, _react.useState)(null);
52
+ const imageUrl = (_images$currentIndex = images[currentIndex]) === null || _images$currentIndex === void 0 ? void 0 : _images$currentIndex.originalImageUrl;
53
+ (0, _react.useEffect)(() => {
54
+ let isMounted = true;
55
+ setLoaded(false);
56
+ setResolvedSrc(null);
57
+ const isDirectImage = (imageUrl === null || imageUrl === void 0 ? void 0 : imageUrl.match(/\.(jpg|jpeg|png|gif|webp|svg|bmp)$/i)) || (imageUrl === null || imageUrl === void 0 ? void 0 : imageUrl.startsWith('data:image'));
58
+ const resolveImage = async () => {
59
+ if (!imageUrl) return;
60
+ try {
61
+ const cacheKey = imageUrl;
62
+ const cached = (0, _imageCache.getCachedImage)(cacheKey);
63
+ if (cached) {
64
+ setResolvedSrc(cached);
65
+ return;
66
+ }
67
+ if (isDirectImage) {
68
+ setResolvedSrc(imageUrl);
69
+ (0, _imageCache.setCachedImage)(cacheKey, imageUrl);
70
+ } else if (typeof fetchImage === 'function') {
71
+ const result = await fetchImage(imageUrl);
72
+ if (isMounted) setResolvedSrc(result);
73
+ (0, _imageCache.setCachedImage)(cacheKey, result);
74
+ } else {
75
+ console.warn('No fetchImage prop provided for non-direct image:', imageUrl);
76
+ }
77
+ } catch (err) {
78
+ console.error('Error fetching image:', err);
79
+ }
80
+ };
81
+ resolveImage();
82
+ return () => {
83
+ isMounted = false;
84
+ };
85
+ }, [imageUrl, fetchImage]);
86
+ if (!images[currentIndex]) return null;
87
+ const handlePrev = () => {
88
+ if (typeof onNavigate === 'function') onNavigate('prev');
89
+ };
90
+ const handleNext = () => {
91
+ if (typeof onNavigate === 'function') onNavigate('next');
92
+ };
93
+ return /*#__PURE__*/_react.default.createElement(_imageGalleryStyle.FullScreenStyle, null, /*#__PURE__*/_react.default.createElement("div", {
94
+ className: "overlay"
95
+ }, /*#__PURE__*/_react.default.createElement("div", {
96
+ className: "header"
97
+ }, /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
98
+ onClick: onClose,
99
+ icon: _ArrowBackRounded.default,
100
+ size: 26,
101
+ color: "primary-background"
102
+ }), /*#__PURE__*/_react.default.createElement(_Typography.default, {
103
+ "data-test": "text",
104
+ typography: "type-b2-400",
105
+ color: "primary-background",
106
+ className: "title"
107
+ }, "Image", ' ', currentIndex + 1, ' ', "/", ' ', images.length)), /*#__PURE__*/_react.default.createElement("div", {
108
+ style: styles.viewer
109
+ }, /*#__PURE__*/_react.default.createElement(_CustomLoader.default, {
110
+ spinning: !loaded
111
+ }, /*#__PURE__*/_react.default.createElement(_reactZoomPanPinch.TransformWrapper, null, /*#__PURE__*/_react.default.createElement(_reactZoomPanPinch.TransformComponent, null, resolvedSrc && /*#__PURE__*/_react.default.createElement("img", {
112
+ src: resolvedSrc,
113
+ alt: "fullscreen",
114
+ onLoad: () => setLoaded(true),
115
+ style: {
116
+ maxWidth: '100%',
117
+ maxHeight: '80vh',
118
+ display: loaded ? 'block' : 'none'
119
+ }
120
+ })))), /*#__PURE__*/_react.default.createElement("div", {
121
+ className: "navButtonLeft",
122
+ onClick: handlePrev,
123
+ onKeyDown: e => e.key === 'Enter' && handlePrev(),
124
+ role: "button",
125
+ tabIndex: 0
126
+ }, /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
127
+ icon: _ArrowBackIosRounded.default,
128
+ size: 16,
129
+ color: "primary-background"
130
+ })), /*#__PURE__*/_react.default.createElement("div", {
131
+ className: "navButtonRight",
132
+ onClick: handleNext,
133
+ onKeyDown: e => e.key === 'Enter' && handleNext(),
134
+ role: "button",
135
+ tabIndex: 0
136
+ }, /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
137
+ icon: _ArrowForwardIosRounded.default,
138
+ size: 16,
139
+ color: "primary-background"
140
+ })), allowIndividualDownload && /*#__PURE__*/_react.default.createElement("div", {
141
+ role: "button",
142
+ className: "downloadAll",
143
+ tabIndex: 0,
144
+ onClick: () => downloadDocumentId(imageUrl),
145
+ onKeyDown: e => {
146
+ if (e.key === 'Enter' || e.key === ' ') {
147
+ downloadDocumentId(imageUrl);
148
+ }
149
+ }
150
+ }, "Download This Image"))));
151
+ }
152
+ FullscreenViewer.propTypes = {
153
+ images: _propTypes.default.arrayOf(_propTypes.default.shape({
154
+ originalImageUrl: _propTypes.default.string.isRequired
155
+ })).isRequired,
156
+ currentIndex: _propTypes.default.number.isRequired,
157
+ onClose: _propTypes.default.func.isRequired,
158
+ onNavigate: _propTypes.default.func,
159
+ fetchImage: _propTypes.default.func,
160
+ downloadDocumentId: _propTypes.default.func,
161
+ allowIndividualDownload: _propTypes.default.bool
162
+ };
163
+ FullscreenViewer.defaultProps = {
164
+ onNavigate: () => {},
165
+ fetchImage: undefined,
166
+ downloadDocumentId: () => {},
167
+ allowIndividualDownload: false
168
+ };
169
+ var _default = exports.default = FullscreenViewer;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.weak-map.js");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ require("core-js/modules/web.dom-collections.iterator.js");
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _GetAppRounded = _interopRequireDefault(require("@material-ui/icons/GetAppRounded"));
12
+ var _ThumbnailGrid = _interopRequireDefault(require("./ThumbnailGrid"));
13
+ var _FullscreenViewer = _interopRequireDefault(require("./FullscreenViewer"));
14
+ var _CustomButton = _interopRequireDefault(require("../../components/oa-component-button/CustomButton"));
15
+ var _MaterialIcon = _interopRequireDefault(require("../../components/oa-component-icons/MaterialIcon"));
16
+ var _imageGalleryStyle = require("./imageGalleryStyle");
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
19
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
+ function ImageGallery(_ref) {
21
+ let {
22
+ images,
23
+ fetchImage,
24
+ allowIndividualDownload,
25
+ downloadDocumentId,
26
+ actionButtonFragment
27
+ } = _ref;
28
+ const [activeIndex, setActiveIndex] = (0, _react.useState)(null);
29
+ const handleImageClick = index => {
30
+ setActiveIndex(index);
31
+ };
32
+ const handleCloseViewer = () => {
33
+ setActiveIndex(null);
34
+ };
35
+ (0, _react.useEffect)(() => {
36
+ const handleKeyDown = event => {
37
+ if (event.key === 'Escape') {
38
+ event.stopPropagation(); // Optional: prevent bubbling
39
+ handleCloseViewer();
40
+ }
41
+ };
42
+ document.addEventListener('keydown', handleKeyDown, {
43
+ capture: true
44
+ });
45
+ return () => {
46
+ document.removeEventListener('keydown', handleKeyDown, {
47
+ capture: true
48
+ });
49
+ };
50
+ }, []);
51
+ const handleNavigationClick = type => {
52
+ if (type === 'prev') {
53
+ setActiveIndex(prevIndex => prevIndex > 0 ? prevIndex - 1 : images.length - 1);
54
+ } else if (type === 'next') {
55
+ setActiveIndex(prevIndex => prevIndex < images.length - 1 ? prevIndex + 1 : 0);
56
+ }
57
+ };
58
+ return /*#__PURE__*/_react.default.createElement(_imageGalleryStyle.StylesContainer, null, typeof actionButtonFragment === 'function' && /*#__PURE__*/_react.default.createElement("div", {
59
+ className: "topBottomGallarySec"
60
+ }, actionButtonFragment()), /*#__PURE__*/_react.default.createElement(_ThumbnailGrid.default, {
61
+ fetchImage: fetchImage,
62
+ images: images,
63
+ onImageClick: handleImageClick
64
+ }), activeIndex !== null && /*#__PURE__*/_react.default.createElement(_FullscreenViewer.default, {
65
+ fetchImage: fetchImage,
66
+ allowIndividualDownload: allowIndividualDownload,
67
+ downloadDocumentId: downloadDocumentId,
68
+ images: images,
69
+ currentIndex: activeIndex,
70
+ onClose: handleCloseViewer,
71
+ onNavigate: handleNavigationClick
72
+ }));
73
+ }
74
+ ImageGallery.propTypes = {
75
+ images: _propTypes.default.array.isRequired,
76
+ fetchImage: _propTypes.default.func,
77
+ allowIndividualDownload: _propTypes.default.bool,
78
+ downloadDocumentId: _propTypes.default.func,
79
+ actionButtonFragment: _propTypes.default.node
80
+ };
81
+ ImageGallery.defaultProps = {
82
+ fetchImage: () => {},
83
+ allowIndividualDownload: false,
84
+ downloadDocumentId: () => {},
85
+ actionButtonFragment: null
86
+ };
87
+ var _default = exports.default = ImageGallery;