@zohodesk/dot 1.0.0-temp-72 → 1.0.0-temp-73

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 (300) hide show
  1. package/README.md +1067 -1063
  2. package/assets/Appearance/dark/mode/dotDarkMode.module.css +10 -0
  3. package/assets/Appearance/dark/themes/blue/blueDarkDotTheme.module.css +6 -0
  4. package/assets/Appearance/dark/themes/green/greenDarkDotTheme.module.css +6 -0
  5. package/assets/Appearance/dark/themes/orange/orangeDarkDotTheme.module.css +6 -0
  6. package/assets/Appearance/dark/themes/red/redDarkDotTheme.module.css +6 -0
  7. package/assets/Appearance/dark/themes/yellow/yellowDarkDotTheme.module.css +6 -0
  8. package/assets/Appearance/default/mode/dotDefaultMode.module.css +10 -0
  9. package/assets/Appearance/default/themes/blue/blueDefaultDotTheme.module.css +6 -0
  10. package/assets/Appearance/default/themes/green/greenDefaultDotTheme.module.css +6 -0
  11. package/assets/Appearance/default/themes/orange/orangeDefaultDotTheme.module.css +6 -0
  12. package/assets/Appearance/default/themes/red/redDefaultDotTheme.module.css +6 -0
  13. package/assets/Appearance/default/themes/yellow/yellowDefaultDotTheme.module.css +6 -0
  14. package/dubFinder.js +96 -96
  15. package/es/ActionButton/ActionButton.module.css +120 -136
  16. package/es/AlphabeticList/AlphabeticList.module.css +54 -57
  17. package/es/Attachment/Attachment.module.css +121 -132
  18. package/es/AttachmentViewer/Attachment.js +17 -0
  19. package/es/AttachmentViewer/AttachmentImage.js +85 -0
  20. package/es/AttachmentViewer/AttachmentViewer.js +562 -0
  21. package/es/AttachmentViewer/AttachmentViewer.module.css +291 -0
  22. package/es/AttachmentViewer/utils.js +107 -0
  23. package/es/ChannelIcon/ChannelIcon.module.css +208 -217
  24. package/es/Drawer/Drawer.js +0 -0
  25. package/es/Drawer/Drawer.module.css +103 -151
  26. package/es/ExternalLink/ExternalLink.js +0 -0
  27. package/es/ExternalLink/ExternalLink.module.css +3 -3
  28. package/es/ExternalLink/__tests__/ExternalLink.spec.js +0 -0
  29. package/es/FlipCard/FlipCard.module.css +35 -44
  30. package/es/FormAction/FormAction.module.css +57 -82
  31. package/es/FreezeLayer/FreezeLayer.module.css +38 -42
  32. package/es/IconButton/IconButton.module.css +22 -22
  33. package/es/Image/Image.module.css +10 -10
  34. package/es/ImportantNotes/ImportantNotes.module.css +15 -20
  35. package/es/Link/Link.js +0 -0
  36. package/es/Link/Link.module.css +3 -3
  37. package/es/Loader/Loader.module.css +25 -46
  38. package/es/Message/Message.module.css +69 -102
  39. package/es/MessageBanner/MessageBanner.module.css +38 -46
  40. package/es/NewStar/NewStar.module.css +73 -110
  41. package/es/PlusIcon/PlusIcon.js +0 -0
  42. package/es/PlusIcon/PlusIcon.module.css +16 -16
  43. package/es/Provider.js +35 -88
  44. package/es/ToastMessage/ToastMessage.js +0 -0
  45. package/es/ToastMessage/ToastMessage.module.css +257 -328
  46. package/es/Upload/Upload.module.css +106 -125
  47. package/es/alert/AlertHeader/AlertHeader.module.css +62 -80
  48. package/es/alert/AlertLookup/AlertLookup.module.css +22 -26
  49. package/es/avatar/AvatarClose/AvatarClose.module.css +31 -37
  50. package/es/avatar/AvatarCollision/AvatarCollision.module.css +55 -69
  51. package/es/avatar/AvatarIcon/AvatarIcon.module.css +59 -58
  52. package/es/avatar/AvatarStatus/AvatarStatus.js +0 -0
  53. package/es/avatar/AvatarStatus/AvatarStatus.module.css +96 -146
  54. package/es/avatar/AvatarThread/AvatarThread.module.css +113 -163
  55. package/es/avatar/AvatarUser/AvatarUser.js +0 -0
  56. package/es/avatar/AvatarUser/AvatarUser.module.css +100 -171
  57. package/es/avatar/AvatarWithTeam/AvatarWithTeam.module.css +16 -23
  58. package/es/common/dot_animation.module.css +14 -0
  59. package/es/common/dot_common.module.css +4 -0
  60. package/es/deprecated/SelectDropdown/SelectDropdown.module.css +47 -55
  61. package/es/dropdown/ToggleDropDown/ToggleDropDown.module.css +84 -97
  62. package/es/emptystate/CommonEmptyState/CommonEmptyState.js +0 -0
  63. package/es/emptystate/CommonEmptyState/CommonEmptyState.module.css +77 -85
  64. package/es/emptystate/EditionPage/EditionPage.css +37 -43
  65. package/es/errorstate/EmptyStates.module.css +84 -87
  66. package/es/errorstate/Inconvenience/Inconvenience.module.css +4 -7
  67. package/es/errorstate/LinkText/LinkText.module.css +6 -6
  68. package/es/errorstate/NoRequestFound/NoRequestFound.module.css +3 -3
  69. package/es/errorstate/PermissionPlay/PermissionPlay.module.css +34 -34
  70. package/es/errorstate/RequestUrlNotFound/RequestUrlNotFound.module.css +3 -3
  71. package/es/errorstate/UnableToProcess/UnableToProcess.module.css +3 -3
  72. package/es/errorstate/UnauthorizedLogin/UnauthorizedLogin.module.css +3 -3
  73. package/es/errorstate/WillBack/WillBack.module.css +36 -34
  74. package/es/form/fields/CheckBoxField/CheckBoxField.js +0 -0
  75. package/es/form/fields/Fields.module.css +148 -183
  76. package/es/form/fields/TagsMultiSelect/TagsMultiSelect.module.css +95 -107
  77. package/es/form/fields/TagsMultiSelectField/TagsMultiSelectField.module.css +6 -9
  78. package/es/form/fields/TextEditor/TextEditor.module.css +589 -666
  79. package/es/form/fields/TextEditorWrapper/TextEditorWrapper.module.css +25 -36
  80. package/es/form/fields/ValidationMessage/ValidationMessage.module.css +22 -27
  81. package/es/form/layout/Field/Field.js +0 -0
  82. package/es/form/layout/Field/Field.module.css +22 -22
  83. package/es/form/layout/Section/ModuleFormSection.module.css +3 -3
  84. package/es/form/layout/Section/Section.js +0 -0
  85. package/es/layout/SetupDetailLayout/SetupDetailLayout.module.css +116 -152
  86. package/es/layout/SubtabLayout/SubtabLayout.module.css +120 -146
  87. package/es/list/AvatarFlip/AvatarFlip.module.css +3 -3
  88. package/es/list/BluePrintStatus/BluePrintStatus.module.css +14 -17
  89. package/es/list/Comment/Comment.module.css +24 -29
  90. package/es/list/DepartmentDropDown/DepartmentDropDown.module.css +9 -9
  91. package/es/list/Dot/Dot.module.css +15 -15
  92. package/es/list/DotNew/DotNew.module.css +22 -22
  93. package/es/list/GridStencils/GridStencils.module.css +102 -156
  94. package/es/list/Icons/Icons.module.css +15 -15
  95. package/es/list/ListLayout/ListLayout.module.css +49 -57
  96. package/es/list/ListStencils/ListStencils.module.css +62 -67
  97. package/es/list/SecondaryText/SecondaryText.module.css +126 -136
  98. package/es/list/SecondaryText/Website.js +0 -0
  99. package/es/list/SecondryPanel/SecondryPanel.js +0 -0
  100. package/es/list/SecondryPanel/SecondryPanel.module.css +5 -5
  101. package/es/list/SentimentStatus/SentimentStatus.module.css +9 -12
  102. package/es/list/Subject/Subject.module.css +27 -27
  103. package/es/list/TagNew/TagNew.module.css +108 -115
  104. package/es/list/Thread/Thread.module.css +30 -42
  105. package/es/list/UserTime/UserTime.module.css +52 -58
  106. package/es/list/listCommon.module.css +52 -60
  107. package/es/list/status/StatusDropdown/StatusDropdown.module.css +76 -89
  108. package/es/list/status/StatusListItem/StatusListItem.js +0 -0
  109. package/es/list/status/StatusListItem/StatusListItem.module.css +81 -104
  110. package/es/lookup/EmptyPage/EmptyPage.js +0 -0
  111. package/es/lookup/EmptyPage/LookupEmptyPage.module.css +12 -12
  112. package/es/lookup/Lookup/Lookup.js +0 -0
  113. package/es/lookup/Lookup/Lookup.module.css +26 -26
  114. package/es/lookup/Section/LookupSection.module.css +8 -8
  115. package/es/lookup/header/Close/LookupClose.module.css +15 -15
  116. package/es/lookup/header/Search/LookupSearch.module.css +48 -57
  117. package/es/lookup/header/TicketHeader/TicketHeader.module.css +19 -22
  118. package/es/lookup/header/Title/LookupTitle.module.css +20 -20
  119. package/es/lookup/header/ViewDropDown/ViewDropDown.module.css +45 -50
  120. package/es/lookup/header/lookupHeaderCommon.module.css +25 -35
  121. package/es/lookup/header/lookupHeaderCommonResponsive.module.css +15 -24
  122. package/es/setup/header/Button/HeaderButton.module.css +3 -5
  123. package/es/setup/header/Link/HeaderLink.module.css +15 -21
  124. package/es/setup/header/Search/Search.module.css +57 -68
  125. package/es/setup/header/Views/Views.module.css +27 -37
  126. package/es/setup/helptips/Description/HelpTipsDescription.module.css +6 -6
  127. package/es/setup/helptips/Link/HelpTipsLink.module.css +6 -7
  128. package/es/setup/helptips/Link/Link.js +0 -0
  129. package/es/setup/helptips/ListGroup/ListGroup.module.css +17 -22
  130. package/es/setup/helptips/Title/HelpTipsTitle.module.css +5 -5
  131. package/es/setup/helptips/Title/Title.js +0 -0
  132. package/es/setup/table/TableData/SetupTableData.module.css +36 -44
  133. package/es/setup/table/TableData/Tablehover.module.css +6 -6
  134. package/es/setup/table/TableHead/SetupTableHead.module.css +8 -12
  135. package/es/setup/table/TableRow/SetupTableRow.module.css +10 -14
  136. package/es/setup/table/Text/TableText.module.css +37 -37
  137. package/es/setup/table/Text/Text.js +0 -0
  138. package/es/svg/PlusIcon.js +1 -1
  139. package/es/svg/SnippetIcon.js +2 -2
  140. package/es/utils/KeyboardApi.js +25 -25
  141. package/es/version2/AlertClose/AlertClose.module.css +42 -42
  142. package/es/version2/GlobalNotification/GlobalNotification.module.css +89 -124
  143. package/es/version2/alertIcons/AlertIcons.module.css +67 -67
  144. package/es/version2/errorstate/V2_ErrorStates.module.css +46 -46
  145. package/es/version2/lookup/AlertHeader/AlertHeaderNew.module.css +63 -86
  146. package/es/version2/lookup/AlertLookup/AlertLookupNew.module.css +39 -43
  147. package/es/version2/lookup/alertLookupCommonNew.module.css +25 -32
  148. package/es/version2/notification/DesktopNotification/DesktopNotification.module.css +90 -106
  149. package/es/version2/notification/DesktopNotificationHeader/DesktopNotificationHeader.module.css +99 -136
  150. package/images/audio_thumbnail.png +0 -0
  151. package/lib/ActionButton/ActionButton.module.css +137 -136
  152. package/lib/AlphabeticList/AlphabeticList.module.css +57 -57
  153. package/lib/Attachment/Attachment.module.css +132 -132
  154. package/lib/ChannelIcon/ChannelIcon.module.css +217 -217
  155. package/lib/Drawer/Drawer.js +0 -0
  156. package/lib/Drawer/Drawer.module.css +151 -151
  157. package/lib/ExternalLink/ExternalLink.js +0 -0
  158. package/lib/ExternalLink/ExternalLink.module.css +3 -3
  159. package/lib/ExternalLink/__tests__/ExternalLink.spec.js +0 -0
  160. package/lib/FlipCard/FlipCard.module.css +44 -44
  161. package/lib/FormAction/FormAction.module.css +82 -82
  162. package/lib/FreezeLayer/FreezeLayer.js +4 -31
  163. package/lib/FreezeLayer/FreezeLayer.module.css +42 -42
  164. package/lib/IconButton/IconButton.module.css +22 -22
  165. package/lib/Image/Image.module.css +10 -10
  166. package/lib/ImportantNotes/ImportantNotes.module.css +20 -20
  167. package/lib/Link/Link.js +0 -0
  168. package/lib/Link/Link.module.css +3 -3
  169. package/lib/Loader/Loader.module.css +46 -46
  170. package/lib/Message/Message.module.css +102 -102
  171. package/lib/MessageBanner/MessageBanner.module.css +46 -46
  172. package/lib/NewStar/NewStar.module.css +110 -110
  173. package/lib/PlusIcon/PlusIcon.js +0 -0
  174. package/lib/PlusIcon/PlusIcon.module.css +16 -16
  175. package/lib/Provider.js +37 -107
  176. package/lib/ToastMessage/ToastMessage.js +0 -0
  177. package/lib/ToastMessage/ToastMessage.module.css +328 -328
  178. package/lib/Upload/Upload.module.css +125 -125
  179. package/lib/alert/AlertHeader/AlertHeader.module.css +80 -80
  180. package/lib/alert/AlertLookup/AlertLookup.module.css +26 -26
  181. package/lib/avatar/AvatarClose/AvatarClose.module.css +37 -37
  182. package/lib/avatar/AvatarCollision/AvatarCollision.module.css +69 -69
  183. package/lib/avatar/AvatarIcon/AvatarIcon.module.css +58 -58
  184. package/lib/avatar/AvatarStatus/AvatarStatus.js +0 -0
  185. package/lib/avatar/AvatarStatus/AvatarStatus.module.css +146 -146
  186. package/lib/avatar/AvatarThread/AvatarThread.module.css +163 -163
  187. package/lib/avatar/AvatarUser/AvatarUser.js +0 -0
  188. package/lib/avatar/AvatarUser/AvatarUser.module.css +171 -171
  189. package/lib/avatar/AvatarWithTeam/AvatarWithTeam.module.css +23 -23
  190. package/lib/deprecated/SelectDropdown/SelectDropdown.module.css +55 -55
  191. package/lib/dropdown/ToggleDropDown/ToggleDropDown.module.css +97 -97
  192. package/lib/emptystate/CommonEmptyState/CommonEmptyState.js +0 -0
  193. package/lib/emptystate/CommonEmptyState/CommonEmptyState.module.css +85 -85
  194. package/lib/emptystate/EditionPage/EditionPage.css +43 -43
  195. package/lib/errorstate/EmptyStates.module.css +87 -87
  196. package/lib/errorstate/Inconvenience/Inconvenience.module.css +7 -7
  197. package/lib/errorstate/LinkText/LinkText.module.css +6 -6
  198. package/lib/errorstate/NoRequestFound/NoRequestFound.module.css +3 -3
  199. package/lib/errorstate/PermissionPlay/PermissionPlay.module.css +34 -34
  200. package/lib/errorstate/RequestUrlNotFound/RequestUrlNotFound.module.css +3 -3
  201. package/lib/errorstate/UnableToProcess/UnableToProcess.module.css +3 -3
  202. package/lib/errorstate/UnauthorizedLogin/UnauthorizedLogin.module.css +3 -3
  203. package/lib/errorstate/WillBack/WillBack.module.css +34 -34
  204. package/lib/form/fields/CheckBoxField/CheckBoxField.js +1 -1
  205. package/lib/form/fields/CurrencyField/CurrencyField.js +8 -9
  206. package/lib/form/fields/DateField/DateField.js +1 -1
  207. package/lib/form/fields/Fields.module.css +183 -183
  208. package/lib/form/fields/MultiSelectField/MultiSelectField.js +1 -1
  209. package/lib/form/fields/PhoneField/PhoneField.js +1 -1
  210. package/lib/form/fields/RadioField/RadioField.js +1 -1
  211. package/lib/form/fields/SelectField/SelectField.js +1 -1
  212. package/lib/form/fields/TagsMultiSelect/TagsMultiSelect.js +4 -7
  213. package/lib/form/fields/TagsMultiSelect/TagsMultiSelect.module.css +107 -107
  214. package/lib/form/fields/TagsMultiSelectField/TagsMultiSelectField.module.css +9 -9
  215. package/lib/form/fields/TextBoxField/TextBoxField.js +1 -1
  216. package/lib/form/fields/TextEditor/TextEditor.module.css +655 -666
  217. package/lib/form/fields/TextEditorWrapper/TextEditorWrapper.module.css +36 -36
  218. package/lib/form/fields/TextareaField/TextareaField.js +1 -1
  219. package/lib/form/fields/ValidationMessage/ValidationMessage.module.css +27 -27
  220. package/lib/form/layout/Field/Field.js +0 -0
  221. package/lib/form/layout/Field/Field.module.css +22 -22
  222. package/lib/form/layout/Section/ModuleFormSection.module.css +3 -3
  223. package/lib/form/layout/Section/Section.js +0 -0
  224. package/lib/layout/SetupDetailLayout/SetupDetailLayout.module.css +152 -152
  225. package/lib/layout/SubtabLayout/SubtabLayout.module.css +146 -146
  226. package/lib/list/AvatarFlip/AvatarFlip.module.css +3 -3
  227. package/lib/list/BluePrintStatus/BluePrintStatus.module.css +17 -17
  228. package/lib/list/Comment/Comment.module.css +29 -29
  229. package/lib/list/DepartmentDropDown/DepartmentDropDown.module.css +9 -9
  230. package/lib/list/Dot/Dot.module.css +15 -15
  231. package/lib/list/DotNew/DotNew.module.css +22 -22
  232. package/lib/list/GridStencils/GridStencils.module.css +156 -156
  233. package/lib/list/Icons/Icons.module.css +15 -15
  234. package/lib/list/ListLayout/ListLayout.module.css +57 -57
  235. package/lib/list/ListStencils/ListStencils.module.css +67 -67
  236. package/lib/list/SecondaryText/SecondaryText.module.css +136 -136
  237. package/lib/list/SecondaryText/Website.js +0 -0
  238. package/lib/list/SecondryPanel/SecondryPanel.js +0 -0
  239. package/lib/list/SecondryPanel/SecondryPanel.module.css +5 -5
  240. package/lib/list/SentimentStatus/SentimentStatus.module.css +12 -12
  241. package/lib/list/Subject/Subject.module.css +27 -27
  242. package/lib/list/TagNew/TagNew.module.css +115 -115
  243. package/lib/list/Thread/Thread.module.css +42 -42
  244. package/lib/list/UserTime/UserTime.module.css +58 -58
  245. package/lib/list/listCommon.module.css +60 -60
  246. package/lib/list/status/StatusDropdown/StatusDropdown.js +37 -44
  247. package/lib/list/status/StatusDropdown/StatusDropdown.module.css +89 -89
  248. package/lib/list/status/StatusListItem/StatusListItem.js +0 -0
  249. package/lib/list/status/StatusListItem/StatusListItem.module.css +104 -104
  250. package/lib/lookup/EmptyPage/EmptyPage.js +0 -0
  251. package/lib/lookup/EmptyPage/LookupEmptyPage.module.css +12 -12
  252. package/lib/lookup/Lookup/Lookup.js +0 -0
  253. package/lib/lookup/Lookup/Lookup.module.css +26 -26
  254. package/lib/lookup/Section/LookupSection.module.css +8 -8
  255. package/lib/lookup/header/Close/LookupClose.module.css +15 -15
  256. package/lib/lookup/header/Search/LookupSearch.module.css +57 -57
  257. package/lib/lookup/header/TicketHeader/TicketHeader.module.css +22 -22
  258. package/lib/lookup/header/Title/LookupTitle.module.css +20 -20
  259. package/lib/lookup/header/ViewDropDown/ViewDropDown.module.css +50 -50
  260. package/lib/lookup/header/lookupHeaderCommon.module.css +35 -35
  261. package/lib/lookup/header/lookupHeaderCommonResponsive.module.css +24 -24
  262. package/lib/setup/header/Button/HeaderButton.module.css +5 -5
  263. package/lib/setup/header/Link/HeaderLink.module.css +21 -21
  264. package/lib/setup/header/Search/Search.module.css +68 -68
  265. package/lib/setup/header/Views/Views.js +2 -2
  266. package/lib/setup/header/Views/Views.module.css +37 -37
  267. package/lib/setup/helptips/Description/HelpTipsDescription.module.css +6 -6
  268. package/lib/setup/helptips/Link/HelpTipsLink.module.css +7 -7
  269. package/lib/setup/helptips/Link/Link.js +0 -0
  270. package/lib/setup/helptips/ListGroup/ListGroup.module.css +22 -22
  271. package/lib/setup/helptips/Title/HelpTipsTitle.module.css +5 -5
  272. package/lib/setup/helptips/Title/Title.js +0 -0
  273. package/lib/setup/table/TableData/SetupTableData.module.css +44 -44
  274. package/lib/setup/table/TableData/Tablehover.module.css +6 -6
  275. package/lib/setup/table/TableHead/SetupTableHead.module.css +12 -12
  276. package/lib/setup/table/TableRow/SetupTableRow.module.css +14 -14
  277. package/lib/setup/table/Text/TableText.module.css +37 -37
  278. package/lib/setup/table/Text/Text.js +0 -0
  279. package/lib/svg/PlusIcon.js +1 -1
  280. package/lib/svg/SnippetIcon.js +2 -2
  281. package/lib/utils/General.js +24 -0
  282. package/lib/utils/KeyboardApi.js +25 -25
  283. package/lib/version2/AlertClose/AlertClose.module.css +42 -42
  284. package/lib/version2/GlobalNotification/GlobalNotification.module.css +124 -124
  285. package/lib/version2/alertIcons/AlertIcons.module.css +67 -67
  286. package/lib/version2/errorstate/V2_ErrorStates.module.css +46 -46
  287. package/lib/version2/lookup/AlertHeader/AlertHeaderNew.module.css +86 -86
  288. package/lib/version2/lookup/AlertLookup/AlertLookupNew.module.css +43 -43
  289. package/lib/version2/lookup/alertLookupCommonNew.module.css +32 -32
  290. package/lib/version2/notification/DesktopNotification/DesktopNotification.module.css +106 -106
  291. package/lib/version2/notification/DesktopNotificationHeader/DesktopNotificationHeader.module.css +136 -136
  292. package/package.json +81 -81
  293. package/assets/Appearance/pureDark/mode/dotPureDarkMode.module.css +0 -521
  294. package/assets/Appearance/pureDark/themes/blue/bluePureDarkDotTheme.module.css +0 -10
  295. package/assets/Appearance/pureDark/themes/green/greenPureDarkDotTheme.module.css +0 -10
  296. package/assets/Appearance/pureDark/themes/orange/orangePureDarkDotTheme.module.css +0 -10
  297. package/assets/Appearance/pureDark/themes/red/redPureDarkDotTheme.module.css +0 -10
  298. package/assets/Appearance/pureDark/themes/yellow/yellowPureDarkDotTheme.module.css +0 -10
  299. package/lib/Provider/Config.js +0 -21
  300. package/lib/deprecated/utils/General.js +0 -29
