@imposium-hub/components 2.14.9 → 2.15.0-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 (293) hide show
  1. package/dist/cjs/components/app-wrapper/AppWrapper.d.ts +1 -6
  2. package/dist/cjs/components/app-wrapper/AppWrapper.js +4 -8
  3. package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
  4. package/dist/cjs/components/app-wrapper/AppWrapperV2.d.ts +26 -0
  5. package/dist/cjs/components/app-wrapper/AppWrapperV2.js +266 -0
  6. package/dist/cjs/components/app-wrapper/AppWrapperV2.js.map +1 -0
  7. package/dist/cjs/components/app-wrapper/AppWrapperV3.d.ts +19 -0
  8. package/dist/cjs/components/app-wrapper/AppWrapperV3.js +195 -0
  9. package/dist/cjs/components/app-wrapper/AppWrapperV3.js.map +1 -0
  10. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
  11. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +243 -0
  12. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  13. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  14. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +255 -0
  15. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  16. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  17. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +243 -0
  18. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  19. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  20. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +251 -0
  21. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  22. package/dist/cjs/components/assets/AssetsUploadMenu.js +5 -5
  23. package/dist/cjs/components/auth-gate/AuthGate.d.ts +2 -0
  24. package/dist/cjs/components/auth-gate/AuthGate.js +105 -0
  25. package/dist/cjs/components/auth-gate/AuthGate.js.map +1 -0
  26. package/dist/cjs/components/change-report/ChangeReportTree.d.ts +10 -0
  27. package/dist/cjs/components/change-report/ChangeReportTree.js +95 -0
  28. package/dist/cjs/components/change-report/ChangeReportTree.js.map +1 -0
  29. package/dist/cjs/components/context-menu/AnimateComponent.d.ts +0 -1
  30. package/dist/cjs/components/context-menu/AnimateComponent.js.map +1 -1
  31. package/dist/cjs/components/context-menu/ContextMenu.d.ts +0 -1
  32. package/dist/cjs/components/context-menu/ContextMenu.js +6 -6
  33. package/dist/cjs/components/context-menu/ContextMenu.js.map +1 -1
  34. package/dist/cjs/components/context-menu/ContextMenuItem.d.ts +0 -1
  35. package/dist/cjs/components/context-menu/ContextMenuItem.js.map +1 -1
  36. package/dist/cjs/components/context-menu/ContextMenuTrigger.d.ts +0 -1
  37. package/dist/cjs/components/context-menu/ContextMenuTrigger.js.map +1 -1
  38. package/dist/cjs/components/context-menu/SubMenu.d.ts +0 -1
  39. package/dist/cjs/components/context-menu/SubMenu.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/edit-guide-modal/EditGuideModal.d.ts +8 -0
  43. package/dist/cjs/components/edit-guide-modal/EditGuideModal.js +132 -0
  44. package/dist/cjs/components/edit-guide-modal/EditGuideModal.js.map +1 -0
  45. package/dist/cjs/components/edit-marker-modal/EditMarkerModal.d.ts +8 -0
  46. package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js +104 -0
  47. package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js.map +1 -0
  48. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
  49. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +91 -0
  50. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
  51. package/dist/cjs/components/feature-flag-wrapper/FeatureFlagWrapper.d.ts +7 -0
  52. package/dist/cjs/components/feature-flag-wrapper/FeatureFlagWrapper.js +48 -0
  53. package/dist/cjs/components/feature-flag-wrapper/FeatureFlagWrapper.js.map +1 -0
  54. package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +33 -0
  55. package/dist/cjs/components/header/Header_BACKUP_73021.js +393 -0
  56. package/dist/cjs/components/header/Header_BACKUP_73021.js.map +1 -0
  57. package/dist/cjs/components/header/Header_BASE_73021.d.ts +29 -0
  58. package/dist/cjs/components/header/Header_BASE_73021.js +376 -0
  59. package/dist/cjs/components/header/Header_BASE_73021.js.map +1 -0
  60. package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +33 -0
  61. package/dist/cjs/components/header/Header_LOCAL_73021.js +382 -0
  62. package/dist/cjs/components/header/Header_LOCAL_73021.js.map +1 -0
  63. package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +30 -0
  64. package/dist/cjs/components/header/Header_REMOTE_73021.js +386 -0
  65. package/dist/cjs/components/header/Header_REMOTE_73021.js.map +1 -0
  66. package/dist/cjs/components/header/StoryDropdown.d.ts +6 -0
  67. package/dist/cjs/components/header/StoryDropdown.js +111 -0
  68. package/dist/cjs/components/header/StoryDropdown.js.map +1 -0
  69. package/dist/cjs/components/number-field/NumberField.d.ts +2 -3
  70. package/dist/cjs/components/number-field/NumberField.js +19 -23
  71. package/dist/cjs/components/number-field/NumberField.js.map +1 -1
  72. package/dist/cjs/components/portal/Portal.d.ts +0 -1
  73. package/dist/cjs/components/portal/Portal.js.map +1 -1
  74. package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +5 -4
  75. package/dist/cjs/components/publish-wizard/PublishWizard.js +103 -34
  76. package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
  77. package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.d.ts +11 -0
  78. package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js +213 -0
  79. package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js.map +1 -0
  80. package/dist/cjs/components/service-icon/ServiceIcon.test.d.ts +0 -0
  81. package/dist/cjs/components/service-icon/ServiceIcon.test.js +1 -0
  82. package/dist/cjs/components/service-icon/ServiceIcon.test.js.map +1 -0
  83. package/dist/cjs/components/story-previewer/StoryPreviewer.js +2 -15
  84. package/dist/cjs/components/story-previewer/StoryPreviewer.js.map +1 -1
  85. package/dist/cjs/components/tabs/Tabs.d.ts +4 -12
  86. package/dist/cjs/components/tabs/Tabs.js +3 -21
  87. package/dist/cjs/components/tabs/Tabs.js.map +1 -1
  88. package/dist/cjs/components/tabs/Tabs.stories.d.ts +3 -1
  89. package/dist/cjs/components/tag/Tag.test.d.ts +0 -0
  90. package/dist/cjs/components/tag/Tag.test.js +1 -0
  91. package/dist/cjs/components/tag/Tag.test.js.map +1 -0
  92. package/dist/cjs/constants/copy.d.ts +9 -0
  93. package/dist/cjs/constants/copy.js +13 -2
  94. package/dist/cjs/constants/copy.js.map +1 -1
  95. package/dist/cjs/constants/snippets.d.ts +18 -0
  96. package/dist/cjs/constants/snippets.js +3 -0
  97. package/dist/cjs/constants/snippets.js.map +1 -0
  98. package/dist/cjs/index.d.ts +4 -2
  99. package/dist/cjs/index.js +4 -36
  100. package/dist/cjs/index.js.map +1 -1
  101. package/dist/cjs/redux/actions/auth.d.ts +9 -0
  102. package/dist/cjs/redux/actions/auth.js +30 -0
  103. package/dist/cjs/redux/actions/auth.js.map +1 -0
  104. package/dist/cjs/redux/reducers/auth.d.ts +3 -0
  105. package/dist/cjs/redux/reducers/auth.js +67 -0
  106. package/dist/cjs/redux/reducers/auth.js.map +1 -0
  107. package/dist/cjs/services/API.d.ts +2 -0
  108. package/dist/cjs/services/API.js +6 -0
  109. package/dist/cjs/services/API.js.map +1 -1
  110. package/dist/cjs/services/Auth0.d.ts +18 -0
  111. package/dist/cjs/services/Auth0.js +102 -0
  112. package/dist/cjs/services/Auth0.js.map +1 -0
  113. package/dist/cjs/services/Session.d.ts +26 -0
  114. package/dist/cjs/services/Session.js +155 -0
  115. package/dist/cjs/services/Session.js.map +1 -0
  116. package/dist/cjs/utils/routing.d.ts +2 -4
  117. package/dist/cjs/utils/routing.js +4 -8
  118. package/dist/cjs/utils/routing.js.map +1 -1
  119. package/dist/esm/components/app-wrapper/AppWrapper.d.ts +1 -6
  120. package/dist/esm/components/app-wrapper/AppWrapper.js +5 -9
  121. package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
  122. package/dist/esm/components/app-wrapper/AppWrapperV2.d.ts +26 -0
  123. package/dist/esm/components/app-wrapper/AppWrapperV2.js +142 -0
  124. package/dist/esm/components/app-wrapper/AppWrapperV2.js.map +1 -0
  125. package/dist/esm/components/app-wrapper/AppWrapperV3.d.ts +19 -0
  126. package/dist/esm/components/app-wrapper/AppWrapperV3.js +88 -0
  127. package/dist/esm/components/app-wrapper/AppWrapperV3.js.map +1 -0
  128. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
  129. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +194 -0
  130. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  131. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  132. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +208 -0
  133. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  134. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  135. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +194 -0
  136. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  137. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  138. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +204 -0
  139. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  140. package/dist/esm/components/assets/AssetsUploadMenu.js +5 -5
  141. package/dist/esm/components/auth-gate/AuthGate.d.ts +2 -0
  142. package/dist/esm/components/auth-gate/AuthGate.js +59 -0
  143. package/dist/esm/components/auth-gate/AuthGate.js.map +1 -0
  144. package/dist/esm/components/change-report/ChangeReportTree.d.ts +10 -0
  145. package/dist/esm/components/change-report/ChangeReportTree.js +42 -0
  146. package/dist/esm/components/change-report/ChangeReportTree.js.map +1 -0
  147. package/dist/esm/components/context-menu/AnimateComponent.d.ts +0 -1
  148. package/dist/esm/components/context-menu/AnimateComponent.js.map +1 -1
  149. package/dist/esm/components/context-menu/ContextMenu.d.ts +0 -1
  150. package/dist/esm/components/context-menu/ContextMenu.js +1 -2
  151. package/dist/esm/components/context-menu/ContextMenu.js.map +1 -1
  152. package/dist/esm/components/context-menu/ContextMenuItem.d.ts +0 -1
  153. package/dist/esm/components/context-menu/ContextMenuItem.js.map +1 -1
  154. package/dist/esm/components/context-menu/ContextMenuTrigger.d.ts +0 -1
  155. package/dist/esm/components/context-menu/ContextMenuTrigger.js.map +1 -1
  156. package/dist/esm/components/context-menu/SubMenu.d.ts +0 -1
  157. package/dist/esm/components/context-menu/SubMenu.js.map +1 -1
  158. package/dist/esm/components/dropdown/{Dropdown.stories.js → dropdown.stories.js} +1 -1
  159. package/dist/esm/components/dropdown/{Dropdown.stories.js.map → dropdown.stories.js.map} +1 -1
  160. package/dist/esm/components/edit-guide-modal/EditGuideModal.d.ts +8 -0
  161. package/dist/esm/components/edit-guide-modal/EditGuideModal.js +65 -0
  162. package/dist/esm/components/edit-guide-modal/EditGuideModal.js.map +1 -0
  163. package/dist/esm/components/edit-marker-modal/EditMarkerModal.d.ts +8 -0
  164. package/dist/esm/components/edit-marker-modal/EditMarkerModal.js +72 -0
  165. package/dist/esm/components/edit-marker-modal/EditMarkerModal.js.map +1 -0
  166. package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
  167. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +35 -0
  168. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
  169. package/dist/esm/components/feature-flag-wrapper/FeatureFlagWrapper.d.ts +7 -0
  170. package/dist/esm/components/feature-flag-wrapper/FeatureFlagWrapper.js +10 -0
  171. package/dist/esm/components/feature-flag-wrapper/FeatureFlagWrapper.js.map +1 -0
  172. package/dist/esm/components/header/Header_BACKUP_73021.d.ts +33 -0
  173. package/dist/esm/components/header/Header_BACKUP_73021.js +336 -0
  174. package/dist/esm/components/header/Header_BACKUP_73021.js.map +1 -0
  175. package/dist/esm/components/header/Header_BASE_73021.d.ts +29 -0
  176. package/dist/esm/components/header/Header_BASE_73021.js +322 -0
  177. package/dist/esm/components/header/Header_BASE_73021.js.map +1 -0
  178. package/dist/esm/components/header/Header_LOCAL_73021.d.ts +33 -0
  179. package/dist/esm/components/header/Header_LOCAL_73021.js +328 -0
  180. package/dist/esm/components/header/Header_LOCAL_73021.js.map +1 -0
  181. package/dist/esm/components/header/Header_REMOTE_73021.d.ts +30 -0
  182. package/dist/esm/components/header/Header_REMOTE_73021.js +329 -0
  183. package/dist/esm/components/header/Header_REMOTE_73021.js.map +1 -0
  184. package/dist/esm/components/header/StoryDropdown.d.ts +6 -0
  185. package/dist/esm/components/header/StoryDropdown.js +82 -0
  186. package/dist/esm/components/header/StoryDropdown.js.map +1 -0
  187. package/dist/esm/components/number-field/NumberField.d.ts +2 -3
  188. package/dist/esm/components/number-field/NumberField.js +19 -18
  189. package/dist/esm/components/number-field/NumberField.js.map +1 -1
  190. package/dist/esm/components/portal/Portal.d.ts +0 -1
  191. package/dist/esm/components/portal/Portal.js.map +1 -1
  192. package/dist/esm/components/publish-wizard/PublishWizard.d.ts +5 -4
  193. package/dist/esm/components/publish-wizard/PublishWizard.js +91 -34
  194. package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
  195. package/dist/esm/components/replace-files-modal/ReplaceFilesModal.d.ts +11 -0
  196. package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js +141 -0
  197. package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js.map +1 -0
  198. package/dist/esm/components/service-icon/ServiceIcon.test.d.ts +0 -0
  199. package/dist/esm/components/service-icon/ServiceIcon.test.js +1 -0
  200. package/dist/esm/components/service-icon/ServiceIcon.test.js.map +1 -0
  201. package/dist/esm/components/story-previewer/StoryPreviewer.js +2 -14
  202. package/dist/esm/components/story-previewer/StoryPreviewer.js.map +1 -1
  203. package/dist/esm/components/tabs/Tabs.d.ts +4 -12
  204. package/dist/esm/components/tabs/Tabs.js +4 -11
  205. package/dist/esm/components/tabs/Tabs.js.map +1 -1
  206. package/dist/esm/components/tabs/Tabs.stories.d.ts +3 -1
  207. package/dist/esm/components/tag/Tag.test.d.ts +0 -0
  208. package/dist/esm/components/tag/Tag.test.js +1 -0
  209. package/dist/esm/components/tag/Tag.test.js.map +1 -0
  210. package/dist/esm/constants/copy.d.ts +9 -0
  211. package/dist/esm/constants/copy.js +13 -2
  212. package/dist/esm/constants/copy.js.map +1 -1
  213. package/dist/esm/constants/snippets.d.ts +18 -0
  214. package/dist/esm/constants/snippets.js +2 -0
  215. package/dist/esm/constants/snippets.js.map +1 -0
  216. package/dist/esm/index.d.ts +4 -2
  217. package/dist/esm/index.js +3 -2
  218. package/dist/esm/index.js.map +1 -1
  219. package/dist/esm/redux/actions/auth.d.ts +9 -0
  220. package/dist/esm/redux/actions/auth.js +25 -0
  221. package/dist/esm/redux/actions/auth.js.map +1 -0
  222. package/dist/esm/redux/reducers/auth.d.ts +3 -0
  223. package/dist/esm/redux/reducers/auth.js +27 -0
  224. package/dist/esm/redux/reducers/auth.js.map +1 -0
  225. package/dist/esm/services/API.d.ts +2 -0
  226. package/dist/esm/services/API.js +6 -0
  227. package/dist/esm/services/API.js.map +1 -1
  228. package/dist/esm/services/Auth0.d.ts +18 -0
  229. package/dist/esm/services/Auth0.js +68 -0
  230. package/dist/esm/services/Auth0.js.map +1 -0
  231. package/dist/esm/services/Session.d.ts +26 -0
  232. package/dist/esm/services/Session.js +107 -0
  233. package/dist/esm/services/Session.js.map +1 -0
  234. package/dist/esm/utils/routing.d.ts +2 -4
  235. package/dist/esm/utils/routing.js +3 -6
  236. package/dist/esm/utils/routing.js.map +1 -1
  237. package/dist/styles.css +130 -3
  238. package/dist/styles.less +215 -64
  239. package/less/components/assets.less +5 -6
  240. package/less/components/auth-gate.less +1 -1
  241. package/less/components/change-report.less +115 -0
  242. package/less/components/data-table.less +2 -2
  243. package/less/components/determinate-loader.less +2 -2
  244. package/less/components/font-preview.less +1 -1
  245. package/less/components/form-field.less +5 -5
  246. package/less/components/header.less +30 -30
  247. package/less/components/modal.less +2 -2
  248. package/less/components/player.less +2 -2
  249. package/less/components/publish-wizard.less +36 -0
  250. package/less/components/section.less +2 -2
  251. package/less/components/static-composition-editor.less +4 -4
  252. package/less/components/story-previewer.less +4 -4
  253. package/less/components/tabs.less +3 -3
  254. package/less/entry.less +1 -0
  255. package/package.json +13 -24
  256. package/src/components/app-wrapper/AppWrapper.tsx +10 -18
  257. package/src/components/assets/AssetsUploadMenu.tsx +5 -5
  258. package/src/components/change-report/ChangeReportTree.tsx +125 -0
  259. package/src/components/context-menu/AnimateComponent.tsx +0 -1
  260. package/src/components/context-menu/ContextMenu.tsx +13 -15
  261. package/src/components/context-menu/ContextMenuItem.tsx +0 -1
  262. package/src/components/context-menu/ContextMenuTrigger.tsx +0 -1
  263. package/src/components/context-menu/SubMenu.tsx +0 -1
  264. package/src/components/number-field/NumberField.tsx +24 -33
  265. package/src/components/portal/Portal.tsx +0 -1
  266. package/src/components/publish-wizard/PublishWizard.tsx +144 -39
  267. package/src/components/service-icon/ServiceIcon.test.tsx +0 -0
  268. package/src/components/story-previewer/StoryPreviewer.tsx +8 -21
  269. package/src/components/tabs/Tabs.tsx +8 -25
  270. package/src/components/tag/Tag.test.tsx +0 -0
  271. package/src/constants/copy.ts +16 -2
  272. package/src/constants/snippets.ts +25 -0
  273. package/src/index.ts +7 -2
  274. package/src/services/API.ts +8 -0
  275. package/src/utils/routing.ts +6 -10
  276. package/tsconfig.json +1 -1
  277. package/src/components/advanced-number-field/AdvancedNumberField.test.tsx +0 -704
  278. package/src/components/anchor-field/AnchorField.test.tsx +0 -130
  279. package/src/components/asset-details/AssetDetails.test.tsx +0 -494
  280. package/src/components/assets/AssetField.test.tsx +0 -439
  281. package/src/components/assets/AssetsTableAssetIdCell.test.tsx +0 -134
  282. package/src/components/assets/AssetsTableAssetIdFilter.test.tsx +0 -95
  283. package/src/components/assets/AssetsTableComplexTagCell.test.tsx +0 -159
  284. package/src/components/assets/AssetsTableDateCell.test.tsx +0 -106
  285. package/src/components/number-field/NumberField.test.tsx +0 -383
  286. package/src/components/text-field/TextField.test.tsx +0 -988
  287. package/src/test/setup.ts +0 -91
  288. package/src/test/utils.tsx +0 -44
  289. package/tsconfig.eslint.json +0 -8
  290. package/vitest.config.ts +0 -31
  291. /package/dist/cjs/components/dropdown/{Dropdown.stories.d.ts → dropdown.stories.d.ts} +0 -0
  292. /package/dist/esm/components/dropdown/{Dropdown.stories.d.ts → dropdown.stories.d.ts} +0 -0
  293. /package/src/components/dropdown/{Dropdown.stories.tsx → dropdown.stories.tsx} +0 -0
