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.
- package/build/components/oa-component-accordion/Accordion.js +129 -40
- package/build/components/oa-component-accordion/styles.js +2 -2
- package/build/components/oa-component-button/CustomButton.js +24 -19
- package/build/components/oa-component-button/styles.js +1 -1
- package/build/components/oa-component-checkbox/CustomCheckBox.js +20 -17
- package/build/components/oa-component-checkbox/styles.js +1 -1
- package/build/components/oa-component-datepicker/CustomDatePicker.js +37 -26
- package/build/components/oa-component-drawer/CustomDrawer.js +2 -0
- package/build/components/oa-component-dropdown/CustomDropdown.js +16 -4
- package/build/components/oa-component-feedback-form/FeedbackForm.js +75 -0
- package/build/components/oa-component-feedback-tooltip/FeedbackTooltip.js +69 -0
- package/build/components/oa-component-icons/MaterialIcon.js +1 -1
- package/build/components/oa-component-info/CustomInfo.js +9 -4
- package/build/components/oa-component-info/styles.js +3 -3
- package/build/components/oa-component-modal/CustomModal.js +51 -46
- package/build/components/oa-component-modal/styles.js +3 -2
- package/build/components/oa-component-pagination/CustomPagination.js +111 -0
- package/build/components/oa-component-pagination/styles.js +12 -0
- package/build/components/oa-component-select/CustomSelect.js +116 -56
- package/build/components/oa-component-steps/CustomSteps.js +117 -0
- package/build/components/oa-component-steps/styles.js +12 -0
- package/build/components/oa-component-table/CustomTable.js +28 -5
- package/build/components/oa-component-table/CustomTableV1.js +610 -0
- package/build/components/oa-component-table/styles.js +1 -1
- package/build/components/oa-component-table/stylesV1.js +19 -0
- package/build/components/oa-component-tabs/CustomTabs.js +1 -1
- package/build/components/oa-component-tag/CustomTag.js +29 -11
- package/build/components/oa-component-tag/styles.js +30 -3
- package/build/components/oa-component-textarea/{TextArea.js → CustomTextArea.js} +4 -4
- package/build/components/oa-component-tooltip/CustomTooltip.js +8 -4
- package/build/components/oa-component-upload/CustomUpload.js +120 -40
- package/build/components/oa-component-viewer/CustomViewer.js +3 -1
- package/build/dev/oa-component-document-viewer/CustomDocumentViewer.js +367 -0
- package/build/dev/oa-component-document-viewer/styles.js +12 -0
- package/build/dev/oa-component-upload/CustomUpload.js +3 -0
- package/build/dev/oa-widget-document-modal/DocumentSideModal.js +166 -0
- package/build/dev/oa-widget-document-modal/styles.js +12 -0
- package/build/dev/oa-widget-document-side-drawer/DocumentSideDrawer.js +196 -0
- package/build/dev/oa-widget-document-side-drawer/styles.js +12 -0
- package/build/global-css/GlobalCss.js +2 -1
- package/build/global-css/GridLayout.js +1 -1
- package/build/global-css/commonStyles.js +11 -0
- package/build/images/Car.png +0 -0
- package/build/images/TwoWheeler.png +0 -0
- package/build/images/astronaut_emptystate.png +0 -0
- package/build/images/exportGrp01.png +0 -0
- package/build/images/exportGrp02.png +0 -0
- package/build/images/exportGrp03.png +0 -0
- package/build/images/oaChat.svg +5 -0
- package/build/images/outOfStock.png +0 -0
- package/build/index.js +131 -5
- package/build/layout/DetailDataLayout/DetailDataLayout.js +20 -0
- package/build/layout/DetailDataLayout/components/Form.js +22 -0
- package/build/layout/DetailDataLayout/components/Header.js +32 -0
- package/build/layout/DetailDataLayout/style.css +9 -0
- package/build/layout/DetailDataLayout/styles.js +12 -0
- package/build/layout/EntityOverviewLayout/EntityOverviewLayout.js +235 -0
- package/build/layout/EntityOverviewLayout/reducer/entityOverviewLayoutReducer.js +63 -0
- package/build/layout/EntityOverviewLayout/styles.js +13 -0
- package/build/layout/GenricLayOut/GenricLayOut.js +2314 -0
- package/build/layout/GenricLayOut/components/AppliedFilters.js +91 -0
- package/build/layout/GenricLayOut/components/CardList.js +34 -0
- package/build/layout/GenricLayOut/components/DropdownSearch.js +48 -0
- package/build/layout/GenricLayOut/components/Header.js +74 -0
- package/build/layout/GenricLayOut/components/Modal.js +93 -0
- package/build/layout/GenricLayOut/components/ProfileSection.js +87 -0
- package/build/layout/GenricLayOut/components/Search.js +51 -0
- package/build/layout/GenricLayOut/components/StaticFilter.css +73 -0
- package/build/layout/GenricLayOut/components/StaticFilter.js +37 -0
- package/build/layout/GenricLayOut/reducer/layoutReducer.js +294 -0
- package/build/layout/GenricLayOut/resolver/staticConfigResolver.js +98 -0
- package/build/layout/GenricLayOut/styles.js +30 -0
- package/build/layout/paymentAndConsent/CancelScreen.js +46 -0
- package/build/layout/paymentAndConsent/ConsentCard.js +68 -0
- package/build/layout/paymentAndConsent/DetailsCard.js +75 -0
- package/build/layout/paymentAndConsent/DetailsList.js +38 -0
- package/build/layout/paymentAndConsent/Header.js +33 -0
- package/build/layout/paymentAndConsent/InProgressScreen.js +46 -0
- package/build/layout/paymentAndConsent/Loader.js +21 -0
- package/build/layout/paymentAndConsent/Modal.js +28 -0
- package/build/layout/paymentAndConsent/PaymentAndConsent.js +22 -0
- package/build/layout/paymentAndConsent/PaymentCard.js +83 -0
- package/build/layout/paymentAndConsent/Section.js +34 -0
- package/build/layout/paymentAndConsent/SuccessScreen.js +46 -0
- package/build/layout/paymentAndConsent/TimeLineCard.js +28 -0
- package/build/layout/paymentAndConsent/TncList.js +32 -0
- package/build/layout/paymentAndConsent/style.js +12 -0
- package/build/utils/download-file.js +23 -0
- package/build/widgets/oa-form-widget/FormWidget.js +576 -0
- package/build/widgets/oa-form-widget/FormWidgetStyle.js +18 -0
- package/build/widgets/oa-widget-add-spare-part/AddSparePartCollapseWidget.js +80 -16
- package/build/widgets/oa-widget-add-spare-part/AddSparePartWidget.js +50 -7
- package/build/widgets/oa-widget-address/AddressWidget.js +12 -17
- package/build/widgets/oa-widget-approval/ApprovalWidget.js +19 -11
- package/build/widgets/oa-widget-approval/ApprovalWidgetNew.js +492 -0
- package/build/widgets/oa-widget-approval/styles.js +2 -2
- package/build/widgets/oa-widget-chat/ChatWidget.js +5 -5
- package/build/widgets/oa-widget-close-claim/CloseClaimWidget.js +17 -5
- package/build/widgets/oa-widget-collapsible-key-value/CollapsibleKeyValueWidget.js +396 -0
- package/build/widgets/oa-widget-collapsible-key-value/styles.js +16 -0
- package/build/widgets/oa-widget-content-panel/ContentPanel.js +82 -0
- package/build/widgets/oa-widget-content-panel/styles.js +12 -0
- package/build/widgets/oa-widget-customer-rating-card/CustomerRatingCard.js +5 -5
- package/build/widgets/oa-widget-detailcard/styles.js +1 -1
- package/build/widgets/oa-widget-document-upload/DocUploadWidget.js +6 -9
- package/build/widgets/oa-widget-dropdown-search-input/DropdownSearchInput.js +53 -19
- package/build/widgets/oa-widget-dropdown-search-input/styles.js +1 -1
- package/build/widgets/oa-widget-feedback/FeedbackWidget.js +83 -0
- package/build/widgets/oa-widget-feedback/styles.js +13 -0
- package/build/widgets/oa-widget-guide/GuideWidget.js +70 -0
- package/build/widgets/oa-widget-guide/GuideWidgetStyle.js +12 -0
- package/build/widgets/oa-widget-hub-automation-modal/HubAutomationDeleteBiker.js +24 -0
- package/build/widgets/oa-widget-hub-automation-modal/HubAutomationModal.js +34 -0
- package/build/widgets/oa-widget-hub-automation-modal/HubAutomationModalStyle.js +13 -0
- package/build/widgets/oa-widget-image-carousel/ImageCarouselWidget.js +256 -0
- package/build/widgets/oa-widget-image-carousel/styles.js +23 -0
- package/build/widgets/oa-widget-image-gallery/FullscreenViewer.js +169 -0
- package/build/widgets/oa-widget-image-gallery/ImageGallery.js +87 -0
- package/build/widgets/oa-widget-image-gallery/ThumbnailGrid.js +146 -0
- package/build/widgets/oa-widget-image-gallery/imageCache.js +15 -0
- package/build/widgets/oa-widget-image-gallery/imageGalleryStyle.js +16 -0
- package/build/widgets/oa-widget-item-info-card/InfoCardListWidget.js +60 -0
- package/build/widgets/oa-widget-item-info-card/ItemInfoCardWidget.js +77 -0
- package/build/widgets/oa-widget-item-info-card/styles.css +50 -0
- package/build/widgets/oa-widget-item-info-card/styles.js +14 -0
- package/build/widgets/oa-widget-key-value/KeyValueWidget.js +46 -12
- package/build/widgets/oa-widget-key-value/styles.js +1 -1
- package/build/widgets/oa-widget-kpi/KPICardWidget.js +86 -0
- package/build/widgets/oa-widget-kpi/styles.js +12 -0
- package/build/widgets/oa-widget-map-base-location/AddressDetails.js +21 -7
- package/build/widgets/oa-widget-map-base-location/AddressForm.js +32 -5
- package/build/widgets/oa-widget-map-base-location/MapBaseLocation.js +9 -3
- package/build/widgets/oa-widget-map-base-location/MapComponent.js +17 -2
- package/build/widgets/oa-widget-membershipcard/MembershipCard.js +14 -3
- package/build/widgets/oa-widget-membershipcard/styles.js +1 -1
- package/build/widgets/oa-widget-notes/NotesWidget.js +32 -30
- package/build/widgets/oa-widget-notes/styles.js +4 -3
- package/build/widgets/oa-widget-profile-data/ProfileDataWidget.js +117 -0
- package/build/widgets/oa-widget-profile-data/styles.js +13 -0
- package/build/widgets/oa-widget-progressive-steps/ProgressiveStepsWidget.js +362 -0
- package/build/widgets/oa-widget-progressive-steps/styles.js +12 -0
- package/build/widgets/oa-widget-reimbursement-breakup/ReimbursementBreakupWidget.js +18 -9
- package/build/widgets/oa-widget-reimbursement-breakup/styles.js +1 -1
- package/build/widgets/oa-widget-reupload-drawer/ReUploadDrawer.js +164 -0
- package/build/widgets/oa-widget-select-list-item-modal/SelectListItemModal.js +79 -0
- package/build/widgets/oa-widget-sidebar/SidebarWidget.js +175 -0
- package/build/widgets/oa-widget-sidebar/components/Header.js +33 -0
- package/build/widgets/oa-widget-sidebar/styles.js +13 -0
- package/build/widgets/oa-widget-spare-part/SparePartsWidget.js +57 -29
- package/build/widgets/oa-widget-track-shipment/TrackShipmentWidget.js +28 -6
- package/build/widgets/oa-widget-track-shipment-list/TrackShipmentWidgetList.js +103 -0
- package/build/widgets/oa-widget-track-shipment-list/fn.js +81 -0
- package/build/widgets/oa-widget-user-management/UserManagementWidget.js +352 -0
- package/build/widgets/oa-widget-user-management/styles.js +15 -0
- package/package.json +7 -2
- package/build/dev/oa-widget-track-shipment/TrackShipmentWidget.js +0 -195
- /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;
|