@imposium-hub/components 2.2.46-0 → 2.3.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 (220) hide show
  1. package/dist/cjs/Util.d.ts +0 -1
  2. package/dist/cjs/Util.js +1 -8
  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 +7 -4
  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_BACKUP_73190.d.ts +27 -0
  10. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +243 -0
  11. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  12. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  13. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +255 -0
  14. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  15. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  16. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +243 -0
  17. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  18. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  19. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +251 -0
  20. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  21. package/dist/cjs/components/assets/AssetField.js +2 -2
  22. package/dist/cjs/components/assets/AssetField.js.map +1 -1
  23. package/dist/cjs/components/assets/AssetsTableDurationCell.js +4 -1
  24. package/dist/cjs/components/assets/AssetsTableDurationCell.js.map +1 -1
  25. package/dist/cjs/components/assets/AssetsTableGlobalCell.js +1 -1
  26. package/dist/cjs/components/assets/AssetsTableGlobalCell.js.map +1 -1
  27. package/dist/cjs/components/assets/AssetsTableNameCell.js +1 -2
  28. package/dist/cjs/components/assets/AssetsTableNameCell.js.map +1 -1
  29. package/dist/cjs/components/assets/AssetsTableRateCell.js +3 -9
  30. package/dist/cjs/components/assets/AssetsTableRateCell.js.map +1 -1
  31. package/dist/cjs/components/assets/AssetsTableTypeFilter.js +2 -2
  32. package/dist/cjs/components/assets/AssetsTableTypeFilter.js.map +1 -1
  33. package/dist/cjs/components/assets/AssetsUploadMenu.js +33 -157
  34. package/dist/cjs/components/assets/AssetsUploadMenu.js.map +1 -1
  35. package/dist/cjs/components/button-group-field/ButtonGroupField.d.ts +1 -1
  36. package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +1 -1
  37. package/dist/cjs/components/color-field/ColorField.d.ts +1 -1
  38. package/dist/cjs/components/color-field/ColorField.js +2 -2
  39. package/dist/cjs/components/color-field/ColorField.js.map +1 -1
  40. package/dist/cjs/components/context-menu/ContextMenu.js +4 -8
  41. package/dist/cjs/components/context-menu/ContextMenu.js.map +1 -1
  42. package/dist/cjs/components/data-table/DataTable.js +2 -2
  43. package/dist/cjs/components/data-table/DataTable.js.map +1 -1
  44. package/dist/cjs/components/dropdown/{Dropdown.stories.js → dropdown.stories.js} +1 -1
  45. package/dist/cjs/components/dropdown/{Dropdown.stories.js.map → dropdown.stories.js.map} +1 -1
  46. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
  47. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +91 -0
  48. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
  49. package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +33 -0
  50. package/dist/cjs/components/header/Header_BACKUP_73021.js +393 -0
  51. package/dist/cjs/components/header/Header_BACKUP_73021.js.map +1 -0
  52. package/dist/cjs/components/header/Header_BASE_73021.d.ts +29 -0
  53. package/dist/cjs/components/header/Header_BASE_73021.js +376 -0
  54. package/dist/cjs/components/header/Header_BASE_73021.js.map +1 -0
  55. package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +33 -0
  56. package/dist/cjs/components/header/Header_LOCAL_73021.js +382 -0
  57. package/dist/cjs/components/header/Header_LOCAL_73021.js.map +1 -0
  58. package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +30 -0
  59. package/dist/cjs/components/header/Header_REMOTE_73021.js +386 -0
  60. package/dist/cjs/components/header/Header_REMOTE_73021.js.map +1 -0
  61. package/dist/cjs/components/list-field/ListField.d.ts +1 -1
  62. package/dist/cjs/components/number-field/NumberField.d.ts +1 -1
  63. package/dist/cjs/components/publish-wizard/PublishWizard.js +0 -4
  64. package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
  65. package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js +5 -28
  66. package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
  67. package/dist/cjs/components/select-field/SelectField.d.ts +1 -1
  68. package/dist/cjs/components/select-field/SelectField.js +0 -4
  69. package/dist/cjs/components/select-field/SelectField.js.map +1 -1
  70. package/dist/cjs/components/slider-field/SliderField.d.ts +1 -1
  71. package/dist/cjs/components/smpte-field/SMPTEField.d.ts +1 -1
  72. package/dist/cjs/components/story-previewer/StoryPreviewer.js +2 -7
  73. package/dist/cjs/components/story-previewer/StoryPreviewer.js.map +1 -1
  74. package/dist/cjs/components/text-area-field/TextAreaField.d.ts +1 -1
  75. package/dist/cjs/components/text-field/TextField.d.ts +1 -1
  76. package/dist/cjs/constants/copy.d.ts +0 -2
  77. package/dist/cjs/constants/copy.js +3 -5
  78. package/dist/cjs/constants/copy.js.map +1 -1
  79. package/dist/cjs/index.d.ts +2 -4
  80. package/dist/cjs/index.js +3 -6
  81. package/dist/cjs/index.js.map +1 -1
  82. package/dist/cjs/redux/actions/asset-uploads.d.ts +10 -5
  83. package/dist/cjs/redux/actions/asset-uploads.js +182 -262
  84. package/dist/cjs/redux/actions/asset-uploads.js.map +1 -1
  85. package/dist/cjs/redux/reducers/asset-uploads.js +24 -8
  86. package/dist/cjs/redux/reducers/asset-uploads.js.map +1 -1
  87. package/dist/esm/Util.d.ts +0 -1
  88. package/dist/esm/Util.js +0 -6
  89. package/dist/esm/Util.js.map +1 -1
  90. package/dist/esm/components/Tooltip.d.ts +2 -2
  91. package/dist/esm/components/Tooltip.js +4 -4
  92. package/dist/esm/components/Tooltip.js.map +1 -1
  93. package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  94. package/dist/esm/components/anchor-field/AnchorField.d.ts +1 -1
  95. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
  96. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +194 -0
  97. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  98. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  99. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +208 -0
  100. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  101. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  102. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +194 -0
  103. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  104. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  105. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +204 -0
  106. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  107. package/dist/esm/components/assets/AssetField.js +2 -2
  108. package/dist/esm/components/assets/AssetField.js.map +1 -1
  109. package/dist/esm/components/assets/AssetsTableDurationCell.js +5 -2
  110. package/dist/esm/components/assets/AssetsTableDurationCell.js.map +1 -1
  111. package/dist/esm/components/assets/AssetsTableGlobalCell.js +1 -1
  112. package/dist/esm/components/assets/AssetsTableGlobalCell.js.map +1 -1
  113. package/dist/esm/components/assets/AssetsTableNameCell.js +1 -2
  114. package/dist/esm/components/assets/AssetsTableNameCell.js.map +1 -1
  115. package/dist/esm/components/assets/AssetsTableRateCell.js +3 -9
  116. package/dist/esm/components/assets/AssetsTableRateCell.js.map +1 -1
  117. package/dist/esm/components/assets/AssetsTableTypeFilter.js +2 -2
  118. package/dist/esm/components/assets/AssetsTableTypeFilter.js.map +1 -1
  119. package/dist/esm/components/assets/AssetsUploadMenu.js +33 -138
  120. package/dist/esm/components/assets/AssetsUploadMenu.js.map +1 -1
  121. package/dist/esm/components/button-group-field/ButtonGroupField.d.ts +1 -1
  122. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +1 -1
  123. package/dist/esm/components/color-field/ColorField.d.ts +1 -1
  124. package/dist/esm/components/color-field/ColorField.js +2 -2
  125. package/dist/esm/components/color-field/ColorField.js.map +1 -1
  126. package/dist/esm/components/context-menu/ContextMenu.js +3 -7
  127. package/dist/esm/components/context-menu/ContextMenu.js.map +1 -1
  128. package/dist/esm/components/data-table/DataTable.js +2 -2
  129. package/dist/esm/components/data-table/DataTable.js.map +1 -1
  130. package/dist/esm/components/dropdown/{Dropdown.stories.js → dropdown.stories.js} +1 -1
  131. package/dist/esm/components/dropdown/{Dropdown.stories.js.map → dropdown.stories.js.map} +1 -1
  132. package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
  133. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +35 -0
  134. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
  135. package/dist/esm/components/header/Header_BACKUP_73021.d.ts +33 -0
  136. package/dist/esm/components/header/Header_BACKUP_73021.js +336 -0
  137. package/dist/esm/components/header/Header_BACKUP_73021.js.map +1 -0
  138. package/dist/esm/components/header/Header_BASE_73021.d.ts +29 -0
  139. package/dist/esm/components/header/Header_BASE_73021.js +322 -0
  140. package/dist/esm/components/header/Header_BASE_73021.js.map +1 -0
  141. package/dist/esm/components/header/Header_LOCAL_73021.d.ts +33 -0
  142. package/dist/esm/components/header/Header_LOCAL_73021.js +328 -0
  143. package/dist/esm/components/header/Header_LOCAL_73021.js.map +1 -0
  144. package/dist/esm/components/header/Header_REMOTE_73021.d.ts +30 -0
  145. package/dist/esm/components/header/Header_REMOTE_73021.js +329 -0
  146. package/dist/esm/components/header/Header_REMOTE_73021.js.map +1 -0
  147. package/dist/esm/components/list-field/ListField.d.ts +1 -1
  148. package/dist/esm/components/number-field/NumberField.d.ts +1 -1
  149. package/dist/esm/components/publish-wizard/PublishWizard.js +0 -4
  150. package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
  151. package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js +5 -28
  152. package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
  153. package/dist/esm/components/select-field/SelectField.d.ts +1 -1
  154. package/dist/esm/components/select-field/SelectField.js +0 -3
  155. package/dist/esm/components/select-field/SelectField.js.map +1 -1
  156. package/dist/esm/components/slider-field/SliderField.d.ts +1 -1
  157. package/dist/esm/components/smpte-field/SMPTEField.d.ts +1 -1
  158. package/dist/esm/components/story-previewer/StoryPreviewer.js +2 -7
  159. package/dist/esm/components/story-previewer/StoryPreviewer.js.map +1 -1
  160. package/dist/esm/components/text-area-field/TextAreaField.d.ts +1 -1
  161. package/dist/esm/components/text-field/TextField.d.ts +1 -1
  162. package/dist/esm/constants/copy.d.ts +0 -2
  163. package/dist/esm/constants/copy.js +3 -5
  164. package/dist/esm/constants/copy.js.map +1 -1
  165. package/dist/esm/index.d.ts +2 -4
  166. package/dist/esm/index.js +2 -4
  167. package/dist/esm/index.js.map +1 -1
  168. package/dist/esm/redux/actions/asset-uploads.d.ts +10 -5
  169. package/dist/esm/redux/actions/asset-uploads.js +167 -224
  170. package/dist/esm/redux/actions/asset-uploads.js.map +1 -1
  171. package/dist/esm/redux/reducers/asset-uploads.js +48 -11
  172. package/dist/esm/redux/reducers/asset-uploads.js.map +1 -1
  173. package/dist/styles.css +2 -151
  174. package/dist/styles.less +74 -280
  175. package/less/components/assets.less +63 -237
  176. package/less/components/button.less +1 -7
  177. package/less/components/data-table.less +11 -17
  178. package/less/components/publish-wizard.less +0 -20
  179. package/less/components/story-previewer.less +0 -1
  180. package/package.json +6 -6
  181. package/src/Util.ts +0 -10
  182. package/src/components/Tooltip.tsx +9 -9
  183. package/src/components/advanced-number-field/AdvancedNumberField.tsx +1 -1
  184. package/src/components/anchor-field/AnchorField.tsx +1 -1
  185. package/src/components/assets/AssetField.tsx +8 -3
  186. package/src/components/assets/AssetsTableDurationCell.tsx +5 -2
  187. package/src/components/assets/AssetsTableNameCell.tsx +1 -2
  188. package/src/components/assets/AssetsTableRateCell.tsx +4 -11
  189. package/src/components/assets/AssetsTableTypeFilter.tsx +8 -7
  190. package/src/components/assets/AssetsUploadMenu.tsx +97 -275
  191. package/src/components/button-group-field/ButtonGroupField.tsx +1 -1
  192. package/src/components/checkbox-field/CheckboxField.tsx +1 -1
  193. package/src/components/color-field/ColorField.tsx +3 -3
  194. package/src/components/context-menu/ContextMenu.tsx +11 -16
  195. package/src/components/data-table/DataTable.tsx +2 -2
  196. package/src/components/list-field/ListField.tsx +1 -1
  197. package/src/components/number-field/NumberField.tsx +1 -1
  198. package/src/components/publish-wizard/PublishWizard.tsx +8 -15
  199. package/src/components/publish-wizard/publish/EmailWorkflow.tsx +10 -42
  200. package/src/components/select-field/SelectField.tsx +1 -4
  201. package/src/components/slider-field/SliderField.tsx +1 -1
  202. package/src/components/smpte-field/SMPTEField.tsx +1 -1
  203. package/src/components/story-previewer/StoryPreviewer.tsx +6 -10
  204. package/src/components/text-area-field/TextAreaField.tsx +1 -1
  205. package/src/components/text-field/TextField.tsx +1 -1
  206. package/src/constants/copy.ts +3 -5
  207. package/src/index.ts +8 -6
  208. package/src/redux/actions/asset-uploads.ts +205 -305
  209. package/src/redux/reducers/asset-uploads.ts +48 -13
  210. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.d.ts +0 -12
  211. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.js +0 -75
  212. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.js.map +0 -1
  213. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.d.ts +0 -12
  214. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.js +0 -24
  215. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.js.map +0 -1
  216. package/src/components/assets/AssetsTableGlobalCell.tsx +0 -15
  217. package/src/components/copy-prop-id-button/CopyPropIdButton.tsx +0 -44
  218. /package/dist/cjs/components/dropdown/{Dropdown.stories.d.ts → dropdown.stories.d.ts} +0 -0
  219. /package/dist/esm/components/dropdown/{Dropdown.stories.d.ts → dropdown.stories.d.ts} +0 -0
  220. /package/src/components/dropdown/{Dropdown.stories.tsx → dropdown.stories.tsx} +0 -0
