@imposium-hub/components 2.2.45-0 → 2.2.46-0

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 (266) hide show
  1. package/dist/cjs/Util.d.ts +1 -0
  2. package/dist/cjs/Util.js +8 -1
  3. package/dist/cjs/Util.js.map +1 -1
  4. package/dist/cjs/components/Tooltip.d.ts +2 -2
  5. package/dist/cjs/components/Tooltip.js +4 -7
  6. package/dist/cjs/components/Tooltip.js.map +1 -1
  7. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  8. package/dist/cjs/components/anchor-field/AnchorField.d.ts +1 -1
  9. package/dist/cjs/components/app-wrapper/AppWrapper.d.ts +2 -1
  10. package/dist/cjs/components/app-wrapper/AppWrapper.js +79 -71
  11. package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
  12. package/dist/cjs/components/assets/AssetField.js +2 -2
  13. package/dist/cjs/components/assets/AssetField.js.map +1 -1
  14. package/dist/cjs/components/assets/AssetsTableDurationCell.js +1 -4
  15. package/dist/cjs/components/assets/AssetsTableDurationCell.js.map +1 -1
  16. package/dist/cjs/components/assets/AssetsTableGlobalCell.js +1 -1
  17. package/dist/cjs/components/assets/AssetsTableGlobalCell.js.map +1 -1
  18. package/dist/cjs/components/assets/AssetsTableNameCell.js +4 -3
  19. package/dist/cjs/components/assets/AssetsTableNameCell.js.map +1 -1
  20. package/dist/cjs/components/assets/AssetsTableRateCell.js +9 -3
  21. package/dist/cjs/components/assets/AssetsTableRateCell.js.map +1 -1
  22. package/dist/cjs/components/assets/AssetsTableTypeFilter.js +2 -2
  23. package/dist/cjs/components/assets/AssetsTableTypeFilter.js.map +1 -1
  24. package/dist/cjs/components/assets/AssetsUploadMenu.js +157 -34
  25. package/dist/cjs/components/assets/AssetsUploadMenu.js.map +1 -1
  26. package/dist/cjs/components/auth-gate/AuthGate.js +5 -8
  27. package/dist/cjs/components/auth-gate/AuthGate.js.map +1 -1
  28. package/dist/cjs/components/button-group-field/ButtonGroupField.d.ts +1 -1
  29. package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +1 -1
  30. package/dist/cjs/components/color-field/ColorField.d.ts +1 -1
  31. package/dist/cjs/components/color-field/ColorField.js +2 -2
  32. package/dist/cjs/components/color-field/ColorField.js.map +1 -1
  33. package/dist/cjs/components/context-menu/ContextMenu.js +8 -4
  34. package/dist/cjs/components/context-menu/ContextMenu.js.map +1 -1
  35. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.d.ts +12 -0
  36. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.js +75 -0
  37. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.js.map +1 -0
  38. package/dist/cjs/components/data-table/DataTable.js +2 -2
  39. package/dist/cjs/components/data-table/DataTable.js.map +1 -1
  40. package/dist/cjs/components/dropdown/{dropdown.stories.js → Dropdown.stories.js} +1 -1
  41. package/dist/cjs/components/dropdown/{dropdown.stories.js.map → Dropdown.stories.js.map} +1 -1
  42. package/dist/cjs/components/header/Header.d.ts +0 -4
  43. package/dist/cjs/components/header/Header.js +19 -27
  44. package/dist/cjs/components/header/Header.js.map +1 -1
  45. package/dist/cjs/components/list-field/ListField.d.ts +1 -1
  46. package/dist/cjs/components/number-field/NumberField.d.ts +1 -1
  47. package/dist/cjs/components/publish-wizard/PublishWizard.js +63 -119
  48. package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
  49. package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js +28 -5
  50. package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
  51. package/dist/cjs/components/select-field/SelectField.d.ts +1 -1
  52. package/dist/cjs/components/select-field/SelectField.js +4 -0
  53. package/dist/cjs/components/select-field/SelectField.js.map +1 -1
  54. package/dist/cjs/components/slider-field/SliderField.d.ts +1 -1
  55. package/dist/cjs/components/smpte-field/SMPTEField.d.ts +1 -1
  56. package/dist/cjs/components/text-area-field/TextAreaField.d.ts +1 -1
  57. package/dist/cjs/components/text-field/TextField.d.ts +1 -1
  58. package/dist/cjs/constants/copy.d.ts +2 -5
  59. package/dist/cjs/constants/copy.js +5 -8
  60. package/dist/cjs/constants/copy.js.map +1 -1
  61. package/dist/cjs/constants/icons.d.ts +0 -1
  62. package/dist/cjs/constants/icons.js +1 -3
  63. package/dist/cjs/constants/icons.js.map +1 -1
  64. package/dist/cjs/index.d.ts +5 -3
  65. package/dist/cjs/index.js +8 -3
  66. package/dist/cjs/index.js.map +1 -1
  67. package/dist/cjs/redux/actions/access.d.ts +3 -1
  68. package/dist/cjs/redux/actions/access.js +43 -10
  69. package/dist/cjs/redux/actions/access.js.map +1 -1
  70. package/dist/cjs/redux/actions/asset-uploads.d.ts +5 -10
  71. package/dist/cjs/redux/actions/asset-uploads.js +262 -182
  72. package/dist/cjs/redux/actions/asset-uploads.js.map +1 -1
  73. package/dist/cjs/redux/actions/publish.js +3 -4
  74. package/dist/cjs/redux/actions/publish.js.map +1 -1
  75. package/dist/cjs/redux/reducers/access.js +30 -7
  76. package/dist/cjs/redux/reducers/access.js.map +1 -1
  77. package/dist/cjs/redux/reducers/asset-uploads.js +8 -24
  78. package/dist/cjs/redux/reducers/asset-uploads.js.map +1 -1
  79. package/dist/cjs/services/Session.d.ts +8 -9
  80. package/dist/cjs/services/Session.js +127 -31
  81. package/dist/cjs/services/Session.js.map +1 -1
  82. package/dist/esm/Util.d.ts +1 -0
  83. package/dist/esm/Util.js +6 -0
  84. package/dist/esm/Util.js.map +1 -1
  85. package/dist/esm/components/Tooltip.d.ts +2 -2
  86. package/dist/esm/components/Tooltip.js +4 -4
  87. package/dist/esm/components/Tooltip.js.map +1 -1
  88. package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  89. package/dist/esm/components/anchor-field/AnchorField.d.ts +1 -1
  90. package/dist/esm/components/app-wrapper/AppWrapper.d.ts +2 -1
  91. package/dist/esm/components/app-wrapper/AppWrapper.js +79 -69
  92. package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
  93. package/dist/esm/components/assets/AssetField.js +2 -2
  94. package/dist/esm/components/assets/AssetField.js.map +1 -1
  95. package/dist/esm/components/assets/AssetsTableDurationCell.js +2 -5
  96. package/dist/esm/components/assets/AssetsTableDurationCell.js.map +1 -1
  97. package/dist/esm/components/assets/AssetsTableGlobalCell.js +1 -1
  98. package/dist/esm/components/assets/AssetsTableGlobalCell.js.map +1 -1
  99. package/dist/esm/components/assets/AssetsTableNameCell.js +4 -3
  100. package/dist/esm/components/assets/AssetsTableNameCell.js.map +1 -1
  101. package/dist/esm/components/assets/AssetsTableRateCell.js +9 -3
  102. package/dist/esm/components/assets/AssetsTableRateCell.js.map +1 -1
  103. package/dist/esm/components/assets/AssetsTableTypeFilter.js +2 -2
  104. package/dist/esm/components/assets/AssetsTableTypeFilter.js.map +1 -1
  105. package/dist/esm/components/assets/AssetsUploadMenu.js +138 -34
  106. package/dist/esm/components/assets/AssetsUploadMenu.js.map +1 -1
  107. package/dist/esm/components/auth-gate/AuthGate.js +6 -9
  108. package/dist/esm/components/auth-gate/AuthGate.js.map +1 -1
  109. package/dist/esm/components/button-group-field/ButtonGroupField.d.ts +1 -1
  110. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +1 -1
  111. package/dist/esm/components/color-field/ColorField.d.ts +1 -1
  112. package/dist/esm/components/color-field/ColorField.js +2 -2
  113. package/dist/esm/components/color-field/ColorField.js.map +1 -1
  114. package/dist/esm/components/context-menu/ContextMenu.js +7 -3
  115. package/dist/esm/components/context-menu/ContextMenu.js.map +1 -1
  116. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.d.ts +12 -0
  117. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.js +24 -0
  118. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.js.map +1 -0
  119. package/dist/esm/components/data-table/DataTable.js +2 -2
  120. package/dist/esm/components/data-table/DataTable.js.map +1 -1
  121. package/dist/esm/components/dropdown/{dropdown.stories.js → Dropdown.stories.js} +1 -1
  122. package/dist/esm/components/dropdown/{dropdown.stories.js.map → Dropdown.stories.js.map} +1 -1
  123. package/dist/esm/components/header/Header.d.ts +0 -4
  124. package/dist/esm/components/header/Header.js +19 -27
  125. package/dist/esm/components/header/Header.js.map +1 -1
  126. package/dist/esm/components/list-field/ListField.d.ts +1 -1
  127. package/dist/esm/components/number-field/NumberField.d.ts +1 -1
  128. package/dist/esm/components/publish-wizard/PublishWizard.js +64 -119
  129. package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
  130. package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js +28 -5
  131. package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
  132. package/dist/esm/components/select-field/SelectField.d.ts +1 -1
  133. package/dist/esm/components/select-field/SelectField.js +3 -0
  134. package/dist/esm/components/select-field/SelectField.js.map +1 -1
  135. package/dist/esm/components/slider-field/SliderField.d.ts +1 -1
  136. package/dist/esm/components/smpte-field/SMPTEField.d.ts +1 -1
  137. package/dist/esm/components/text-area-field/TextAreaField.d.ts +1 -1
  138. package/dist/esm/components/text-field/TextField.d.ts +1 -1
  139. package/dist/esm/constants/copy.d.ts +2 -5
  140. package/dist/esm/constants/copy.js +5 -8
  141. package/dist/esm/constants/copy.js.map +1 -1
  142. package/dist/esm/constants/icons.d.ts +0 -1
  143. package/dist/esm/constants/icons.js +0 -2
  144. package/dist/esm/constants/icons.js.map +1 -1
  145. package/dist/esm/index.d.ts +5 -3
  146. package/dist/esm/index.js +5 -3
  147. package/dist/esm/index.js.map +1 -1
  148. package/dist/esm/redux/actions/access.d.ts +3 -1
  149. package/dist/esm/redux/actions/access.js +37 -8
  150. package/dist/esm/redux/actions/access.js.map +1 -1
  151. package/dist/esm/redux/actions/asset-uploads.d.ts +5 -10
  152. package/dist/esm/redux/actions/asset-uploads.js +224 -167
  153. package/dist/esm/redux/actions/asset-uploads.js.map +1 -1
  154. package/dist/esm/redux/actions/publish.js +3 -4
  155. package/dist/esm/redux/actions/publish.js.map +1 -1
  156. package/dist/esm/redux/reducers/access.js +8 -5
  157. package/dist/esm/redux/reducers/access.js.map +1 -1
  158. package/dist/esm/redux/reducers/asset-uploads.js +11 -48
  159. package/dist/esm/redux/reducers/asset-uploads.js.map +1 -1
  160. package/dist/esm/services/Session.d.ts +8 -9
  161. package/dist/esm/services/Session.js +102 -29
  162. package/dist/esm/services/Session.js.map +1 -1
  163. package/dist/styles.css +151 -25
  164. package/dist/styles.less +280 -100
  165. package/less/components/assets.less +237 -63
  166. package/less/components/button.less +7 -1
  167. package/less/components/data-table.less +17 -11
  168. package/less/components/header.less +0 -13
  169. package/less/components/publish-wizard.less +20 -13
  170. package/less/components/story-previewer.less +1 -0
  171. package/package.json +6 -6
  172. package/src/Util.ts +10 -0
  173. package/src/components/Tooltip.tsx +9 -9
  174. package/src/components/advanced-number-field/AdvancedNumberField.tsx +1 -1
  175. package/src/components/anchor-field/AnchorField.tsx +1 -1
  176. package/src/components/app-wrapper/AppWrapper.tsx +120 -79
  177. package/src/components/assets/AssetField.tsx +3 -8
  178. package/src/components/assets/AssetsTableDurationCell.tsx +2 -5
  179. package/src/components/assets/AssetsTableGlobalCell.tsx +15 -0
  180. package/src/components/assets/AssetsTableNameCell.tsx +3 -5
  181. package/src/components/assets/AssetsTableRateCell.tsx +11 -4
  182. package/src/components/assets/AssetsTableTypeFilter.tsx +7 -8
  183. package/src/components/assets/AssetsUploadMenu.tsx +271 -98
  184. package/src/components/auth-gate/AuthGate.tsx +8 -14
  185. package/src/components/button-group-field/ButtonGroupField.tsx +1 -1
  186. package/src/components/checkbox-field/CheckboxField.tsx +1 -1
  187. package/src/components/color-field/ColorField.tsx +3 -3
  188. package/src/components/context-menu/ContextMenu.tsx +16 -11
  189. package/src/components/copy-prop-id-button/CopyPropIdButton.tsx +44 -0
  190. package/src/components/data-table/DataTable.tsx +2 -2
  191. package/src/components/header/Header.tsx +39 -74
  192. package/src/components/list-field/ListField.tsx +1 -1
  193. package/src/components/number-field/NumberField.tsx +1 -1
  194. package/src/components/publish-wizard/PublishWizard.tsx +102 -180
  195. package/src/components/publish-wizard/publish/EmailWorkflow.tsx +42 -10
  196. package/src/components/select-field/SelectField.tsx +4 -1
  197. package/src/components/slider-field/SliderField.tsx +1 -1
  198. package/src/components/smpte-field/SMPTEField.tsx +1 -1
  199. package/src/components/text-area-field/TextAreaField.tsx +1 -1
  200. package/src/components/text-field/TextField.tsx +1 -1
  201. package/src/constants/copy.ts +5 -9
  202. package/src/constants/icons.tsx +0 -3
  203. package/src/index.ts +16 -9
  204. package/src/redux/actions/access.ts +67 -5
  205. package/src/redux/actions/asset-uploads.ts +305 -205
  206. package/src/redux/actions/publish.ts +3 -6
  207. package/src/redux/reducers/access.ts +8 -5
  208. package/src/redux/reducers/asset-uploads.ts +13 -48
  209. package/src/services/Session.ts +120 -34
  210. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +0 -27
  211. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +0 -243
  212. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +0 -1
  213. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +0 -28
  214. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +0 -255
  215. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +0 -1
  216. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +0 -27
  217. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +0 -243
  218. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +0 -1
  219. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +0 -28
  220. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +0 -251
  221. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +0 -1
  222. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +0 -15
  223. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +0 -91
  224. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +0 -1
  225. package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +0 -33
  226. package/dist/cjs/components/header/Header_BACKUP_73021.js +0 -393
  227. package/dist/cjs/components/header/Header_BACKUP_73021.js.map +0 -1
  228. package/dist/cjs/components/header/Header_BASE_73021.d.ts +0 -29
  229. package/dist/cjs/components/header/Header_BASE_73021.js +0 -376
  230. package/dist/cjs/components/header/Header_BASE_73021.js.map +0 -1
  231. package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +0 -33
  232. package/dist/cjs/components/header/Header_LOCAL_73021.js +0 -382
  233. package/dist/cjs/components/header/Header_LOCAL_73021.js.map +0 -1
  234. package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +0 -30
  235. package/dist/cjs/components/header/Header_REMOTE_73021.js +0 -386
  236. package/dist/cjs/components/header/Header_REMOTE_73021.js.map +0 -1
  237. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +0 -27
  238. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +0 -194
  239. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +0 -1
  240. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +0 -28
  241. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +0 -208
  242. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +0 -1
  243. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +0 -27
  244. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +0 -194
  245. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +0 -1
  246. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +0 -28
  247. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +0 -204
  248. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +0 -1
  249. package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +0 -15
  250. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +0 -35
  251. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +0 -1
  252. package/dist/esm/components/header/Header_BACKUP_73021.d.ts +0 -33
  253. package/dist/esm/components/header/Header_BACKUP_73021.js +0 -336
  254. package/dist/esm/components/header/Header_BACKUP_73021.js.map +0 -1
  255. package/dist/esm/components/header/Header_BASE_73021.d.ts +0 -29
  256. package/dist/esm/components/header/Header_BASE_73021.js +0 -322
  257. package/dist/esm/components/header/Header_BASE_73021.js.map +0 -1
  258. package/dist/esm/components/header/Header_LOCAL_73021.d.ts +0 -33
  259. package/dist/esm/components/header/Header_LOCAL_73021.js +0 -328
  260. package/dist/esm/components/header/Header_LOCAL_73021.js.map +0 -1
  261. package/dist/esm/components/header/Header_REMOTE_73021.d.ts +0 -30
  262. package/dist/esm/components/header/Header_REMOTE_73021.js +0 -329
  263. package/dist/esm/components/header/Header_REMOTE_73021.js.map +0 -1
  264. /package/dist/cjs/components/dropdown/{dropdown.stories.d.ts → Dropdown.stories.d.ts} +0 -0
  265. /package/dist/esm/components/dropdown/{dropdown.stories.d.ts → Dropdown.stories.d.ts} +0 -0
  266. /package/src/components/dropdown/{dropdown.stories.tsx → Dropdown.stories.tsx} +0 -0
