@bjsdistribution/dms-client-return 0.1.99-prod → 0.2.0-prod

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 (48) hide show
  1. package/dist/components/client-portal/OutstandingTable.js +118 -112
  2. package/dist/components/client-portal/OutstandingTable.js.map +1 -1
  3. package/dist/components/fakeData.js.map +1 -1
  4. package/dist/components/order-daily-overview/common/fakedata.js.map +1 -1
  5. package/dist/components/order-daily-overview/return-after-table/table/OrderTable.js +33 -31
  6. package/dist/components/order-daily-overview/return-after-table/table/OrderTable.js.map +1 -1
  7. package/dist/components/order-daily-overview/return-after-table/table-filters/ReturnOrderFilter.js +82 -79
  8. package/dist/components/order-daily-overview/return-after-table/table-filters/ReturnOrderFilter.js.map +1 -1
  9. package/dist/components/order-daily-overview/return-order-table/return-orders-filters/ReturnOrderTable.js +157 -151
  10. package/dist/components/order-daily-overview/return-order-table/return-orders-filters/ReturnOrderTable.js.map +1 -1
  11. package/dist/components/order-view/order-actions/Dropdown.js +3 -3
  12. package/dist/components/order-view/order-actions/Dropdown.js.map +1 -1
  13. package/dist/components/order-view/order-actions/actions/cancel-order/CancelOrderTable.js +47 -45
  14. package/dist/components/order-view/order-actions/actions/cancel-order/CancelOrderTable.js.map +1 -1
  15. package/dist/components/order-view/order-actions/actions/cancel-order/ReturnReason.js +36 -23
  16. package/dist/components/order-view/order-actions/actions/cancel-order/ReturnReason.js.map +1 -1
  17. package/dist/components/order-view/order-actions/actions/confirm-order/tables/ProductTable.js +25 -23
  18. package/dist/components/order-view/order-actions/actions/confirm-order/tables/ProductTable.js.map +1 -1
  19. package/dist/components/order-view/order-actions/actions/force-debrief/ForceDebriefModal.js +89 -88
  20. package/dist/components/order-view/order-actions/actions/force-debrief/ForceDebriefModal.js.map +1 -1
  21. package/dist/components/order-view/order-actions/actions/force-debrief/charges/collection-add-ons/index.js +16 -16
  22. package/dist/components/order-view/order-actions/actions/force-debrief/charges/collection-add-ons/index.js.map +1 -1
  23. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationReason.js +23 -22
  24. package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationReason.js.map +1 -1
  25. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/RadioButtons.js +56 -52
  26. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/RadioButtons.js.map +1 -1
  27. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/FailureReasonDropdown.js +27 -26
  28. package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/FailureReasonDropdown.js.map +1 -1
  29. package/dist/components/order-view/order-actions/actions/hold-order/HoldOrderModal.js +29 -29
  30. package/dist/components/order-view/order-actions/actions/hold-order/HoldOrderModal.js.map +1 -1
  31. package/dist/components/order-view/order-actions/actions/split-order/SplitOrderTable.js +72 -71
  32. package/dist/components/order-view/order-actions/actions/split-order/SplitOrderTable.js.map +1 -1
  33. package/dist/components/order-view/order-actions/actions/uncancel-order/UncancelOrderTable.js +37 -35
  34. package/dist/components/order-view/order-actions/actions/uncancel-order/UncancelOrderTable.js.map +1 -1
  35. package/dist/components/order-view/order-details/expanded-content/services-section/OrderServices.js +20 -18
  36. package/dist/components/order-view/order-details/expanded-content/services-section/OrderServices.js.map +1 -1
  37. package/dist/components/order-view/order-details/expanded-content/services-section/ServiceType.js +26 -22
  38. package/dist/components/order-view/order-details/expanded-content/services-section/ServiceType.js.map +1 -1
  39. package/dist/components/order-view/order-details/helper.js.map +1 -1
  40. package/dist/components/order-view/return-client-products/product-table/ReturnProductTable.js +53 -53
  41. package/dist/components/order-view/return-client-products/product-table/ReturnProductTable.js.map +1 -1
  42. package/dist/components/order-view/toolbox-resources/expanded-content/index.js +6 -7
  43. package/dist/components/order-view/toolbox-resources/expanded-content/index.js.map +1 -1
  44. package/dist/components/utils.js +4 -5
  45. package/dist/components/utils.js.map +1 -1
  46. package/dist/types/components/order-view/order-actions/Dropdown.d.ts +1 -0
  47. package/dist/types/components/utils.d.ts +0 -1
  48. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/order-view/toolbox-resources/expanded-content/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n useEpodImages,\n useOrderId,\n // useOrderProductsToolbox,\n useZoomCallLogs,\n useZoomCallLogsLoader,\n skeletonTomTom,\n} from '../../store';\nimport CustomScrollBar from '../../../../common/scrollbar';\nimport CollapsableForm from '../../../../common/expand-collapse';\nimport CollapsedContent from '../collapsed-content';\nimport Tippy from '@tippyjs/react';\nimport DownloadIcon from '../../../../assets/icons/DownloadIcon';\nimport { Image, notification, Skeleton, Spin, Tabs } from 'antd';\nimport {\n formatUtcToLocal,\n PrivateIcon,\n PublicIcon,\n useAxios,\n ViewIcon,\n} from '@bjsdistribution/dms-component-library';\nimport { useAtom, useClientPortal } from '../../../store';\nimport { toReverseDeliveryLabel } from '../../../utils';\nimport { ApiResponse } from '../../types';\n\nfunction Toolbox() {\n const [orderId] = useOrderId();\n // const [orderToolbox] = useOrderProductsToolbox();\n // const [epodData, setEpodData] = useState<any[]>([]);\n const [tomTomLoader] = useAtom(skeletonTomTom);\n const [activeTab, setActiveTab] = useState<string>('pda');\n // zoom call logs\n const [zoomCallLogs, setZoomCallLogs] = useZoomCallLogs();\n const [zoomCallLogsLoader, setZoomCallLogsLoader] = useZoomCallLogsLoader();\n const [spinner, setSpinner] = useState<any>([]);\n const [epodImages] = useEpodImages();\n const [epodDataClient, setEpodDataClient] = useState<any[]>([]);\n const [clientPortal] = useClientPortal();\n\n // get logs call\n const {\n data: fetchedZoomCallLogs,\n // setShouldPerformAction: setAction,\n loading: zoomCallLogsLoading,\n fetchData: callLogsApi,\n } = useAxios<{\n data: ApiResponse[];\n }>({\n endpoint: `v1/orders/call_logs/?order_id=${orderId}`,\n method: 'GET',\n // performAction: false,\n });\n\n useEffect(() => {\n if (orderId) {\n setZoomCallLogs(fetchedZoomCallLogs?.data);\n }\n // loader state\n setZoomCallLogsLoader(zoomCallLogsLoading);\n }, [zoomCallLogsLoading]);\n\n const { fetchData: fetchCallRecording } = useAxios<{\n data: any[];\n message: string;\n }>({\n endpoint: `/v1/orders/call_logs/recording/download/`,\n method: 'POST',\n config: {\n responseType: 'blob',\n },\n });\n\n // // images for normal [portal]\n // const filterData = orderToolbox?.data?.resources?.result;\n // const imageData = filterData?.map((pic: any) => ({\n // s3_content: pic?.s3_content,\n // type: pic?.type,\n // time: new Date(pic?.timestamp * 1000).toLocaleString(),\n // path: pic?.path,\n // visibility_status: pic?.visibility_status\n // }));\n\n // useEffect(() => {\n // if (imageData && imageData?.length > 0) {\n // setEpodData(imageData);\n // }\n // }, [imageData?.length > 0]);\n\n // images for client Protal\n const filterDataClient = epodImages?.result;\n const imageDataClient = filterDataClient?.map((pic: any) => ({\n s3_content: pic?.s3_content,\n // Use image_link for photos as it already contains the .jpg extension\n image_link: pic?.image_link,\n type: pic?.type,\n time: new Date(pic?.timestamp * 1000).toLocaleString(),\n path: pic?.path,\n visibility_status: pic?.visibility_status,\n }));\n\n useEffect(() => {\n if (imageDataClient && imageDataClient?.length > 0) {\n setEpodDataClient(imageDataClient);\n }\n }, [imageDataClient?.length > 0]);\n\n // Detect file type from the first bytes (magic numbers) of a blob\n const detectExtensionFromBlob = async (blob: Blob): Promise<string> => {\n const arr = new Uint8Array(await blob.slice(0, 12).arrayBuffer());\n\n // JPEG: FF D8 FF\n if (arr[0] === 0xff && arr[1] === 0xd8 && arr[2] === 0xff) return '.jpeg';\n // PNG: 89 50 4E 47\n if (\n arr[0] === 0x89 &&\n arr[1] === 0x50 &&\n arr[2] === 0x4e &&\n arr[3] === 0x47\n )\n return '.png';\n // PDF: %PDF (25 50 44 46)\n if (\n arr[0] === 0x25 &&\n arr[1] === 0x50 &&\n arr[2] === 0x44 &&\n arr[3] === 0x46\n )\n return '.pdf';\n // MP3 with ID3 tag: 49 44 33\n if (arr[0] === 0x49 && arr[1] === 0x44 && arr[2] === 0x33) return '.mp3';\n // MP3 frame sync: FF FB, FF F3, FF F2\n if (\n arr[0] === 0xff &&\n (arr[1] === 0xfb || arr[1] === 0xf3 || arr[1] === 0xf2)\n )\n return '.mp3';\n // WAV: RIFF....WAVE\n if (\n arr[0] === 0x52 &&\n arr[1] === 0x49 &&\n arr[2] === 0x46 &&\n arr[3] === 0x46 &&\n arr[8] === 0x57 &&\n arr[9] === 0x41 &&\n arr[10] === 0x56 &&\n arr[11] === 0x45\n )\n return '.wav';\n // OGG: OggS\n if (\n arr[0] === 0x4f &&\n arr[1] === 0x67 &&\n arr[2] === 0x67 &&\n arr[3] === 0x53\n )\n return '.ogg';\n // GIF: GIF8\n if (\n arr[0] === 0x47 &&\n arr[1] === 0x49 &&\n arr[2] === 0x46 &&\n arr[3] === 0x38\n )\n return '.gif';\n // WEBP: RIFF....WEBP\n if (\n arr[0] === 0x52 &&\n arr[1] === 0x49 &&\n arr[2] === 0x46 &&\n arr[3] === 0x46 &&\n arr[8] === 0x57 &&\n arr[9] === 0x45 &&\n arr[10] === 0x42 &&\n arr[11] === 0x50\n )\n return '.webp';\n // MP4: ....ftyp (bytes 4-7)\n if (\n arr[4] === 0x66 &&\n arr[5] === 0x74 &&\n arr[6] === 0x79 &&\n arr[7] === 0x70\n )\n return '.mp4';\n\n return '';\n };\n\n // Fallback: map MIME type to extension\n const getExtensionFromMime = (mimeType: string): string => {\n const mimeMap: Record<string, string> = {\n 'image/jpeg': '.jpeg',\n 'image/jpg': '.jpg',\n 'image/png': '.png',\n 'image/gif': '.gif',\n 'image/webp': '.webp',\n 'application/pdf': '.pdf',\n 'audio/mpeg': '.mp3',\n 'audio/mp3': '.mp3',\n 'audio/wav': '.wav',\n 'audio/ogg': '.ogg',\n 'audio/x-wav': '.wav',\n 'video/mp4': '.mp4',\n };\n return mimeMap[mimeType?.toLowerCase()] || '';\n };\n\n const handleDownload = async (url: string, filename?: string) => {\n if (!url) return;\n try {\n const response = await fetch(url);\n if (!response.ok) throw new Error('Download failed');\n const blob = await response.blob();\n\n // 1. Try magic bytes detection (most reliable)\n let extension = await detectExtensionFromBlob(blob);\n\n // 2. Fallback to Content-Type header\n if (!extension) {\n const contentType = response.headers.get('Content-Type') || '';\n extension = getExtensionFromMime(contentType.split(';')[0]?.trim());\n }\n\n // 3. Fallback to blob.type\n if (!extension && blob.type) {\n extension = getExtensionFromMime(blob.type);\n }\n\n // Build a proper filename with extension\n let downloadName = filename || 'download';\n // Only append extension if the filename doesn't already have one\n const hasExtension = /\\.\\w{2,5}$/.test(downloadName);\n if (!hasExtension && extension) {\n downloadName = `${downloadName}${extension}`;\n }\n\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = blobUrl;\n link.download = downloadName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(blobUrl);\n } catch (err) {\n // Fallback: open in new tab\n const link = document.createElement('a');\n link.href = url;\n link.download = filename || 'download';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n };\n\n const onChangeTab = (key: string) => {\n setActiveTab(key);\n\n if (key === 'customer_calls') {\n callLogsApi();\n }\n };\n\n const activeLoaderState =\n activeTab === 'pda' ? tomTomLoader : zoomCallLogsLoader;\n\n // const activeApiData =\n // activeTab === 'pda'\n // ? clientPortal\n // ? epodData || []\n // : epodImages?.result || []\n // : zoomCallLogs || [];\n\n // const imageDataClient = epodImages?.result?.map((pic: any) => ({\n // s3_content: pic?.s3_content,\n // type: pic?.type,\n // time: new Date(pic?.timestamp * 1000).toLocaleString(),\n // path: pic?.path,\n // }));\n\n const activeApiData = activeTab === 'pda' ? epodDataClient : zoomCallLogs;\n\n // const activeApiData =\n // activeTab === 'pda'\n // ? (clientPortal ? epodData : epodDataClient) || []\n // : zoomCallLogs || [];\n\n // console.log(activeApiData, 'activeApiDataactiveApiData');\n\n const updateSpinner = (url: string, status: boolean) => {\n setSpinner((prev: any) => {\n // If URL exists, update it; otherwise, add new object\n return prev.some((item: any) => item.url === url)\n ? prev.map((item: any) =>\n item.url === url ? { ...item, status } : item\n )\n : [...prev, { url, status }];\n });\n };\n\n const downloadRecording = async (url: string) => {\n try {\n updateSpinner(url, true);\n const newPayload = {\n recording_url: url,\n };\n\n const resp: any = await fetchCallRecording({\n payload: newPayload,\n });\n\n const { pathname } = new URL(url);\n const id = pathname.split('/').pop();\n\n // Detect actual file type from blob content\n const blob = resp instanceof Blob ? resp : new Blob([resp]);\n let extension = await detectExtensionFromBlob(blob);\n\n // Fallback to blob.type if magic bytes didn't match\n if (!extension && blob.type) {\n extension = getExtensionFromMime(blob.type);\n }\n\n // Default to .mp3 for call recordings if detection fails\n if (!extension) {\n extension = '.mp3';\n }\n\n const downloadUrl = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = downloadUrl;\n a.download = `${id}${extension}`;\n a.click();\n URL.revokeObjectURL(downloadUrl);\n notification.success({\n message: 'Success',\n description: 'File downloaded successfully',\n });\n } catch (err) {\n console.log(err);\n notification.error({\n message: 'Failed to download file',\n //@ts-ignore\n description: err,\n });\n } finally {\n updateSpinner(url, false);\n }\n };\n\n const renderTableBody = (key: string, apiData: any[]) => {\n if (key === 'pda') {\n return apiData?.map((item, index) => (\n <TableRow key={index}>\n <TableData>\n {item?.visibility_status === 'locked' ? (\n <PrivateIcon />\n ) : (\n <PublicIcon />\n )}\n <div>{item?.path}</div>\n </TableData>\n <TableData>\n {toReverseDeliveryLabel(item?.type, clientPortal)}\n </TableData>\n <TableData>{item?.time}</TableData>\n <TableData colSpan={2}>\n {(item?.type === 'photo' || item?.type === 'call_recording') && (\n <Actions>\n <Row>\n {item?.type === 'call_recording' ? (\n <Tippy content=\"Play\" placement=\"top\" trigger=\"mouseenter\">\n <TippyContainer\n onClick={() => {\n // Append extension from path to s3_content URL for proper browser playback/download\n const ext = item?.path?.match(/\\.\\w+$/)?.[0] || '';\n window.open(`${item?.s3_content}${ext}`, '_blank');\n }}\n >\n <ViewIcon style={{ cursor: 'pointer' }} />\n </TippyContainer>\n </Tippy>\n ) : (\n <Tippy content=\"View\" placement=\"top\" trigger=\"mouseenter\">\n <TippyContainer className=\"ImageView\">\n <ViewIcon style={{ cursor: 'pointer' }} />\n {/* Use image_link for photos so the preview uses the .jpg URL */}\n <Image\n width=\"20px\"\n src={\n item?.type === 'photo'\n ? item?.image_link\n : item?.s3_content\n }\n />\n </TippyContainer>\n </Tippy>\n )}\n\n <Tippy\n content=\"Download\"\n placement=\"top\"\n trigger=\"mouseenter\"\n >\n <TippyContainer\n onClick={() => {\n // For photos, image_link already has .jpg extension\n // For other types, append extension from path to s3_content URL\n const ext = item?.path?.match(/\\.\\w+$/)?.[0] || '';\n const downloadUrl =\n item?.type === 'photo'\n ? item?.image_link\n : `${item?.s3_content}${ext}`;\n handleDownload(\n downloadUrl,\n item?.path?.split('/').pop()\n );\n }}\n >\n <DownloadIcon />\n </TippyContainer>\n </Tippy>\n </Row>\n </Actions>\n )}\n </TableData>\n </TableRow>\n ));\n } else {\n return zoomCallLogs?.map((item: any, index: number) => {\n const recording = item?.recordings?.[0]; // take first recording only all are same\n const spinnerItem = spinner.find((s: any) => s.url === recording?.url);\n const isLoading = spinnerItem?.status || false;\n\n return (\n <TableRow key={index}>\n <TableData>{item?.description}</TableData>\n <TableData>{item?.source_type}</TableData>\n <TableData>\n <DateTimeContainer>\n <span>{formatUtcToLocal(item?.start_datetime).date}</span>\n <span>{formatUtcToLocal(item?.start_datetime).time}</span>\n </DateTimeContainer>\n </TableData>\n <TableData colSpan={2}>\n <div className=\"call-recording-actions\">\n <Row>\n {!isLoading && recording && (\n <>\n <Tippy\n content=\"Play\"\n placement=\"top\"\n trigger=\"mouseenter\"\n >\n <TippyContainer\n onClick={() => window.open(recording.url, '_blank')}\n >\n <ViewIcon style={{ cursor: 'pointer' }} />\n </TippyContainer>\n </Tippy>\n <Tippy\n content=\"Download\"\n placement=\"top\"\n trigger=\"mouseenter\"\n >\n <TippyContainer\n onClick={() => downloadRecording(recording.url)}\n >\n <DownloadIcon />\n </TippyContainer>\n </Tippy>\n </>\n )}\n {recording && <Spin size=\"small\" spinning={isLoading} />}\n </Row>\n </div>\n </TableData>\n </TableRow>\n );\n });\n }\n };\n\n return (\n <CollapsableForm collapsedContent={<CollapsedContent />}>\n <TabsContainer>\n <Tabs\n defaultActiveKey=\"pda\"\n activeKey={activeTab}\n onChange={onChangeTab}\n >\n <Tabs.TabPane\n key=\"pda\"\n tab={\n <div\n className={activeTab === 'pda' ? 'active-tab' : 'passive-tab'}\n >\n PDA <span className=\"count\">{epodDataClient?.length}</span>\n </div>\n }\n />\n\n <Tabs.TabPane\n key=\"customer_calls\"\n tab={\n <div\n className={\n activeTab === 'customer_calls' ? 'active-tab' : 'passive-tab'\n }\n >\n Customer Calls\n <span className=\"count\">{zoomCallLogs?.length}</span>\n </div>\n }\n />\n </Tabs>\n </TabsContainer>\n <MainContainer>\n <Container>\n <TableWrapper>\n <CustomScrollBar>\n <Table>\n <TableHead>\n <TableRow>\n <TableHeadData>Content</TableHeadData>\n <TableHeadData>Type</TableHeadData>\n <TableHeadData>Time</TableHeadData>\n <TableHeadData>Options</TableHeadData>\n </TableRow>\n </TableHead>\n <TableBody>\n {activeLoaderState ? (\n <>\n {/* Skeleton Rows */}\n <TableRow>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 80 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 130 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 80 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 130 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n </TableRow>\n </>\n ) : activeApiData?.length > 0 ? (\n renderTableBody(activeTab, activeApiData)\n ) : (\n <TableRow>\n <TableData colSpan={5}>No entries found.</TableData>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </CustomScrollBar>\n </TableWrapper>\n </Container>\n </MainContainer>\n </CollapsableForm>\n );\n}\n\nconst DateTimeContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n`;\n\nconst tabText = css`\n color: #3a3630 !important;\n font-family: 'Lato', sans-serif;\n font-size: 14px;\n font-weight: 500;\n`;\n\nconst countBadge = css`\n color: #fff;\n background: #3a3630;\n padding: 2px 5px;\n border-radius: 6px;\n font-size: 13px;\n font-family: 'Lato', sans-serif;\n height: 18px;\n display: flex;\n align-items: center;\n`;\n\nconst TabsContainer = styled.div`\n margin-bottom: 10px;\n\n .ant-tabs {\n width: 100%;\n }\n .ant-tabs-tab {\n .ant-tabs-tab-btn {\n ${tabText};\n .count {\n ${countBadge};\n }\n .passive-tab {\n display: flex;\n gap: 5px;\n align-items: center;\n opacity: 0.3;\n }\n }\n }\n .ant-tabs-tab-active {\n .ant-tabs-tab-btn {\n ${tabText};\n .count {\n ${countBadge};\n }\n .active-tab {\n display: flex;\n gap: 5px;\n align-items: center;\n }\n }\n }\n .ant-tabs-ink-bar {\n background: #feba30;\n }\n`;\n\nconst TableCell = styled.td<{ width?: string }>`\n padding: 12px 8px;\n text-align: left;\n max-width: ${({ width }) => width || 'auto'};\n`;\nconst Container = styled.div`\n height: 30vh;\n pointer-events: initial;\n @media (max-width: 1024px) {\n height: 40vh;\n }\n`;\n\nconst TableWrapper = styled.div`\n height: 100%;\n overflow-x: auto;\n scrollbar-width: thin;\n border-top-left-radius: 15px;\n border-top-right-radius: 15px;\n`;\n\nconst TableHeadData = styled.th`\n padding: 10px 5px;\n font-family: 'Roboto', sans-serif;\n font-size: 14px;\n font-weight: 500;\n line-height: 24px;\n letter-spacing: 0px;\n text-align: left;\n`;\n\nconst TableData = styled.td`\n border-spacing: 0px;\n padding: 10px 5px;\n font-family: 'Lato', sans-serif;\n font-size: 13px;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0px;\n\n .call-recording-actions {\n display: flex;\n gap: 5px;\n align-items: center;\n }\n`;\n\nconst TableRow = styled.tr`\n border-bottom: 1px solid rgb(215, 214, 213);\n font-weight: 300;\n`;\n\nconst TableBody = styled.tbody`\n border-bottom-right-radius: 10px;\n background: rgb(255, 255, 255);\n height: 96%;\n overflow: auto;\n width: 100%;\n`;\n\nconst TableHead = styled.thead`\n position: sticky;\n top: 0px;\n z-index: 1;\n background: #f8f8f8;\n white-space: nowrap;\n`;\n\nconst Table = styled.table`\n width: 100%;\n background: rgb(255, 255, 255);\n box-shadow: 0px 4px 30px 0px #2e2d740d;\n border-collapse: collapse;\n`;\n\nconst Actions = styled.div``;\n\nconst TippyContainer = styled.div`\n display: inline-block;\n margin: 7px;\n`;\n\nconst Row = styled.div`\n gap: 10px;\n cursor: pointer;\n display: flex;\n align-items: center;\n .ImageView {\n position: relative;\n .ant-image {\n position: absolute;\n left: 0;\n top: 2px;\n opacity: 0;\n }\n }\n`;\n\nconst MainContainer = styled.div`\n .col {\n display: flex;\n align-items: center;\n color: #3a3630;\n padding: 10px 5px;\n text-align: left;\n }\n\n .col.noFlex {\n flex: 0;\n }\n\n .col.sm {\n flex: 1;\n min-width: 100px;\n }\n\n .col.md {\n flex: 2;\n justify-content: flex-start;\n min-width: 85px;\n }\n\n .col.lg {\n flex: 4;\n justify-content: flex-start;\n min-width: 180px;\n }\n\n .col.date {\n }\n\n .col.amount,\n .col.price {\n justify-content: flex-end;\n }\n\n .TableHeadData,\n .TableData {\n padding: 10px 5px;\n text-align: left;\n white-space: nowrap;\n }\n\n .TableRow {\n display: flex;\n width: 100%;\n }\n\n .Table {\n width: 100%;\n }\n`;\n\nexport default Toolbox;\n//\n"],"names":["Toolbox","orderId","useOrderId","tomTomLoader","useAtom","skeletonTomTom","activeTab","setActiveTab","useState","zoomCallLogs","setZoomCallLogs","useZoomCallLogs","zoomCallLogsLoader","setZoomCallLogsLoader","useZoomCallLogsLoader","spinner","setSpinner","epodImages","useEpodImages","epodDataClient","setEpodDataClient","clientPortal","useClientPortal","fetchedZoomCallLogs","zoomCallLogsLoading","callLogsApi","useAxios","useEffect","fetchCallRecording","imageDataClient","pic","detectExtensionFromBlob","blob","arr","getExtensionFromMime","mimeType","handleDownload","url","filename","response","extension","contentType","downloadName","blobUrl","link","onChangeTab","key","activeLoaderState","activeApiData","updateSpinner","status","prev","item","downloadRecording","resp","pathname","id","downloadUrl","a","notification","err","renderTableBody","apiData","index","TableRow","jsxs","TableData","jsx","PrivateIcon","PublicIcon","toReverseDeliveryLabel","Actions","Row","Tippy","TippyContainer","ext","ViewIcon","Image","DownloadIcon","recording","isLoading","s","DateTimeContainer","formatUtcToLocal","Fragment","Spin","CollapsableForm","CollapsedContent","TabsContainer","Tabs","MainContainer","Container","TableWrapper","CustomScrollBar","Table","TableHead","TableHeadData","TableBody","TableCell","Skeleton","styled","tabText","css","countBadge","width"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/order-view/toolbox-resources/expanded-content/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n useEpodImages,\n useOrderId,\n // useOrderProductsToolbox,\n useZoomCallLogs,\n useZoomCallLogsLoader,\n skeletonTomTom,\n} from '../../store';\nimport CustomScrollBar from '../../../../common/scrollbar';\nimport CollapsableForm from '../../../../common/expand-collapse';\nimport CollapsedContent from '../collapsed-content';\nimport Tippy from '@tippyjs/react';\nimport DownloadIcon from '../../../../assets/icons/DownloadIcon';\nimport { Image, notification, Skeleton, Spin, Tabs } from 'antd';\nimport {\n formatUtcToLocal,\n PrivateIcon,\n PublicIcon,\n toReverseDeliveryLabel,\n useAxios,\n ViewIcon,\n} from '@bjsdistribution/dms-component-library';\nimport { useAtom, useClientPortal } from '../../../store';\nimport { ApiResponse } from '../../types';\n\nfunction Toolbox() {\n const [orderId] = useOrderId();\n // const [orderToolbox] = useOrderProductsToolbox();\n // const [epodData, setEpodData] = useState<any[]>([]);\n const [tomTomLoader] = useAtom(skeletonTomTom);\n const [activeTab, setActiveTab] = useState<string>('pda');\n // zoom call logs\n const [zoomCallLogs, setZoomCallLogs] = useZoomCallLogs();\n const [zoomCallLogsLoader, setZoomCallLogsLoader] = useZoomCallLogsLoader();\n const [spinner, setSpinner] = useState<any>([]);\n const [epodImages] = useEpodImages();\n const [epodDataClient, setEpodDataClient] = useState<any[]>([]);\n const [clientPortal] = useClientPortal();\n\n // get logs call\n const {\n data: fetchedZoomCallLogs,\n // setShouldPerformAction: setAction,\n loading: zoomCallLogsLoading,\n fetchData: callLogsApi,\n } = useAxios<{\n data: ApiResponse[];\n }>({\n endpoint: `v1/orders/call_logs/?order_id=${orderId}`,\n method: 'GET',\n // performAction: false,\n });\n\n useEffect(() => {\n if (orderId) {\n setZoomCallLogs(fetchedZoomCallLogs?.data);\n }\n // loader state\n setZoomCallLogsLoader(zoomCallLogsLoading);\n }, [zoomCallLogsLoading]);\n\n const { fetchData: fetchCallRecording } = useAxios<{\n data: any[];\n message: string;\n }>({\n endpoint: `/v1/orders/call_logs/recording/download/`,\n method: 'POST',\n config: {\n responseType: 'blob',\n },\n });\n\n // // images for normal [portal]\n // const filterData = orderToolbox?.data?.resources?.result;\n // const imageData = filterData?.map((pic: any) => ({\n // s3_content: pic?.s3_content,\n // type: pic?.type,\n // time: new Date(pic?.timestamp * 1000).toLocaleString(),\n // path: pic?.path,\n // visibility_status: pic?.visibility_status\n // }));\n\n // useEffect(() => {\n // if (imageData && imageData?.length > 0) {\n // setEpodData(imageData);\n // }\n // }, [imageData?.length > 0]);\n\n // images for client Protal\n const filterDataClient = epodImages?.result;\n const imageDataClient = filterDataClient?.map((pic: any) => ({\n s3_content: pic?.s3_content,\n // Use image_link for photos as it already contains the .jpg extension\n image_link: pic?.image_link,\n type: pic?.type,\n time: new Date(pic?.timestamp * 1000).toLocaleString(),\n path: pic?.path,\n visibility_status: pic?.visibility_status,\n }));\n\n useEffect(() => {\n if (imageDataClient && imageDataClient?.length > 0) {\n setEpodDataClient(imageDataClient);\n }\n }, [imageDataClient?.length > 0]);\n\n // Detect file type from the first bytes (magic numbers) of a blob\n const detectExtensionFromBlob = async (blob: Blob): Promise<string> => {\n const arr = new Uint8Array(await blob.slice(0, 12).arrayBuffer());\n\n // JPEG: FF D8 FF\n if (arr[0] === 0xff && arr[1] === 0xd8 && arr[2] === 0xff) return '.jpeg';\n // PNG: 89 50 4E 47\n if (\n arr[0] === 0x89 &&\n arr[1] === 0x50 &&\n arr[2] === 0x4e &&\n arr[3] === 0x47\n )\n return '.png';\n // PDF: %PDF (25 50 44 46)\n if (\n arr[0] === 0x25 &&\n arr[1] === 0x50 &&\n arr[2] === 0x44 &&\n arr[3] === 0x46\n )\n return '.pdf';\n // MP3 with ID3 tag: 49 44 33\n if (arr[0] === 0x49 && arr[1] === 0x44 && arr[2] === 0x33) return '.mp3';\n // MP3 frame sync: FF FB, FF F3, FF F2\n if (\n arr[0] === 0xff &&\n (arr[1] === 0xfb || arr[1] === 0xf3 || arr[1] === 0xf2)\n )\n return '.mp3';\n // WAV: RIFF....WAVE\n if (\n arr[0] === 0x52 &&\n arr[1] === 0x49 &&\n arr[2] === 0x46 &&\n arr[3] === 0x46 &&\n arr[8] === 0x57 &&\n arr[9] === 0x41 &&\n arr[10] === 0x56 &&\n arr[11] === 0x45\n )\n return '.wav';\n // OGG: OggS\n if (\n arr[0] === 0x4f &&\n arr[1] === 0x67 &&\n arr[2] === 0x67 &&\n arr[3] === 0x53\n )\n return '.ogg';\n // GIF: GIF8\n if (\n arr[0] === 0x47 &&\n arr[1] === 0x49 &&\n arr[2] === 0x46 &&\n arr[3] === 0x38\n )\n return '.gif';\n // WEBP: RIFF....WEBP\n if (\n arr[0] === 0x52 &&\n arr[1] === 0x49 &&\n arr[2] === 0x46 &&\n arr[3] === 0x46 &&\n arr[8] === 0x57 &&\n arr[9] === 0x45 &&\n arr[10] === 0x42 &&\n arr[11] === 0x50\n )\n return '.webp';\n // MP4: ....ftyp (bytes 4-7)\n if (\n arr[4] === 0x66 &&\n arr[5] === 0x74 &&\n arr[6] === 0x79 &&\n arr[7] === 0x70\n )\n return '.mp4';\n\n return '';\n };\n\n // Fallback: map MIME type to extension\n const getExtensionFromMime = (mimeType: string): string => {\n const mimeMap: Record<string, string> = {\n 'image/jpeg': '.jpeg',\n 'image/jpg': '.jpg',\n 'image/png': '.png',\n 'image/gif': '.gif',\n 'image/webp': '.webp',\n 'application/pdf': '.pdf',\n 'audio/mpeg': '.mp3',\n 'audio/mp3': '.mp3',\n 'audio/wav': '.wav',\n 'audio/ogg': '.ogg',\n 'audio/x-wav': '.wav',\n 'video/mp4': '.mp4',\n };\n return mimeMap[mimeType?.toLowerCase()] || '';\n };\n\n const handleDownload = async (url: string, filename?: string) => {\n if (!url) return;\n try {\n const response = await fetch(url);\n if (!response.ok) throw new Error('Download failed');\n const blob = await response.blob();\n\n // 1. Try magic bytes detection (most reliable)\n let extension = await detectExtensionFromBlob(blob);\n\n // 2. Fallback to Content-Type header\n if (!extension) {\n const contentType = response.headers.get('Content-Type') || '';\n extension = getExtensionFromMime(contentType.split(';')[0]?.trim());\n }\n\n // 3. Fallback to blob.type\n if (!extension && blob.type) {\n extension = getExtensionFromMime(blob.type);\n }\n\n // Build a proper filename with extension\n let downloadName = filename || 'download';\n // Only append extension if the filename doesn't already have one\n const hasExtension = /\\.\\w{2,5}$/.test(downloadName);\n if (!hasExtension && extension) {\n downloadName = `${downloadName}${extension}`;\n }\n\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = blobUrl;\n link.download = downloadName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(blobUrl);\n } catch (err) {\n // Fallback: open in new tab\n const link = document.createElement('a');\n link.href = url;\n link.download = filename || 'download';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n };\n\n const onChangeTab = (key: string) => {\n setActiveTab(key);\n\n if (key === 'customer_calls') {\n callLogsApi();\n }\n };\n\n const activeLoaderState =\n activeTab === 'pda' ? tomTomLoader : zoomCallLogsLoader;\n\n // const activeApiData =\n // activeTab === 'pda'\n // ? clientPortal\n // ? epodData || []\n // : epodImages?.result || []\n // : zoomCallLogs || [];\n\n // const imageDataClient = epodImages?.result?.map((pic: any) => ({\n // s3_content: pic?.s3_content,\n // type: pic?.type,\n // time: new Date(pic?.timestamp * 1000).toLocaleString(),\n // path: pic?.path,\n // }));\n\n const activeApiData = activeTab === 'pda' ? epodDataClient : zoomCallLogs;\n\n // const activeApiData =\n // activeTab === 'pda'\n // ? (clientPortal ? epodData : epodDataClient) || []\n // : zoomCallLogs || [];\n\n // console.log(activeApiData, 'activeApiDataactiveApiData');\n\n const updateSpinner = (url: string, status: boolean) => {\n setSpinner((prev: any) => {\n // If URL exists, update it; otherwise, add new object\n return prev.some((item: any) => item.url === url)\n ? prev.map((item: any) =>\n item.url === url ? { ...item, status } : item\n )\n : [...prev, { url, status }];\n });\n };\n\n const downloadRecording = async (url: string) => {\n try {\n updateSpinner(url, true);\n const newPayload = {\n recording_url: url,\n };\n\n const resp: any = await fetchCallRecording({\n payload: newPayload,\n });\n\n const { pathname } = new URL(url);\n const id = pathname.split('/').pop();\n\n // Detect actual file type from blob content\n const blob = resp instanceof Blob ? resp : new Blob([resp]);\n let extension = await detectExtensionFromBlob(blob);\n\n // Fallback to blob.type if magic bytes didn't match\n if (!extension && blob.type) {\n extension = getExtensionFromMime(blob.type);\n }\n\n // Default to .mp3 for call recordings if detection fails\n if (!extension) {\n extension = '.mp3';\n }\n\n const downloadUrl = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = downloadUrl;\n a.download = `${id}${extension}`;\n a.click();\n URL.revokeObjectURL(downloadUrl);\n notification.success({\n message: 'Success',\n description: 'File downloaded successfully',\n });\n } catch (err) {\n console.log(err);\n notification.error({\n message: 'Failed to download file',\n //@ts-ignore\n description: err,\n });\n } finally {\n updateSpinner(url, false);\n }\n };\n\n const renderTableBody = (key: string, apiData: any[]) => {\n if (key === 'pda') {\n return apiData?.map((item, index) => (\n <TableRow key={index}>\n <TableData>\n {item?.visibility_status === 'locked' ? (\n <PrivateIcon />\n ) : (\n <PublicIcon />\n )}\n <div>{item?.path}</div>\n </TableData>\n <TableData>\n {toReverseDeliveryLabel(item?.type, clientPortal)}\n </TableData>\n <TableData>{item?.time}</TableData>\n <TableData colSpan={2}>\n {(item?.type === 'photo' || item?.type === 'call_recording') && (\n <Actions>\n <Row>\n {item?.type === 'call_recording' ? (\n <Tippy content=\"Play\" placement=\"top\" trigger=\"mouseenter\">\n <TippyContainer\n onClick={() => {\n // Append extension from path to s3_content URL for proper browser playback/download\n const ext = item?.path?.match(/\\.\\w+$/)?.[0] || '';\n window.open(`${item?.s3_content}${ext}`, '_blank');\n }}\n >\n <ViewIcon style={{ cursor: 'pointer' }} />\n </TippyContainer>\n </Tippy>\n ) : (\n <Tippy content=\"View\" placement=\"top\" trigger=\"mouseenter\">\n <TippyContainer className=\"ImageView\">\n <ViewIcon style={{ cursor: 'pointer' }} />\n {/* Use image_link for photos so the preview uses the .jpg URL */}\n <Image\n width=\"20px\"\n src={\n item?.type === 'photo'\n ? item?.image_link\n : item?.s3_content\n }\n />\n </TippyContainer>\n </Tippy>\n )}\n\n <Tippy\n content=\"Download\"\n placement=\"top\"\n trigger=\"mouseenter\"\n >\n <TippyContainer\n onClick={() => {\n // For photos, image_link already has .jpg extension\n // For other types, append extension from path to s3_content URL\n const ext = item?.path?.match(/\\.\\w+$/)?.[0] || '';\n const downloadUrl =\n item?.type === 'photo'\n ? item?.image_link\n : `${item?.s3_content}${ext}`;\n handleDownload(\n downloadUrl,\n item?.path?.split('/').pop()\n );\n }}\n >\n <DownloadIcon />\n </TippyContainer>\n </Tippy>\n </Row>\n </Actions>\n )}\n </TableData>\n </TableRow>\n ));\n } else {\n return zoomCallLogs?.map((item: any, index: number) => {\n const recording = item?.recordings?.[0]; // take first recording only all are same\n const spinnerItem = spinner.find((s: any) => s.url === recording?.url);\n const isLoading = spinnerItem?.status || false;\n\n return (\n <TableRow key={index}>\n <TableData>{item?.description}</TableData>\n <TableData>{item?.source_type}</TableData>\n <TableData>\n <DateTimeContainer>\n <span>{formatUtcToLocal(item?.start_datetime).date}</span>\n <span>{formatUtcToLocal(item?.start_datetime).time}</span>\n </DateTimeContainer>\n </TableData>\n <TableData colSpan={2}>\n <div className=\"call-recording-actions\">\n <Row>\n {!isLoading && recording && (\n <>\n <Tippy\n content=\"Play\"\n placement=\"top\"\n trigger=\"mouseenter\"\n >\n <TippyContainer\n onClick={() => window.open(recording.url, '_blank')}\n >\n <ViewIcon style={{ cursor: 'pointer' }} />\n </TippyContainer>\n </Tippy>\n <Tippy\n content=\"Download\"\n placement=\"top\"\n trigger=\"mouseenter\"\n >\n <TippyContainer\n onClick={() => downloadRecording(recording.url)}\n >\n <DownloadIcon />\n </TippyContainer>\n </Tippy>\n </>\n )}\n {recording && <Spin size=\"small\" spinning={isLoading} />}\n </Row>\n </div>\n </TableData>\n </TableRow>\n );\n });\n }\n };\n\n return (\n <CollapsableForm collapsedContent={<CollapsedContent />}>\n <TabsContainer>\n <Tabs\n defaultActiveKey=\"pda\"\n activeKey={activeTab}\n onChange={onChangeTab}\n >\n <Tabs.TabPane\n key=\"pda\"\n tab={\n <div\n className={activeTab === 'pda' ? 'active-tab' : 'passive-tab'}\n >\n PDA <span className=\"count\">{epodDataClient?.length}</span>\n </div>\n }\n />\n\n <Tabs.TabPane\n key=\"customer_calls\"\n tab={\n <div\n className={\n activeTab === 'customer_calls' ? 'active-tab' : 'passive-tab'\n }\n >\n Customer Calls\n <span className=\"count\">{zoomCallLogs?.length}</span>\n </div>\n }\n />\n </Tabs>\n </TabsContainer>\n <MainContainer>\n <Container>\n <TableWrapper>\n <CustomScrollBar>\n <Table>\n <TableHead>\n <TableRow>\n <TableHeadData>Content</TableHeadData>\n <TableHeadData>Type</TableHeadData>\n <TableHeadData>Time</TableHeadData>\n <TableHeadData>Options</TableHeadData>\n </TableRow>\n </TableHead>\n <TableBody>\n {activeLoaderState ? (\n <>\n {/* Skeleton Rows */}\n <TableRow>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 80 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 130 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 80 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 130 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n </TableRow>\n </>\n ) : activeApiData?.length > 0 ? (\n renderTableBody(activeTab, activeApiData)\n ) : (\n <TableRow>\n <TableData colSpan={5}>No entries found.</TableData>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </CustomScrollBar>\n </TableWrapper>\n </Container>\n </MainContainer>\n </CollapsableForm>\n );\n}\n\nconst DateTimeContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n`;\n\nconst tabText = css`\n color: #3a3630 !important;\n font-family: 'Lato', sans-serif;\n font-size: 14px;\n font-weight: 500;\n`;\n\nconst countBadge = css`\n color: #fff;\n background: #3a3630;\n padding: 2px 5px;\n border-radius: 6px;\n font-size: 13px;\n font-family: 'Lato', sans-serif;\n height: 18px;\n display: flex;\n align-items: center;\n`;\n\nconst TabsContainer = styled.div`\n margin-bottom: 10px;\n\n .ant-tabs {\n width: 100%;\n }\n .ant-tabs-tab {\n .ant-tabs-tab-btn {\n ${tabText};\n .count {\n ${countBadge};\n }\n .passive-tab {\n display: flex;\n gap: 5px;\n align-items: center;\n opacity: 0.3;\n }\n }\n }\n .ant-tabs-tab-active {\n .ant-tabs-tab-btn {\n ${tabText};\n .count {\n ${countBadge};\n }\n .active-tab {\n display: flex;\n gap: 5px;\n align-items: center;\n }\n }\n }\n .ant-tabs-ink-bar {\n background: #feba30;\n }\n`;\n\nconst TableCell = styled.td<{ width?: string }>`\n padding: 12px 8px;\n text-align: left;\n max-width: ${({ width }) => width || 'auto'};\n`;\nconst Container = styled.div`\n height: 30vh;\n pointer-events: initial;\n @media (max-width: 1024px) {\n height: 40vh;\n }\n`;\n\nconst TableWrapper = styled.div`\n height: 100%;\n overflow-x: auto;\n scrollbar-width: thin;\n border-top-left-radius: 15px;\n border-top-right-radius: 15px;\n`;\n\nconst TableHeadData = styled.th`\n padding: 10px 5px;\n font-family: 'Roboto', sans-serif;\n font-size: 14px;\n font-weight: 500;\n line-height: 24px;\n letter-spacing: 0px;\n text-align: left;\n`;\n\nconst TableData = styled.td`\n border-spacing: 0px;\n padding: 10px 5px;\n font-family: 'Lato', sans-serif;\n font-size: 13px;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0px;\n\n .call-recording-actions {\n display: flex;\n gap: 5px;\n align-items: center;\n }\n`;\n\nconst TableRow = styled.tr`\n border-bottom: 1px solid rgb(215, 214, 213);\n font-weight: 300;\n`;\n\nconst TableBody = styled.tbody`\n border-bottom-right-radius: 10px;\n background: rgb(255, 255, 255);\n height: 96%;\n overflow: auto;\n width: 100%;\n`;\n\nconst TableHead = styled.thead`\n position: sticky;\n top: 0px;\n z-index: 1;\n background: #f8f8f8;\n white-space: nowrap;\n`;\n\nconst Table = styled.table`\n width: 100%;\n background: rgb(255, 255, 255);\n box-shadow: 0px 4px 30px 0px #2e2d740d;\n border-collapse: collapse;\n`;\n\nconst Actions = styled.div``;\n\nconst TippyContainer = styled.div`\n display: inline-block;\n margin: 7px;\n`;\n\nconst Row = styled.div`\n gap: 10px;\n cursor: pointer;\n display: flex;\n align-items: center;\n .ImageView {\n position: relative;\n .ant-image {\n position: absolute;\n left: 0;\n top: 2px;\n opacity: 0;\n }\n }\n`;\n\nconst MainContainer = styled.div`\n .col {\n display: flex;\n align-items: center;\n color: #3a3630;\n padding: 10px 5px;\n text-align: left;\n }\n\n .col.noFlex {\n flex: 0;\n }\n\n .col.sm {\n flex: 1;\n min-width: 100px;\n }\n\n .col.md {\n flex: 2;\n justify-content: flex-start;\n min-width: 85px;\n }\n\n .col.lg {\n flex: 4;\n justify-content: flex-start;\n min-width: 180px;\n }\n\n .col.date {\n }\n\n .col.amount,\n .col.price {\n justify-content: flex-end;\n }\n\n .TableHeadData,\n .TableData {\n padding: 10px 5px;\n text-align: left;\n white-space: nowrap;\n }\n\n .TableRow {\n display: flex;\n width: 100%;\n }\n\n .Table {\n width: 100%;\n }\n`;\n\nexport default Toolbox;\n//\n"],"names":["Toolbox","orderId","useOrderId","tomTomLoader","useAtom","skeletonTomTom","activeTab","setActiveTab","useState","zoomCallLogs","setZoomCallLogs","useZoomCallLogs","zoomCallLogsLoader","setZoomCallLogsLoader","useZoomCallLogsLoader","spinner","setSpinner","epodImages","useEpodImages","epodDataClient","setEpodDataClient","clientPortal","useClientPortal","fetchedZoomCallLogs","zoomCallLogsLoading","callLogsApi","useAxios","useEffect","fetchCallRecording","imageDataClient","pic","detectExtensionFromBlob","blob","arr","getExtensionFromMime","mimeType","handleDownload","url","filename","response","extension","contentType","downloadName","blobUrl","link","onChangeTab","key","activeLoaderState","activeApiData","updateSpinner","status","prev","item","downloadRecording","resp","pathname","id","downloadUrl","a","notification","err","renderTableBody","apiData","index","TableRow","jsxs","TableData","jsx","PrivateIcon","PublicIcon","toReverseDeliveryLabel","Actions","Row","Tippy","TippyContainer","ext","ViewIcon","Image","DownloadIcon","recording","isLoading","s","DateTimeContainer","formatUtcToLocal","Fragment","Spin","CollapsableForm","CollapsedContent","TabsContainer","Tabs","MainContainer","Container","TableWrapper","CustomScrollBar","Table","TableHead","TableHeadData","TableBody","TableCell","Skeleton","styled","tabText","css","countBadge","width"],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  import "date-fns";