@@ -3,36 +3,84 @@ 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',
6
15
  ADD_UPLOAD: 'assetUploads/ADD_UPLOAD',
7
- UPDATE_UPLOAD: 'assetUploads/UPDATE_UPLOAD',
8
16
  UPDATE_PERCENT_UPLOADED: 'assetUploads/UPDATE_PERCENT_UPLOADED',
9
- ADD_UPLOAD_ASSET_ID: 'assetUploads/ADD_UPLOAD_ASSET_ID',
10
17
  REMOVE_UPLOAD: 'assetUploads/REMOVE_UPLOAD'
11
18
  };
12
19
 
13
20
  const POLL_INTERVAL: number = 5000;
14
21
 
15
- let uploadFiles: File[] = [];
16
- let setBindToOverlay;
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
+ });
17
60
 
18
61
  export const uploadAssets = (
19
62
  api: IImposiumAPI,
20
63
  files: File[],
64
+ storyId: string,
21
65
  bindToOverlay?: (f: any) => any
22
66
  ): any => {
23
67
  return (dispatch, getStore) => {
24
68
  const {
25
- assetUploads: { uploads },
26
- editor: {
27
- showUploadsMenu,
28
- assetUploads: { tagByFileName, tagByDelimiter, delimiter, tagManually, manualTags }
69
+ assetUploads: {
70
+ uploads,
71
+ assignToStory,
72
+ tagByFileName,
73
+ tagByDelimiter,
74
+ delimiter,
75
+ tagManually,
76
+ manualTags
29
77
  }
30
78
  } = getStore();
79
+ let currentQueue: number = 0;
80
+ let ongoingJobs: any[] = [];
81
+ const filesLength = files.length > 5 ? 4 : files.length - 1;
31
82
 
32
- uploadFiles.push(...files);
33
- setBindToOverlay = bindToOverlay;
34
-
35
- files.map((file: File) => {
83
+ const uploadBlobs: any[] = files.map((file: File) => {
36
84
  const uploadsWithSameName: any[] = uploads.filter((u: any) =>
37
85
  u.filename.includes(file.name)
38
86
  );
@@ -44,11 +92,11 @@ export const uploadAssets = (
44
92
  let tags = [];
45
93
 
46
94
  if (tagByFileName) {
47
- tags = tags.concat(file.name.slice(0, file.name.lastIndexOf('.')));
95
+ tags = tags.concat(file.name.substr(0, file.name.lastIndexOf('.')));
48
96
  }
49
97
 
50
98
  if (tagByDelimiter) {
51
- const tag = file.name.slice(0, file.name.lastIndexOf('.')).split(delimiter);
99
+ const tag = file.name.substr(0, file.name.lastIndexOf('.')).split(delimiter);
52
100
  tags = [...new Set([...tags, ...tag])];
53
101
  }
54
102
 
@@ -56,100 +104,7 @@ export const uploadAssets = (
56
104
  tags = [...new Set([...tags, ...manualTags])];
57
105
  }
58
106
 
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
- }
107
+ const uploadMeta: any = { filename, percent: 0 };
153
108
 
154
109
  const onUploadProgress = (progress: any): void => {
155
110
  dispatch({
@@ -159,96 +114,76 @@ const uploadAssetHandler = (api: IImposiumAPI, dispatch, getStore) => {
159
114
  });
160
115
  };
161
116
 
162
- const uploadMeta: any = { filename, percent: 0, tags };
163
-
164
- uploadMetaArray.push(uploadMeta);
117
+ dispatch({ type: assetUploadsActions.ADD_UPLOAD, uploadMeta });
165
118
 
166
119
  return { file, tags, filename, onUploadProgress };
167
120
  });
168
121
 
169
- dispatch({ type: assetUploadsActions.UPDATE_UPLOAD, uploadMetaArray });
170
-
171
- const filesLength = uploadFiles.length > 5 ? 4 : uploadFiles.length - 1;
172
-
173
122
  const createPromise = (activeIndex: number) => {
174
123
  const queueLength: number = uploadBlobs.length;
175
124
  const sId = assignToStory && storyId ? storyId : null;
176
125
  const processingTimeout: number = -1;
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]);
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);
200
151
  }
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
- };
216
152
  };
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);
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);
235
167
  }