@@ -3,84 +3,36 @@ import { doAssetTableHydration } from './asset-list';
3
3
  import axios from 'axios';
4
4
 
5
5
  const assetUploadsActions: any = {
6
- TOGGLE_AUTO_TAG: 'assetUploads/TOGGLE_AUTO_TAG',
7
- TOGGLE_TAG_BY_FILENAME: 'assetUploads/TOGGLE_TAG_BY_FILENAME',
8
- TOGGLE_TAG_BY_DELIMITER: 'assetUploads/TOGGLE_TAG_BY_DELIMITER',
9
- SET_DELIMITER: 'assetUploads/SET_DELIMITER',
10
- TOGGLE_MANUAL_TAGGING: 'assetUploads/TOGGLE_MANUAL_TAGGING',
11
- ADD_MANUAL_TAG: 'assetUploads/ADD_MANUAL_TAG',
12
- DELETE_MANUAL_TAG: 'assetUploads/DELETE_MANUAL_TAG',
13
- DELETE_MANUAL_TAGS: 'assetUploads/DELETE_MANUAL_TAGS',
14
- TOGGLE_ASSIGN_TO_STORY: 'assetUploads/TOGGLE_ASSIGN_TO_STORY',
15
6
  ADD_UPLOAD: 'assetUploads/ADD_UPLOAD',
7
+ UPDATE_UPLOAD: 'assetUploads/UPDATE_UPLOAD',
16
8
  UPDATE_PERCENT_UPLOADED: 'assetUploads/UPDATE_PERCENT_UPLOADED',
9
+ ADD_UPLOAD_ASSET_ID: 'assetUploads/ADD_UPLOAD_ASSET_ID',
17
10
  REMOVE_UPLOAD: 'assetUploads/REMOVE_UPLOAD'
18
11
  };
