@imposium-hub/components 2.14.11 → 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 (303) 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 +104 -38
  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 +92 -38
  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 +145 -46
  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 -724
  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 -449
  281. package/src/components/assets/AssetsTableAssetIdCell.test.tsx +0 -142
  282. package/src/components/assets/AssetsTableAssetIdFilter.test.tsx +0 -95
  283. package/src/components/assets/AssetsTableComplexTagCell.test.tsx +0 -161
  284. package/src/components/assets/AssetsTableDateCell.test.tsx +0 -106
  285. package/src/components/assets/AssetsTableDropzone.test.tsx +0 -132
  286. package/src/components/assets/AssetsTableDurationCell.test.tsx +0 -119
  287. package/src/components/assets/AssetsTableGlobalCell.test.tsx +0 -46
  288. package/src/components/assets/AssetsTableNameCell.test.tsx +0 -166
  289. package/src/components/assets/AssetsTableNameFilter.test.tsx +0 -95
  290. package/src/components/assets/AssetsTablePreviewCell.test.tsx +0 -191
  291. package/src/components/assets/AssetsTableRateCell.test.tsx +0 -87
  292. package/src/components/assets/AssetsTableSelectCell.test.tsx +0 -156
  293. package/src/components/assets/AssetsTableSelectFilter.test.tsx +0 -119
  294. package/src/components/assets/AssetsTableStatusCell.test.tsx +0 -60
  295. package/src/components/number-field/NumberField.test.tsx +0 -383
  296. package/src/components/text-field/TextField.test.tsx +0 -988
  297. package/src/test/setup.ts +0 -91
  298. package/src/test/utils.tsx +0 -44
  299. package/tsconfig.eslint.json +0 -8
  300. package/vitest.config.ts +0 -31
  301. /package/dist/cjs/components/dropdown/{Dropdown.stories.d.ts → dropdown.stories.d.ts} +0 -0
  302. /package/dist/esm/components/dropdown/{Dropdown.stories.d.ts → dropdown.stories.d.ts} +0 -0
  303. /package/src/components/dropdown/{Dropdown.stories.tsx → dropdown.stories.tsx} +0 -0