168
+ return jobIdExists;
169
+ });
170
+ if (ongoingJobs.length > 0) {
171
+ pollAssetJobs(api, ongoingJobs, processingTimeout);
236
172
  }
237
- })
238
- .catch((e: Error[]) => {
239
- if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
240
- currentQueue = currentQueue + 1;
241
- createPromise(currentQueue);
242
- }
243
- });
244
- }
173
+ }
174
+ })
175
+ .catch((e: Error[]) => {
176
+ if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
177
+ currentQueue = currentQueue + 1;
178
+ createPromise(currentQueue);
179
+ }
180
+ });
245
181
  };
246
-
247
182
  for (let i = 0; i <= filesLength; i++) {
248
183
  createPromise(i);
249
184
  currentQueue = i;
250
185
  }
251
- }
186
+ };
252
187
  };
253
188
 
254
189
  export const replaceAsset = (
@@ -258,103 +193,95 @@ export const replaceAsset = (
258
193
  storyId: string
259
194
  ): any => {
260
195
  return (dispatch, getStore) => {
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
- });
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;
292
202
 
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
- };
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;
318
211
 
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
- }
212
+ const uploadMeta: any = { filename, percent: 0 };
342
213
 
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
- });
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
+ });
351
220
  };
352
221
 
353
- for (let i = 0; i <= filesLength; i++) {
354
- createPromise(i);
355
- currentQueue = i;
356
- }
222
+ dispatch({ type: assetUploadsActions.ADD_UPLOAD, uploadMeta });
223
+
224
+ return { file, filename, onUploadProgress };
357
225
  });
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
+ }
358
285
  };