19
12
 
20
13
  const POLL_INTERVAL: number = 5000;
21
14
 
22
- export const toggleTagFileName = (toggle: boolean): any => ({
23
- type: assetUploadsActions.TOGGLE_TAG_BY_FILENAME,
24
- toggle
25
- });
26
-
27
- export const toggleAssignToStory = (toggle: boolean): any => ({
28
- type: assetUploadsActions.TOGGLE_ASSIGN_TO_STORY,
29
- toggle
30
- });
31
-
32
- export const toggleTagDelimiter = (toggle: boolean): any => ({
33
- type: assetUploadsActions.TOGGLE_TAG_BY_DELIMITER,
34
- toggle
35
- });
36
-
37
- export const setDelimiter = (delimiter: string): any => ({
38
- type: assetUploadsActions.SET_DELIMITER,
39
- delimiter
40
- });
41
-
42
- export const toggleManualTagging = (toggle: boolean): any => ({
43
- type: assetUploadsActions.TOGGLE_MANUAL_TAGGING,
44
- toggle
45
- });
46
-
47
- export const addManualTag = (tag: string): any => ({
48
- type: assetUploadsActions.ADD_MANUAL_TAG,
49
- tag
50
- });
51
-
52
- export const deleteManualTag = (tag: string): any => ({
53
- type: assetUploadsActions.DELETE_MANUAL_TAG,
54
- tag
55
- });
56
-
57
- export const deleteManualTags = (): any => ({
58
- type: assetUploadsActions.DELETE_MANUAL_TAGS
59
- });
15
+ let uploadFiles: File[] = [];
16
+ let setBindToOverlay;
60
17
 