@@ -0,0 +1,562 @@
1
+ import React, { Component } from "react";
2
+ import PropTypes from "prop-types";
3
+ import { Container, Box } from "@zohodesk/components/lib/Layout";
4
+ import Icon from "@zohodesk/icons/lib/Icon";
5
+ import Avatar from "@zohodesk/components/lib/Avatar/Avatar";
6
+ import { ResponsiveReceiver } from "@zohodesk/components/lib/Responsive/CustomResponsive";
7
+ import { getUniqueId } from "@zohodesk/components/lib/Provider/IdProvider";
8
+ import AttachmentImage from "./AttachmentImage";
9
+ import Link from "../Link/Link";
10
+ import IconButton from "../IconButton/IconButton";
11
+ import FreezeLayer from "../FreezeLayer/FreezeLayer";
12
+ import { isAudioFile, getExtensionFromFileName } from "./Attachment";
13
+ import { shallowDiff } from '../utils/General';
14
+ import style from "./AttachmentViewer.module.css";
15
+ export default class AttachmentViewer extends Component {
16
+ constructor(props) {
17
+ super(props);
18
+ this.state = {
19
+ isPViewListOpen: !!(this.props.previewObj && this.props.previewObj.previewData),
20
+ selectedIndex: this.props.previewObj.selectedIndex,
21
+ isZoomed: false,
22
+ data: this.props.previewObj ? this.props.previewObj.previewData : [],
23
+ dataList: this.getUpdateDataList({
24
+ index: this.props.previewObj.selectedIndex,
25
+ data: this.props.previewObj ? this.props.previewObj.previewData : [],
26
+ dataList: []
27
+ })
28
+ };
29
+ this.togglePViewList = this.togglePViewList.bind(this);
30
+ this.changeSelectedIndex = this.changeSelectedIndex.bind(this);
31
+ this.closeAttachmentViewer = this.closeAttachmentViewer.bind(this);
32
+ this.responsiveFunc = this.responsiveFunc.bind(this);
33
+ this.zoomIn = this.zoomIn.bind(this);
34
+ this.zoomOut = this.zoomOut.bind(this);
35
+ this.imgPreviewView = this.imgPreviewView.bind(this);
36
+ this.getNextId = getUniqueId(this);
37
+ this.getUpdateDataList = this.getUpdateDataList.bind(this);
38
+ this.zoomMaintain = this.zoomMaintain.bind(this);
39
+ }
40
+
41
+ componentDidUpdate(prevProps) {
42
+ let {
43
+ previewObj
44
+ } = this.props;
45
+ let indexChanged = previewObj.selectedIndex != prevProps.previewObj.selectedIndex;
46
+
47
+ if (previewObj.previewData.length != prevProps.previewObj.previewData.length || indexChanged) {
48
+ let objChanged = previewObj.previewData.some((value, index) => {
49
+ return shallowDiff(value, prevProps.previewObj[index]);
50
+ });
51
+
52
+ if (objChanged || indexChanged) {
53
+ this.setState({
54
+ selectedIndex: previewObj.selectedIndex,
55
+ data: previewObj ? previewObj.previewData : [],
56
+ dataList: this.getUpdateDataList({
57
+ index: previewObj.selectedIndex,
58
+ data: previewObj ? previewObj.previewData : [],
59
+ dataList: []
60
+ }),
61
+ isPViewListOpen: !!(this.props.previewObj && this.props.previewObj.previewData)
62
+ });
63
+ }
64
+ }
65
+ }
66
+
67
+ togglePViewList() {
68
+ this.setState(prevState => ({
69
+ isPViewListOpen: !prevState.isPViewListOpen
70
+ }), () => {
71
+ this.focusSelectedImg(this.state.selectedIndex);
72
+ });
73
+ }
74
+
75
+ zoomOut(ele) {
76
+ this.setState({
77
+ isZoomed: false
78
+ });
79
+ const img = document.getElementById(`img${ele}`);
80
+
81
+ if (img) {
82
+ img.classList.remove(style.zoomedImg);
83
+ img.classList.add(style.normalImg);
84
+ }
85
+ }
86
+
87
+ zoomIn(event, ele) {
88
+ let moveToPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
89
+ this.setState({
90
+ isZoomed: true
91
+ });
92
+ const img = document.getElementById(`img${ele}`);
93
+ const ratio = 95;
94
+ let imgContainer, imgUnits, imgSize, imgRatio, imgContainerUnits, imgContainerPosition;
95
+
96
+ if (moveToPosition) {
97
+ imgContainer = document.getElementById(`imgBox${ele}`);
98
+ imgUnits = img.getBoundingClientRect();
99
+ imgSize = {
100
+ height: img.naturalHeight,
101
+ width: img.naturalWidth
102
+ };
103
+ imgRatio = {
104
+ height: Math.floor(imgSize.height / imgUnits.height / 100 * ratio),
105
+ width: Math.floor(imgSize.width / imgUnits.width / 100 * ratio)
106
+ };
107
+ imgContainerUnits = imgContainer.getBoundingClientRect();
108
+ imgContainerPosition = imgContainer ? {
109
+ top: imgContainerUnits.top,
110
+ left: imgContainerUnits.left
111
+ } : {
112
+ top: 0,
113
+ left: 0
114
+ };
115
+ }
116
+
117
+ if (img) {
118
+ img.classList.remove(style.normalImg);
119
+ img.classList.add(style.zoomedImg);
120
+ }
121
+
122
+ if (moveToPosition) {
123
+ imgContainer.scrollLeft = (event.pageX - imgContainerPosition.left - imgUnits.left) * imgRatio.width;
124
+ imgContainer.scrollTop = (event.pageY - imgContainerPosition.top - imgUnits.top) * imgRatio.height;
125
+ }
126
+ }
127
+
128
+ zoomMaintain(selectedIndex) {
129
+ let {
130
+ isZoomed
131
+ } = this.state;
132
+ isZoomed ? this.zoomIn({}, selectedIndex) : this.zoomOut(selectedIndex);
133
+ }
134
+
135
+ getUpdateDataList(_ref) {
136
+ let {
137
+ index,
138
+ data,
139
+ dataList
140
+ } = _ref;
141
+ data = data || this.state.data;
142
+ dataList = dataList || this.state.dataList;
143
+ const finalDataList = [...dataList];
144
+
145
+ if (index >= finalDataList.length) {
146
+ for (let i = dataList.length; i <= index; i++) {
147
+ finalDataList.push(data.slice(i)[0]);
148
+ }
149
+ } else if (index + 1 === finalDataList.length && index + 1 < data.length) {
150
+ finalDataList.push(data.slice(index + 1)[0]);
151
+ }
152
+
153
+ return finalDataList;
154
+ }
155
+
156
+ updateDataList(index) {
157
+ this.setState({
158
+ dataList: this.getUpdateDataList({
159
+ index
160
+ })
161
+ });
162
+ }
163
+
164
+ changeSelectedIndex(index) {
165
+ const {
166
+ data,
167
+ selectedIndex
168
+ } = this.state;
169
+ const {
170
+ maintainZoom
171
+ } = this.props;
172
+ maintainZoom ? this.zoomMaintain(index) : this.zoomOut(selectedIndex);
173
+
174
+ if (index <= data.length - 1) {
175
+ this.updateDataList(index);
176
+ }
177
+
178
+ this.setState({
179
+ selectedIndex: index
180
+ }, () => {
181
+ this.focusSelectedImg(index);
182
+ });
183
+ }
184
+
185
+ focusSelectedImg(index) {
186
+ const ele = this[`img_${index}`];
187
+
188
+ if (ele) {
189
+ const cont = this.imgListCont;
190
+ cont.scrollLeft = ele.offsetLeft;
191
+ }
192
+ }
193
+
194
+ closeAttachmentViewer() {
195
+ this.setState({
196
+ isPViewListOpen: false,
197
+ isZoomed: false
198
+ });
199
+ this.props.hideAttachmentViewer();
200
+ }
201
+
202
+ responsiveFunc(_ref2) {
203
+ let {
204
+ mediaQueryOR
205
+ } = _ref2;
206
+ return {
207
+ uptoTablet: mediaQueryOR([{
208
+ maxWidth: 768
209
+ }])
210
+ };
211
+ }
212
+
213
+ imgPreviewView() {
214
+ var _this = this;
215
+
216
+ const {
217
+ dataList,
218
+ selectedIndex,
219
+ isZoomed
220
+ } = this.state;
221
+ const {
222
+ maintainZoom
223
+ } = this.props;
224
+
225
+ const getImgStyle = i => {
226
+ let position;
227
+
228
+ if (selectedIndex < i) {
229
+ position = (i - selectedIndex) * 100;
230
+ return {
231
+ transform: `translateX(${parseInt(position)}%)`,
232
+ opacity: "0"
233
+ };
234
+ }
235
+
236
+ if (i === selectedIndex) {
237
+ return {
238
+ transform: "translateX(0%)",
239
+ opacity: "1"
240
+ };
241
+ }
242
+
243
+ position = (selectedIndex - i) * 100 * -1;
244
+ return {
245
+ transform: `translateX(${parseInt(position)}%)`,
246
+ opacity: "0"
247
+ };
248
+ };
249
+
250
+ return dataList.length && dataList.map(function () {
251
+ let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
252
+ let i = arguments.length > 1 ? arguments[1] : undefined;
253
+ const selectedImgUrl = data.viewUrl;
254
+ return /*#__PURE__*/React.createElement(Container, {
255
+ className: style.imgBox,
256
+ id: `imgBox${i}`,
257
+ key: i,
258
+ alignBox: "row",
259
+ align: "both",
260
+ style: getImgStyle(i)
261
+ }, /*#__PURE__*/React.createElement(Box, {
262
+ className: style.imgRef,
263
+ id: `imgPreviewRef${i}`
264
+ }, isAudioFile(data.name) ? selectedIndex == i ? /*#__PURE__*/React.createElement("video", {
265
+ autoPlay: true,
266
+ controls: true,
267
+ className: style.zoomIn
268
+ }, /*#__PURE__*/React.createElement("source", {
269
+ src: data.viewUrl,
270
+ type: `audio/${getExtensionFromFileName(data.name)}`
271
+ })) : null : /*#__PURE__*/React.createElement(AttachmentImage, {
272
+ className: `${style.img} ${selectedIndex == i && maintainZoom ? isZoomed ? style.zoomedImg : style.normalImg : ""}`,
273
+ src: selectedImgUrl,
274
+ onClick: isZoomed ? _this.zoomOut.bind(_this, i) : e => {
275
+ _this.zoomIn(e, i, true);
276
+ },
277
+ alt: "Preview",
278
+ dataId: "attachViewed",
279
+ id: `img${i}`,
280
+ isImage: true,
281
+ isCover: false
282
+ })));
283
+ });
284
+ }
285
+
286
+ render() {
287
+ const {
288
+ isPViewListOpen,
289
+ selectedIndex,
290
+ data,
291
+ isZoomed
292
+ } = this.state;
293
+ const {
294
+ responsiveId,
295
+ needDownload,
296
+ i18nKeys,
297
+ isActive
298
+ } = this.props;
299
+ const totalLen = data.length;
300
+ const selectedAttachment = data[selectedIndex] || {};
301
+ const selectedImgUrl = selectedAttachment.viewUrl;
302
+ const downloadUrl = selectedAttachment.downloadUrl;
303
+ let authorHref;
304
+ let authorName;
305
+ const {
306
+ author
307
+ } = data[selectedIndex] ? data[selectedIndex] : {};
308
+
309
+ if (author) {
310
+ authorHref = author.href;
311
+ authorName = author.name;
312
+ }
313
+
314
+ const ariaId = this.getNextId();
315
+ return /*#__PURE__*/React.createElement(FreezeLayer, {
316
+ isActive: isActive && totalLen >= 1,
317
+ palette: "dark",
318
+ animationName: "expand"
319
+ }, /*#__PURE__*/React.createElement(ResponsiveReceiver, {
320
+ responsiveId: responsiveId,
321
+ query: this.responsiveFunc
322
+ }, _ref3 => {
323
+ let {
324
+ uptoTablet
325
+ } = _ref3;
326
+ return /*#__PURE__*/React.createElement(Container, {
327
+ scroll: "none",
328
+ "data-scroll-palette": "dark"
329
+ }, /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Container, {
330
+ alignBox: "row",
331
+ className: style.header,
332
+ align: "between",
333
+ tabindex: "0"
334
+ }, /*#__PURE__*/React.createElement(Box, {
335
+ shrink: true,
336
+ className: style.title,
337
+ "data-title": selectedAttachment.name,
338
+ dataId: "attachName",
339
+ id: ariaId
340
+ }, selectedAttachment.name), /*#__PURE__*/React.createElement(Box, {
341
+ flexible: true,
342
+ className: style.count,
343
+ dataId: "attachCountContainer"
344
+ }, selectedIndex + 1, "/", totalLen), /*#__PURE__*/React.createElement(Box, {
345
+ className: uptoTablet ? style.mbleMenuBar : style.menuBar
346
+ }, /*#__PURE__*/React.createElement(Container, {
347
+ isInline: true,
348
+ alignBox: uptoTablet ? "column-reverse" : "row",
349
+ align: uptoTablet ? "bottom" : "center",
350
+ wrap: "wrap",
351
+ isCover: false
352
+ }, isZoomed ? /*#__PURE__*/React.createElement("div", {
353
+ className: uptoTablet ? style.mobileMenu : style.menu,
354
+ onClick: this.zoomOut.bind(this, selectedIndex),
355
+ "data-id": "zoomOut",
356
+ "data-title": i18nKeys.zoomOutText
357
+ }, /*#__PURE__*/React.createElement(IconButton, {
358
+ iconName: "ZD-GN-zoomOut",
359
+ className: style.menuIcon,
360
+ iconSize: "16",
361
+ hoverType: "border",
362
+ a11y: {
363
+ ariaLabel: i18nKeys.zoomOutText
364
+ }
365
+ })) : /*#__PURE__*/React.createElement("div", {
366
+ className: uptoTablet ? style.mobileMenu : style.menu,
367
+ onClick: e => this.zoomIn(e, selectedIndex),
368
+ "data-id": "zoomIn",
369
+ "data-title": i18nKeys.zoomInText
370
+ }, /*#__PURE__*/React.createElement(IconButton, {
371
+ iconName: "ZD-GN-zoomIn",
372
+ className: style.menuIcon,
373
+ iconSize: "16",
374
+ hoverType: "border",
375
+ a11y: {
376
+ ariaLabel: i18nKeys.zoomInText
377
+ }
378
+ })), /*#__PURE__*/React.createElement("div", {
379
+ className: uptoTablet ? style.mobileMenu : style.menu
380
+ }, /*#__PURE__*/React.createElement(Link, {
381
+ href: selectedImgUrl,
382
+ target: "_blank",
383
+ dataId: "newTabAttach",
384
+ title: i18nKeys.newTabText
385
+ }, /*#__PURE__*/React.createElement(IconButton, {
386
+ iconName: "ZD-GN-newLink",
387
+ className: style.menuIcon,
388
+ iconSize: "16",
389
+ hoverType: "border",
390
+ needButtonTag: false,
391
+ a11y: {
392
+ ariaLabel: i18nKeys.newTabText
393
+ }
394
+ }))), needDownload ? /*#__PURE__*/React.createElement("div", {
395
+ className: uptoTablet ? style.mobileMenu : style.menu
396
+ }, /*#__PURE__*/React.createElement(Link, {
397
+ href: downloadUrl,
398
+ target: "_parent",
399
+ hasReload: true,
400
+ download: true,
401
+ title: i18nKeys.downloadText
402
+ }, /*#__PURE__*/React.createElement(IconButton, {
403
+ iconName: "ZD-GN-download",
404
+ className: style.menuIcon,
405
+ iconSize: "16",
406
+ hoverType: "border",
407
+ needButtonTag: false,
408
+ a11y: {
409
+ ariaLabel: i18nKeys.downloadText
410
+ }
411
+ }))) : null, /*#__PURE__*/React.createElement("div", {
412
+ className: uptoTablet ? style.mobileMenu : style.menu,
413
+ onClick: this.closeAttachmentViewer,
414
+ "data-id": "closeAttach",
415
+ "data-title": i18nKeys.closeText
416
+ }, /*#__PURE__*/React.createElement(IconButton, {
417
+ iconName: "ZD-cross",
418
+ iconSize: "15",
419
+ hoverType: "border",
420
+ className: style.menuIcon,
421
+ a11y: {
422
+ ariaLabel: i18nKeys.closeText
423
+ },
424
+ title: i18nKeys.closeText
425
+ })))))), /*#__PURE__*/React.createElement(Box, {
426
+ flexible: true,
427
+ role: "toolbar",
428
+ tabindex: "0"
429
+ }, /*#__PURE__*/React.createElement(Container, {
430
+ alignBox: "row"
431
+ }, /*#__PURE__*/React.createElement(Box, {
432
+ className: `${style.arrowBox} ${uptoTablet ? style.mbleArrowBox : style.nrmlArrowBox} ${selectedIndex === 0 ? style.hidden : ""}`,
433
+ onClick: this.changeSelectedIndex.bind(this, selectedIndex - 1),
434
+ "data-title": i18nKeys.previousText,
435
+ "data-title-position": "left"
436
+ }, /*#__PURE__*/React.createElement("button", {
437
+ className: style.btn,
438
+ "aria-label": i18nKeys.previousText
439
+ }, /*#__PURE__*/React.createElement(Icon, {
440
+ name: "ZD-arrowLeft3",
441
+ iconClass: style.arrow,
442
+ dataId: "leftAttachNav",
443
+ isBold: true
444
+ }))), /*#__PURE__*/React.createElement(Box, {
445
+ className: style.previewBox,
446
+ role: "option",
447
+ tabindex: "0",
448
+ "aria-describedby": ariaId,
449
+ isShrink: false,
450
+ eleRef: this.setImgBoxRef,
451
+ scroll: "both",
452
+ flexible: true
453
+ }, this.imgPreviewView()), /*#__PURE__*/React.createElement(Box, {
454
+ className: `${style.arrowBox} ${uptoTablet ? style.mbleArrowBox : style.nrmlArrowBox} ${totalLen === selectedIndex + 1 ? style.hidden : ""}`,
455
+ onClick: this.changeSelectedIndex.bind(this, selectedIndex + 1),
456
+ "data-title": i18nKeys.nextText,
457
+ "data-title-position": "right"
458
+ }, /*#__PURE__*/React.createElement("button", {
459
+ className: style.btn,
460
+ "aria-label": i18nKeys.nextText
461
+ }, /*#__PURE__*/React.createElement(Icon, {
462
+ name: "ZD-arrowRight3",
463
+ iconClass: style.arrow,
464
+ dataId: "rightAttachNav",
465
+ isBold: true
466
+ }))))), /*#__PURE__*/React.createElement(Box, {
467
+ className: `${style.footer} ${isPViewListOpen && totalLen !== 1 ? style.footerHeight : style.footerHide} `
468
+ }, /*#__PURE__*/React.createElement(Container, {
469
+ align: "vertical",
470
+ alignBox: "row",
471
+ className: style.footerHeight
472
+ }, author && /*#__PURE__*/React.createElement(Box, {
473
+ className: style.author
474
+ }, /*#__PURE__*/React.createElement(Container, {
475
+ alignBox: "row",
476
+ align: "both"
477
+ }, /*#__PURE__*/React.createElement(Avatar, {
478
+ name: authorName,
479
+ size: "xmedium",
480
+ src: authorHref,
481
+ palette: "info"
482
+ }), /*#__PURE__*/React.createElement(Box, {
483
+ flexible: true,
484
+ className: style.authorName,
485
+ "data-title": authorName
486
+ }, authorName))), /*#__PURE__*/React.createElement(Box, {
487
+ flexible: true
488
+ }, /*#__PURE__*/React.createElement(Container, {
489
+ align: "vertical",
490
+ alignBox: "row",
491
+ scroll: "horizontal",
492
+ eleRef: el => this.imgListCont = el,
493
+ className: style.listContainer
494
+ }, data.map((item, index) => {
495
+ const {
496
+ name,
497
+ viewUrl
498
+ } = item;
499
+ const isAudio = isAudioFile(name);
500
+ return /*#__PURE__*/React.createElement(Box, {
501
+ className: `${style.imgItem} ${index === selectedIndex ? style.selected : ""} ${isAudio ? style.isAudio : ""}`,
502
+ key: index,
503
+ onClick: this.changeSelectedIndex.bind(this, index),
504
+ eleRef: el => this[`img_${index}`] = el,
505
+ dataId: "attachPreviewList",
506
+ "data-title": name
507
+ }, /*#__PURE__*/React.createElement(AttachmentImage, {
508
+ src: viewUrl,
509
+ size: "small",
510
+ alt: name,
511
+ className: style.image,
512
+ isImage: !isAudio
513
+ }));
514
+ }))))), totalLen !== 1 && /*#__PURE__*/React.createElement(IconButton, {
515
+ dataId: "attachToggle",
516
+ onClick: this.togglePViewList,
517
+ iconName: "ZD-GN-hideTab",
518
+ iconSize: "14",
519
+ hoverType: "border",
520
+ iconClass: `${style.thumpIcon} ${isPViewListOpen ? style.thumpIconActive : ""}`,
521
+ className: style.button,
522
+ a11y: {
523
+ ariaLabel: i18nKeys.hideText
524
+ },
525
+ title: isPViewListOpen ? i18nKeys.hideText : i18nKeys.showText
526
+ }));
527
+ }));
528
+ }
529
+
530
+ }
531
+ AttachmentViewer.propTypes = {
532
+ hideAttachmentViewer: PropTypes.func,
533
+ i18nKeys: PropTypes.shape({
534
+ nextText: PropTypes.string,
535
+ previousText: PropTypes.string,
536
+ zoomOutText: PropTypes.string,
537
+ zoomInText: PropTypes.string,
538
+ newTabText: PropTypes.string,
539
+ downloadText: PropTypes.string,
540
+ closeText: PropTypes.string,
541
+ hideText: PropTypes.string,
542
+ showText: PropTypes.string
543
+ }),
544
+ needDownload: PropTypes.string,
545
+ previewObj: PropTypes.object,
546
+ responsiveId: PropTypes.string,
547
+ maintainZoom: PropTypes.bool,
548
+ isActive: PropTypes.bool
549
+ };
550
+ AttachmentViewer.defaultProps = {
551
+ responsiveId: "Helmet",
552
+ needDownload: true,
553
+ i18nKeys: {},
554
+ maintainZoom: false,
555
+ isActive: false
556
+ };
557
+
558
+ if (false) {
559
+ AttachmentViewer.docs = {
560
+ componentGroup: "Molecule"
561
+ };
562
+ }