359
286
  };
360
287
 
@@ -395,40 +322,13 @@ const pollAssetJobs = (api, ongoingJobs: any[], timeout: number): void => {
395
322
  }, POLL_INTERVAL);
396
323
  };
397
324
 
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 => {
325
+ export const cancelAssetUpload = (fileName: string, api: IImposiumAPI): any => {
408
326
  return (dispatch) => {
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
- }
327
+ api.cancelUploadAssets(fileName);
328
+ dispatch({
329
+ type: assetUploadsActions.REMOVE_UPLOAD,
330
+ filename: fileName
331
+ });
432
332
  };
433
333
  };
434
334
 
@@ -1,11 +1,59 @@
1
1
  import assetUploadsActions from '../actions/asset-uploads';
2
2
 
3
3
  const initialState: any = {
4
+ tagByDelimiter: true,
5
+ delimiter: '_',
6
+ tagManually: false,
7
+ manualTags: [],
8
+ tagByFileName: false,
9
+ assignToStory: true,
4
10
  uploads: []
5
11
  };
6
12
 
7
13
  const assetUploads = (state = initialState, action): any => {
8
14
  switch (action.type) {
15
+ case assetUploadsActions.TOGGLE_TAG_BY_FILENAME:
16
+ return {
17
+ ...state,
18
+ tagByFileName: action.toggle
19
+ };
20
+ case assetUploadsActions.TOGGLE_TAG_BY_DELIMITER:
21
+ return {
22
+ ...state,
23
+ tagByDelimiter: action.toggle
24
+ };
25
+ case assetUploadsActions.SET_DELIMITER:
26
+ return {
27
+ ...state,
28
+ delimiter: action.delimiter
29
+ };
30
+ case assetUploadsActions.TOGGLE_MANUAL_TAGGING:
31
+ return {
32
+ ...state,
33
+ tagManually: action.toggle
34
+ };
35
+ case assetUploadsActions.ADD_MANUAL_TAG:
36
+ const newManualTags = [...state.manualTags];
37
+ newManualTags.push(action.tag);
38
+ return {
39
+ ...state,
40
+ manualTags: newManualTags
41
+ };
42
+ case assetUploadsActions.DELETE_MANUAL_TAG:
43
+ return {
44
+ ...state,
45
+ manualTags: state.manualTags.filter((t: string) => t !== action.tag)
46
+ };
47
+ case assetUploadsActions.DELETE_MANUAL_TAGS:
48
+ return {
49
+ ...state,
50
+ manualTags: []
51
+ };
52
+ case assetUploadsActions.TOGGLE_ASSIGN_TO_STORY:
53
+ return {
54
+ ...state,
55
+ assignToStory: action.toggle
56
+ };
9
57
  case assetUploadsActions.ADD_UPLOAD:
10
58
  return {
11
59
  ...state,
@@ -24,19 +72,6 @@ const assetUploads = (state = initialState, action): any => {
24
72
  ...state,
25
73
  uploads: newUploads
26
74
  };
27
- case assetUploadsActions.ADD_UPLOAD_ASSET_ID:
28
- const updateUploads = state.uploads.map((u: any) => {
29
- if (u.filename === action.filename) {
30
- return { ...u, assetId: action.assetId };
31
- }
32
-
33
- return u;
34
- });
35
-
36
- return {
37
- ...state,
38
- uploads: updateUploads
39
- };
40
75
  case assetUploadsActions.REMOVE_UPLOAD:
41
76
  return {
42
77
  ...state,