61
18
  export const uploadAssets = (
62
19
  api: IImposiumAPI,
63
20
  files: File[],
64
- storyId: string,
65
21
  bindToOverlay?: (f: any) => any
66
22
  ): any => {
67
23
  return (dispatch, getStore) => {
68
24
  const {
69
- assetUploads: {
70
- uploads,
71
- assignToStory,
72
- tagByFileName,
73
- tagByDelimiter,
74
- delimiter,
75
- tagManually,
76
- manualTags
25
+ assetUploads: { uploads },
26
+ editor: {
27
+ showUploadsMenu,
28
+ assetUploads: { tagByFileName, tagByDelimiter, delimiter, tagManually, manualTags }
77
29
  }
78
30
  } = getStore();
79
- let currentQueue: number = 0;
80
- let ongoingJobs: any[] = [];
81
- const filesLength = files.length > 5 ? 4 : files.length - 1;
82
31
 
83
- const uploadBlobs: any[] = files.map((file: File) => {
32
+ uploadFiles.push(...files);
33
+ setBindToOverlay = bindToOverlay;
34
+
35
+ files.map((file: File) => {
84
36
  const uploadsWithSameName: any[] = uploads.filter((u: any) =>
85
37
  u.filename.includes(file.name)
86
38
  );
@@ -92,11 +44,11 @@ export const uploadAssets = (
92
44
  let tags = [];
93
45
 
94
46
  if (tagByFileName) {
95
- tags = tags.concat(file.name.substr(0, file.name.lastIndexOf('.')));
47
+ tags = tags.concat(file.name.slice(0, file.name.lastIndexOf('.')));
96
48
  }
97
49
 
98
50
  if (tagByDelimiter) {
99
- const tag = file.name.substr(0, file.name.lastIndexOf('.')).split(delimiter);
51
+ const tag = file.name.slice(0, file.name.lastIndexOf('.')).split(delimiter);
100
52
  tags = [...new Set([...tags, ...tag])];
101
53
  }
102
54
 
@@ -104,7 +56,100 @@ export const uploadAssets = (
104
56
  tags = [...new Set([...tags, ...manualTags])];
105
57
  }
106
58
 
107
- const uploadMeta: any = { filename, percent: 0 };
59
+ const uploadMeta: any = { filename, percent: 0, tags };
60
+
61
+ dispatch({ type: assetUploadsActions.ADD_UPLOAD, uploadMeta });
62
+ });
63
+
64
+ if (!showUploadsMenu) {
65
+ uploadAssetHandler(api, dispatch, getStore);
66
+ }
67
+ };
68
+ };
69
+
70
+ export const updateUploadTags = (): any => {
71
+ return (dispatch, getStore) => {
72
+ const {
73
+ editor: {
74
+ assetUploads: { tagByFileName, tagByDelimiter, delimiter, tagManually, manualTags }
75
+ }
76
+ } = getStore();
77
+ const uploadMetaArray = [];
78
+
79
+ if (uploadFiles) {
80
+ uploadFiles.map((file: File) => {
81
+ const filename: string = file.name;
82
+
83
+ let tags = [];
84
+
85
+ if (tagByFileName) {
86
+ tags = tags.concat(file.name.slice(0, file.name.lastIndexOf('.')));
87
+ }
88
+
89
+ if (tagByDelimiter) {
90
+ const tag = file.name.slice(0, file.name.lastIndexOf('.')).split(delimiter);
91
+ tags = [...new Set([...tags, ...tag])];
92
+ }
93
+
94
+ if (tagManually) {
95
+ tags = [...new Set([...tags, ...manualTags])];
96
+ }
97
+
98
+ const uploadMeta: any = { filename, percent: 0, tags };
99
+
100
+ uploadMetaArray.push(uploadMeta);
101
+ });
102
+
103
+ dispatch({ type: assetUploadsActions.UPDATE_UPLOAD, uploadMetaArray });
104
+ }
105
+ };
106
+ };
107
+
108
+ export const uploadingAsset = (api: IImposiumAPI): any => {
109
+ return (dispatch, getStore) => {
110
+ uploadAssetHandler(api, dispatch, getStore);
111
+ };
112
+ };
113
+
114
+ const uploadAssetHandler = (api: IImposiumAPI, dispatch, getStore) => {
115
+ const {
116
+ project: { storyId },
117
+ editor: {
118
+ assetUploads: {
119
+ assignToStory,
120
+ tagByFileName,
121
+ tagByDelimiter,
122
+ delimiter,
123
+ tagManually,
124
+ manualTags
125
+ }
126
+ },
127
+ assetUploads: { uploads }
128
+ } = getStore();
129
+
130
+ let currentQueue: number = 0;
131
+ let ongoingJobs: any[] = [];
132
+
133
+ const uploadMetaArray = [];
134
+
135
+ if (uploadFiles) {
136
+ const uploadBlobs: any[] = uploadFiles.map((file: File) => {
137
+ const filename: string = file.name;
138
+
139
+ let tags = [];
140
+
141
+ if (tagByFileName) {
142
+ tags = tags.concat(file.name.slice(0, file.name.lastIndexOf('.')));
143
+ }
144
+
145
+ if (tagByDelimiter) {
146
+ const tag = file.name.slice(0, file.name.lastIndexOf('.')).split(delimiter);
147
+ tags = [...new Set([...tags, ...tag])];
148
+ }
149
+
150
+ if (tagManually) {
151
+ tags = [...new Set([...tags, ...manualTags])];
152
+ }
108
153
 
109
154
  const onUploadProgress = (progress: any): void => {
110
155
  dispatch({
@@ -114,76 +159,96 @@ export const uploadAssets = (
114
159
  });
115
160
  };
116
161
 
117
- dispatch({ type: assetUploadsActions.ADD_UPLOAD, uploadMeta });
162
+ const uploadMeta: any = { filename, percent: 0, tags };
163
+
164
+ uploadMetaArray.push(uploadMeta);
118
165
 
119
166
  return { file, tags, filename, onUploadProgress };
120
167
  });
121
168
 
169
+ dispatch({ type: assetUploadsActions.UPDATE_UPLOAD, uploadMetaArray });
170
+
171
+ const filesLength = uploadFiles.length > 5 ? 4 : uploadFiles.length - 1;
172
+
122
173
  const createPromise = (activeIndex: number) => {
123
174
  const queueLength: number = uploadBlobs.length;
124
175
  const sId = assignToStory && storyId ? storyId : null;
125
176
  const processingTimeout: number = -1;
126
- api.uploadAsset(
127
- sId,
128
- uploadBlobs[activeIndex].tags,
129
- uploadBlobs[activeIndex].file,
130
- uploadBlobs[activeIndex].onUploadProgress,
131
- uploadBlobs[activeIndex].filename
132
- )
133
- .then((result) => {
134
- const currentOngoingJobs = () => {
135
- if (bindToOverlay) {
136
- bindToOverlay(result[0]);
137
- }
138
- return {
139
- footageId: result[0].id,
140
- jobId: result[0].job_id,
141
- filename: uploadBlobs[activeIndex].filename,
142
- onProcessed: () => {
143
- const fileName = ongoingJobs.filter(
144
- (job: any) => job.jobId === result[0].job_id
145
- )[0].filename;
146
- dispatch({
147
- type: assetUploadsActions.REMOVE_UPLOAD,
148
- filename: fileName
149
- });
150
- doAssetTableHydration(api, storyId);
177
+ const isUploading =
178
+ uploads.find((f) => f.filename === uploadBlobs[activeIndex].filename)?.percent > 0;
179
+ if (!isUploading) {
180
+ api.uploadAsset(
181
+ sId,
182
+ uploadBlobs[activeIndex].tags,
183
+ uploadBlobs[activeIndex].file,
184
+ uploadBlobs[activeIndex].onUploadProgress,
185
+ uploadBlobs[activeIndex].filename
186
+ )
187
+ .then((result) => {
188
+ const filename = uploadBlobs.find((b) =>
189
+ b.filename.includes(result[0].name)
190
+ ).filename;
191
+ uploadFiles = uploadFiles.filter((f) => f.name !== filename);
192
+ dispatch({
193
+ type: assetUploadsActions.ADD_UPLOAD_ASSET_ID,
194
+ assetId: result[0].id,
195
+ filename
196
+ });
197
+ const currentOngoingJobs = () => {
198
+ if (setBindToOverlay) {
199
+ setBindToOverlay(result[0]);
151
200
  }
201
+ return {
202
+ footageId: result[0].id,
203
+ jobId: result[0].job_id,
204
+ filename: uploadBlobs[activeIndex].filename,
205
+ onProcessed: () => {
206
+ const fileName = ongoingJobs.filter(
207
+ (job: any) => job.jobId === result[0].job_id
208
+ )[0].filename;
209
+ dispatch({
210
+ type: assetUploadsActions.REMOVE_UPLOAD,
211
+ filename: fileName
212
+ });
213
+ doAssetTableHydration(api, storyId);
214
+ }
215
+ };
152
216
  };
153
- };
154
- ongoingJobs.push(currentOngoingJobs());
155
- if (currentQueue !== queueLength - 1) {
156
- currentQueue = currentQueue + 1;
157
- createPromise(currentQueue);
158
- } else {
159
- ongoingJobs = ongoingJobs.filter((j: any, i: number) => {
160
- const jobIdExists: boolean = typeof j.jobId === 'string';
161
- if (!jobIdExists) {
162
- dispatch({
163
- type: assetUploadsActions.REMOVE_UPLOAD,
164
- filename: j.filename
165
- });
166
- doAssetTableHydration(api, storyId);
217
+ ongoingJobs.push(currentOngoingJobs());
218
+ if (currentQueue !== queueLength - 1) {
219
+ currentQueue = currentQueue + 1;
220
+ createPromise(currentQueue);
221
+ } else {
222
+ ongoingJobs = ongoingJobs.filter((j: any, i: number) => {
223
+ const jobIdExists: boolean = typeof j.jobId === 'string';
224
+ if (!jobIdExists) {
225
+ dispatch({
226
+ type: assetUploadsActions.REMOVE_UPLOAD,
227
+ filename: j.filename
228
+ });
229
+ doAssetTableHydration(api, storyId);
230
+ }
231
+ return jobIdExists;
232
+ });
233
+ if (ongoingJobs.length > 0) {
234
+ pollAssetJobs(api, ongoingJobs, processingTimeout);
167
235
  }
168
- return jobIdExists;
169
- });
170
- if (ongoingJobs.length > 0) {
171
- pollAssetJobs(api, ongoingJobs, processingTimeout);
172
236
  }
173
- }
174
- })
175
- .catch((e: Error[]) => {
176
- if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
177
- currentQueue = currentQueue + 1;
178
- createPromise(currentQueue);
179
- }
180
- });
237
+ })
238
+ .catch((e: Error[]) => {
239
+ if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
240
+ currentQueue = currentQueue + 1;
241
+ createPromise(currentQueue);
242
+ }
243
+ });
244
+ }
181
245
  };
246
+
182
247
  for (let i = 0; i <= filesLength; i++) {
183
248
  createPromise(i);
184
249
  currentQueue = i;
185
250
  }
186
- };
251
+ }
187
252
  };
188
253
 
189
254
  export const replaceAsset = (
@@ -193,95 +258,103 @@ export const replaceAsset = (
193
258
  storyId: string
194
259
  ): any => {
195
260
  return (dispatch, getStore) => {
196
- const {
197
- assetUploads: { uploads }
198
- } = getStore();
199
- let currentQueue: number = 0;
200
- let ongoingJobs: any[] = [];
201
- const filesLength = files.length > 5 ? 4 : files.length - 1;
261
+ return new Promise<void>((resolve) => {
262
+ const {
263
+ assetUploads: { uploads }
264
+ } = getStore();
265
+ let currentQueue: number = 0;
266
+ let ongoingJobs: any[] = [];
267
+ const filesLength = files.length > 5 ? 4 : files.length - 1;
268
+
269
+ const replacedFileBlobs: any[] = files.map((file: File) => {
270
+ const uploadsWithSameName: any[] = uploads.filter((u: any) =>
271
+ u.filename.includes(file.name)
272
+ );
273
+ const filename: string =
274
+ uploadsWithSameName.length > 0
275
+ ? `${file.name} (${uploadsWithSameName.length})`
276
+ : file.name;
277
+
278
+ const uploadMeta: any = { filename, percent: 0 };
279
+
280
+ const onUploadProgress = (progress: any): void => {
281
+ dispatch({
282
+ type: assetUploadsActions.UPDATE_PERCENT_UPLOADED,
283
+ percent: Math.floor((progress.loaded * 100) / progress.total),
284
+ filename
285
+ });
286
+ };
287
+
288
+ dispatch({ type: assetUploadsActions.ADD_UPLOAD, uploadMeta });
289
+
290
+ return { file, filename, onUploadProgress };
291
+ });
202
292
 
203
- const uploadBlobs: any[] = files.map((file: File) => {
204
- const uploadsWithSameName: any[] = uploads.filter((u: any) =>
205
- u.filename.includes(file.name)
206
- );
207
- const filename: string =
208
- uploadsWithSameName.length > 0
209
- ? `${file.name} (${uploadsWithSameName.length})`
210
- : file.name;
293
+ const createPromise = (activeIndex: number) => {
294
+ const queueLength: number = replacedFileBlobs.length;
295
+ const processingTimeout: number = -1;
296
+ api.replaceAsset(
297
+ assetId,
298
+ replacedFileBlobs[activeIndex].file,
299
+ replacedFileBlobs[activeIndex].onUploadProgress,
300
+ replacedFileBlobs[activeIndex].filename
301
+ )
302
+ .then((result) => {
303
+ const currentOngoingJobs = () => {
304
+ return {
305
+ filename: replacedFileBlobs[activeIndex].filename,
306
+ onProcessed: () => {
307
+ const fileName = ongoingJobs.filter(
308
+ (job: any) => job.jobId === result[0].job_id
309
+ )[0].filename;
310
+ dispatch({
311
+ type: assetUploadsActions.REMOVE_UPLOAD,
312
+ filename: fileName
313
+ });
314
+ doAssetTableHydration(api, storyId);
315
+ }
316
+ };
317
+ };
211
318
 
212
- const uploadMeta: any = { filename, percent: 0 };
319
+ ongoingJobs.push(currentOngoingJobs());
320
+
321
+ if (currentQueue !== queueLength - 1) {
322
+ currentQueue = currentQueue + 1;
323
+ createPromise(currentQueue);
324
+ } else {
325
+ ongoingJobs = ongoingJobs.filter((j: any, i: number) => {
326
+ const jobIdExists: boolean = typeof j.jobId === 'string';
327
+
328
+ if (!jobIdExists) {
329
+ dispatch({
330
+ type: assetUploadsActions.REMOVE_UPLOAD,
331
+ filename: j.filename
332
+ });
333
+ doAssetTableHydration(api, storyId);
334
+ }
335
+ return jobIdExists;
336
+ });
337
+
338
+ if (ongoingJobs.length > 0) {
339
+ pollAssetJobs(api, ongoingJobs, processingTimeout);
340
+ }
341
+ }
213
342
 
214
- const onUploadProgress = (progress: any): void => {
215
- dispatch({
216
- type: assetUploadsActions.UPDATE_PERCENT_UPLOADED,
217
- percent: Math.floor((progress.loaded * 100) / progress.total),
218
- filename
219
- });
343
+ resolve(result);
344
+ })
345
+ .catch((e: Error[]) => {
346
+ if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
347
+ currentQueue = currentQueue + 1;
348
+ createPromise(currentQueue);
349
+ }
350
+ });
220
351
  };
221
352
 
222
- dispatch({ type: assetUploadsActions.ADD_UPLOAD, uploadMeta });
223
-
224
- return { file, filename, onUploadProgress };
353
+ for (let i = 0; i <= filesLength; i++) {
354
+ createPromise(i);
355
+ currentQueue = i;
356
+ }
225
357
  });
226
-
227
- const createPromise = (activeIndex: number) => {
228
- const queueLength: number = uploadBlobs.length;
229
- const processingTimeout: number = -1;
230
- api.replaceAsset(
231
- assetId,
232
- uploadBlobs[activeIndex].file,
233
- uploadBlobs[activeIndex].onUploadProgress,
234
- uploadBlobs[activeIndex].filename
235
- )
236
- .then((result) => {
237
- const currentOngoingJobs = () => {
238
- return {
239
- filename: uploadBlobs[activeIndex].filename,
240
- onProcessed: () => {
241
- const fileName = ongoingJobs.filter(
242
- (job: any) => job.jobId === result[0].job_id
243
- )[0].filename;
244
- dispatch({
245
- type: assetUploadsActions.REMOVE_UPLOAD,
246
- filename: fileName
247
- });
248
- doAssetTableHydration(api, storyId);
249
- }
250
- };
251
- };
252
- ongoingJobs.push(currentOngoingJobs());
253
- if (currentQueue !== queueLength - 1) {
254
- currentQueue = currentQueue + 1;
255
- createPromise(currentQueue);
256
- } else {
257
- ongoingJobs = ongoingJobs.filter((j: any, i: number) => {
258
- const jobIdExists: boolean = typeof j.jobId === 'string';
259
- if (!jobIdExists) {
260
- dispatch({
261
- type: assetUploadsActions.REMOVE_UPLOAD,
262
- filename: j.filename
263
- });
264
- doAssetTableHydration(api, storyId);
265
- }
266
- return jobIdExists;
267
- });
268
- if (ongoingJobs.length > 0) {
269
- pollAssetJobs(api, ongoingJobs, processingTimeout);
270
- }
271
- }
272
- })
273
- .catch((e: Error[]) => {
274
- if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
275
- currentQueue = currentQueue + 1;
276
- createPromise(currentQueue);
277
- }
278
- });
279
- };
280
-
281
- for (let i = 0; i <= filesLength; i++) {
282
- createPromise(i);
283
- currentQueue = i;
284
- }
285
358
  };
286
359
  };
287
360
 
@@ -322,13 +395,40 @@ const pollAssetJobs = (api, ongoingJobs: any[], timeout: number): void => {
322
395
  }, POLL_INTERVAL);
323
396
  };
324
397
 
325
- export const cancelAssetUpload = (fileName: string, api: IImposiumAPI): any => {
398
+ const removeUploadHander = (fileName: string, api: IImposiumAPI, dispatch): any => {
399
+ uploadFiles = uploadFiles.filter((f) => f.name !== fileName);
400
+ api.cancelUploadAssets(fileName);
401
+ dispatch({
402
+ type: assetUploadsActions.REMOVE_UPLOAD,
403
+ filename: fileName
404
+ });
405
+ };
406
+
407
+ export const cancelAssetUpload = (fileName: string, api: IImposiumAPI, assetId: string): any => {
326
408
  return (dispatch) => {
327
- api.cancelUploadAssets(fileName);
328
- dispatch({
329
- type: assetUploadsActions.REMOVE_UPLOAD,
330
- filename: fileName
331
- });
409
+ if (assetId) {
410
+ api.deleteAsset(assetId)
411
+ .then()
412
+ .catch((e) => console.error(e));
413
+ }
414
+ removeUploadHander(fileName, api, dispatch);
415
+ };
416
+ };
417
+
418
+ export const cancelNonUploadedAssets = (api: IImposiumAPI): any => {
419
+ return (dispatch, getStore) => {
420
+ const {
421
+ assetUploads: { uploads }
422
+ } = getStore();
423
+
424
+ if (uploads.length > 0) {
425
+ for (const file of uploads) {
426
+ const upload = uploads.find((f) => f.filename === file.filename);
427
+ if (upload.percent === 0) {
428
+ removeUploadHander(file.filename, api, dispatch);
429
+ }
430
+ }
431
+ }
332
432
  };
333
433
  };
334
434
 
@@ -12,17 +12,13 @@ export const getStoryPublishStatus = (api: IImposiumAPI, storyId: string): any =
12
12
  api.getStoryStatus(storyId)
13
13
  .then((resStatus) => {
14
14
  if (resStatus) {
15
- if (resStatus.status === 'failed') {
16
- reject(resStatus.message);
17
- }
18
-
19
15
  dispatch({ type: publish.UPDATE_PUBLISH_STATUS, data: resStatus });
20
-
21
16
  if (resStatus.publishing) {
22
17
  const jobId = resStatus.job_id;
23
18
  api.pollJob(jobId)
24
19
  .then(() => {
25
20
  return dispatch(getStoryPublishStatus(api, storyId));
21
+ // Error polling job
26
22
  })
27
23
  .catch((e) => {
28
24
  api.cancelJobPolling()
@@ -33,6 +29,7 @@ export const getStoryPublishStatus = (api: IImposiumAPI, storyId: string): any =
33
29
  reject(f);
34
30
  throw f;
35
31
  });
32
+ console.error(e);
36
33
  reject(copy.header.publishPollError);
37
34
  });
38
35
  }
@@ -76,7 +73,7 @@ export const publishVersion = (api: IImposiumAPI, storyId: string) => {
76
73
  return new Promise((resolve, reject) => {
77
74
  api.runPublish(storyId, '')
78
75
  .then((d) => {
79
- return dispatch(getStoryPublishStatus(api, storyId));
76
+ dispatch(getStoryPublishStatus(api, storyId));
80
77
  })
81
78
  .catch(() => {
82
79
  reject(copy.header.publishJobError);
@@ -1,9 +1,12 @@
1
- import actions from '../actions/access';
1
+ import actions, { ACCESS_CACHE_KEY } from '../actions/access';
2
2
 
3
- const initialState: any = {
4
- organizations: [],
5
- services: []
6
- };
3
+ let initialState: any = null;
4
+
5
+ try {
6
+ initialState = JSON.parse(localStorage.getItem(ACCESS_CACHE_KEY));
7
+ } catch (e) {
8
+ console.warn('Cached access data was malformed or missing, redirected to login.');
9
+ }
7
10
 
8
11
  const access = (state = initialState, action) => {
9
12
  switch (action.type) {