2
- const g = function(r) {
3
- let e = r.replace(new RegExp("(?<=[a-zA-Z])'(?=[a-zA-Z ])", "g"), "__");
2
+ const a = function(p) {
3
+ let e = p.replace(new RegExp("(?<=[a-zA-Z])'(?=[a-zA-Z ])", "g"), "__");
4
4
  return e = e.replace(new RegExp("'", "g"), '"'), e = e.replace(new RegExp("__", "g"), "'"), e = e.replace(new RegExp("None", "g"), "null"), e = e.replace(new RegExp("False", "g"), "false"), e = e.replace(new RegExp("True", "g"), "true"), e = e.replace(new RegExp(/(\d+)\s*[a-zA-Z]/gm), "$1"), JSON.parse(e);
5
- }, l = (r, e, p = "Reverse Delivery") => !r || e ? r : r.replace(/\bcollect(ion)?s?\b/gi, p);
5
+ };
6
6
  export {
7
- g as javascriptStringDumpToJSON,
8
- l as toReverseDeliveryLabel
7
+ a as javascriptStringDumpToJSON
9
8
  };
10
9
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../src/components/utils.ts"],"sourcesContent":["import { format } from 'date-fns';\n\nexport const EscalationCategory = [\n {\n label: 'Failure-Not Failure',\n value: 'Failure-Not Failure',\n },\n {\n label: 'Failure Fault',\n value: 'Failure Fault',\n },\n {\n label: 'Failure Upgrade',\n value: 'Failure Upgrade',\n },\n {\n label: 'Elite',\n value: 'Elite',\n },\n {\n label: 'New Client',\n value: 'New Client',\n },\n];\n\nexport const EscalationLevel = [\n {\n label: 'VIP4',\n value: 'VIP4',\n },\n {\n label: 'VIP3',\n value: 'VIP3',\n },\n {\n label: 'VIP2',\n value: 'VIP2',\n },\n {\n label: 'VIP1',\n value: 'VIP1',\n },\n {\n label: 'New Client',\n value: 'New Client',\n },\n];\nexport const EscalationReason = [\n {\n label: 'INBOUND / DAMAGE - ITEM UNFIT TO BE DELIVERED - by Co',\n value: 'INBOUND / DAMAGE - ITEM UNFIT TO BE DELIVERED - by Co',\n },\n {\n label: 'INBOUND / PRODUCT ISSUE - WRONG ITEM BEEN DESPATCHED - by Co',\n value: 'INBOUND / PRODUCT ISSUE - WRONG ITEM BEEN DESPATCHED - by Co',\n },\n {\n label: 'INBOUND / CANCEL - BEFORE ROUTING - by Co',\n value: 'INBOUND / CANCEL - BEFORE ROUTING - by Co',\n },\n {\n label: 'PRE-CALL / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n value: 'PRE-CALL / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n },\n {\n label: 'Predated charges PRE-CALL / DEL WINDOW - NOT SUITABLE - by CUST',\n value: 'Predated charges PRE-CALL / DEL WINDOW - NOT SUITABLE - by CUST',\n },\n {\n label: 'ON-ROUTE / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n value: 'ON-ROUTE / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n },\n {\n label: 'LOADING / STOCK RECEIPT - NO STK RECEIVED - Co',\n value: 'LOADING / STOCK RECEIPT - NO STK RECEIVED - Co',\n },\n];\nexport const EscalationStatus = [\n {\n label: 'Pending',\n value: 'Pending',\n },\n {\n label: 'Stock Check',\n value: 'Stock Check',\n },\n {\n label: 'Ready to Post Call',\n value: 'Ready to Post Call',\n },\n {\n label: 'Post Called',\n value: 'Post Called',\n },\n {\n label: 'Completed',\n value: 'Completed',\n },\n];\n\nexport const getIntegerValue = (value: number) => {\n return value ?? 0;\n};\n\nexport const getStringValue = (value: string) => {\n return value === '' ? 'N/A' : value;\n};\n\nexport const FormattedDate = ({ date }: any) => {\n const formattedDate = format(new Date(date), 'dd/MM/yyyy');\n return formattedDate;\n};\n\nexport const javascriptStringDumpToJSON = function (data: string) {\n let d = data.replace(new RegExp(`(?<=[a-zA-Z])'(?=[a-zA-Z ])`, 'g'), '__');\n d = d.replace(new RegExp(\"'\", 'g'), '\"');\n d = d.replace(new RegExp('__', 'g'), \"'\");\n d = d.replace(new RegExp('None', 'g'), 'null');\n d = d.replace(new RegExp('False', 'g'), 'false');\n d = d.replace(new RegExp('True', 'g'), 'true');\n d = d.replace(new RegExp(/(\\d+)\\s*[a-zA-Z]/gm), '$1');\n return JSON.parse(d);\n};\n\nexport const toReverseDeliveryLabel = <T extends string | null | undefined>(\n value: T,\n isClientPortal?: boolean,\n replacement = 'Reverse Delivery'\n): T => {\n if (!value || isClientPortal) return value;\n return value.replace(/\\bcollect(ion)?s?\\b/gi, replacement) as T;\n};\n"],"names":["javascriptStringDumpToJSON","data","d","toReverseDeliveryLabel","value","isClientPortal","replacement"],"mappings":";AAiHO,MAAMA,IAA6B,SAAUC,GAAc;AAChE,MAAIC,IAAID,EAAK,QAAQ,IAAI,OAAO,+BAA+B,GAAG,GAAG,IAAI;AACzE,SAAAC,IAAIA,EAAE,QAAQ,IAAI,OAAO,KAAK,GAAG,GAAG,GAAG,GACvCA,IAAIA,EAAE,QAAQ,IAAI,OAAO,MAAM,GAAG,GAAG,GAAG,GACxCA,IAAIA,EAAE,QAAQ,IAAI,OAAO,QAAQ,GAAG,GAAG,MAAM,GAC7CA,IAAIA,EAAE,QAAQ,IAAI,OAAO,SAAS,GAAG,GAAG,OAAO,GAC/CA,IAAIA,EAAE,QAAQ,IAAI,OAAO,QAAQ,GAAG,GAAG,MAAM,GAC7CA,IAAIA,EAAE,QAAQ,IAAI,OAAO,oBAAoB,GAAG,IAAI,GAC7C,KAAK,MAAMA,CAAC;AACrB,GAEaC,IAAyB,CACpCC,GACAC,GACAC,IAAc,uBAEV,CAACF,KAASC,IAAuBD,IAC9BA,EAAM,QAAQ,yBAAyBE,CAAW;"}
1
+ {"version":3,"file":"utils.js","sources":["../../src/components/utils.ts"],"sourcesContent":["import { format } from 'date-fns';\n\nexport const EscalationCategory = [\n {\n label: 'Failure-Not Failure',\n value: 'Failure-Not Failure',\n },\n {\n label: 'Failure Fault',\n value: 'Failure Fault',\n },\n {\n label: 'Failure Upgrade',\n value: 'Failure Upgrade',\n },\n {\n label: 'Elite',\n value: 'Elite',\n },\n {\n label: 'New Client',\n value: 'New Client',\n },\n];\n\nexport const EscalationLevel = [\n {\n label: 'VIP4',\n value: 'VIP4',\n },\n {\n label: 'VIP3',\n value: 'VIP3',\n },\n {\n label: 'VIP2',\n value: 'VIP2',\n },\n {\n label: 'VIP1',\n value: 'VIP1',\n },\n {\n label: 'New Client',\n value: 'New Client',\n },\n];\nexport const EscalationReason = [\n {\n label: 'INBOUND / DAMAGE - ITEM UNFIT TO BE DELIVERED - by Co',\n value: 'INBOUND / DAMAGE - ITEM UNFIT TO BE DELIVERED - by Co',\n },\n {\n label: 'INBOUND / PRODUCT ISSUE - WRONG ITEM BEEN DESPATCHED - by Co',\n value: 'INBOUND / PRODUCT ISSUE - WRONG ITEM BEEN DESPATCHED - by Co',\n },\n {\n label: 'INBOUND / CANCEL - BEFORE ROUTING - by Co',\n value: 'INBOUND / CANCEL - BEFORE ROUTING - by Co',\n },\n {\n label: 'PRE-CALL / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n value: 'PRE-CALL / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n },\n {\n label: 'Predated charges PRE-CALL / DEL WINDOW - NOT SUITABLE - by CUST',\n value: 'Predated charges PRE-CALL / DEL WINDOW - NOT SUITABLE - by CUST',\n },\n {\n label: 'ON-ROUTE / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n value: 'ON-ROUTE / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n },\n {\n label: 'LOADING / STOCK RECEIPT - NO STK RECEIVED - Co',\n value: 'LOADING / STOCK RECEIPT - NO STK RECEIVED - Co',\n },\n];\nexport const EscalationStatus = [\n {\n label: 'Pending',\n value: 'Pending',\n },\n {\n label: 'Stock Check',\n value: 'Stock Check',\n },\n {\n label: 'Ready to Post Call',\n value: 'Ready to Post Call',\n },\n {\n label: 'Post Called',\n value: 'Post Called',\n },\n {\n label: 'Completed',\n value: 'Completed',\n },\n];\n\nexport const getIntegerValue = (value: number) => {\n return value ?? 0;\n};\n\nexport const getStringValue = (value: string) => {\n return value === '' ? 'N/A' : value;\n};\n\nexport const FormattedDate = ({ date }: any) => {\n const formattedDate = format(new Date(date), 'dd/MM/yyyy');\n return formattedDate;\n};\n\nexport const javascriptStringDumpToJSON = function (data: string) {\n let d = data.replace(new RegExp(`(?<=[a-zA-Z])'(?=[a-zA-Z ])`, 'g'), '__');\n d = d.replace(new RegExp(\"'\", 'g'), '\"');\n d = d.replace(new RegExp('__', 'g'), \"'\");\n d = d.replace(new RegExp('None', 'g'), 'null');\n d = d.replace(new RegExp('False', 'g'), 'false');\n d = d.replace(new RegExp('True', 'g'), 'true');\n d = d.replace(new RegExp(/(\\d+)\\s*[a-zA-Z]/gm), '$1');\n return JSON.parse(d);\n};"],"names":["javascriptStringDumpToJSON","data","d"],"mappings":";AAiHO,MAAMA,IAA6B,SAAUC,GAAc;AAChE,MAAIC,IAAID,EAAK,QAAQ,IAAI,OAAO,+BAA+B,GAAG,GAAG,IAAI;AACzE,SAAAC,IAAIA,EAAE,QAAQ,IAAI,OAAO,KAAK,GAAG,GAAG,GAAG,GACvCA,IAAIA,EAAE,QAAQ,IAAI,OAAO,MAAM,GAAG,GAAG,GAAG,GACxCA,IAAIA,EAAE,QAAQ,IAAI,OAAO,QAAQ,GAAG,GAAG,MAAM,GAC7CA,IAAIA,EAAE,QAAQ,IAAI,OAAO,SAAS,GAAG,GAAG,OAAO,GAC/CA,IAAIA,EAAE,QAAQ,IAAI,OAAO,QAAQ,GAAG,GAAG,MAAM,GAC7CA,IAAIA,EAAE,QAAQ,IAAI,OAAO,oBAAoB,GAAG,IAAI,GAC7C,KAAK,MAAMA,CAAC;AACrB;"}
@@ -6,6 +6,7 @@ interface ActionsDropdownProps {
6
6
  onSelect: (value: string) => void;
7
7
  onSearch?: () => void;
8
8
  className?: string;
9
+ popupClassName?: string;
9
10
  value?: string;
10
11
  disabled?: boolean;
11
12
  defaultValue?: any;
@@ -18,4 +18,3 @@ export declare const getIntegerValue: (value: number) => number;
18
18
  export declare const getStringValue: (value: string) => string;
19
19
  export declare const FormattedDate: ({ date }: any) => string;
20
20
  export declare const javascriptStringDumpToJSON: (data: string) => any;
21
- export declare const toReverseDeliveryLabel: <T extends string | null | undefined>(value: T, isClientPortal?: boolean, replacement?: string) => T;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.99-prod",
2
+ "version": "0.2.0-prod",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.js",
@@ -43,7 +43,7 @@
43
43
  "name": "@bjsdistribution/dms-client-return",
44
44
  "author": "gurjung",
45
45
  "devDependencies": {
46
- "@bjsdistribution/dms-component-library": "1.0.0-prod",
46
+ "@bjsdistribution/dms-component-library": "0.4.8-staging",
47
47
  "@tippyjs/react": "^4.2.6",
48
48
  "@types/node": "^25.9.0",
49
49
  "@types/react": "^18.2.47",