@@ -1,6 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { CrMPublishUI } from './publish/CrMPublishUI';
3
3
  import Button from '../button/Button';
4
+ import ChangeReportTree from '../change-report/ChangeReportTree';
5
+ import { IChangeReportSection } from '../../constants/snippets';
4
6
  import SelectField from '../select-field/SelectField';
5
7
  import HRule from '../h-rule/HRule';
6
8
  import {
@@ -72,6 +74,7 @@ interface IPublishWizardProps {
72
74
  publishData: any;
73
75
  onDeleteBatch?: (batchId: string) => any;
74
76
  onBackBtn?: () => void;
77
+ auditLogEnabled?: boolean;
75
78
  }
76
79
 
77
80
  export interface ICredential {
@@ -98,6 +101,8 @@ interface IPublishWizardState {
98
101
  nextStep: boolean;
99
102
  publishError: string;
100
103
  selectedCreatives: string[];
104
+ changeReport: IChangeReportSection[] | null;
105
+ publishNotes: string;
101
106
  }
102
107
 
103
108
  interface IBigButtonProps {
@@ -126,8 +131,12 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
126
131
  publishData: { unpublished_changes }
127
132
  } = props;
128
133
 
129
- const screenIndex =
130
- unpublished_changes === undefined || unpublished_changes === true ? 0 : 1;
134
+ const hasReviewStep = !!props.auditLogEnabled;
135
+ const screenIndex = hasReviewStep
136
+ ? 0
137
+ : unpublished_changes === undefined || unpublished_changes === true
138
+ ? 0
139
+ : 1;
131
140
 
132
141
  this.state = {
133
142
  compositions: [],
@@ -145,28 +154,46 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
145
154
  next: false,
146
155
  nextStep: false,
147
156
  publishError: null,
148
- selectedCreatives: []
157
+ selectedCreatives: [],
158
+ changeReport: null,
159
+ publishNotes: ''
149
160
  };
150
161
  this.emailWorkflow = React.createRef();
151
162
  this.hiddenFileInputRef = React.createRef();
152
163
  }
153
164
 
154
165
  public componentDidUpdate(prevProps, prevState) {
155
- // If we just finished publushing, and we're on the first screen still go to the second screen
166
+ const hasReviewStep = !!this.props.auditLogEnabled;
167
+ // If we just finished publishing, advance from the Publish screen to the Distribution screen
168
+ const publishScreenIndex = hasReviewStep ? 1 : 0;
169
+ const distributionScreenIndex = hasReviewStep ? 2 : 1;
156
170
  if (
157
171
  prevProps.publishData.publishing &&
158
172
  !this.props.publishData.publishing &&
159
- this.state.screenIndex === 0 &&
173
+ this.state.screenIndex === publishScreenIndex &&
160
174
  !this.state.publishError
161
175
  ) {
162
176
  this.setState({
163
- screenIndex: 1
177
+ screenIndex: distributionScreenIndex
164
178
  });
165
179
  }
166
180
  }
167
181
 
168
182
  public componentDidMount() {
169
- const { story, api, handleError, activeComposition } = this.props;
183
+ const { story, api, handleError, activeComposition, auditLogEnabled } = this.props;
184
+
185
+ if (auditLogEnabled) {
186
+ api.getAuditLog(story.id)
187
+ .then((entries) => {
188
+ const currentEntry = entries?.[0];
189
+ const report = currentEntry?.id === 'current' ? currentEntry.changes : null;
190
+ this.setState({ changeReport: report });
191
+ })
192
+ .catch(() => {
193
+ this.setState({ changeReport: null });
194
+ });
195
+ }
196
+
170
197
  // Pull in all of the access creds for the composition dropdown
171
198
  api.getAssets({ type: ASSET_TYPES.VIDEO_COMPOSITION }, story.id)
172
199
  .then((res) => {
@@ -303,12 +330,14 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
303
330
  handleError,
304
331
  fromCrM
305
332
  } = this.props;
333
+ const hasReviewStep = !!this.props.auditLogEnabled;
334
+ const distributionScreenIndex = hasReviewStep ? 2 : 1;
306
335
 
307
336
  if (fromCrM) {
308
337
  this.props
309
338
  .publishVersion(api, id, this.state.selectedCreatives)
310
339
  .then(() => {
311
- this.setState({ screenIndex: 1 });
340
+ this.setState({ screenIndex: distributionScreenIndex });
312
341
  })
313
342
  .catch((e) => {
314
343
  this.setState({ publishError: e });
@@ -317,7 +346,7 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
317
346
  this.props.publishVersion(api, id).catch((e) => {
318
347
  handleError(e);
319
348
  });
320
- this.setState({ screenIndex: 1 });
349
+ this.setState({ screenIndex: distributionScreenIndex });
321
350
  }
322
351
  }
323
352
 
@@ -369,12 +398,35 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
369
398
  const { fromCrM, story } = this.props;
370
399
  const { publishing } = this.props.publishData;
371
400
  const disabledForCrM = this.shouldDisablePublishButtonForCrM();
401
+ const hasReviewStep = !!this.props.auditLogEnabled;
402
+ const publishScreenIndex = hasReviewStep ? 1 : 0;
403
+ const distributionScreenIndex = hasReviewStep ? 2 : 1;
372
404
  const lowerButtons = [];
373
405
 
374
- // publish and skip buttons
375
- if (screenIndex === 0) {
376
- // publish
377
-
406
+ if (hasReviewStep && screenIndex === 0) {
407
+ // Review Changes step: Skip and Publish buttons (no Back)
408
+ lowerButtons.push(
409
+ <Button
410
+ tooltip={copy.publish.btnSkip}
411
+ key='btn-skip'
412
+ size={'large'}
413
+ onClick={() => this.setState({ screenIndex: distributionScreenIndex })}
414
+ color='primary'>
415
+ {copy.publish.btnSkip}
416
+ </Button>
417
+ );
418
+ lowerButtons.push(
419
+ <Button
420
+ tooltip={copy.publish.btnPublish}
421
+ size={'large'}
422
+ key='btn-publish-review'
423
+ onClick={() => this.setState({ screenIndex: publishScreenIndex })}
424
+ color='primary'>
425
+ {copy.publish.btnPublish}
426
+ </Button>
427
+ );
428
+ } else if (screenIndex === publishScreenIndex) {
429
+ // Publish step: Publish and Skip buttons
378
430
  const projectType = story.creativeId
379
431
  ? CRM_INTEGRATED_PROJECT_TYPES.SINGLE_CREATIVE
380
432
  : CRM_INTEGRATED_PROJECT_TYPES.MULTI_CREATIVE;
@@ -401,13 +453,13 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
401
453
  tooltip={copy.publish.btnSkip}
402
454
  key='btn-skip'
403
455
  size={'large'}
404
- onClick={() => this.setState({ screenIndex: 1 })}
456
+ onClick={() => this.setState({ screenIndex: distributionScreenIndex })}
405
457
  color='primary'>
406
458
  {copy.publish.btnSkip}
407
459
  </Button>
408
460
  );
409
461
  } else {
410
- // display button when emailworkflow downloading state is true to close the modal
462
+ // Distribution and sub-screens: Back button (and Done/Finish if applicable)
411
463
  if (done || error) {
412
464
  lowerButtons.push(
413
465
  <Button
@@ -421,9 +473,10 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
421
473
  );
422
474
  }
423
475
 
424
- const backIndex = screenIndex === 1 ? 0 : 1;
476
+ // Back button: from distribution go to 0 (Review Changes ON) or 0 (Publish OFF)
477
+ // from sub-screens → go back to distribution
478
+ const backIndex = screenIndex === distributionScreenIndex ? 0 : distributionScreenIndex;
425
479
 
426
- // back button
427
480
  lowerButtons.push(
428
481
  <Button
429
482
  tooltip={copy.publish.btnBack}
@@ -450,7 +503,6 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
450
503
  </Button>
451
504
  );
452
505
 
453
- // reimport after column align
454
506
  if (error) {
455
507
  lowerButtons.push(
456
508
  <Button
@@ -469,6 +521,32 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
469
521
  return lowerButtons;
470
522
  }
471
523
 
524
+ private renderReviewChanges() {
525
+ const { changeReport, publishNotes } = this.state;
526
+ return (
527
+ <div className='publish-wizard-step publish-wizard-step--review'>
528
+ <h2>{copy.publish.reviewChangesStepTitle}</h2>
529
+ <HRule />
530
+ <p>{copy.publish.reviewChangesDescription}</p>
531
+ <ChangeReportTree
532
+ sections={changeReport}
533
+ defaultExpanded={true}
534
+ emptyMessage={copy.publish.noChangesMessage}
535
+ loadingMessage={copy.publish.loadingChangesMessage}
536
+ />
537
+ <div className='publish-notes-wrapper'>
538
+ <label className='publish-notes-label'>{copy.publish.publishNotesLabel}</label>
539
+ <textarea
540
+ className='publish-notes-textarea'
541
+ value={publishNotes}
542
+ onChange={(e) => this.setState({ publishNotes: e.target.value })}
543
+ placeholder={copy.publish.publishNotesPlaceholder}
544
+ />
545
+ </div>
546
+ </div>
547
+ );
548
+ }
549
+
472
550
  private renderPublish() {
473
551
  const { fromCrM, story } = this.props;
474
552
  const { publishing } = this.props.publishData;
@@ -591,6 +669,7 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
591
669
  selectedComposition={selectedComposition}
592
670
  publishDataset={publishDataset}
593
671
  creativeManagerBaseUrl={creativeManagerBaseUrl}
672
+ hasReviewStep={!!this.props.auditLogEnabled}
594
673
  />
595
674
  </div>
596
675
  </div>
@@ -601,7 +680,10 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
601
680
  private nextClickHandler = () => {
602
681
  this.setState({ nextStep: true, error: false });
603
682
 
604
- if (this.state.screenIndex === 7 || this.state.screenIndex === 8) {
683
+ const hasReviewStep = !!this.props.auditLogEnabled;
684
+ const exportIndex = hasReviewStep ? 8 : 7;
685
+ const crmExportIndex = hasReviewStep ? 9 : 8;
686
+ if (this.state.screenIndex === exportIndex || this.state.screenIndex === crmExportIndex) {
605
687
  this.emailWorkflow.current.getWrappedInstance().proceedWithExport();
606
688
  }
607
689
  };
@@ -654,6 +736,8 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
654
736
  })?.name || '';
655
737
 
656
738
  const variables = story ? story.acts[project.actId].inventory : {};
739
+ const hasReviewStep = !!this.props.auditLogEnabled;
740
+
657
741
  return (
658
742
  <div className='publish-wizard'>
659
743
  <div className='publish-wizard-header'>
@@ -662,20 +746,26 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
662
746
  </div>
663
747
  {/* <PaneErrorBoundry>*/}
664
748
  <div>
665
- {screenIndex === 0 && this.renderPublish()}
666
- {screenIndex === 1 && this.renderDistributionOptions()}
667
- {screenIndex === 2 && (
749
+ {hasReviewStep && screenIndex === 0 && this.renderReviewChanges()}
750
+ {screenIndex === (hasReviewStep ? 1 : 0) && this.renderPublish()}
751
+ {screenIndex === (hasReviewStep ? 2 : 1) && this.renderDistributionOptions()}
752
+ {screenIndex === (hasReviewStep ? 3 : 2) && (
668
753
  <WebpageHosted
669
754
  story={story}
670
755
  compositionId={selectedComposition}
671
756
  accessKey={accessKey}
672
757
  />
673
758
  )}
674
- {(screenIndex === 3 || screenIndex === 7 || screenIndex === 8) && (
759
+ {(screenIndex === (hasReviewStep ? 4 : 3) ||
760
+ screenIndex === (hasReviewStep ? 8 : 7) ||
761
+ screenIndex === (hasReviewStep ? 9 : 8)) && (
675
762
  <EmailWorkflow
676
- isCrM={screenIndex === 8}
677
- isExport={screenIndex === 7 || screenIndex === 8}
678
- isEmail={screenIndex === 3}
763
+ isCrM={screenIndex === (hasReviewStep ? 9 : 8)}
764
+ isExport={
765
+ screenIndex === (hasReviewStep ? 8 : 7) ||
766
+ screenIndex === (hasReviewStep ? 9 : 8)
767
+ }
768
+ isEmail={screenIndex === (hasReviewStep ? 4 : 3)}
679
769
  api={api}
680
770
  story={story}
681
771
  variables={variables}
@@ -701,7 +791,7 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
701
791
  ref={this.emailWorkflow}
702
792
  />
703
793
  )}
704
- {screenIndex === 5 && (
794
+ {screenIndex === (hasReviewStep ? 6 : 5) && (
705
795
  <HubSpotFlow
706
796
  handleError={handleError}
707
797
  status={status}
@@ -711,7 +801,7 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
711
801
  compositionId={selectedComposition}
712
802
  />
713
803
  )}
714
- {screenIndex === 6 && <APIIntegration />}
804
+ {screenIndex === (hasReviewStep ? 7 : 6) && <APIIntegration />}
715
805
  <br />
716
806
  <HRule />
717
807
  <div className='lower-buttons'>{this.renderLowerButtons()}</div>
@@ -731,7 +821,19 @@ const mapDispatchToProps = (dispatch) => {
731
821
  return bindActionCreators({ publishVersion }, dispatch);
732
822
  };
733
823
 
734
- export default connect(mapStateToProps, mapDispatchToProps)(PublishWizard);
824
+ const ConnectedPublishWizard = connect(mapStateToProps, mapDispatchToProps)(PublishWizard);
825
+
826
+ const PublishWizardWithFlag = (props) => {
827
+ const auditLogEnabled = useFlag('feature.IMPOSIUM_EDITOR.AUDIT_LOG');
828
+ return (
829
+ <ConnectedPublishWizard
830
+ {...props}
831
+ auditLogEnabled={auditLogEnabled}
832
+ />
833
+ );
834
+ };
835
+
836
+ export default PublishWizardWithFlag;
735
837
 
736
838
  export const BigButton: React.FC<IBigButtonProps> = (p) => (
737
839
  <div
@@ -742,7 +844,7 @@ export const BigButton: React.FC<IBigButtonProps> = (p) => (
742
844
  </div>
743
845
  );
744
846
 
745
- export const TabContent: React.FC<React.PropsWithChildren> = ({ children }) => (
847
+ export const TabContent: React.FC = ({ children }) => (
746
848
  <div className='tab-content'>
747
849
  <div className='settings-tab'>
748
850
  <div className='integration-details'>{children}</div>
@@ -786,8 +888,11 @@ export const DistributeOptions = ({
786
888
  onSelectOption,
787
889
  selectedComposition,
788
890
  publishDataset,
789
- creativeManagerBaseUrl
891
+ creativeManagerBaseUrl,
892
+ hasReviewStep = false
790
893
  }) => {
894
+ const shift = hasReviewStep ? 1 : 0;
895
+ const selectOption = (index: number) => onSelectOption(index + shift);
791
896
  const isPrerendersEnabled = useFlag('feature.IMPOSIUM_EDITOR.PRERENDERS_CRM_WORKFLOW');
792
897
 
793
898
  const getCrMLink = (creativeLibraryId: string, creativeId?: string) => {
@@ -806,7 +911,7 @@ export const DistributeOptions = ({
806
911
  {ICON_GLOBE}&nbsp;{copy.publish.btnWebsite}
807
912
  </span>
808
913
  ),
809
- onClick: (e) => onSelectOption(2)
914
+ onClick: (e) => selectOption(2)
810
915
  },
811
916
  {
812
917
  label: (
@@ -814,7 +919,7 @@ export const DistributeOptions = ({
814
919
  {ICON_EMAIL}&nbsp;{copy.publish.btnEmail}
815
920
  </span>
816
921
  ),
817
- onClick: (e) => onSelectOption(3)
922
+ onClick: (e) => selectOption(3)
818
923
  },
819
924
  {
820
925
  label: (
@@ -822,7 +927,7 @@ export const DistributeOptions = ({
822
927
  {ICON_HUBSPOT}&nbsp;{copy.publish.btnHubspot}
823
928
  </span>
824
929
  ),
825
- onClick: (e) => onSelectOption(5)
930
+ onClick: (e) => selectOption(5)
826
931
  },
827
932
  {
828
933
  label: (
@@ -830,7 +935,7 @@ export const DistributeOptions = ({
830
935
  {ICON_PROJECT_DIAGRAM}&nbsp;{copy.publish.btnAPI}
831
936
  </span>
832
937
  ),
833
- onClick: (e) => onSelectOption(6)
938
+ onClick: (e) => selectOption(6)
834
939
  },
835
940
  {
836
941
  label: (
@@ -838,7 +943,7 @@ export const DistributeOptions = ({
838
943
  {ICON_DOWNLOAD}&nbsp;{copy.publish.btnExport}
839
944
  </span>
840
945
  ),
841
- onClick: (e) => onSelectOption(7)
946
+ onClick: (e) => selectOption(7)
842
947
  },
843
948
  {
844
949
  label: (
@@ -846,7 +951,7 @@ export const DistributeOptions = ({
846
951
  {ICON_IMAGE}&nbsp;{copy.publish.btnCRM}
847
952
  </span>
848
953
  ),
849
- onClick: (e) => onSelectOption(8)
954
+ onClick: (e) => selectOption(8)
850
955
  }
851
956
  ]
852
957
  : [
@@ -856,7 +961,7 @@ export const DistributeOptions = ({
856
961
  {ICON_DOWNLOAD}&nbsp;{copy.publish.btnRunTestBatch}
857
962
  </span>
858
963
  ),
859
- onClick: (e) => onSelectOption(7)
964
+ onClick: (e) => selectOption(7)
860
965
  },
861
966
  {
862
967
  label: (
@@ -885,7 +990,7 @@ export const DistributeOptions = ({
885
990
  {ICON_IMAGE}&nbsp;{copy.publish.btnCRM}
886
991
  </span>
887
992
  ),
888
- onClick: (e) => onSelectOption(8),
993
+ onClick: (e) => selectOption(8),
889
994
  style: { width: 'calc(100% - 4px)' }
890
995
  });
891
996
  }
@@ -20,7 +20,7 @@ import ImagePlayer from '../players/ImagePlayer';
20
20
  import { saveAs } from 'file-saver';
21
21
  import MediaVariableField from '../media-variable-field/MediaVariableField';
22
22
  import { IExperience } from '../../interfaces/experience';
23
- import { useResizeDetector } from 'react-resize-detector';
23
+ import ReactResizeDetector from 'react-resize-detector';
24
24
  import { ERROR, previewer as copy } from '../../constants/copy';
25
25
  import { formattedTime } from '../../Util';
26
26
  import Timer from '../../services/Timer';
@@ -30,25 +30,6 @@ import { ICON_DOWNLOAD, ICON_CLIPBOARD } from '../../constants/icons';
30
30
  import AudioPlayer from '../players/AudioPlayer';
31
31
  import ColorField from '../color-field/ColorField';
32
32
 
33
- const ResizeDetectorWrapper: React.FC<{ children: React.ReactNode }> = ({ children }) => {
34
- const { width, height, ref } = useResizeDetector<HTMLDivElement>({
35
- handleWidth: true,
36
- handleHeight: true
37
- });
38
- return (
39
- <div
40
- ref={ref}
41
- style={{ width: '100%', height: '100%' }}>
42
- {React.Children.map(children, (child) => {
43
- if (React.isValidElement(child)) {
44
- return React.cloneElement(child, { width, height } as any);
45
- }
46
- return child;
47
- })}
48
- </div>
49
- );
50
- };
51
-
52
33
  interface IStoryPreviewerProps {
53
34
  api: IImposiumAPI;
54
35
  storyId: string;
@@ -805,7 +786,13 @@ class StoryPreviewer extends React.PureComponent<IStoryPreviewerProps, IStoryPre
805
786
  );
806
787
  }
807
788
 
808
- return <ResizeDetectorWrapper>{player}</ResizeDetectorWrapper>;
789
+ return (
790
+ <ReactResizeDetector
791
+ handleWidth
792
+ handleHeight>
793
+ {player}
794
+ </ReactResizeDetector>
795
+ );
809
796
  }
810
797
 
811
798
  return null;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { useResizeDetector } from 'react-resize-detector';
2
+ import { withResizeDetector } from 'react-resize-detector';
3
3
  import ButtonMenu from '../button-menu/ButtonMenu';
4
4
  import ButtonMenuItem from '../button-menu/ButtonMenuItem';
5
5
  import Button from '../button/Button';
@@ -14,15 +14,15 @@ export interface ITab {
14
14
  menuButtons?: JSX.Element;
15
15
  }
16
16
 
17
- export interface ITabsProps {
17
+ interface ITabsProps {
18
18
  activeTab?: string;
19
19
  keepMounted?: boolean;
20
20
  options: ITab[];
21
21
  onChange(i): void;
22
- onClose?(i): void;
22
+ onClose(i): void;
23
23
  tabPadding?: number;
24
- width?: number;
25
- height?: number;
24
+ width: number;
25
+ height: number;
26
26
  }
27
27
 
28
28
  interface ITabsState {
@@ -85,7 +85,7 @@ class Tabs extends React.PureComponent<ITabsProps, ITabsState> {
85
85
  }
86
86
 
87
87
  private renderContent() {
88
- const { options, activeTab, keepMounted, width = 0, height = 0 } = this.props;
88
+ const { options, activeTab, keepMounted, width, height } = this.props;
89
89
 
90
90
  if (keepMounted) {
91
91
  const contentArray = [];
@@ -132,9 +132,7 @@ class Tabs extends React.PureComponent<ITabsProps, ITabsState> {
132
132
  onClick={(e) => {
133
133
  e.preventDefault();
134
134
  e.stopPropagation();
135
- if (this.props.onClose) {
136
- this.props.onClose(key);
137
- }
135
+ this.props.onClose(key);
138
136
  }}>
139
137
  {ICON_TIMES}
140
138
  </Button>
@@ -220,19 +218,4 @@ class Tabs extends React.PureComponent<ITabsProps, ITabsState> {
220
218
  }
221
219
  }
222
220
 
223
- const TabsWithResize: React.FC<Omit<ITabsProps, 'width' | 'height'>> = (props) => {
224
- const { width = 0, height = 0, ref } = useResizeDetector<HTMLDivElement>();
225
- return (
226
- <div
227
- ref={ref}
228
- style={{ width: '100%', height: '100%' }}>
229
- <Tabs
230
- {...props}
231
- width={width}
232
- height={height}
233
- />
234
- </div>
235
- );
236
- };
237
-
238
- export default TabsWithResize;
221
+ export default withResizeDetector(Tabs);
File without changes
@@ -147,14 +147,28 @@ export const publish = {
147
147
  'Your videos have finished rendering. They will appear in Creative Manager momentarily.',
148
148
  renderComplete: 'Render Complete!',
149
149
 
150
+ // review changes
151
+ reviewChangesStepTitle: 'STEP 1: Review Changes',
152
+ reviewChangesDescription:
153
+ 'Review the changes made since your last publish. You can publish these changes or skip to distribution.',
154
+ noChangesMessage: 'No changes detected since last publish.',
155
+ loadingChangesMessage: 'Loading changes...',
156
+ publishNotesLabel: 'Publish notes',
157
+ publishNotesPlaceholder: 'Describe the changes in this version...',
158
+
159
+ // change report status labels
160
+ statusAdded: 'Added',
161
+ statusRemoved: 'Removed',
162
+ statusModified: 'Modified',
163
+
150
164
  // publish
151
- publishStepTitle: 'STEP 1: Publish your Project',
165
+ publishStepTitle: 'STEP 2: Publish your Project',
152
166
  publishStepTitleFromCrM: 'STEP 1: Publish your Project to selected Creatives',
153
167
  publishStepDesc:
154
168
  "Your project needs to be published before your changes can be seen. If you haven't made any changes since the last time you published, you can skip to the next step.",
155
169
 
156
170
  // distribute
157
- distributeStepTitle: 'STEP 2: How do you want your users to view their video?',
171
+ distributeStepTitle: 'STEP 3: How do you want your users to view their video?',
158
172
  distributeStepTitleFromCrM: 'STEP 2: Run a test batch or return to Creative Manager?',
159
173
  distributeStepDesc:
160
174
  'Select which Composition you want to deliver, access credentials you want to use, and distribution channel.',
@@ -0,0 +1,25 @@
1
+ export interface IChangeReportNode {
2
+ label: string;
3
+ status: 'added' | 'removed' | 'modified';
4
+ oldValue?: string;
5
+ newValue?: string;
6
+ children?: IChangeReportNode[];
7
+ }
8
+
9
+ export interface IChangeReportSection {
10
+ section:
11
+ | 'PROJECT SETTINGS'
12
+ | 'VARIABLES'
13
+ | 'SCENES & ENCODING'
14
+ | 'ASSETS'
15
+ | 'COMPOSITIONS & LAYERS';
16
+ nodes: IChangeReportNode[];
17
+ }
18
+
19
+ export interface IPublishLogEntry {
20
+ id: string;
21
+ version: number | null;
22
+ message: string | null;
23
+ changes: IChangeReportSection[] | null;
24
+ date_created: number | null;
25
+ }
package/src/index.ts CHANGED
@@ -16,7 +16,7 @@ import FieldWrapper from './components/field-wrapper/FieldWrapper';
16
16
  import CheckboxField from './components/checkbox-field/CheckboxField';
17
17
  import ListField from './components/list-field/ListField';
18
18
  import ButtonGroupField from './components/button-group-field/ButtonGroupField';
19
- import NumberField, { validateNumInput } from './components/number-field/NumberField';
19
+ import NumberField from './components/number-field/NumberField';
20
20
  import SelectField from './components/select-field/SelectField';
21
21
  import TextField from './components/text-field/TextField';
22
22
  import TextAreaField from './components/text-area-field/TextAreaField';
@@ -168,6 +168,8 @@ import TextAreaAutocomplete from './components/text-area-autocomplete/TextAreaAu
168
168
  import IconToggle from './components/icon-toggle/IconToggle';
169
169
  import { DEFAULT_FONTS } from './constants/fonts';
170
170
  import FontField from './components/font-field/FontField';
171
+ import { IChangeReportNode, IChangeReportSection, IPublishLogEntry } from './constants/snippets';
172
+ import ChangeReportTree from './components/change-report/ChangeReportTree';
171
173
 
172
174
  export {
173
175
  ProjectDropdown,
@@ -335,5 +337,8 @@ export {
335
337
  IconToggle,
336
338
  DEFAULT_FONTS,
337
339
  FontField,
338
- validateNumInput
340
+ IChangeReportNode,
341
+ IChangeReportSection,
342
+ IPublishLogEntry,
343
+ ChangeReportTree
339
344
  };
@@ -164,6 +164,7 @@ export interface IImposiumAPI {
164
164
  cancelAllPendingRequests();
165
165
  getTTSVoices(params: any);
166
166
  getCustomVoice(voiceId: string);
167
+ getAuditLog(storyId: string): Promise<any | Error>;
167
168
  getToken: any;
168
169
  }
169
170
 
@@ -1917,4 +1918,11 @@ export default class API {
1917
1918
  url: `/text-to-speech/voice?service=ElevenLabs&id=${voiceId}`
1918
1919
  });
1919
1920
  };
1921
+
1922
+ public getAuditLog = (storyId: string): Promise<any | Error> => {
1923
+ return this.doRequest({
1924
+ method: 'GET',
1925
+ url: `/story/${storyId}/audit-log`
1926
+ });
1927
+ };
1920
1928
  }
@@ -1,15 +1,11 @@
1
- import { ICompatibleHistory } from '../components/app-wrapper/AppWrapper';
1
+ import { browserHistory } from 'react-router';
2
2
 
3
- let historySingleton: ICompatibleHistory | null = null;
4
-
5
- export const configureHistory = (history: ICompatibleHistory): void => {
6
- historySingleton = history;
7
- };
8
- export const pushRoute = (route: string): void => {
9
- historySingleton?.push(route);
3
+ export const pushRoute = (route): void => {
4
+ browserHistory.push(route);
10
5
  };
11
- export const replaceRoute = (route: string): void => {
12
- historySingleton?.replace(route);
6
+
7
+ export const replaceRoute = (route): void => {
8
+ browserHistory.replace(route);
13
9
  };
14
10
 
15
11
  export const getDemoURL = (): string => {
package/tsconfig.json CHANGED
@@ -14,5 +14,5 @@
14
14
  "moduleResolution": "node"
15
15
  },
16
16
  "include": ["src"],
17
- "exclude": ["node_modules", "dist", "**/*.test.*", "**/*.spec.*", "src/test/**/*"]
17
+ "exclude": ["node_modules", "dist"]
18
18
  }