@@ -1,130 +0,0 @@
1
- import { describe, it, expect, vi } from 'vitest';
2
- import React from 'react';
3
- import { render, fireEvent } from '@testing-library/react';
4
-
5
- // Direct import to force coverage tracking
6
- import AnchorField from './AnchorField';
7
- import { HORIZONTAL_ALIGNMENT, VERTICAL_ALIGNMENT } from '../../constants/compositions';
8
-
9
- describe('AnchorField - Streamlined Coverage Test', () => {
10
- it('should render and handle basic functionality', () => {
11
- const onChange = vi.fn();
12
-
13
- // Test 1: Basic instantiation and render (covers constructor and render)
14
- const instance = new AnchorField({
15
- onChange,
16
- config: {
17
- vertical_align: VERTICAL_ALIGNMENT.CENTER,
18
- horizontal_align: HORIZONTAL_ALIGNMENT.CENTER
19
- }
20
- });
21
- expect(instance).toBeDefined();
22
- const result = instance.render();
23
- expect(result).toBeDefined();
24
-
25
- // Test 2: Render with React Testing Library (covers FieldWrapper integration)
26
- const { container } = render(
27
- <AnchorField
28
- onChange={onChange}
29
- config={{
30
- vertical_align: VERTICAL_ALIGNMENT.CENTER,
31
- horizontal_align: HORIZONTAL_ALIGNMENT.CENTER
32
- }}
33
- label='Anchor Position'
34
- width='200px'
35
- tooltip='Select anchor'
36
- />
37
- );
38
-
39
- expect(container.querySelector('.anchorTable')).toBeTruthy();
40
-
41
- // Test 3: Click interaction (covers onClick handlers)
42
- const cells = container.querySelectorAll('.anchorTable td');
43
- expect(cells).toHaveLength(9);
44
-
45
- // Click center cell
46
- fireEvent.click(cells[4]);
47
- expect(onChange).toHaveBeenCalledWith(
48
- VERTICAL_ALIGNMENT.CENTER,
49
- HORIZONTAL_ALIGNMENT.CENTER
50
- );
51
-
52
- // Click top-left cell
53
- fireEvent.click(cells[0]);
54
- expect(onChange).toHaveBeenCalledWith(VERTICAL_ALIGNMENT.TOP, HORIZONTAL_ALIGNMENT.LEFT);
55
-
56
- // Click more cells to cover remaining onClick handlers
57
- fireEvent.click(cells[1]); // top-center
58
- expect(onChange).toHaveBeenCalledWith(VERTICAL_ALIGNMENT.TOP, HORIZONTAL_ALIGNMENT.CENTER);
59
-
60
- fireEvent.click(cells[2]); // top-right
61
- expect(onChange).toHaveBeenCalledWith(VERTICAL_ALIGNMENT.TOP, HORIZONTAL_ALIGNMENT.RIGHT);
62
-
63
- fireEvent.click(cells[6]); // bottom-left
64
- expect(onChange).toHaveBeenCalledWith(VERTICAL_ALIGNMENT.BOTTOM, HORIZONTAL_ALIGNMENT.LEFT);
65
-
66
- fireEvent.click(cells[8]); // bottom-right
67
- expect(onChange).toHaveBeenCalledWith(
68
- VERTICAL_ALIGNMENT.BOTTOM,
69
- HORIZONTAL_ALIGNMENT.RIGHT
70
- );
71
- });
72
-
73
- it('should handle different alignment configurations', () => {
74
- const onChange = vi.fn();
75
-
76
- // Test different getIcons branches to increase coverage
77
- const alignmentCombos = [
78
- { v: VERTICAL_ALIGNMENT.TOP, h: HORIZONTAL_ALIGNMENT.LEFT },
79
- { v: VERTICAL_ALIGNMENT.TOP, h: HORIZONTAL_ALIGNMENT.RIGHT },
80
- { v: VERTICAL_ALIGNMENT.BOTTOM, h: HORIZONTAL_ALIGNMENT.CENTER },
81
- { v: VERTICAL_ALIGNMENT.CENTER, h: HORIZONTAL_ALIGNMENT.RIGHT },
82
- { v: 'invalid', h: 'invalid' } // Test the else case
83
- ];
84
-
85
- alignmentCombos.forEach(({ v, h }) => {
86
- const instance = new AnchorField({
87
- onChange,
88
- config: { vertical_align: v, horizontal_align: h }
89
- });
90
-
91
- // Execute render to cover the getIcons branches
92
- const result = instance.render();
93
- expect(result).toBeDefined();
94
- });
95
- });
96
-
97
- it('should handle props variations', () => {
98
- const onChange = vi.fn();
99
-
100
- // Test with minimal props
101
- const { rerender } = render(
102
- <AnchorField
103
- onChange={onChange}
104
- config={{
105
- vertical_align: VERTICAL_ALIGNMENT.TOP,
106
- horizontal_align: HORIZONTAL_ALIGNMENT.CENTER
107
- }}
108
- />
109
- );
110
-
111
- // Test with all props
112
- rerender(
113
- <AnchorField
114
- onChange={onChange}
115
- config={{
116
- vertical_align: VERTICAL_ALIGNMENT.BOTTOM,
117
- horizontal_align: HORIZONTAL_ALIGNMENT.LEFT
118
- }}
119
- label='Custom Label'
120
- width={300}
121
- tooltip={{ content: 'Tooltip content' }}
122
- info='Info text'
123
- labelPosition='top'
124
- labelWidth='100px'
125
- />
126
- );
127
-
128
- expect(document.querySelector('.anchorTable')).toBeTruthy();
129
- });
130
- });
@@ -1,494 +0,0 @@
1
- import React from 'react';
2
- import { render, fireEvent, screen } from '../../test/utils';
3
- import { beforeEach, describe, expect, it, vi } from 'vitest';
4
- import { Provider } from 'react-redux';
5
- import { legacy_createStore as createStore } from 'redux';
6
- import AssetDetails from './AssetDetails';
7
- import { ASSET_TYPES } from '../../constants/assets';
8
-
9
- // Mock the utility functions
10
- vi.mock('../../Util', async (importOriginal) => {
11
- const actual = (await importOriginal()) as any;
12
- return {
13
- ...actual,
14
- formatDateDefault: vi.fn((date) => `Formatted: ${date}`),
15
- getDuration: vi.fn((frameCount, rate) => `${frameCount}/${rate}`)
16
- };
17
- });
18
-
19
- // Mock problematic components
20
- vi.mock('../text-field/TextField', () => ({
21
- default: ({ value, label, readOnly, onChange, onSubmit, width, ...props }: any) => (
22
- <div
23
- data-testid={`textfield-${label || 'unlabeled'}`}
24
- style={{ width }}>
25
- <label>{label}</label>
26
- <input
27
- value={value || ''}
28
- readOnly={readOnly}
29
- onChange={
30
- onChange ? (e) => onChange((e.target as HTMLInputElement).value) : undefined
31
- }
32
- onKeyDown={
33
- onSubmit
34
- ? (e) => e.key === 'Enter' && onSubmit((e.target as HTMLInputElement).value)
35
- : undefined
36
- }
37
- {...props}
38
- />
39
- </div>
40
- )
41
- }));
42
-
43
- vi.mock('../number-field/NumberField', () => ({
44
- default: ({ value, label, readOnly, ...props }: any) => (
45
- <div data-testid={`numberfield-${label || 'unlabeled'}`}>
46
- <label>{label}</label>
47
- <input
48
- type='number'
49
- value={value || ''}
50
- readOnly={readOnly}
51
- {...props}
52
- />
53
- </div>
54
- )
55
- }));
56
-
57
- vi.mock('../smpte-field/SMPTEField', () => ({
58
- default: ({ value, label, readOnly, ...props }: any) => (
59
- <div data-testid={`smptefield-${label || 'unlabeled'}`}>
60
- <label>{label}</label>
61
- <input
62
- value={value || ''}
63
- readOnly={readOnly}
64
- {...props}
65
- />
66
- </div>
67
- )
68
- }));
69
-
70
- vi.mock('../tag/Tag', () => ({
71
- default: ({ copy, removeHandler }: any) => (
72
- <div data-testid={`tag-${copy}`}>
73
- <span>{copy}</span>
74
- {removeHandler && <button onClick={removeHandler}>×</button>}
75
- </div>
76
- )
77
- }));
78
-
79
- vi.mock('../field-wrapper/FieldWrapper', () => ({
80
- default: ({ label, children, ...props }: any) => (
81
- <div
82
- data-testid={`fieldwrapper-${label || 'unlabeled'}`}
83
- {...props}>
84
- {label && <label>{label}</label>}
85
- {children}
86
- </div>
87
- )
88
- }));
89
-
90
- vi.mock('../h-rule/HRule', () => ({
91
- default: () => <hr data-testid='hrule' />
92
- }));
93
-
94
- // Create a mock Redux store
95
- const createMockStore = (initialState = {}) => {
96
- const defaultState = {
97
- assetTags: ['tag1', 'tag2', 'tag3'],
98
- assetList: {
99
- assets: [
100
- {
101
- id: 'asset-1',
102
- name: 'Test Asset',
103
- tags: ['existing-tag'],
104
- type: ASSET_TYPES.VIDEO,
105
- date_created: '2024-01-01',
106
- width: 1920,
107
- height: 1080,
108
- rate: 30,
109
- frame_count: 900
110
- }
111
- ]
112
- },
113
- ...initialState
114
- };
115
-
116
- const reducer = (state = defaultState) => state;
117
- return createStore(reducer);
118
- };
119
-
120
- // Helper function to render component with Redux provider
121
- const renderWithRedux = (component, store = createMockStore()) => {
122
- return render(<Provider store={store}>{component}</Provider>);
123
- };
124
-
125
- describe('AssetDetails', () => {
126
- const defaultAsset = {
127
- id: 'asset-1',
128
- name: 'Test Asset',
129
- tags: ['existing-tag'],
130
- type: ASSET_TYPES.VIDEO,
131
- date_created: '2024-01-01',
132
- width: 1920,
133
- height: 1080,
134
- rate: 30,
135
- frame_count: 900
136
- };
137
-
138
- const defaultProps = {
139
- asset: defaultAsset,
140
- columns: 1,
141
- newAsset: false,
142
- onNameChange: vi.fn(),
143
- onAddTag: vi.fn(),
144
- onRemoveTag: vi.fn()
145
- };
146
-
147
- beforeEach(() => {
148
- vi.clearAllMocks();
149
- });
150
-
151
- describe('Basic Rendering', () => {
152
- it('renders without crashing', () => {
153
- const { container } = renderWithRedux(<AssetDetails {...defaultProps} />);
154
- expect(container.querySelector('.asset-details')).toBeTruthy();
155
- });
156
-
157
- it('renders asset details title for existing asset', () => {
158
- renderWithRedux(<AssetDetails {...defaultProps} />);
159
- expect(screen.getByText('Asset Details')).toBeTruthy();
160
- });
161
-
162
- it('renders new asset details title for new asset', () => {
163
- const props = { ...defaultProps, newAsset: true };
164
- renderWithRedux(<AssetDetails {...props} />);
165
- expect(screen.getByText('New Asset Details')).toBeTruthy();
166
- });
167
-
168
- it('handles null asset gracefully', () => {
169
- // Note: The component has a design issue where it destructures asset properties
170
- // before checking if asset is null. This test documents the current behavior.
171
- const props = { ...defaultProps, asset: null };
172
-
173
- expect(() => {
174
- renderWithRedux(<AssetDetails {...props} />);
175
- }).toThrow('Cannot read properties of null');
176
- });
177
-
178
- it('renders asset ID field as read-only', () => {
179
- renderWithRedux(<AssetDetails {...defaultProps} />);
180
- const assetIdInput = screen.getByDisplayValue('asset-1');
181
- expect(assetIdInput).toBeTruthy();
182
- expect(assetIdInput.getAttribute('readonly')).toBe('');
183
- });
184
-
185
- it('renders asset name field', () => {
186
- renderWithRedux(<AssetDetails {...defaultProps} />);
187
- const nameInput = screen.getByDisplayValue('Test Asset');
188
- expect(nameInput).toBeTruthy();
189
- });
190
-
191
- it('renders formatted date field', () => {
192
- renderWithRedux(<AssetDetails {...defaultProps} />);
193
- expect(screen.getByDisplayValue('Formatted: 2024-01-01')).toBeTruthy();
194
- });
195
- });
196
-
197
- describe('Asset Type Specific Rendering', () => {
198
- it('renders video-specific fields for video assets', () => {
199
- const videoAsset = { ...defaultAsset, type: ASSET_TYPES.VIDEO };
200
- const props = { ...defaultProps, asset: videoAsset };
201
- renderWithRedux(<AssetDetails {...props} />);
202
-
203
- // Should render frame rate field
204
- expect(screen.getByDisplayValue('30')).toBeTruthy();
205
-
206
- // Should render duration field (mocked to return frame_count/rate)
207
- expect(screen.getByDisplayValue('900/30')).toBeTruthy();
208
- });
209
-
210
- it('does not render video-specific fields for non-video assets', () => {
211
- const imageAsset = { ...defaultAsset, type: ASSET_TYPES.IMAGE };
212
- const props = { ...defaultProps, asset: imageAsset };
213
- renderWithRedux(<AssetDetails {...props} />);
214
-
215
- // Should not render frame rate or duration fields
216
- expect(screen.queryByDisplayValue('30')).toBeFalsy();
217
- expect(screen.queryByDisplayValue('900/30')).toBeFalsy();
218
- });
219
-
220
- it('renders width and height fields when present', () => {
221
- renderWithRedux(<AssetDetails {...defaultProps} />);
222
- expect(screen.getByDisplayValue('1920')).toBeTruthy();
223
- expect(screen.getByDisplayValue('1080')).toBeTruthy();
224
- });
225
-
226
- it('does not render width field when not present', () => {
227
- const assetWithoutDimensions = { ...defaultAsset, width: null, height: null };
228
- const props = { ...defaultProps, asset: assetWithoutDimensions };
229
- renderWithRedux(<AssetDetails {...props} />);
230
-
231
- expect(screen.queryByDisplayValue('1920')).toBeFalsy();
232
- expect(screen.queryByDisplayValue('1080')).toBeFalsy();
233
- });
234
- });
235
-
236
- describe('Column Layout', () => {
237
- it('applies correct width for single column layout', () => {
238
- const props = { ...defaultProps, columns: 1 };
239
- const { container } = renderWithRedux(<AssetDetails {...props} />);
240
-
241
- // Name field should be 100% width in single column
242
- const nameField: HTMLElement | null = container.querySelector(
243
- '[data-testid="textfield-Name"]'
244
- );
245
- expect(nameField).toBeTruthy();
246
- expect(nameField?.style.width).toBe('100%');
247
- });
248
-
249
- it('applies correct width for two column layout', () => {
250
- const props = { ...defaultProps, columns: 2 };
251
- const { container } = renderWithRedux(<AssetDetails {...props} />);
252
-
253
- // Name field should be 50% width in two column
254
- const nameField: HTMLElement | null = container.querySelector(
255
- '[data-testid="textfield-Name"]'
256
- );
257
- expect(nameField).toBeTruthy();
258
- expect(nameField?.style.width).toBe('50%');
259
- });
260
- });
261
-
262
- describe('Tag Management', () => {
263
- it('renders existing tags', () => {
264
- const store = createMockStore({
265
- assetList: {
266
- assets: [
267
- {
268
- ...defaultAsset,
269
- tags: ['tag1', 'tag2', 'tag3']
270
- }
271
- ]
272
- }
273
- });
274
-
275
- renderWithRedux(<AssetDetails {...defaultProps} />, store);
276
-
277
- expect(screen.getByText('tag1')).toBeTruthy();
278
- expect(screen.getByText('tag2')).toBeTruthy();
279
- expect(screen.getByText('tag3')).toBeTruthy();
280
- });
281
-
282
- it('renders unique tags only', () => {
283
- const store = createMockStore({
284
- assetList: {
285
- assets: [
286
- {
287
- ...defaultAsset,
288
- tags: ['duplicate', 'duplicate', 'unique']
289
- }
290
- ]
291
- }
292
- });
293
-
294
- const { container } = renderWithRedux(<AssetDetails {...defaultProps} />, store);
295
-
296
- // Should only render one instance of 'duplicate'
297
- const duplicateTags = container.querySelectorAll('[data-testid*="duplicate"]');
298
- expect(duplicateTags.length).toBeLessThanOrEqual(1);
299
- });
300
-
301
- it('calls onRemoveTag when tag remove button is clicked', () => {
302
- const onRemoveTagMock = vi.fn();
303
- const props = { ...defaultProps, onRemoveTag: onRemoveTagMock };
304
-
305
- const store = createMockStore({
306
- assetList: {
307
- assets: [
308
- {
309
- ...defaultAsset,
310
- tags: ['removable-tag']
311
- }
312
- ]
313
- }
314
- });
315
-
316
- const { container } = renderWithRedux(<AssetDetails {...props} />, store);
317
-
318
- // Find and click the remove button for the tag
319
- const removeButtons = container.querySelectorAll('button');
320
- if (removeButtons.length > 0) {
321
- fireEvent.click(removeButtons[0]);
322
- expect(onRemoveTagMock).toHaveBeenCalled();
323
- }
324
- });
325
-
326
- it('renders add tag field with suggestions', () => {
327
- renderWithRedux(<AssetDetails {...defaultProps} />);
328
-
329
- // Should render the add tag field
330
- const addTagLabel = screen.getByText('Add Tag');
331
- expect(addTagLabel).toBeTruthy();
332
- });
333
- });
334
-
335
- describe('User Interactions', () => {
336
- it('calls onNameChange on name field submit for existing assets', () => {
337
- const onNameChangeMock = vi.fn();
338
- const props = { ...defaultProps, onNameChange: onNameChangeMock, newAsset: false };
339
-
340
- renderWithRedux(<AssetDetails {...props} />);
341
-
342
- const nameInput = screen.getByDisplayValue('Test Asset');
343
- fireEvent.change(nameInput, { target: { value: 'Updated Name' } });
344
- fireEvent.keyDown(nameInput, { key: 'Enter' });
345
-
346
- // For existing assets, onNameChange should be called on submit
347
- expect(onNameChangeMock).toHaveBeenCalled();
348
- });
349
-
350
- it('calls onNameChange on name field change for new assets', () => {
351
- const onNameChangeMock = vi.fn();
352
- const props = { ...defaultProps, onNameChange: onNameChangeMock, newAsset: true };
353
-
354
- renderWithRedux(<AssetDetails {...props} />);
355
-
356
- const nameInput = screen.getByDisplayValue('Test Asset');
357
- fireEvent.change(nameInput, { target: { value: 'New Asset Name' } });
358
-
359
- // For new assets, onNameChange should be called on change
360
- expect(onNameChangeMock).toHaveBeenCalled();
361
- });
362
-
363
- it('calls onAddTag when add tag field is submitted', () => {
364
- const onAddTagMock = vi.fn();
365
- const props = { ...defaultProps, onAddTag: onAddTagMock };
366
-
367
- renderWithRedux(<AssetDetails {...props} />);
368
-
369
- // Find the add tag input and submit a new tag
370
- const inputs = screen.getAllByRole('textbox');
371
- const addTagInput = inputs.find(
372
- (input) =>
373
- input.getAttribute('placeholder')?.includes('tag') ||
374
- input.closest('[data-testid*="tag"]')
375
- );
376
-
377
- if (addTagInput) {
378
- fireEvent.change(addTagInput, { target: { value: 'new-tag' } });
379
- fireEvent.keyDown(addTagInput, { key: 'Enter' });
380
- expect(onAddTagMock).toHaveBeenCalledWith('new-tag');
381
- }
382
- });
383
- });
384
-
385
- describe('Component Lifecycle', () => {
386
- it('initializes state correctly on mount', () => {
387
- const { container } = renderWithRedux(<AssetDetails {...defaultProps} />);
388
-
389
- // Component should render without errors
390
- expect(container.querySelector('.asset-details')).toBeTruthy();
391
- });
392
-
393
- it('handles new asset tags correctly', () => {
394
- const newAssetWithTags = {
395
- ...defaultAsset,
396
- tags: ['new-tag-1', 'new-tag-2']
397
- };
398
-
399
- const props = { ...defaultProps, asset: newAssetWithTags, newAsset: true };
400
- renderWithRedux(<AssetDetails {...props} />);
401
-
402
- // Should render the new asset tags
403
- expect(screen.getByText('new-tag-1')).toBeTruthy();
404
- expect(screen.getByText('new-tag-2')).toBeTruthy();
405
- });
406
-
407
- it('updates when asset changes', () => {
408
- const { rerender } = renderWithRedux(<AssetDetails {...defaultProps} />);
409
-
410
- const updatedAsset = { ...defaultAsset, name: 'Updated Asset Name' };
411
- const updatedProps = { ...defaultProps, asset: updatedAsset };
412
-
413
- rerender(
414
- <Provider store={createMockStore()}>
415
- <AssetDetails {...updatedProps} />
416
- </Provider>
417
- );
418
-
419
- expect(screen.getByDisplayValue('Updated Asset Name')).toBeTruthy();
420
- });
421
- });
422
-
423
- describe('Header Buttons', () => {
424
- it('renders header buttons when provided', () => {
425
- const headerButtons = [<button key='test-button'>Test Button</button>];
426
-
427
- const props = { ...defaultProps, headerButtons };
428
- renderWithRedux(<AssetDetails {...props} />);
429
-
430
- expect(screen.getByText('Test Button')).toBeTruthy();
431
- });
432
-
433
- it('renders header buttons container even when no buttons provided', () => {
434
- const { container } = renderWithRedux(<AssetDetails {...defaultProps} />);
435
-
436
- expect(container.querySelector('.header-buttons')).toBeTruthy();
437
- });
438
- });
439
-
440
- describe('Edge Cases', () => {
441
- it('handles missing asset properties gracefully', () => {
442
- const incompleteAsset = {
443
- id: 'incomplete-asset',
444
- name: 'Incomplete Asset',
445
- type: ASSET_TYPES.IMAGE,
446
- tags: []
447
- // Missing other properties
448
- };
449
-
450
- const store = createMockStore({
451
- assetList: {
452
- assets: [incompleteAsset]
453
- }
454
- });
455
-
456
- const props = { ...defaultProps, asset: incompleteAsset };
457
- const { container } = renderWithRedux(<AssetDetails {...props} />, store);
458
-
459
- expect(container.querySelector('.asset-details')).toBeTruthy();
460
- });
461
-
462
- it('handles empty asset list in Redux store', () => {
463
- const store = createMockStore({
464
- assetList: {
465
- assets: [
466
- // Include the asset in the store to prevent find() returning undefined
467
- { ...defaultAsset, tags: [] }
468
- ]
469
- },
470
- assetTags: []
471
- });
472
-
473
- // This should handle the case where asset is not found in the list
474
- expect(() => {
475
- renderWithRedux(<AssetDetails {...defaultProps} />, store);
476
- }).not.toThrow();
477
- });
478
-
479
- it('handles null tags gracefully', () => {
480
- const assetWithNullTags = { ...defaultAsset, tags: null };
481
- const store = createMockStore({
482
- assetList: {
483
- assets: [assetWithNullTags]
484
- }
485
- });
486
-
487
- const props = { ...defaultProps, asset: assetWithNullTags };
488
-
489
- expect(() => {
490
- renderWithRedux(<AssetDetails {...props} />, store);
491
- }).not.toThrow();
492
- });
493
- });
494
- });